这实际上是一个非常复杂的问题,也是讲师提出的一个棘手问题!
就组织数据的方式而言,1070 x 10 的矩形就可以了。例如,在 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
为了拟合模型,@gui11aume 建议的 glm() 函数将做基础......
mod <- glm(confl~., family="binomial", data=conflict.data)
anova(mod)
...但这有一个问题,它将“国家”(我假设您将国家作为您的 107 个单位)视为固定效应,而随机效应更合适。它还将周期视为一个简单的因素,不允许自相关。
您可以使用广义线性混合效应模型解决第一个问题,例如Bates 等人在 R 中的 lme4包。这里有一个很好的介绍。就像是
library(lme4)
mod2 <- lmer(confl ~ landdeg + popincrease + liveli + popden +
NDVI + NDVIdecl1 + NDVIdecl2 + (1|country) +(1|period), family=binomial,
data=conflict.data)
summary(mod2)
将是向前迈出的一步。
现在你剩下的最后一个问题是你的 10 个周期的自相关。基本上,您在每个国家/地区的 10 个数据点的价值不如它们是 10 个随机选择的独立且相同分布的点。我不知道有一个广泛可用的软件解决方案来解决具有非正态响应的多级模型的残差中的自相关。当然它没有在 lme4 中实现。其他人可能比我知道的更多。