一个对分层建模相当陌生的人提出的问题,我正在寻找 R 中的最佳方法,最好使用包 lme4、MCMCpack 或 rjags 使用 BUGS 文档。我不确定最好的方法,所以我想要一些指导。
我有兴趣创建一个两级层次模型,其中包含横截面、时间序列的数据,并且在个人级别与来自组级别的数据合并。让我解释一下合并的两个数据集:
组级数据集显示了 100 个不同县的值班警察数量。该数据收集了 10 次不同的时间,因此有 10 组 100 个县。我将此组级县级数据与个人级人口统计和犯罪数据(按个人县级合并)合并。
个人层面的数据还为每个人提供了一个指标(1 或 0),表明他们在此期间是否报告了犯罪行为。这个个人层面的数据也是在 10 个时间点收集的——因此它与群体层面的数据相匹配——但它是横截面数据,而不是面板数据(每个时期不同的人)。这是我的因变量,所以我正在寻找一种 logit 或 probit 方法。
基本上,我想创建一个具有两个级别的层次模型:县和时间,其中周期变量 (1-10) 嵌套在县 (1-100) 中。这看起来相当简单——一个两级嵌套模型——但到目前为止我的方法都失败了。
根据同事推荐的一本书(Gelman and Hill),感觉对BUGS和lme4中的基本层次模型编程有一定的理解,但是书中没有详细介绍嵌套等更复杂的模型,和其他参考资料没有用。
下面是我的数据在 R 中的样子的截断示例。非常感谢任何建议、关于要使用的包的建议以及用于建模的示例代码!
counties <- c(1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3) #only 3 counties for explanation purposes
police <- c(1,22,4,56,3,32,12,8,43,5,45,34,33,21,62,22,3,12,19,29,11,8,32,33,18,12,12) #number of police per county
personID <- seq(1,27) # only 27 people for explanation purposes
period <- c(1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3) #only 3 periods for explanation purposes
age <- c(45,55,23,67,21,34,39,48,52,45,32,71,55,56,19,34,48,56,77,33,22,21,44,64,51,55,60) #an individual level predictor not in the hierarchy
crime <- c(1,1,0,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0,0,0,1,0,1,0) #Dependent Var: Did individual report a crime? Yes/No
sample <- matrix(c(personID, period, age, crime, counties, police), nrow=27, ncol=6)
colnames(sample) <- c("personID", "period", "age", "crime", "counties", "police")
> sample
personID period age crime counties police
[1,] 1 1 45 1 1 1
[2,] 2 1 55 1 1 22
[3,] 3 1 23 0 1 4
[4,] 4 2 67 0 1 56
[5,] 5 2 21 1 1 3
[6,] 6 2 34 1 1 32
[7,] 7 3 39 0 1 12
[8,] 8 3 48 0 1 8
[9,] 9 3 52 1 1 43
[10,] 10 1 45 0 2 5
[11,] 11 1 32 0 2 45
[12,] 12 1 71 1 2 34
[13,] 13 2 55 1 2 33
[14,] 14 2 56 0 2 21
[15,] 15 2 19 1 2 62
[16,] 16 3 34 0 2 22
[17,] 17 3 48 0 2 3
[18,] 18 3 56 1 2 12
[19,] 19 1 77 1 3 19
[20,] 20 1 33 0 3 29
[21,] 21 1 22 0 3 11
[22,] 22 2 21 0 3 8
[23,] 23 2 44 0 3 32
[24,] 24 2 64 1 3 33
[25,] 25 3 51 0 3 18
[26,] 26 3 55 1 3 12
[27,] 27 3 60 0 3 12