原文链接:
R语言线性混合效应模型实战案例tecdat.cn介绍
处理分组数据和复杂层次结构的分析师,从嵌入在参与者中的测量,嵌套在州内的县或嵌套在教室内的学生,经常发现他们需要建模工具来反映他们数据的这种结构。在R中,有两种主要的方法来拟合多级模型,这些模型考虑了数据中的这种结构。这些教程将向用户展示如何使用lme4
R中的包来拟合线性和非线性混合效果模型,以及如何使用rstan
以完全适合贝叶斯多级模型。这里的重点是如何使模型适合R而不是模型背后的理论。有关多级建模的背景知识,请参阅参考资料。
本教程将介绍如何lme4
设置和运行一些基本模型,其中包括:
- 在R中构造变化的截距,变化的斜率以及变化的斜率和截距模型
- 从混合效应模型中生成预测和解释参数
- 广义和非线性多层次模型
- 完全贝叶斯多级模型适合
rstan
或其他MCMC方法
设置 环境
在R中开始多级建模很简单。lme4
是在R中实现多级模型的规范包,尽管有许多包依赖并增强其功能集,包括贝叶斯扩展。lme4
最近已被重写以提高速度并整合C ++代码库,因此封装的功能有些不断变化。
要安装lme4
,我们只需运行:
# Main version
install.packages("lme4")
# Or to install the dev version
library(devtools)
install_github("lme4", user = "lme4")
读入数据
多级模型适用于特定类型的数据结构,其中单元嵌套在组内(通常为5个以上组),并且我们希望对数据的组结构进行建模。对于我们的介绍性示例,我们将从lme4
文档中的一个简单示例开始,并解释模型正在执行的操作。
library(lme4) # load library
library(arm) # convenience functions for regression in R
# summary(lmm.data)
head(lmm.data)
## id extro open agree social class school
## 1 1 63.69 43.43 38.03 75.06 d IV
## 2 2 69.48 46.87 31.49 98.13 a VI
## 3 3 79.74 32.27 40.21 116.34 d VI
## 4 4 62.97 44.41 30.51 90.47 c IV
## 5 5 64.25 36.86 37.44 98.52 d IV
## 6 6 50.97 46.26 38.83 75.22 d I
模型
让我们首先拟合一个简单的OLS回归 。
OLSexamp <- lm(extro ~ open + agree + social, data = lmm.data)
display(OLSexamp)
## lm(formula = extro ~ open + agree + social, data = lmm.data)
## coef.est coef.se
## (Intercept) 57.84 3.15
## open 0.02 0.05
## agree 0.03 0.05
## social 0.01 0.02
## ---
## n = 1200, k = 4
## residual sd = 9.34, R-Squared = 0.00
R模型接口非常简单,首先指定因变量,然后是 ~
符号。右手边,预测变量,每个都被命名。加法符号表明这些被建模为加性效应。最后,我们指定要计算模型的数据帧。这里我们使用该lm
函数执行OLS回归,但R中还有许多其他选项。
如果我们想要提取诸如AIC之类的度量 。
MLexamp <- glm(extro ~ open + agree + social, data = lmm.data)
display(MLexamp)
## glm(formula = extro ~ open + agree + social, data = lmm.data)
## coef.est coef.se
## (Intercept) 57.84 3.15
## open 0.02 0.05
## agree 0.03 0.05
## social