轉自個人微信公粽號【易學統(tǒng)計】的統(tǒng)計學習筆記:R語言:兩因素重復測量方差分析
01 研究問題
- 有研究將14名肥胖者隨機分成2組,1組用A種減肥藥,另一組用B種減肥藥,堅持服藥6個月,期間禁止使用任何影響體重的藥物,其他情況跟之前保持一致。分別測得0周、8周、16周和24周的體重資料。
- 問題:1.新型減肥藥A和現(xiàn)有減肥藥B的效果是否不同?2.肥胖者在服藥后不同時間體重的變化情況。3.控制因素和時間是否有交互作用?
02 方法說明
- 該研究是對同一觀察對象的體重在幾個不同的時間點上進行4次測量,由于同一個體的重復測量,其在不同時間點上的結果往往具有很強的相關性,違背了方差分析數(shù)據(jù)獨立性的要求,因此不能采用單因素方差分析,T檢驗等方法,而要采用重復測量方差分析法。
- 重復測量方差分析要求各個時間點指標變量滿足球形假設,根據(jù)檢驗結果判斷重復測量設計資料之間是否存在較強的相關性。然后根據(jù)球形檢驗結果選擇合適的統(tǒng)計方法和手段。通常用Mauchly方法檢驗是否滿足球形假設,若P>0.05,認為滿足,若P<0.05,則不滿足。
- 當滿足球形假設時,可進行一元方差分析,若不滿足,說明重復測量資料之間有較強的相關性。這時候常常進行一元方差分析的校正,用校正后的統(tǒng)計量及P值解釋統(tǒng)計結果。或者以多元方差分析為準,通過計算個體內(nèi)(within-subject)的差異檢驗不同時間對觀測指標的影響,用以分析時間因素對療效有無效應,時間與研究因素之間有無交互作用。
03 加載數(shù)據(jù)
數(shù)據(jù).png
04 異常值檢驗
dt <- read.csv('weight.csv',stringsAsFactors=F)
boxplot(dt$weight~dt$time,boxwex = 0.25,col=c('lightblue'),xlab='time(周)',ylab='weight',main='箱線圖')
異常值檢驗.png
- 方差分析時,對異常值非常敏感,因此需要檢驗異常值,采用箱線圖對每個內(nèi)因素各個水平進行檢驗,本研究數(shù)據(jù)中沒有顯著異常值,
05 正態(tài)檢驗
#組內(nèi)正態(tài)檢驗
shapiro.test(dt$weight[dt$time=='0']) #p值0.2045
shapiro.test(dt$weight[dt$time=='8']) #p值0.2141
shapiro.test(dt$weight[dt$time=='16'])#p值0.051
shapiro.test(dt$weight[dt$time=='24'])#p值0.029
- 采用shapiro-wilk對內(nèi)因素各水平進行正態(tài)檢驗,P值大于0.05,則數(shù)據(jù)符合正態(tài)分布,如果小于0.05,則不符合正態(tài)分布。本例數(shù)據(jù)基本都符合正態(tài)分布假設。
06 球形假設檢驗
#將dt從數(shù)據(jù)框轉換為矩陣,dt的格式為7行×8列
#8列分別是2個組的4個時間點:
#A1,A2,A3,A4,B1,B2,B3,B4
dt$col <- paste(dt$type,dt$time,sep='.')
dt.dcast <- dcast(dt[,c(1,5,4)],subID~col)
dt.dcast <- as.matrix(dt.dcast)
#進行多元線性回歸 (多個因變量)
mlmfit=lm(dt.dcast~1)
####定義數(shù)據(jù)的列結構
group=factor(rep(c("A","B"), c(4, 4)))
time=ordered(rep(1:4,2))
idata=data.frame(group,time)
#球形檢驗
mauchly.test(mlmfit,M=~group+time,data=idata)
# P < 0.001
- 本例中球形假設檢驗結果小于0.05,說明不滿足球形假設,因此組內(nèi)需要以多元方差分析為準,組間采用一元方差分析。
07 方差分析
fit <- aov(weight~time*type+Error(subID/time),data=dt)
summary(fit)
#Error: subID
#Df Sum Sq Mean Sq F value Pr(>F)
#type 1 49 48.7 0.069 0.797
#Residuals 12 8419 701.6
#Error: subID:time
#Df Sum Sq Mean Sq F value Pr(>F)
#time 1 76.13 76.13 9.144 0.0106 *
#time:type 1 1.49 1.49 0.179 0.6801
#Residuals 12 99.90 8.33
with(dt,interaction.plot(time,type,weight,type='b',col=c('red','blue'),pch=1:2))
- aov()函數(shù)中time*type表示有各自的主效應,以及二者交互效應。Error()表示誤差項,subID代表組間誤差,time表示組內(nèi)誤差。
- 返回值的上半部分表示type組間效應,P值大于0.05,說明不同類型的減肥藥的減肥效果效果沒有顯著差異。
-
返回值的下半部分表示time的組內(nèi)效應,其中time小于0.05,而time*group大于0.05,提示各個時間點的指標變量體重存在差異,即肥胖者在服藥后不同時間點體重具有差異,而控制因素對指標變量的影響不會隨著時間的變化而變化,二者之間不存在交互作用。可通過下圖來看。
圖片
以上就是本次分享的內(nèi)容了。后面還有更多高分統(tǒng)計方法分享,請持續(xù)關注哦~
如果您覺得有用,請點贊,轉發(fā)哦~
更多統(tǒng)計小知識,請關看 公粽號 易學統(tǒng)計
更多閱讀
R語言|基于Cox模型pec包深度驗證
R語言|中位生存時間列線圖繪制
R語言|Cox模型校準度曲線繪制
R語言|中位生存時間列線圖繪制
基于Lasso回歸篩選變量構建Cox模型并繪制Nomogram
R語言Logistic回歸模型驗證及Nomogram繪制
如何進行高維變量篩選和特征選擇(一)?Lasso回歸