如何将个体编码为lme4嵌套模型?

时间:2015-04-18 12:24:00

标签: r

好的,我在学校的教室里有学生。我想知道考试分数是否取决于你的学校。

我的基本模型是:

basemodel <- lmer(test ~ schoolnumber +
     (1 | schoolnumber/classnumber), data=mydata)

我是否想尝试添加学生级别?

不能工作:

model1 <- lmer(test ~ schoolnumber + 
    (1 | schoolnumber/classnumber/ studentID), data=ED) 

不能工作:

model2 <- lmer(test ~ schoolnumber + 
(1 | schoolnumber/classnumber) +( 1 |studentID), data=ED) 

不能工作:

model3 <- lmer(test ~ schoolnumber + 
(1 + studentID | schoolnumber/classnumber), data=ED)

model4 <- lmer(test ~ schoolnumber + studentID + 
(1 | schoolnumber/classnumber), data=ED) 

当我添加学生证时,它说

Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?

此外,我当前的test分数是从原始分数中获得的标准化分数,然后是z分数,然后是线性变换(标准分数); 100 + 15(z)

我可以使用这些线性变换分数,还是应该使用其他东西?我在其他地方看过使用scale()的代码吗?

1 个答案:

答案 0 :(得分:0)

正如Roland所说,如果schoolnumber是分类/因子变量,那么你的第一个模型应该失败:

~ schoolnumber + (1 | schoolnumber/classnumber)

包括schoolnumber作为固定分类预测变量和随机效应分组变量。 ~ (1|schoolnumber/classnumber)会更有意义。

如果你摆脱schoolnumber作为固定效应预测器,那么<​​/ p>

~ (1 | schoolnumber/classnumber) + (1|studentID)

应该工作。我不建议将studentID添加为固定效果。

我假设学生的标签是唯一的,即学校1号学生1A57和学校2号学生1A57不同...... / p>

您在每个级别(观察,学生,班级,学校)的数据集有多大?我猜测学生是在学校里面嵌套但是在课堂上交叉,即每个学生只在一所学校但在一个以上的班级。只要你有独特的学生标记,你就可以像指定模型一样重要。