医学生都想学的纵向随访数据分析,你学会了吗?

如题所述

第1个回答  2022-07-20
                                                                              作者丨Lily

                                                     来源丨医数思维云课堂(ID:Datamedi)   

在医学临床实验研究中,我们经常会收集到患者的多次 重复测量纵向随访数据 ,即每一个患者都有多次观测值,这些观测值是在不同时间记录的,观测次数、时间和间隔都不一定一样,且多次观测值都具有潜在相关性,往往在做分析时是我们更需要关注的。

那么问题来了,面对不同于我们经常收集到的横断面数据,该如何处理分析这些纵向数据呢?别急,听我慢慢道来。

针对 纵向随访数据 ,结合数据特点,应利用 线性混合效应模型 进行建模。该模型包含了 固定效应以及随机效应 ,其中随机效应描述的是在不同层次的不同水平中,各变量对总体观察变量的贡献。

那针对线性混合效应模型,如何建模分析呢?今天我推荐R语言当中线性混合效应模型的两个包:

1、 nlme包,这是相对成熟的R包,它除了可以分析分层的线性混合效应模型,也可以处理非线性模型。在优势方面,个人认为它可以处理相处复杂的线性和非线性模型,可以定义方差协方差结构,也可以在广义线性模型中定义连接函数。缺点呢,随机效应的定义过于呆板,并且当数据量很大时,速度很慢,也不能处理多元数据。

2、 lme4包,相对于nlme包而言,它的运行速度快一点,对于固定效应、随机效应的结构也可以相对更复杂一点。但是不能处理协方差和相关系数结构。

接下来通过案例,让我们更好的理解这个模型:

例: 牛奶蛋白质含量 这个数据是纵向数据的一个典型的例子。曾经被Diggle,et.al.(2013)等研究过,这个数据关于79头澳大利亚的奶牛牛奶蛋白质含量和三种饲料的关系,对每一头奶牛计划观测19次,每周一次,但是结果得到,有些奶牛观测了19周,有些不到19周,还有最少的观察了12次。

变量名称变量解释

id牛的编号

week第几周

protein蛋白质含量

diet饲料种类:1.barley;2.lunpins;3.mixed

01  数据的基本描述

library(lattice)

data_milk<-read.csv("milk.csv")

head(data)

xyplot(protein ~ week | diet, data = data_milk,

       type = c("b", "smooth"), lwd = 2,

       as.table = TRUE, ylab = "protein",

       xlab = "Time (weeks)")

02  建立线性混合效应模型

1、 nlme包

library(nlme)

model1<-lme(protein~week+diet,random=~week|id,data_milk,method="ML")

summary(model1)

结果如下:

接下来我们可以用 F检验来看各个变量的显著性 :

anova(model1)

结果如下:

通过上述结果来看,两个变量都显著,但week的系数是负数,这是由于总体上,一开始试验时牛奶的蛋白质含量大多相对较高,后面有几周下降,然后有回升,所以总体来说似乎随时间是下降的。

2、 lme4包 ,但是推荐使用 lmerTest包 ,它的结果可以 输出P值 ,即显著性结果值。

library(lme4)

library(lmerTest)

model2<-lmer(protein~week+diet+(week|id),data_milk)

summary(model2)

结果如下:

通过上述两个包建立的模型可以看出,得到的结果几乎一样,但是 lmer()函数 针对变量较多时建立模型较好,运行速度较快。同时也可以看得出,我们的响应变量是定量变量,因此,我们选择建立线性混合效应模型,但若是我们的 响应变量是分类变量 ,那方法就不一样咯。

怎么样?是不是挺简单的,希望大家多多练习。如果你有关于回归分析方面的问题,可以及时联系我,我一定不遗余力哟,期待我们的再次相约。
相似回答