R语言:混合效应模型分析基于随机对照试验的重复测量资料(结局为连续型变量)...

2757ca5197a7d89529c1cbdd2e956c5f.png

本文约3000字,建议阅读5分钟
本文介绍了利用R语言混合效应模型分析基于随机对照试验的重复测量资料。

重复测量资料在临床数据中非常普遍,常用重复测量的方差分析进行统计分析,但是经常面临的问题有:

①临床资料又常常含有缺失值,例如采用某新药治疗疾病,分别在治疗前,治疗后1月,治疗后3月测量Y指标,但由于病人依从性等原因,导致治疗3月后缺失几例数据。

②Y不满足正态性、方差齐性,且样本量不是很大。

怎么办?推荐分析神器之一:混合效应模型。本文结合文献,分享基于R语言实现混合效应分析的方法,主要采用nlme包中lme函数。

主要内容:

1.可视化不同组Hb随时间的变化趋势

2.时间作为分类变量,构建混合效应模型

3.时间作为连续变量,构建混合效应模型

4.模型1和模型2对比和选择

5.模型残差检验

 文献分享 

这篇文章是2021年发表在Neuroimage上,影响因子是5.8,作者观察了4个时间点,通过重复测量三个连续性指标,构建混合效应模型研究正常睡眠和睡眠不足对大脑微观结构的影响。《Sleep and sleep deprivation difffferentially alter white matter microstructure: A mixed model design utilising advanced diffffusion modelling》。

b1eee4d2344f86966c3fb1981da013c5.png

cdd4072af9b53e897737b75e585e0569.png

作者观察的时间点time分别是早上、晚上、第二天早上。观察的指标Y分别是INVF(神经突内体积分数),exMD(神经突外平均扩散率)和exRD(桡神经突外扩散性)。

上述折线图的横轴是时间点,纵轴是边际估计均值,每个时间点上加了误差线,这个图直观的看出两组人群各指标随时间增加的变化。

24760389372f0baac19eb48c37f24278.png

混合效应分析结果显示:

随着时间的增加,INVF 和 exRD 有显著的变化(p<0.05),exMD没有显著变化。而exMD在TP1到TP3和TP1到TP4 的时间点中存在显著的交互作用,而INVF 和 exRD没有交互作用,可以参考原文翻译。

Results from the linear mixed model revealed significant main effects of time in INVF and exRD, but not exMD (see Table 2). Further, there were significant group × time interaction effects in exMD from TP1 to TP3 and from TP1 to TP4, but not INVF and exRD. 

 加载R包和数据 

本案例数据来自外部数据集,共计22名患者,分为组1和组2,测量的指标是血红蛋白浓度Hb,测量的时间点分别是t1,t2,t3,t4。数据概况如下表:

数据结构:自变量X是分组变量,Y指标是4个时间点重复测量Hb浓度。

研究思路:1:Hb随t(时间)的变化趋势是什么?2:组1和组2相比,Hb随t的变化趋势是否不同?

0b935aa464634496cf30c2140a1d99ee.png

1 加载数据

library(nlme); ##混合效应模型library(ggplot2)##作图library(emmeans)##边际估计dt <- read.csv('dt.csv')col = c("#006400","#ef1eef","purple")  ##制作一个颜色变量

注:首先需要将数据集转化为混合效应模型可分析的结构(俗称“宽数据”变为“长数据”),这部分需要先处理数据,关于数据宽变长,后面有机会再给大家整下。这里加载进来的数据是已经处理好。

2 可视化Hb随时间的变化趋势

下面是图一的代码ggplot代码实现ggplot(data=dt,       aes(time,Hb,color=group,group = as.factor(id)))+  geom_point(size=1,fill="White")+  geom_line(          linetype=1,          alpha=0.7,          size=1)+  scale_colour_manual(values=col)+  scale_fill_manual(values=col)+  xlab("time")+  ylab("Hb")+  ylim(0,80)+  theme_classic()+  theme(legend.position="top")

a18a717665ffa9713dc5e0992b02da10.png

7dba28e8feaf898458404cc5afe23a34.png

结果解读:

图一是每个观察对象的Hb随时间的变化趋势,用两种颜色区别两组。图中每条线表示一个患者,纵坐标是Hb,横坐标是时间点。

图二是两组的Hb的估计边际均值随时间变化趋势。横坐标是时间点,纵坐标是估计边际均值,其中这个”均值”跟普通均值稍微有点差异,可以简单理解为均值。每个点上的误差线表示估计均值的标准误SE。

从以上两个图可以看出:Hb随时间呈线性上升的趋势,组2上升斜率低于组1,红色的线在绿色线下方。

3 时间作为分类变量,考察时间点和分组的交互效应

fit1<-lme(Hb~factor(time)*group,random=list(id=~1),          method="ML",data=dt)summary(fit1)

lme的参数说明:

formula:混合效应模型表达式,类似线性回归和二元逻辑回归,*表示分别考虑time,group,以及他们的交互作用。

random:设置随机效应,这里的随机效应是不同患者的随机截距效应。

method:模型参数的估计方法,有两种REML和ML。这里选择ML。‍

data:是数据集

4 模型1结果解读

b02cc174772f40525055a923c2b0d846.png

模型1结果解释:

fit1返回的结果很多,

第一:最上面是模型的AIC,BIC和极大似然值;

第二:模型的随机效应,随机效应用方差表示;14.62是随机截距的误差项,6.5是残差

第三:模型的固定效应,也是我们最关注的核心分析结果。

第二列Value是回归系数,代表的是各组各时间点的均值。下面依次罗列。

Intercept:     表示组1的t1时间点的Hb的均值,是26.56;

factor(time)2,表示组1的 t2相比于t1,Hb的差值,是10.19;

factor(time)3,表示组1的 t3相比于t1,Hb的差值,是13.44;

factor(time)4,表示组1的 t4相比于t1,Hb的差值,是15.95;

group2,        表示t1时刻,组2相比于组1的Hb的差值 是-0.43;

factor(time)2:group2,交互项,表示组2的t2与t1两时点差与组1相比,差是-3.58。

factor(time)3:group2,交互项,表示组2的t3与t1两时点差与组1相比,差是-1.61。

factor(time)4:group2,交互项,表示组2的t4与t1两时点差与组1相比,差是-1.06。

根据以上的模型显示:随着时间的增加,Hb逐步增加,而组2比组1增长慢。根据模型的P值,可知,Hb随时间增加,其变化是显著的。而由交互检验P>0.05,显示组1和组2随时间的变化趋势基本一致,没有统计学差异,二者没有交互作用。

5 时间作为连续变量,考察时间点和分组的交互效应

fit2<-lme(Hb~time*factor(group),random=list(id=~1),          method="ML",data=dt)summary(fit2)

6 模型2的结果解读

5a80da28cabcd9704d7a89d1a224496d.png

模型2结果解读‍

第一:同上;

第二:同上;

第三:模型的固定效应,也是我们最关注的核心分析结果。

第二列 Value是回归系数:

Intercept:  表示组1随时间拟合直线的截距,表示组1的t1时间点Hb的均值,是23.68;

time,表示组1随时间拟合直线的斜率,表示组1的t2相比于t1,t3相比于t2的Hb的差值,是5.11;

factor(group)2,表示t1时刻,组2相比于组1的Hb的差值 是-1.68;

time:factor(group)2,交互项,表示组2与组1相比,两条拟合直线斜率的差是-0.12。

根据以上的模型显示:随时间增加,Hb变化是显著的。而由交互检验显示,P>0.05,显示组1和组2随时间的变化趋势基本一致,二者没有交互作用。

结果和模型1完全一致。

7 模型1和模型2对比和选择

两个模型似然比检验anova(fit1,fit2)

5a2dc45651ace3e2f2f6b1106be7f379.png

结果解释:

模型对比:

模型1和模型2的分析结果完全一致,而模型2更加简洁的给出了两组的Hb随t变化的速度和差别,不过模型2是假使Hb随t呈线性变化,关于选择是否恰当,可以采用似然比检验模型1和模型2,如上,P=0.3941,差异不显著,说明简化的模型2可以代替模型1,本次我们选择模型2作为最终的模型,也就意味这Hb随时间变化是线性的。

如果差异显著,P<0.05,则说明不能用用直线关系代替,可以考虑引入t的平方或者三次方拟合。

模型最终结果分析:

以上的分析已经回答出一开始的两个问题:

1.Hb随着时间增加而直线上升;

2.随着时间的增加,组1的Hb增长率是5.11个单位,组2的增长率是4.99(计算5.11-0.12),但组1和组2增长的差别不显著(P=0.9282),即二者增长率一致。

8 模型残差检验

对模型2进行残差检验Shapiro-Francia法检验sf.test(fit2$residuals[,"id"])  P=0.1128Kolmogorov-Smirnov法检验正态lillie.test(fit2$residuals[,"id"])P=0.3038可视化残差分布hist(fit2$residuals[,1], plot=T, prob=T,       main="Histogram of residuals",xlab="Residuals")lines(density(fit2$residuals[,1],na.rm=TRUE))plot(fit2)

a3b27e4f5da92eebd07c10dce6069dce.png

eb0c5f126ec031e751f2ae2833595b42.png

结果解释:

结果显示两种正态检验方法的P均大于0.05,说明模型的残差符合正态分布,图1是残差随机分布在直线两边,直方图显示的残差成对称的左右分布,结果均说明,模型残差符合正态分布,模型的构建是合理的。

编辑:王菁‍‍‍
校对:刘光栋
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值