翻譯學習 | 混合線性模型的思考

1. 前言

這篇文檔,是爲那些想了解混合線性模型的人準備的。這裏面很多部分,可以在很多領域中使用 。我們假定大家對一些矩陣和線性迴歸的理論有所瞭解,但是更高級的知識只有模糊的認識,希望對你有所幫助。

混合線性模型,不同的學科有不同的名稱,使用不同的術語去描述同樣的東西。 這裏試圖用一種比較簡明的方法進行闡述,我希望這不會讓你更迷惑。

2. 介紹

混合模型是用於羣集數據情況的極其有用的建模工具。 擁有重複測量觀測數據的數據或以其他方式聚集觀測數據的數據(例如學校內的學生,地理區域內的城市)非常普遍。 混合模型可以以多種方式處理此類數據,但是對於剛開始使用的術語,尤其是跨學科的術語,可能有點令人生畏。

關於混合模型,您可能會遇到一些術語:

  • Variance components 方差成分

  • Random intercepts and slopes 隨機截距和斜率

  • Random effects 隨機效應

  • Random coefficients 隨機係數

  • Varying coefficients 係數變化

  • Intercepts and slopes-as-outcomes 攔截和結果傾斜

  • Hierarchical linear models 分層線性模型

  • Multilevel models 多層模型

  • Growth curve models (possibly Latent GCM) 增長曲線模型(可能是潛在的GCM)

  • Mixed effects models 混合效果模型

所有描述混合模型的名稱, 有些可能更具歷史性,有些則更多地出現在特定學科中,有些則可能引用某種數據結構(例如多級羣集),而另一些則是特殊情況。

混合效應或簡單混合模型通常是指固定效應和隨機效應的混合。 我更喜歡混合模型一詞,因爲它很簡單並且沒有暗示特定的結構。

3. 標準線性模型

首先,讓我們從標準線性模型開始,以熟悉該表示法。 爲了使事情儘可能簡單,同時又可以推廣到常見數據情況,我將假設一些感興趣的變量y和一個連續/數字協變量。

yi=α+βXi+ei y_i = \alpha + \beta X_i + e_i
eiN(0,σ2)e_i \sim \mathcal{N}(0, \sigma^2)

這裏:

  • y 是觀測值
  • alpha 是截距
  • beta是X的效應值
  • e 是殘差,它滿足平均數爲0,方差爲Ve的正態分佈

如果寫爲矩陣的形式:

μ = X %*% β
y = rnorm(n, μ, σ²)

在嘗試達到平衡時,我懷疑這種方法可能會在不同程度上成功或失敗,但是在符號和代碼之間(很多教科書演示中都缺少這種東西),我希望事情會很清楚。

4. 應用實例

讓我們看一些數據,開始考慮混合模型。 我將使用lme4軟件包中的sleepstudy數據。 以下描述來自相應的幫助文件。

睡眠剝奪研究對象每天的平均反應時間。 在第0天,受試者具有正常的睡眠量。 從那天晚上開始,他們每晚只能睡3個小時。 觀察結果代表每天對每個受試者進行的一系列測試的平均反應時間(以毫秒爲單位)。

讓我們使用標準的線性模型來探討持續睡眠剝奪對反應時間的影響。

這裏用線性迴歸模型,Days爲x變量,Reaction爲y變量(還有人和我一樣,對因變量和自變量摸不着頭腦的麼,用x變量和y變量更容易理解有沒有!)

# > data(sleepstudy, package='lme4')
# > slim = lm(Reaction ~ Days, data=sleepstudy)
# > summary(slim)
# 
# Call:
#   lm(formula = Reaction ~ Days, data = sleepstudy)
# 
# Residuals:
#   Min       1Q   Median       3Q      Max 
# -110.848  -27.483    1.546   26.142  139.953 
# 
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  251.405      6.610  38.033  < 2e-16 ***
#   Days          10.467      1.238   8.454 9.89e-15 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 47.71 on 178 degrees of freedom
# Multiple R-squared:  0.2865,	Adjusted R-squared:  0.2825 
# F-statistic: 71.46 on 1 and 178 DF,  p-value: 9.894e-15

在天數爲正的情況下,我們看到更多的睡眠剝奪會導致反應時間增加/變慢。 但是讓我們繪製數據。

這告訴我們什麼? 黑線是我們當前模型的建議,即假設每個人的出發點和軌跡都相同。 但是,我們看到對象的起點可能相差100毫秒之多。 此外,雖然斜率通常爲正,但有些斜率隨時間變化很小甚至沒有變化。 換句話說,個人的截距和坡度都有明顯的變化。 我們將在最後討論這些數據。

5. 所有可能的混線性模型分析這個數據

因此,我們要考慮數據的集羣性質。 與其像上面的SLiM中那樣忽略聚類,不如考慮爲每個人運行完全獨立的迴歸。 但是,這些模型通常只需要很少的數據就可以運行,並且會被過度上下文化。 正如我們將看到的,混合模型將允許每個人的隨機截距和斜率,並在不因個人而異的情況下考慮聚類。

如何描述這個模型? 事實證明,它可以並且以多種方式顯示,具體取決於您正在查看的文本或文章。 以下內容受Gelman&Hill(2007)的啓發,他們展示了編寫混合模型的五種方法。 爲簡單起見,我們通常只關注隨機截距模型,但有時會超出該範圍。 前幾對公式僅需要了解標準迴歸模型,但其他模型描述則需要更多知識。

5.1 Mixed Model 1a: Allowing coefficients to vary across groups


在上面,c簇內的每個觀測i都有一個截距α,這取決於它所屬的c簇。αc假設爲正態分佈,平均μα和方差τ2。μα是我們在SLiM方法中看到的總截距。e是SLiM中描述的正態分佈的平均零。對於每一個模型描述,我將注意到一個主要的參考,在那裏人們可以看到它的形式與特定的文本或文章幾乎相同。它將不是唯一一個這樣做的引用,但至少它應該是一個提供一些額外視角的引用。

5.2 Mixed Model 1b: Multilevel model

5.3 Mixed Model 2: Combining separate local regressions

在這裏插入圖片描述

5.4 Mixed Model 3a: Design matrix for random component

5.5 Mixed Model 3b: Design matrix again

5.6 Mixed Model 3c: General notation


5.7 Mixed Model 4a: Regression with multiple error terms

5.8 Mixed Model 4b: Conditional vs. marginal model


5.9 Mixed Model 5b: Multivariate normal model

5.10 Mixed Model 6: Penalized regression


5.11 Mixed Model 7: Bayesian mixed model

6 模擬數據運行混合模型

這裏,設置:
Va = 0.50.5 = 0.25
Ve = 1
1 =1
隨機因子blup:gamma_
截距:3
固定因子blue:0.75

# setup
set.seed(1234)
nclus = 100                                # number of groups
clus = factor(rep(1:nclus, each=10))       # cluster variable
n = length(clus)                           # total n

# parameters
sigma = 1                                  # residual sd
tau = .5                                   # re sd
gamma_ = rnorm(nclus, mean=0, sd=tau)      # random effects
e = rnorm(n, mean=0, sd=sigma)             # residual error
intercept = 3                              # fixed effects
b1 = .75

# data
x = rnorm(n)                               # covariate
y = intercept + b1*x + gamma_[clus] + e    # see model 1
d = data.frame(x, y, clus=clus)
head(d)
str(d)


使用lme4包運行

library(lme4)
lmeMod = lmer(y ~ x + (1|clus), data=d)
summary(lmeMod)


估算的結果可以看出:
Va = 0.224,和0.25比較接近
Ve = 0.97,和1比較接近
blue:0.799,和0.75接近
截距:2.9,和3接近

提取blup值:

asreml代碼

> library(asreml)
> mod1 = asreml(y ~ x, random = ~ clus, residual = ~ idv(units),data=d)
Model fitted using the sigma parameterization.
ASReml 4.1.0 Wed Apr  5 16:34:50 2020
          LogLik        Sigma2     DF     wall    cpu
 1     -3817.282           1.0    998 16:34:50    0.0
 2     -2862.495           1.0    998 16:34:50    0.0
 3     -1811.528           1.0    998 16:34:50    0.0
 4     -1082.178           1.0    998 16:34:50    0.0
 5      -688.386           1.0    998 16:34:50    0.0
 6      -572.668           1.0    998 16:34:50    0.0
 7      -553.615           1.0    998 16:34:50    0.0
 8      -552.690           1.0    998 16:34:50    0.0
 9      -552.687           1.0    998 16:34:50    0.0
> summary(mod1)$varcomp
            component  std.error   z.ratio bound %ch
clus        0.2247008 0.04605034  4.879461     P   0
units!units 0.9755909 0.04601438 21.201871     P   0
units!R     1.0000000         NA        NA     F   0
> coef(mod1)$fixed
               effect
x           0.7994379
(Intercept) 2.9008683

結果是一致的

比較設定的blup值和計算的blup值的相關係數:

> cor(gamma_,coef(mod1)$random)
       effect
[1,] 0.838686

7 sleepstudy數據運行混合模型

sleepMod = lmer(Reaction ~ Days + (Days|Subject), data=sleepstudy)
summary(sleepMod)
> # sleepstudy 數據
> sleepMod = lmer(Reaction ~ Days + (Days|Subject), data=sleepstudy)
> summary(sleepMod)
Linear mixed model fit by REML ['lmerMod']
Formula: Reaction ~ Days + (Days | Subject)
   Data: sleepstudy

REML criterion at convergence: 1743.6

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.9536 -0.4634  0.0231  0.4633  5.1793 

Random effects:
 Groups   Name        Variance Std.Dev. Corr
 Subject  (Intercept) 611.90   24.737       
          Days         35.08    5.923   0.07
 Residual             654.94   25.592       
Number of obs: 180, groups:  Subject, 18

Fixed effects:
            Estimate Std. Error t value
(Intercept)  251.405      6.824  36.843
Days          10.467      1.546   6.771

Correlation of Fixed Effects:
     (Intr)
Days -0.138

查看每個subject的效應值以及截距:

> ranef(sleepMod)
$Subject
    (Intercept)        Days
308   2.2575329   9.1992737
309 -40.3942719  -8.6205161
310 -38.9563542  -5.4495796
330  23.6888704  -4.8141448
331  22.2585409  -3.0696766
332   9.0387625  -0.2720535
333  16.8389833  -0.2233978
334  -7.2320462   1.0745075
335  -0.3326901 -10.7524799
337  34.8865253   8.6290208
349 -25.2080191   1.1730997
350 -13.0694180   6.6142185
351   4.5777099  -3.0152825
352  20.8614523   3.5364062
369   3.2750882   0.8722876
370 -25.6110745   4.8222518
371   0.8070591  -0.9881730
372  12.3133491   1.2842380

with conditional variances for “Subject” 

如果我們對其進行作圖:

我們可以看到混合模型的好處,因爲我們會有結合了個體特定影響的預測,預測的更準確。

8 其它主題

我將簡要提及其他一些主題,但這些主題不會改變到目前爲止討論的一般方法。

  • 增加分組的協變量(Cluster level covariates )
  • 注意隨機因子是鑲嵌結構,還是交互結構
  • 你可能注意lme4包中沒有給出p-value值,軟件不會直接給出(除非用的是貝葉斯框架),其它軟件包給出p-value,不一定說明他就是正確的。
  • 隨機因子有關係矩陣?響應變量是二分類?還有很多問題需要考慮,有些數據不適合用混合模型去分析

9. 彙總

在模型描述和代碼之間,希望您對標準的混合模型框架有了很好的瞭解。 混合模型是對標準glm的非常靈活的擴展,可以直接與加性模型,空間模型和其他模型建立聯繫,因此可以將它們帶到很遠。 我可以說在lme4,mgcv和brms之間,將有很多很多方法可以以多種方式瀏覽其數據。 祝您研究順利!

10. 參考文獻

Bates, Douglas, Martin Mächler, Benjamin Bolker, and Steven Walker. 2015. “Fitting Linear Mixed-Effects Models Using Lme4.”
Fahrmeir, Ludwig, Thomas Kneib, Stefan Lang, and Brian Marx. 2013. “Regression.”
Gelman, Andrew, and Jennifer Hill. 2007. “Data Analysis Using Regression and Multilevel/Hierarchical Models.”
Gelman, Andrew, John Carlin, Hal Stern, David Dunson, Aki Vehtari, and Donald Rubin. 2013. “Bayesian Data Analysis.”
Wood, Simon. 2006. “Generalized Additive Models.”

英文原文:https://m-clark.github.io/docs/mixedModels/mixedModels.html#standard_linear_model

個人公衆號:育種數據分析之放飛自我

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章