我有一个我正在处理的文件,其中包含多所学校4-8年级的州立数学考试成绩。我计划使用lme4中的lmer命令为每个年级级别运行一个单独的无条件模型(我这样做是因为考试具有不同的等级)。我创建了一个for循环,它将原始数据文件拆分成特定于年级的数据帧:
for(i in levels(MathTestData$CURR_GRADE_LVL)){
assign(paste("MathTest.",i,sep=""), MathTestData[MathTestData$CURR_GRADE_LVL==i, ])
}有没有一种方法可以使用循环命令为每个年级级别的数据帧运行一个无条件的模型?出于本例的目的,让我们将因变量称为"MathScore“,将级别2的id称为”SchoolID“。
由于成绩级别在4到8之间,我尝试了以下for循环,但它不起作用(我得到的错误:“错误:'data‘未找到,公式环境中缺少某些变量”):
for(i in 4:8){
UnconditionalModel.i <- lmer(MathScore~1+(1|SchoolID), data=MathTest.i)
summary(UnconditionalModel.i)
}我的主要问题是,我知道可以按照其他人的建议在列表上使用lapply,但这样做会丢失很多有价值的信息,否则这些信息将由lme4和lmerTest软件包提供(特别是固定效果的p值和测试统计信息,随机效果以标准差而不是方差的形式表示)。
发布于 2018-01-18 22:31:48
我认为你可以在你的整个数据框架上使用多级回归。
lmer(mathscor ~ schoolid + (1 + schooldid | CURR_GRADE_LVL) ) 这样,每个等级的斜率和截距都会发生变化。您可以使用ranef恢复每个等级的系数
https://stackoverflow.com/questions/48323474
复制相似问题