在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, |
6 | labels= c ("No","Yes")) |
7 | model.L <- glm (ynaffair ~ age + yearsmarried + religiousness +rating, data=Affairs, family= binomial ()) |
若样本观测值变异性过大,即出现了过度离散现象,此时仍使用二项分布假设就会影响系数检测的显著性。那么补救的方法是使用准二项分布(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 ()) |
(Intercept) age yearsmarried religiousness rating
15.6175253 0.9733061 1.1163656 0.6971279 0.6691823
同样,在进行泊松分布也要考虑过度离散现象。其检测方法同样是残差除以其自由度。若确定过度离散存在,则要将family参数设置为准泊松分布(quasipoisson)。