廣義線性模型(GLM)
阿新 • • 發佈:2019-01-08
在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迴歸先要將其轉化為二元變數。
若樣本觀測值變異性過大,即出現了過度離散現象,此時仍使用二項分佈假設就會影響係數檢測的顯著性。那麼補救的方法是使用準二項分佈(quasibinomial)。首先要檢測樣本是否存在過度離散現象,方法是用殘差除以殘差自由度,若超過1則意味著過度離散。那麼將family引數改為quasibinomial。
其它和Logistic迴歸相關的函式還包括:robust包中的glmRob函式實施穩健GLM;mlogit包中的mlogit函式對多分類變數進行logistic迴歸;rms包中的lrm函式對順序變數進行Logistic迴歸。
二、Poisson迴歸
泊松迴歸假設響應變數服從泊松分佈,而連線函式為log函式。仍以前面未轉化的Affairs資料集為例。建立模型後通過coef函式來提取模型係數,因為泊松迴歸中響應變數經過了log函式變換,所以對係數進行指數變換可更好的對結果進行解釋。從中觀察到,在其它變數不變前提下,結婚時間增長1年,那麼出軌次數期望值則變為之前的1.11倍。
(Intercept) age yearsmarried religiousness rating
15.6175253 0.9733061 1.1163656 0.6971279 0.6691823
同樣,在進行泊松分佈也要考慮過度離散現象。其檢測方法同樣是殘差除以其自由度。若確定過度離散存在,則要將family引數設定為準泊松分佈(quasipoisson)。
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) |
1 |
model.P <- glm (affairs ~ age + yearsmarried + religiousness +rating, data=Affairs, family= poisson ()) |
2 |
exp ( coef (model.P)) |