作者:张光耀,硕士研究生,现就读于中科院心理所,
GitHub 主页: https://github.com/usplos
前言
为什么要用混合线性模型:比如测量了不同收入水平的人群的收入和幸福感,但每个群体内收入水平是不同的,幸福感也不同,两者之间的关系也是不同的, 如果直接用一般线性模型,会造成错误的结论,这个时候要考察的是可以推广到不同收入群体的收入和幸福感之间的关系 (即考察的关系不仅可以应用于当前的收入群体,还可以应用到其他的群体)。这时候需要用到混合线性模型(或者层次线性模型)。
R
R
中混合线性模型要依靠lme4
或者lmerTest
数据包(强烈推荐后者,因为会输出显著性)
library(lmerTest)
fit = lmer(data = , formula = DV ~ Fixed_Factor + (Random_intercept + Random_Slope | Random_Factor))
参数说明:
data
- 要处理的数据集;formula
- 表达式;DV
- 因变量;Fixed_Factor
- 固定因子,即考察的自变量;Random_intercept
- 随机截距,即认为不同群体的因变量的分布不同 (可以理解成有些人出生就在终点,而你是在起点......);Random_Slope
- 随机斜率,即认为不同群体受固定因子的影响是不同的 (可以理解成别人花两个小时能赚10000元,而你只能挣个被试费......);Random_Factor
- 随机因子;
数据整理可参考politeness
该数据收集了若干被试(subject
)的性别(gender
),以及用不同的态度(attitude
)在不同场合(scenario
)下说话的音高(frequency
)。 这是一个典型的被试内设计(7 * 2设计)。
以politeness 数据为例,首先加载数据包并将scenario
变量变为因子变量。
politeness = readr::read_csv('https://raw.githubusercontent.com/usplos/self-programming/master/politeness_data.csv')
politeness$scenario = factor(politeness$scenario)
library(lmerTest)