星期四, 一月 05, 2012

再谈广义线性模型

广义线性模型(generalized linear model, GLM)是简单最小二乘回归(OLS)的扩展,在OLS的假设中,响应变量是连续数值数据且服从正态分布,而且响应变量期望值与预测变量之间的关系是线性关系。而广义线性模型则放宽其假设,首先响应变量可以是正整数或分类数据,其分布为某指数分布族。其次响应变量期望值的函数(连接函数)与预测变量之间的关系为线性关系。因此在进行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回归先要将其转化为二元变量。
data(Affairs, package='AER')
Affairs$ynaffair[Affairs$affairs > 0] <- 1
Affairs$ynaffair[Affairs$affairs > 0] <- 0
Affairs$ynaffair <- factor(Affairs$ynaffair, 
                             levels=c(0,1), 
                             labels=c("No","Yes"))
model.L <- glm(ynaffair ~ age + yearsmarried + religiousness +rating, data=Affairs, family=binomial())
summary(model.L)
若样本观测值变异性过大,即出现了过度离散现象,此时仍使用二项分布假设就会影响系数检测的显著性。那么补救的方法是使用准二项分布(quasibinomial)。首先要检测样本是否存在过度离散现象,方法是用残差除以残差自由度,若超过1则意味着过度离散。那么将family参数改为quasibinomial。
其它和Logistic回归相关的函数还包括:robust包中的glmRob函数实施稳健GLM;mlogit包中的mlogit函数对多分类变量进行logistic回归;rms包中的lrm函数对顺序变量进行Logistic回归。之前的这篇博文对Logistic回归亦有一定的涉及。

二、Poisson回归
泊松回归假设响应变量服从泊松分布,而连接函数为log函数。仍以前面未转化的Affairs数据集为例。建立模型后通过coef函数来提取模型系数,因为泊松回归中响应变量经过了log函数变换,所以对系数进行指数变换可更好的对结果进行解释。从中观察到,在其它变量不变前提下,结婚时间增长1年,那么出轨次数期望值则变为之前的1.11倍。
model.P <- glm(affairs ~ age + yearsmarried + religiousness +rating, data=Affairs, family=poisson())
exp(coef(model.P))
(Intercept)           age  yearsmarried religiousness        rating
 15.6175253     0.9733061     1.1163656     0.6971279     0.6691823
同样,在进行泊松分布也要考虑过度离散现象。其检测方法同样是残差除以其自由度。若确定过度离散存在,则要将family参数设置为准泊松分布(quasipoisson)。

没有评论:

发表评论