用R語言進行HLM分析第一章將介紹ICC係數定義,並實際示範如何使用R語言計算ICC,並解釋其含意。
用傳統統計分析多層次資料的限制一文已經說明很清楚,多層次資料的存在使得傳統的統計方法無法直接應用,因為這些方法通常假設觀察到的資料是獨立的。為了解決這個問題,出現了多層次模型(MLM)或階層線性模式(HLM)。這些模型能夠考慮到多層次資料的結構,並在分析中引入階層結構的效應。
如何確定何時需要做多層次分析?可以透過ICC 決定,ICC 是 Intraclass Correlation Coefficient 的簡寫,中文翻譯為「組間相關係數」。它是一種用於衡量多層次資料中組間變異與總變異之比的指標。ICC 越高,表示層次2變異越大,總變異中層次2變異所占的比例越高。
因此,ICC 越高,越需要使用多層次分析來處理。公式如下圖,τ00代表層次2的變異量,σ2代表層次1的變異量:
如下圖,ICC 越高發現相同群體內的成員在分數上表現非常相似
如下圖,ICC 越低發現相同群體內的成員表現沒有這麼相似
以下是一些 ICC 的應用:
有隨機效果的ANOVA,允許截距隨著不同層次2單位變化。需要透過具有隨機效果的ANOVA計算ICC。該模型假設我們有兩個層次,依變項為Y,層次1的自變項有0個。β 0第一層的截距,β 0 0第二層截距(又稱為grand-mean ,所有層次2在Y的平均數),e是層次1誤差也就是迴歸中的殘差,e0為隨機效果,所有層次2的變異量。沒有任何其他預測變項。
Level 1:
Y = β 0 + e
Level 2:
β 0 = β 0 0+e0
方程式整理後,把β 0 0+e0帶入β 0j
Y = β 0 0 + e+e0
在 R 語言中,data("sleepstudy")
命令會載入 lme4
套件中的 sleepstudy
資料集。sleepstudy
資料集包含睡眠剝奪研究中受試者的平均反應時間資料。
資料集有 180 個觀察值和 3 個變量:
Reaction
: 平均反應時間 (毫秒)Days
: 睡眠剝奪天數Subject
: 受試者 ID要載入 sleepstudy
資料集,可以使用以下命令:
library(lme4) #MLM
library(performance) #ICC
data("sleepstudy")
這將將資料集載入 R 工作區。您可以使用 sleepstudy
變數名稱來存取資料集。
要查看資料集的前 10 行或全部,可以使用以下命令:
head(sleepstudy, 10)#前 10 行
sleepstudy#看全部
從下面輸出可以看出,同個受試者睡眠剝奪從0到9天,每天都會測一次反應時間,所以資料是嵌套的:
Reaction Days Subject
1 249.5600 0 308
2 258.7047 1 308
3 250.8006 2 308
4 321.4398 3 308
5 356.8519 4 308
6 414.6901 5 308
7 382.2038 6 308
8 290.1486 7 308
9 430.5853 8 308
10 466.3535 9 308
11 222.7339 0 309
12 205.2658 1 309
13 202.9778 2 309
14 204.7070 3 309
15 207.7161 4 309
16 215.9618 5 309
17 213.6303 6 309
接下來我們使用 sleepstudy
資料集進行多層次分析,先計算隨機效果的ANOVA,層次2是Days,層次1為Subject,依變項為Reaction:
summary(lmer(Reaction ~ (1| sleepstudy$Days), data = sleepstudy))
根據先前的公式可以寫成這樣:
Level 1:Subject
Reaction = β 0j + e
Level 2:Days
β 0 = β 0 0+e0
部分結果如下,τ00代表層次2的變異量,這裡是894.9;σ2代表層次1的變異量,這裡是2363.1,全部變異量為894.9+2363.1 = 3258;所有天數的Reaction平均為298.51,p ***顯著代表該數值顯著不等於0。
Random effects:
Groups Name Variance Std.Dev.
sleepstudy$Days (Intercept) 894.9 29.91 #τ00 = 894.9
Residual 2363.1 48.61 #σ2 = 2363.1
Number of obs: 180, groups: sleepstudy$Days, 10 #10天(0~9)
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 298.51 10.13 9.00 29.47 2.91e-10 ***
#Across all Days the overall average Days mean = 298.51
---
接下來我們開始手動計算ICC,看看層次2能解釋多少Reaction的整體變異量。ICC = 894.9/(894.9+2363.1) = 0.274。也可以用語法icc()
幫我們檢查,結果是0.275,差不多,此係數代表層次2能解釋百分之27.4左右Reaction的整體變異量,換言之,Reaction的整體變異量中,有百分之27.4左右的變異量來自層次二(Days)的差異。
icc(lmer(Reaction ~ (1| sleepstudy$Days), data = sleepstudy))
您的研究遇到了統計分析的困難嗎?您需要專業的統計諮詢和代跑服務嗎?請點我看提供的服務