1. 程式人生 > >廣義線性模型(GLM)

廣義線性模型(GLM)

在R中通常使用glm函式構造廣義線性模型,其中分佈引數包括了binomaial(兩項分佈)、gaussian(正態分佈)、gamma(伽馬分佈)、poisson(泊松分佈)等。和lm函式類似,glm的建模結果可以通過下述的泛型函式進行二次處理,如summary()、coef()、confint()、residuals()、anova()、plot()、predict() 一、Logistic迴歸 Logistic迴歸中假設響應變數服從二項分佈,引數family設定為binomial,連線函式link設定為logit,我們以AER包中的Affairs資料集作為例子。該資料集是關於婚姻出軌,其中affairs變量表示出軌次數,資料集中還包括結婚時間、教育、宗教等其它變數。由於affairs為正整數,為了進行Logistic迴歸先要將其轉化為二元變數。
1 data(Affairs, package='AER')
2 Affairs$ynaffair[Affairs$affairs < 0] <- 1
3 Affairs$ynaffair[Affairs$affairs < 0] <- 0
4 Affairs$ynaffair <- factor(Affairs$ynaffair,
5 levels=c(0,1),
6 labels=c("No","Yes"))
7 model.L <- 
glm(ynaffair ~ age + yearsmarried + religiousness +rating, data=Affairs, family=binomial())
8 summary(model.L)
若樣本觀測值變異性過大,即出現了過度離散現象,此時仍使用二項分佈假設就會影響係數檢測的顯著性。那麼補救的方法是使用準二項分佈(quasibinomial)。首先要檢測樣本是否存在過度離散現象,方法是用殘差除以殘差自由度,若超過1則意味著過度離散。那麼將family引數改為quasibinomial。 其它和Logistic迴歸相關的函式還包括:robust包中的glmRob函式實施穩健GLM;mlogit包中的mlogit函式對多分類變數進行logistic迴歸;rms包中的lrm函式對順序變數進行Logistic迴歸。  二、Poisson迴歸 泊松迴歸假設響應變數服從泊松分佈,而連線函式為log函式。仍以前面未轉化的Affairs資料集為例。建立模型後通過coef函式來提取模型係數,因為泊松迴歸中響應變數經過了log函式變換,所以對係數進行指數變換可更好的對結果進行解釋。從中觀察到,在其它變數不變前提下,結婚時間增長1年,那麼出軌次數期望值則變為之前的1.11倍。
1
model.P <- glm(affairs ~ age + yearsmarried + religiousness +rating, data=Affairs, family=poisson())
2 exp(coef(model.P))
 (Intercept)          age  yearsmarried religiousness        rating 15.6175253     0.9733061     1.1163656     0.6971279     0.6691823 同樣,在進行泊松分佈也要考慮過度離散現象。其檢測方法同樣是殘差除以其自由度。若確定過度離散存在,則要將family引數設定為準泊松分佈(quasipoisson)。