A. 醫學生都想學的縱向隨訪數據分析,你學會了嗎
作者丨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()函數 針對變數較多時建立模型較好,運行速度較快。同時也可以看得出,我們的響應變數是定量變數,因此,我們選擇建立線性混合效應模型,但若是我們的 響應變數是分類變數 ,那方法就不一樣咯。
怎麼樣?是不是挺簡單的,希望大家多多練習。如果你有關於回歸分析方面的問題,可以及時聯系我,我一定不遺餘力喲,期待我們的再次相約。