Random Coefficients Model一種包含隨機截距和隨機斜率的多層線性模型 。它用於建模具有層次結構的數據。本文將介紹該模型之公式、R語言分析、視覺化。如下圖,各個層次二群組具有不同的斜率和截距,代表斜率和截距都會隨著群體不同而不同。

公式
假設我們調查一群學生,他們來自不同的學校。我們想知道學生的學生社經地位 (X1)如何影響他們的數學成績 (Y) 。我們可以使用多層線性Random Coefficients Model來建模這種關係。
Level 1:
Y_ij = β0_j + β1_j * X1 + r_ij
此方程式模型個體數學成績Y (Y_ij) 和學生社經地位 (X1) 之間的關係,其中學生i嵌套在學校 j 中。截距 β0_j 表示學校 j 中的平均學生成就。斜率 β1_j 表示個體學生社經地位對學校 j 中數學成績的影響。誤差項 r_ij 表示模型無法解釋的學生數學成績成就的個體層面變異。如果模型顯示 β1_j 顯著為正,則表明學生社經地位 (X1)較高的學生更有可能取得較高的數學考試成績。
Level 2:
β0_j = γ00 + u0j
β1_j = γ10 + u1j
這些方程式顯示模型截距(β0_j )和斜率( β1_j)又可以進一步區分。截距 γ00 表示所有學校中的平均學生數學成績。斜率 γ10 表示所有學校中的社經地位 對數學成績的平均影響。誤差項 u0j 和 u1j 表示組層面變異,即具有隨機效果。
範例
好的,以下是 R 程式的範例:
# 載入所需的函數
library(lme4)
# 讀取資料
data <- read.csv("data.csv")
# 定義模型
random_slopes<- lmer(mathach ~ 1 + ses + (1+ ses|schoolid), data = data)
# 檢查模型結果
summary(model)
這個模型的 Level 1 方程式如下:
mathach_ij = β0_j + β1_j * ses + r_ij
其中:
- mathach_ij 是學生 i 在學校 j 的數學成績。
- β0_j 是學校 j 中的平均數學成績。
- β1_j 是個體學生 SES(社會經濟地位) 對學校 j 中數學成績的影響。
- ses 是社會經濟地位。
- r_ij 是個體層面變異量,殘差。
Level 2 方程式如下:
β0_j = γ00 + u0j
β1_j = γ10 + u1j
其中:
- γ00 是所有學校的平均數學成績。
- γ10 是所有學校中個體學生 SES 對數學成績的平均影響。
- u0j 和 u1j 是組層面變異。
模型的結果如下:
REML criterion at convergence: 46714.2
Scaled residuals:
Min 1Q Median 3Q Max
-3.09680 -0.73193 0.01855 0.75386 2.89924
Random effects:
Groups Name Variance Std.Dev. Corr
schoolid (Intercept) 8.681 2.9464
ses 0.694 0.8331 0.02
Residual 36.700 6.0581
Number of obs: 7185, groups: schoolid, 160
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 12.6362 0.2445 156.7512 51.68 <2e-16 ***
ses 2.1932 0.1283 155.2166 17.10 <2e-16 ***
從結果中可以看到,模型的估計值是:
Fixed effects:(Intercept)
平均數學成績為 12.6362 分。Fixed effects:SES
每增加 1 單位,數學成績將增加 2.1932 分。Random effects:schoolid (Intercept)
數學成績在不同學校變異量為 8.681 。Random effects:ses
SES 對數學成績影響在不同學校變異量為 0.694 。Random effects:Corr
u0j 和 u1j 是之間相關係數為.02。
若不想使用REML估計法可以改用ML估計法:
lmer(mathach ~ 1 + sesdev + (1+ sesdev|schoolid), data = hsbfull, REML = F)
視覺化
# 載入所需的函數
library(ggplot2)
# 繪製隨機斜率模型的預測線
ggplot(data = data, aes(x = ses, y = mathach)) +
ylim(0, 25) +
geom_line(aes(y = pred2, group = schoolid))
參數說明
data
參數指定要使用的數據框。在本例中,我們使用data
數據框。aes()
參數指定 x 和 y 軸的變量。在本例中,我們將 x 軸指定為ses
,y 軸指定為mathach
。ylim()
參數用於控制 y 軸的範圍。在本例中,我們將 y 軸的範圍限制在 0 到 25 之間。group
參數用於控制線條的組別。在本例中,我們將線條分組為不同的學校schoolid
。