LMMs, Linear Mixed-Effects Models——线性混合效应模型
基本介绍
是一类用于分析具有多层次结构或重复测量的数据的统计模型。该模型结合了固定效应和随机效应,适用于在数据中存在不同层次的变异,例如来自不同实验单位、观察组或时间点的变异。LMMs允许我们在考虑随机效应的同时,仍然对固定效应进行推断和估计。
固定效应_Fixed Effects
- 是我们感兴趣的因素_自变量,它们的系数表示不同水平之间的均值差异。在LMM中,我们对这些效应进行估计和推断,就像普通的线性回归模型一样。
随机效应_Random Effects
- 是表示不同单位之间的随机变异的因素,比如不同实验单位、观察组等。随机效应捕捉了单位间的变异,并允许我们在数据中建模层次结构。
混合效应_Mixed Effects
- 混合效应模型是通过同时考虑固定效应和随机效应,来分析多层次数据结构中的变异。这样的建模方法允许我们更准确地捕捉数据的结构和变异。
基本模型
基本表达式
整体的模型是一个线性混合效应模型,结合了固定效应和随机效应,用于分析数据中depvar和X之间的关系,同时考虑了不同subject之间的变异。
basic.model = lmer(data = datafile, depvar ~ X + (X | subject))
summary(basic.model)
X是固定效应,(X | subject)表示随机效应。
lmer常用模型公式
model = lmer(data = datafile, depvar ~ Fixed_Factor + (Random_intercept + Random_Slope | Random_Factor))
summary(model)
- depvar,为观测值,即所要分析的因变量
- Fixed_Factor,为固定因子;Random_Factor,为随机因子
- ()内为随机效应
随机效应
随机效应部分通常分为下面四种情况:
1.随机截距_random intercept
- 当考虑不同组之间水平的差异,并且认为这些组与组之间的响应对自变量的影响是一致的时,使用随机截距模型。这表示不同组有不同的起始点,但它们的斜率是相同的。
- 即认为不同群体在因变量上的分布不同(通俗解释:有的人生下来是富二代,起点高,则相应截距大;有的人是一般群众,起点低,则相应截距小)。
- 示例:在研究不同医院的治疗效果时,不同医院可能有不同的基础水平,但治疗效果对时间的影响是一致的。
# 随机截距模型示例
# 可写成 (1 | g) 或 1 + (1 | g) 这两种。即下面这两种模型是等价的:
model_random_intercept = lmer(data = datafile, depvar ~ X + (1 | subject))
model_random_intercept_a = lmer(data = datafile, depvar ~ X + 1 + (1 | subject))
2.随机斜率_random slope
- 当你认为不同组之间的基础水平和它们对自变量的响应都可能存在差异时,使用随机斜率模型。这表示不同组有不同的起始点和不同的斜率。
- 即认为不同群体受固定因子的影响不同(通俗解释:有的人是学霸,学习能力强,2个小时学会,则斜率高,线陡;有的人是学渣,2天才能学会,则斜率低,线缓)。
- 示例:在研究学生的学习成绩时,不同学校的学生可能在学习曲线的斜率上存在差异。
# 随机斜率模型示例
model_random_slope = lmer(data = datafile, depvar ~ X + (X | subject))
3.固定截距_fixed intercept
- 当你认为所有组之间的基础水平和它们对自变量的响应都是一致的时,可以使用固定截距模型。这意味着不考虑任何随机性,所有组之间的差异都被视为固定。
- 示例:在研究不同城市的平均气温对销售额的影响时,你可能认为城市之间的差异是固定的,不存在基础水平和响应上的随机变化。
# 固定截距模型示例
model_fixed_intercept = lmer(data = datafile, depvar ~ X + (0 + X | subject))
4.组合(随机截距+随机斜率)
- 有时候,数据可能同时存在随机截距和随机斜率的变异性。在这种情况下,可以考虑同时使用随机截距和随机斜率模型,以更全面地捕捉数据的复杂性。
- 示例:在研究医院治疗效果时,不同医院的起始点和斜率都可能存在差异,因此可能同时存在随机截距和随机斜率。
# 随机截距和随机斜率模型示例
model_combination = lmer(data = datafile, depvar ~ X + (1 + X | subject))
两因素交互设置
model_interaction = lmer (data = datafile, depvar ~ A * B + (1 + A * B | subject) + (1 + A * B | stim))
方差分析使用stats包中的anova()功能直接输入模型即可,更推荐使用car包中的Anova(),可提供更多的方差分析方法和参数设置。[注意区分大小写】,可以看出模型中每个因子的F值和p值。
参考来源:
R使用线性混合效应模型一些常见的结果指标https://zhuanlan.zhihu.com/p/649029208混合线性模型的实现_张光耀
https://zhuanlan.zhihu.com/p/63092231混合线性模型之富二代和学霸的故事
https://zhuanlan.zhihu.com/p/372412751