Frage zur logistischen Regression

14

Ich möchte eine binäre logistische Regression durchführen, um das Vorhandensein oder Nichtvorhandensein von Konflikten (abhängige Variable) aus einer Reihe unabhängiger Variablen über einen Zeitraum von 10 Jahren (1997-2006) zu modellieren, wobei jedes Jahr 107 Beobachtungen enthält. Meine Unabhängigen sind:

  • Bodendegradation (kategorial für 2 Arten von Degradation);
  • Bevölkerungswachstum (0 - nein; 1 - ja);
  • Lebensunterhaltstyp (0 - Typ eins; 1 - Typ zwei);
  • Bevölkerungsdichte (drei Dichteebenen);
  • NDVI kontinuierlich (max. Gemüseproduktivität);
  • NDVI (Rückgang des Gemüses gegenüber dem Vorjahr - 0 - nein; 1 - ja) undt1
  • und NDVI (Rückgang des Gemüses seit zwei Jahren - - nein; 1 - ja).t2

Ich bin ziemlich neu in all dem - dies ist ein Projekt, das mir mein Dozent gegeben hat - und daher wäre ich für Ratschläge oder Anleitungen dankbar. Ich habe bereits auf Multikollinarität getestet.

Im Wesentlichen sind meine Daten in 107 Beobachtungseinheiten (räumliche Regionen) aufgeteilt, die 10 Jahre umfassen (insgesamt 1070), und für jede Beobachtungseinheit wird ein Momentaufnahmewert der Bedingungen der unabhängigen Variablen zu diesem Zeitpunkt innerhalb dieser Einheit angegeben ( Region). Ich möchte wissen, wie ich meine logistische Regression (oder Tabelle) einrichten kann, um die 107 Werte jedes Jahres separat zu erkennen, damit die zeitlichen NDVI-Änderungen zwischen verschiedenen Einheitsjahren bewertet werden können.

Stephen
quelle
2
Welche Software verwenden Sie? Hat Ihnen Ihr Dozent auch geraten, die logistische Regression zu verwenden? Es scheint mir, dass dies eine Art Mehrebenenmodell erfordert, aber wenn Sie nur Logistik lernen, ist dies möglicherweise nicht die Absicht Ihres Dozenten.
Peter Flom - Wiedereinsetzung von Monica
1
Möchten Sie nur die zeitliche Autokorrelation steuern oder Trends modellieren (in Bezug auf die Wahrscheinlichkeit von Konflikten und / oder zeitliche Änderungen der Risikofaktoreffekte)?
Makro
Nur zeitliche Autokorrelation
Stephen
Die Art Ihrer Daten ist räumlich-zeitlich. Ein wirklich ausgewähltes Modell muss diese Natur berücksichtigen.
hbaghishani
3
Wenn Sie nur die zeitliche Autokorrelation steuern möchten, können Sie GEE (Generalized Estimating Equations) verwenden und aus den robusten Standardfehlern schließen.
Makro

Antworten:

6

Dies ist tatsächlich ein äußerst anspruchsvolles Problem und eine schwierige Frage an Ihren Dozenten!

In Bezug auf die Organisation Ihrer Daten ist ein 1070 x 10-Rechteck ausreichend. Zum Beispiel in R:

> conflict.data <- data.frame(
+ confl = sample(0:1, 1070, replace=T),
+ country = factor(rep(1:107,10)),
+ period = factor(rep(1:10, rep(107,10))),
+ landdeg = sample(c("Type1", "Type2"), 1070, replace=T),
+ popincrease = sample(0:1, 1070, replace=T),
+ liveli =sample(0:1, 1070, replace=T),
+ popden = sample(c("Low", "Med", "High"), 1070, replace=T),
+ NDVI = rnorm(1070,100,10),
+ NDVIdecl1 = sample(0:1, 1070, replace=T),
+ NDVIdecl2 = sample(0:1, 1070, replace=T))
> head(conflict.data)
  confl country period landdeg popincrease liveli popden     NDVI NDVIdecl1 NDVIdecl2
1     1       1      1   Type1           1      0    Low 113.4744         0         1
2     1       2      1   Type2           1      1   High 103.2979         0         0
3     0       3      1   Type2           1      1    Med 109.1200         1         1
4     1       4      1   Type2           0      1    Low 112.1574         1         0
5     0       5      1   Type1           0      0   High 109.9875         0         1
6     1       6      1   Type1           1      0    Low 109.2785         0         0
> summary(conflict.data)
     confl           country         period     landdeg     popincrease         liveli        popden         NDVI          NDVIdecl1        NDVIdecl2     
 Min.   :0.0000   1      :  10   1      :107   Type1:535   Min.   :0.0000   Min.   :0.0000   High:361   Min.   : 68.71   Min.   :0.0000   Min.   :0.0000  
 1st Qu.:0.0000   2      :  10   2      :107   Type2:535   1st Qu.:0.0000   1st Qu.:0.0000   Low :340   1st Qu.: 93.25   1st Qu.:0.0000   1st Qu.:0.0000  
 Median :1.0000   3      :  10   3      :107               Median :1.0000   Median :1.0000   Med :369   Median : 99.65   Median :1.0000   Median :0.0000  
 Mean   :0.5009   4      :  10   4      :107               Mean   :0.5028   Mean   :0.5056              Mean   : 99.84   Mean   :0.5121   Mean   :0.4888  
 3rd Qu.:1.0000   5      :  10   5      :107               3rd Qu.:1.0000   3rd Qu.:1.0000              3rd Qu.:106.99   3rd Qu.:1.0000   3rd Qu.:1.0000  
 Max.   :1.0000   6      :  10   6      :107               Max.   :1.0000   Max.   :1.0000              Max.   :130.13   Max.   :1.0000   Max.   :1.0000  
                  (Other):1010   (Other):428                                                                                                              
> dim(conflict.data)
[1] 1070   10

Für die Anpassung eines Modells übernimmt die Funktion glm (), die @ gui11aume vorschlägt, die Grundlagen ...

mod <- glm(confl~., family="binomial", data=conflict.data)
anova(mod)

... aber das hat das Problem, dass es "Land" (ich nehme an, Sie haben Land als Ihre 107 Einheiten) als festen Effekt behandelt, wohingegen ein zufälliger Effekt angemessener ist. Die Periode wird auch als einfacher Faktor behandelt, eine Autokorrelation ist nicht zulässig.

Sie können lineare gemischte Effekte Modell wie beispielsweise in das erste Problem mit einer generali Adresse Bates et al des lme4 Paket in R. Es gibt eine schöne Einführung in einige Aspekte dieses hier . Etwas wie

library(lme4)
mod2 <- lmer(confl ~ landdeg + popincrease + liveli + popden + 
    NDVI + NDVIdecl1 + NDVIdecl2 + (1|country) +(1|period), family=binomial,
    data=conflict.data)
summary(mod2)

wäre ein Schritt vorwärts.

Jetzt ist Ihr letztes verbleibendes Problem die Autokorrelation über Ihre 10 Perioden. Grundsätzlich sind Ihre 10 Datenpunkte in jedem Land nicht so viel wert, als wären sie 10 zufällig ausgewählte unabhängige und identisch verteilte Punkte. Mir ist keine weit verbreitete Softwarelösung für die Autokorrelation in den Residuen eines mehrstufigen Modells mit einer nicht normalen Antwort bekannt. Sicher ist es nicht in lme4 implementiert. Andere wissen vielleicht mehr als ich.

Peter Ellis
quelle
Diese (nicht beantwortete) Frage ist auch relevant - stats.stackexchange.com/questions/20613/…
Peter Ellis
1

Dieses Tutorial ist umfassend.

In R müssen Sie Ihre Daten vorbereiten, z. B. Variable datain a data.frame, wobei die erste Spalte Ihre 0-1-Variable (Konflikt) und die anderen Spalten die Prädiktoren sind. Bei kategorialen Variablen müssen Sie sicherstellen, dass sie vom Typ sind factor. Um sicherzustellen, dass beispielsweise Spalte 3 über diese Eigenschaft verfügt, können Sie diese erzwingen data[,3] <- as.factor(data[,3]).

Dann geht es nur noch darum

glm(data, family="binomial")

Dies setzt implizit voraus, dass Sie ein additives Modell haben und gibt Ihnen die geschätzten Werte. Um eine umfassendere Ausgabe mit Test für einzelne Parameter zu erhalten, können Sie dies tun

summary(glm(data, family="binomial"))
gui11aume
quelle