1. 程式人生 > >多層迴歸模型簡介

多層迴歸模型簡介

多層迴歸模型(Multi-level model)中有很多容易混淆的概念,因為很多概念是來源於不同的專業背景。首先讓我們先羅列這些名詞進行區分,再來R語言來舉例。

多層迴歸模型通常涉及到對同一個體進行反覆測量,這樣得到的資料就不再相互獨立而是存在某種相關性,所以普通線性迴歸不再適用。當這種反覆測量是在不同時點上進行時,這就稱為面板資料分析(panel data analysis)或者縱向資料分析(longitudinal data analysis)。


Fixed Effect:固定效應,也就是普通線性迴歸中處理的預測變數,它在模型中對響應變數的期望造成影響,其因子水平包含明確的資訊,通常是在實驗中加以控制的因素。

Random Effect:隨機效應,也就是一個隨機變數,估計它是沒有意義的。它在模型中對響應變數的方差造成影響,其因子水平包含資訊不清楚,通常在實驗中無法控制的因素,例如在面板資料分析中,不同的個體差異就是隨機效應。

Mix effect model:混合效應模型
,模型中包含了fixed effect和random effect,根據random effect的影響,又區別為對模型截距的影響(random intercept)和對模型截距與斜率的影響(random intercept and slope)。

假設一個面板資料中個體之間存在差異,那麼它是一個random effect。它的影響分兩種情況,一種是隻影響截距,即是它與模型中其它預測變數相加,如果對不同個體分別作線性迴歸,那麼得到迴歸線截距會不同,但迴歸線平行,此時又稱為固定效應迴歸模型(Fixed Effects Regression Model)。另一種同時影響模型截距與斜率,是指它還與其它變數相乘,那麼分別得到的迴歸線截距和斜率都不同,此時又稱為隨機效應模型(Random Effects Regression Model)


如果模型中不考慮random effect,也就是認為個體和時間都沒有顯著性差異,此時模型退化為混合估計模型(Pooled Regression Model),此時可以直接把面板資料混合在一起用普通線性迴歸估計引數。

下面我們以faraway包中的psid資料來舉例,該資料集是對美國人的收入情況進行調查所得到的,其中包括了年齡、教育、性別、時間和個體ID這幾個變數,我們希望瞭解這些因素對收入的影響。
  age educ sex income year person
1  31   12   M   6000   68      1
2  31   12   M   5300   69      1
3  31   12   M   5200   70      1
4  31   12   M   6900   71      1
5  31   12   M   7500   72      1
6  31   12   M   8000   73      1

如果假設認為這些調查物件是同質的,也就是個體間沒有差異性,那麼可以將資料完全彙集(complete pooling)
到一起,直接利用lm函式進行迴歸。但這個混合效應模型的同質假設往往不成立,資料彙集導致過度簡化。

另一種思路是假設研究的異質性,將不同的個體分別進行迴歸,從而得到針對特定個體的估計值,這稱為不彙集(no pooling)。但這種方法導致每個迴歸所用到的樣本減少,從而難以估計統計量的標準差。

多層迴歸模型的思路是前兩者的折中,所以又稱為部分彙集(partial pooling)。在R語言中我們使用lme4包中的lmer函式來完成這項工作。首先載入faraway包以便讀取psid資料集,然後載入mgcv包,再將年份資料中心化以方便解釋模型,最後用lmer函式進行建模。
-----------------
library(faraway)
library(lme4)
psid$cyear <- psid$year-78 
model1=lmer(log(income) ~ cyear*sex +age+educ+(cyear|person),psid) 
-----------------
lmer函式使用和lm是類似的,一般變量表示固定效應,括號內豎線右側的person表示它是一個隨機效應,它與模型中其它變數相加,而且與年份cyear變數相乘,影響其斜率。這就是一個隨機效應模型。如果認為隨機效應隻影響模型截距,那麼固定效應迴歸模型可以用下面的公式
-----------------
model2=lmer(log(income) ~ cyear*sex +age+educ+(1|person),psid)
-----------------
為了判斷哪一個模型更為合適,可以使用anova函式,從結果中觀察到P值很小,判斷應當使用model1
-----------------
anova(model1,model2)

Data: psid
Models:
model2: log(income) ~ cyear * sex + age + educ + (1 | person)
model1: log(income) ~ cyear * sex + age + educ + (cyear | person)
       Df    AIC    BIC  logLik  Chisq Chi Df
model2  8 3943.9 3987.2 -1963.9              
model1 10 3805.6 3859.7 -1892.8 142.27      2
       Pr(>Chisq)    
model2               
model1  < 2.2e-16 ***
-----------------

得到的模型結果還可以用各種泛型函式如summary、predict、resid進行進一步處理。當響應變數不符合正態分佈假設時,還可以用廣義多層迴歸進行(glmer)建模

參考資料:
環境與生態統計--R語言的應用
The R Book
A_Handbook_of_Statistical_Analyses_Using_R
Extending_the_Linear_Model_with_R__Generalized_Linear__Mixed_Effects_and_Nonparametric_Regression_Model