多階層模型的效果量,有多種計算方法(LaHuis et al., 2014)。主要為解釋變異量方法。解釋變異量方法是指多階層模型中,由解釋變數所解釋的變異量比例。
是第一種要介紹的HLM的效果量是基於添加預測變量時減少殘差變異量的程度。
通過首先估計空模型以確定殘差變異量,接下來,將預測變量添加到模型中,將加入預測變項得比較模型與空模型中的殘差變異量進行比較。此方法不適用於隨機斜率模型。此方法聚焦於層次1的解釋變異量。 R2 (Approximate)如下圖計算:
(空模型層次1殘差變異量-加入預測變項比較模型的層次1殘差變異量)/空模型層次1殘差變異量
我們不會介紹層次2的Approximate R2,因為過去一項模擬研究認為Approximate R2不是有效的估計值,因此不推薦使用該指標(LaHuis et al., 2014)。Approximate R2一個主要優點是提供了直觀簡單方法,可以用手算就可以。但是,它們可能會產生負值。 也就是說,添加預測變量實際上可能會減少原本可以解釋的變異量,這種情況可能發生再添加層次2預測變數。因為變異量不可能有負值,這時就要把負值改成0。
Snijders 和 Bosker (1994) 提供了替代方法來解決這個負向變異量估計的問題。它反映了整體模型解釋變異量。但實務上,它還是有可能會有負值產生(LaHuis et al., 2014)
1-(加入預測變項模型的層次1殘差變異量+加入預測變項模型的層次2殘差變異量)/(空模型層次1殘差變異量+空模型層次2殘差變異量)
模擬研究的結果推薦使用此方法整體模型解釋變異量,並支持 Snijder 和 Bosker (1994) 建議,使用隨機截距模型而非隨機斜率模型計算解釋變異量方法(LaHuis et al., 2014)。
R語言分析使用威力強大的misty
。他可以幫我們計算R2 (S&B)。先從lmer
建立一個多層次比較模型,再使用multilevel.r2
:
library(lme4)
library(misty)
Full_Model <- lmer(依變項 ~ 自變項 + (1 | 層次2的ID), data = 資料檔名稱)
multilevel.r2(Full_Model , print = c("SB"))
為了想計算隨機斜率模型效果量,並不用分別取得兩個模型的殘差變異量。Rights & Sterba (2019) 發展出R2 (R&S)。該效果量資訊豐富且視覺化明瞭,是目前非常受歡迎的多層次模型效果量。可以用REML or FEML 。若要取的所有的R2 (R&S) ,需要將層次1的變項和交互作用都 cluster-mean centered。
Rights & Sterba (2019)經過公式推倒,可以將R2分成5個變異量來源,加總為1:
我自己有做小測試當作參考,測試結果如下:
固定斜率變項*固定斜率變項
交互作用會增加f1隨機斜率變項*固定斜率變項
交互作用全部都會影響隨機斜率變項*隨機斜率變項
交互作用導致模型不收斂...
圖示可以看下圖左邊(白色是σ2),下圖右邊則是各種R2 的組合,R t2 (fvm) 就是總解釋變異量,R w2 (f1v) 就是層次1變異量
R語言分析使用威力強大的r2mlm
。r2mlm要求資料檔只有層次的ID可以是factor
,其他所有變項都是numeric
,就算你沒有要用來分析
資料檔$schoolid <- as.factor(資料檔$schoolid) ## 改成 factor
class(資料檔$schoolid) ## 檢驗是不是真的是 factor
資料檔$變項 <- as.numeric(hsbfull$變項) ## 改成 numeric
接下來就可以計算R2 ((R&S)。先從lmer
建立一個多層次比較模型,再使用r2mlm
: