广义线性模型
广义线性模型扩展了线性模型的框架,包含了非正态因变量的分析。logisitic回归的因变量为类别型,比如二值变量(是/否、通过/未通过)和多分类变量(好/中/差)。泊松回归因变量是计数型,比如一周交通事故的数目,每天酒水消耗的数量等,都是非负的有限值,而且均值和方差通常是相关的(正态分布变量间是相互独立的)。
(1)glm()函数拟合广义线性模型
glm(formula,family=family(link=functiong),data=)
family=binomial (link = "logit")
family=gaussian (link = "identity")
family=gamma (link = "inverse")
family=inverse.gaussian (link = "1/mu^2")
family=poisson (link = "log")
family=quasi (link = "identity", variance = "constant")
family=quasibinomial (link = "logit")
family=quasipoisson (link = "log")
其中:glm(Y~X1+X2+X3, family=gaussian(link="identity"), data=mydata)与lm(Y~X1+X2+X3, data=mydata)本质和结果都是一样的。
使用glm函数前,把因变量设置为因子,同样可以使用summary函数查看glm函数的结果,用anova()函数比较嵌套模型,采用卡方检验anova(fit,fit.full,test="Chisq"),如果结果的卡方值不显著(p>0.05),表明两个模型的拟合程度一样好,应该优选选择自变量少的模型。使用predict()函数可以观察某个预测变量在各个水平时对结果概率的影响(p287-288)。
当出现过度离势时,仍可使用glm()函数拟合Logistic回归,但此时需要将二项分布改为类二项分布(quasibinomial distribution)。 检测过度离势的一种方法是比较二项分布模型的残差偏差与残差自由度,如果残差偏差/残差自由度的比值比1大很多,你便可认为存在过度离势。
deviance(fit.reduced)/df.residual(fit.reduced)
[1] 1.032
它非常接近于1,表明没有过度离势。你还可以对过度离势进行检验。为此,你需要拟合模型两次,第一次使用family=“binomial",第二次使用family="quasibinomial"。假设第一次glm()返回对象记为fit,第二次返回对象记为fit.od,那么:pchisq(summary(fit.od)$dispersion * fit$df.residual,fit$df.residual, lower = F)
提供的p值即可对零假设H0: =1与备择假设H1: ≠1进行检验。若p很小(小于0.05),你便可拒绝零假设,如p=0.34显然不显著(p>0.05),表明不存在过度离势。
(2)R中扩展的Logistic回归和变种
稳健Logistic回归: robust包中的glmRob()函数可用来拟合稳健的广义线性模型,包括稳健Logistic回归。当拟合Logistic回归模型数据出现离群点和强影响点时,稳健Logistic回归便可派上用场。
多项分布回归 :若响应变量包含两个以上的无序类别(比如,已婚/寡居/离婚) ,便可使用mlogit包中的mlogit()函数拟合多项Logistic回归。
序数Logistic回归 :若响应变量是一组有序的类别(比如,信用风险为差/良/好),便可使用rms包中的lrm()函数拟合序数Logistic回归。
(3)泊松回归
当通过一系列连续型和/或类别型预测变量来预测计数型结果变量时,泊松回归是一个非常有用的工具。
没搞懂,暂时略过。。。