多层线性模型在R上的实现

背景介绍

  刘红云老师《高级心里统计》中的第十三章和第十四章介绍了多层线性模型,并且给出了多层线性模型应用案例及其操作,使用的统计软件有HLM、SPSS和Mplus,没有使用R进行分析,因此,本文档主要介绍R实现多层线性模型。
  目前了解到R语言中经常使用的估计HLM包有lme4和nlme,看到大佬们在介绍时使用的比较多的是lme4,所以在学习时也采用了lme4去复现了刘红云老师的案例。

模型1+代码

library(tidyverse)
library(lme4)
library(nlme) #提供数据
MathAchieve
MathAchSchool

模型1:零模型

多层线性模型在R上的实现
多层线性模型在R上的实现
其中,该模型中多层线性模型在R上的实现表示学生数学成绩的均值

model0 <- lmer(MathAch~(1|School),data=MathAchieve)
summary(model0)

模型2:第一水平加入SES的随机系数回归模型

多层线性模型在R上的实现
多层线性模型在R上的实现
       多层线性模型在R上的实现
其中,该模型中多层线性模型在R上的实现表示预测变量社会经济地位(SES)对数学成绩的影响,多层线性模型在R上的实现表示随机斜率,即预测变量社会经济地位(SES)对数学成绩影响的学校间差异。

model1 <- lmer(MathAch~SES+(SES|School), data=MathAchieve)
summary(model1)

模型3:第二水平仅截距项含有预测变量DISCLIM的随机系数回归模型

多层线性模型在R上的实现
多层线性模型在R上的实现
       多层线性模型在R上的实现
其中,该模型中多层线性模型在R上的实现表示预测变量学校纪律(DISCLIM)对数学成绩的影响。

#在第二水平中纳入DISCLIM,因此需要对数据进行处理,将它们全都整合到一个数据表中
data_1 <- MathAchieve %>%
  mutate(School = as.character(School))
data_2 <- MathAchSchool %>% 
  select(School, DISCLIM) %>%
  mutate(School = as.character(School))
data_3 <- data_1 %>%
  inner_join(data_2, by = "School")

##运行代码
model1 <- lmer(MathAch~SES+DISCLIM+(SES|School), data= data_3)
summary(model1)

模型4:基于前面模型,第二水平含预测变量DISCLIM的随机系数回归模型(全模型)

多层线性模型在R上的实现
多层线性模型在R上的实现
       多层线性模型在R上的实现
其中,该模型中多层线性模型在R上的实现表示预测变量学校纪律环境(DISCLIM)对社会经济地位与数学成绩关系的调节。

model1 <- lmer(MathAch~SES+DISCLIM+(DISCLIM*SES)+(SES|School), data= data_3)
summary(model1)

总结

以上模型和代码跑出来的结果和用HLM软件跑出来的结果一致,重要的点是代码中的公式即完整模型。接下来就是对多层线性模型的深入了解,对结果分析。哇,好难啊!不想走的路偏偏一直往前走!


  1. 《高级心理统计》–刘红云 ↩︎

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年5月28日 下午4:07
下一篇 2022年5月28日 下午4:09

相关推荐

此站出售,如需请站内私信或者邮箱!