更新於 2024/11/07閱讀時間約 7 分鐘

用R介紹和計算ICC

用R語言進行HLM分析第一章將介紹ICC係數定義,並實際示範如何使用R語言計算ICC,並解釋其含意。


用傳統統計分析多層次資料的限制一文已經說明很清楚,多層次資料的存在使得傳統的統計方法無法直接應用,因為這些方法通常假設觀察到的資料是獨立的。為了解決這個問題,出現了多層次模型(MLM)或階層線性模式(HLM)。這些模型能夠考慮到多層次資料的結構,並在分析中引入階層結構的效應。

ICC介紹

如何確定何時需要做多層次分析?可以透過ICC 決定,ICC 是 Intraclass Correlation Coefficient 的簡寫,中文翻譯為「組間相關係數」。它是一種用於衡量多層次資料中組間變異與總變異之比的指標。ICC 越高,表示層次2變異越大,總變異中層次2變異所占的比例越高。
因此,ICC 越高,越需要使用多層次分析來處理。公式如下圖,τ00代表層次2的變異量,σ2代表層次1的變異量:

如下圖,ICC 越高發現相同群體內的成員在分數上表現非常相似

https://dcricollab.dcri.duke.edu/sites/NIHKR/KR/Intraclass_Correlation_Coefficient_Cheat_Sheet_March_15_2020.pdf

如下圖,ICC 越低發現相同群體內的成員表現沒有這麼相似

https://dcricollab.dcri.duke.edu/sites/NIHKR/KR/Intraclass_Correlation_Coefficient_Cheat_Sheet_March_15_2020.pdf

以下是一些 ICC 的應用:

  • 在教育研究中,可以用 ICC 來衡量班級之間的學業表現差異。ICC 越高,表示班級之間的學業表現差異越大,需要使用多層次分析來控制班級的影響。
  • 在醫療研究中,可以用 ICC 來衡量醫院之間的治療效果差異。ICC 越高,表示醫院之間的治療效果差異越大,需要使用多層次分析來控制醫院的影響。

隨機效果的ANOVA

有隨機效果的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))


您的研究遇到了統計分析的困難嗎?您需要專業的統計諮詢和代跑服務嗎?請點我看提供的服務
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.