Python线性混合效应回归LMER分析大鼠幼崽体重数据、假设检验可视化|数据分享...
全文链接:https://tecdat.cn/?p=38816
在数据分析领域,当数据呈现出层次结构时,传统的一般线性模型(GLM)可能无法充分捕捉数据的特征。混合效应回归作为GLM的扩展,能够有效处理这类具有层次结构的数据,如聚类数据、重复测量数据和纵向数据等。本文将深入探讨混合效应回归的基本原理、关键概念、不同模型类型的差异,以及如何使用Python进行建模和分析(点击文末“阅读原文”获取完整代码数据)。
混合效应回归基础
(一)定义与模型公式
混合效应回归是对一般线性模型的扩展,它考虑了数据的层次结构 。一般线性回归方程为:
其中,XX 是一个 N×pN×p 的设计矩阵,包含每个个体(NN)对于模型中每个自变量(pp)的观测值;ββ 是一个 p×1p×1 的列向量,包含模型中每个自变量的回归系数;ϵϵ 是一个 N×1N×1 的列向量,包含模型的误差(残差)。
而混合效应模型方程为:
其中,ZZ 是一个 N×qN×q 的设计矩阵,包含每个个体(NN)对于随机效应的每个协变量(qq)的观测值;uu 是一个 q×1q×1 的向量,包含矩阵 ZZ 中 qq 个协变量的随机效应。
(二)层次结构
在混合效应模型中,数据的层次结构通常用“层级”或“聚类”来描述。例如,在研究学生标准化考试成绩时,假设没有统一的课程和指导方针,数据是从不同学区的不同学校随机抽取的,每个数据行代表一个学生。这里,第1层是分析的基本单位,即学生;第2层是学校,将第1层的所有学生聚类到不同学校;第3层是学区,将第2层的学校进一步聚类。第2层及以上层级是被建模的随机效应。
图1展示了这种层次结构:
图1 数据层次结构可视化
(三)固定因素与随机因素
固定效应参数描述了整个总体中协变量与因变量之间的关系,而随机效应则特定于总体中的主体聚类。固定因素是研究感兴趣的自变量,如治疗类别、性别等;随机因素是分析单位所属的分类变量,通常定义了第2层、第3层或更高层级。例如,在上述学校研究中,学校(第2层)是随机因素,因为它是学生(第1层)的聚类变量 。变量被定义为固定效应还是随机效应,取决于研究目标和分析方法。
(四)混合效应模型类型差异
混合效应模型主要有随机截距模型、随机斜率模型和随机截距与斜率模型。随机截距模型允许基于聚类变量有不同的截距;随机斜率模型允许基于某个变量有不同的斜率;随机截距与斜率模型则同时允许基于聚类变量有不同的截距和基于某个变量有不同的斜率。
如图2所示,展示了随机截距模型和随机截距与斜率模型的差异:
图2 随机截距模型和随机截距与斜率模型差异
混合效应回归的假设与检验
(一)假设条件
误差独立性:各观测值的误差之间相互独立。
误差方差齐性:不同观测值的误差方差相等。
误差正态性:误差服从正态分布。
(二)假设检验
固定效应假设检验:
多个固定效应检验:
单个固定效应检验:
协方差参数似然比检验:假设嵌套模型和参考模型具有相同的固定效应,但协方差参数不同。计算参考模型和嵌套模型的 -2 REML对数似然的正差值,然后根据适当的 χ2χ2 分布查找 pp 值。
当计算的检验统计量小于指定显著 pp 值的临界值时,拒绝原假设。
Python实现混合效应回归
(一)数据准备
本研究使用的数据集,旨在比较不同窝中大鼠幼崽的出生体重(查看文末了解数据免费获取方式)。在这些窝中,一些雌性母鼠接受了“高剂量”“低剂量”和“对照”的实验处理。原设计中每个处理条件分配了10只雌性大鼠,但“高剂量”处理中有3只死亡,导致研究设计不平衡。在本研究中,窝将作为聚类变量(第2层),大鼠幼崽作为分析单位(第1层)。
import pandas as pd
import researchpy as rp
(二)数据探索
查看数据集中的变量信息:
分析大鼠幼崽体重基于性别和处理组的情况:
可视化体重按处理组和性别的分布:
boxplot = data.boxplot
图3 体重按处理组和性别的箱线图
(三)模型构建
随机截距模型
import statsmodels.formula.api as smf
model.summary()
点击标题查阅往期内容
R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)
左右滑动查看更多
01
02
03
04
移除不显著的交互项后重新建模:
"weight ~ litsize + C(treatment) + C(sex, Treatment('Male'))", data,
计算组内相关系数(ICC):
这表明同一窝中体重之间存在中等程度的相关性。
随机斜率模型
随机截距和斜率不相关
"weight ~ litsize + C(treatment) + C(sex)", data, groups= "litter",
vc_formula = {"sex" : "0 + C(sex)"}).fit()
随机截距和斜率相关
"weight ~ litsize + C(treatment) + C(sex)", data, groups= "litter",
re_formula = "1 + C(sex)").fit()
计算随机截距和随机斜率之间的估计相关系数:
这表明体重较高的窝中,雄性大鼠幼崽往往体重也较高。
(四)假设检验
正态性检验
可视化残差的核密度估计图和Q-Q图:
图4 模型残差的KDE图
图5 模型残差的Q-Q图
正式的Shapiro-Wilk正态性检验:
结果显示残差的正态性假设被违反。
方差齐性检验
可视化残差与拟合值的散点图(RVF图)和残差按窝的箱线图:
fig = plt.figure(figsize = (16, 9))
ax = sns.scatterplot(y = model.resid,
图6 RVF图
图7 残差按窝的箱线图
正式的White’s拉格朗日乘数异方差检验:
t p-value"\]
for key, val in dict(zip(labels, het\_white\_res)).items():
print(key, val)
正式检验表明方差齐性假设被违反。
结论
本文全面介绍了混合效应回归模型,从理论基础到Python实现,包括模型的构建、假设检验以及结果分析。通过对大鼠幼崽体重数据的分析,展示了混合效应回归在处理具有层次结构数据时的有效性。在实际应用中,需根据数据特点和研究目的选择合适的混合效应模型类型,并严格检验模型假设,以确保分析结果的可靠性。未来的研究可以进一步探索如何更好地处理假设违反的情况,以及将混合效应回归应用于更复杂的数据场景。
数据获取
在公众号后台回复“大鼠数据”,可免费获取完整数据。
本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群!
资料获取
在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。
点击文末“阅读原文”
获取全文完整代码数据资料。
本文选自《Python线性混合效应回归LMER分析大鼠幼崽体重数据、假设检验可视化》。
点击标题查阅往期内容
R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)
R语言用潜类别混合效应模型(Latent Class Mixed Model ,LCMM)分析老年痴呆年龄数据
R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据
R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程
R语言因子实验设计nlme拟合非线性混合模型分析有机农业施氮水平
R语言非线性混合效应 NLME模型(固定效应&随机效应)对抗哮喘药物茶碱动力学研究
R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系
R语言LME4混合效应模型研究教师的受欢迎程度
R语言nlme、nlmer、lme4用(非)线性混合模型non-linear mixed model分析藻类数据实例
R语言混合线性模型、多层次模型、回归模型分析学生平均成绩GPA和可视化
R语言线性混合效应模型(固定效应&随机效应)和交互可视化3案例
R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据
R语言 线性混合效应模型实战案例
R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据
R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言建立和可视化混合效应模型mixed effect model
R语言LME4混合效应模型研究教师的受欢迎程度
R语言 线性混合效应模型实战案例
R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题
基于R语言的lmer混合线性回归模型
R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型
R语言分层线性模型案例
R语言用WinBUGS 软件对学术能力测验(SAT)建立分层模型
使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM
R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型
SPSS中的多层(等级)线性模型Multilevel linear models研究整容手术数据
用SPSS估计HLM多层(层次)线性模型模型