首页 > 编程语言 >Python线性混合效应回归LMER分析大鼠幼崽体重数据、假设检验可视化

Python线性混合效应回归LMER分析大鼠幼崽体重数据、假设检验可视化

时间:2025-01-14 20:34:48浏览次数:1  
标签:截距 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所示,展示了随机截距模型和随机截距与斜率模型的差异:


python researchpy random effect effects fixed mixed model
图2 随机截距模型和随机截距与斜率模型差异

 

混合效应回归的假设与检验

(一)假设条件

  1. 误差独立性:各观测值的误差之间相互独立。
  2. 误差方差齐性:不同观测值的误差方差相等。
  3. 误差正态性:误差服从正态分布。

(二)假设检验

  1. 固定效应假设检验
  • 多个固定效应检验:
  • 单个固定效应检验:
  1. 协方差参数似然比检验:假设嵌套模型和参考模型具有相同的固定效应,但协方差参数不同。计算参考模型和嵌套模型的 -2 REML对数似然的正差值,然后根据适当的 χ2χ2 分布查找 pp 值。

    当计算的检验统计量小于指定显著 pp 值的临界值时,拒绝原假设。

Python实现混合效应回归

(一)数据准备

本研究使用的数据集,旨在比较不同窝中大鼠幼崽的出生体重。在这些窝中,一些雌性母鼠接受了“高剂量”“低剂量”和“对照”的实验处理。原设计中每个处理条件分配了10只雌性大鼠,但“高剂量”处理中有3只死亡,导致研究设计不平衡。在本研究中,窝将作为聚类变量(第2层),大鼠幼崽作为分析单位(第1层)。

 
  1.   import pandas as pd
  2.   import researchpy as rp
 

 

(二)数据探索

查看数据集中的变量信息:

 

分析大鼠幼崽体重基于性别和处理组的情况:

 

可视化体重按处理组和性别的分布:

boxplot = data.boxplot

python researchpy mixed effect model models lmm hlm diagnostic diagnostics
图3 体重按处理组和性别的箱线图

(三)模型构建

  1. 随机截距模型
 
  1.   import statsmodels.formula.api as smf
  2.    
  3.   model.summary()
 

 

 

移除不显著的交互项后重新建模:

"weight ~ litsize + C(treatment) + C(sex, Treatment('Male'))", data, 

 

计算组内相关系数(ICC):

这表明同一窝中体重之间存在中等程度的相关性。
2. 随机斜率模型

  • 随机截距和斜率不相关
 
  1.   "weight ~ litsize + C(treatment) + C(sex)", data, groups= "litter",
  2.   vc_formula = {"sex" : "0 + C(sex)"}).fit()
 

 

  • 随机截距和斜率相关
 
  1.   "weight ~ litsize + C(treatment) + C(sex)", data, groups= "litter",
  2.   re_formula = "1 + C(sex)").fit()
  3.    
 

 

计算随机截距和随机斜率之间的估计相关系数:

这表明体重较高的窝中,雄性大鼠幼崽往往体重也较高。

(四)假设检验

  1. 正态性检验
  • 可视化残差的核密度估计图和Q-Q图:

python researchpy linear mixed effects regression hierarchical modeling mixed-effects mixed-effect
图4 模型残差的KDE图

python researchpy linear mixed effects regression hierarchical modeling mixed-effects mixed-effect
图5 模型残差的Q-Q图

  • 正式的Shapiro-Wilk正态性检验:

结果显示残差的正态性假设被违反。
2. 方差齐性检验

  • 可视化残差与拟合值的散点图(RVF图)和残差按窝的箱线图:
 
  1.   fig = plt.figure(figsize = (16, 9))
  2.   ax = sns.scatterplot(y = model.resid,
 

python researchpy linear mixed effects regression hierarchical modeling mixed-effects mixed-effect rvf plot
图6 RVF图


图7 残差按窝的箱线图

  • 正式的White’s拉格朗日乘数异方差检验:
 
  1.   t p-value"]
  2.   for key, val in dict(zip(labels, het_white_res)).items():
  3.   print(key, val)
 

 

正式检验表明方差齐性假设被违反。

结论

本文全面介绍了混合效应回归模型,从理论基础到Python实现,包括模型的构建、假设检验以及结果分析。通过对大鼠幼崽体重数据的分析,展示了混合效应回归在处理具有层次结构数据时的有效性。在实际应用中,需根据数据特点和研究目的选择合适的混合效应模型类型,并严格检验模型假设,以确保分析结果的可靠性。未来的研究可以进一步探索如何更好地处理假设违反的情况,以及将混合效应回归应用于更复杂的数据场景。

 

标签:截距,Python,模型,幼崽,LMER,效应,斜率,随机,数据
From: https://www.cnblogs.com/tecdat/p/18671537

相关文章

  • 关于python的初步学习
    python中的数据类型:整数(int):用于表示整数,例如-5,0,10等。浮点数(float):用于表示小数,例如3.14,-0.5等。字符串(str):用于表示文本,例如"Hello",'World'等。布尔值(bool):用于表示真或假,只有两个值,True和False。列表(list):用于存储一组有序的数据,可以包含不同类型的元素,例如[1,2,3]......
  • 【python】OpenCV—Extract Horizontal and Vertical Lines—Morphology
    文章目录1、功能描述2、代码实现3、效果展示4、完整代码5、参考更多有趣的代码示例,可参考【Programming】1、功能描述基于opencv-python库,利用形态学的腐蚀和膨胀,提取图片中的水平或者竖直线条2、代码实现导入基本的库函数importnumpyasnpimportcv2as......
  • 【python游戏】最经典的五个小游戏(完整代码)
    文章目录前言案例1:猜数字游戏案例2:石头剪刀布游戏案例3:使用pygame的简单打砖块游戏案例4:井字棋(Tic-Tac-Toe)案例5:贪吃蛇游戏(使用pygame)前言当然,我可以为你提供五个简单的Python游戏案例。这些游戏涵盖了不同的难度和类型,从文本冒险到简单的图形界面游戏。......
  • python 更新pip镜像源
    前言默认情况下pip使用的是国外的镜像,在下载的时候速度非常慢,下载速度是几kb或者几十kb,花费的时间比较长。解决办法国内目前有些机构或者公司整理了对应的镜像源,使得通过内网就能访问即可,下载速度达到几百kb或者几M,速度对比而言简直一个天上,一个地下。国内源:阿里云:http://m......
  • 用 Python 从零开始创建神经网络(二十二):预测(Prediction)/推理(Inference)(完结)
    预测(Prediction)/推理(Inference)(完结)引言完整代码:引言虽然我们经常将大部分时间花在训练和测试模型上,但我们这样做的核心原因是希望有一个能够接受新输入并生成期望输出的模型。这通常需要多次尝试训练最优模型,保存该模型,并加载已保存的模型进行推断或预测。以Fashion......
  • python+django/flask的大学生心理咨询平台java+nodejs+php-计算机毕业设计
    目录技术介绍具体实现截图微信开发者工具HBuilderXuniapp系统设计java类核心代码部分展示登录的业务流程的顺序是:可行性论证详细视频演示技术可行性系统测试系统安全性数据完整性实现思路系统实现源码获取技术介绍如今微信小程序有以下发展优势(1)无须下载,无须注......
  • spring boot基于大数据技术的李宁京东自营店数据分析系统python+nodejs+php-计算机毕
    目录功能和技术介绍具体实现截图开发核心技术:开发环境开发步骤编译运行核心代码部分展示系统设计详细视频演示可行性论证软件测试源码获取功能和技术介绍该系统基于浏览器的方式进行访问,采用springboot集成快速开发框架,前端使用vue方式,基于es5的语法,开发工具Intelli......
  • python+django/flask的影视观享系统(影视评论与评分系统)java+nodejs+php-计算机毕业设
    目录技术栈和环境说明具体实现截图预期达到的目标系统设计详细视频演示技术路线解决的思路性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示研究方法感恩大学老师和同学源码获取技术栈和环境说明本系统以Python开发语言......
  • python与WRF模型联合应用技术、WRF模式前后处理
    当今从事气象及其周边相关领域的人员,常会涉及气象数值模式及其数据处理,无论是作为业务预报的手段、还是作为科研工具,掌握气象数值模式与高效前后处理语言是一件非常重要的技能。WRF作为中尺度气象数值模式的佼佼者,模式功能齐全,是大部分人的第一选择。而掌握模式还只是第一步,将......
  • 使用Python Matplotlib库实现简单散点图的绘制
     一、内容概述本文主要讲述使用Python的Matplotlib绘图库绘制一个简单的散点图Matplot绘制过程如下:导入matplotlib.pyplot库创建图形和子图形对象准备绘制散点图的数据(通常有两个参数,即x轴、y轴的坐标数据)调用子图形的scatter()方法并传入主要参数(x轴,y轴上的两个坐标数据......