13章广义线性模型

来源:互联网 发布:更改路由器端口 编辑:程序博客网 时间:2024/04/28 05:03

线性模型只适应于一系列连续性和/或类别型变量来预测正态分布的相应变量。
但是,许多情况下,假设因变量为正态分布(甚至连续型变量)并不合理:
1:结果变量可能使类别型。二值变量(比如:是/否,活着/死亡)和多分类变量(差/良好/优秀)都显然不是正态分布
2:结果变量可能是计数型的。(比如,一周交通事故的数目,每日酒水消耗的数量)

广义线性模型扩展了线性模型的框架,它包含了非正态因变量的分析

本章重点:logistic回归和泊松回归(计数型)
13.1.1 glm()函数

R语言中用glm函数来拟合广义线性模型

glm(formula,family =family(link=function),data=)

这里写图片描述

#glm()函数可以拟合许多流行的模型,比如Logistic回归和泊松回归和生存分析#Logistic回归适应二值响应变量(0,1)glm(Y~x1+x2+x3,binomial(link = "logit"),data = mydata)#泊松分布适应于在给定时间内响应变量为时间发生数目的情形glm(Y~x1+x2+x3,poisson(link="log"),data = mydata)##与glm利用的函数summary() #展示拟合模型的细节coefficients(),coef() #列出拟合模型的参数(截距项和斜率)confint() #给出模型参数的置信区间residuals() #列出拟合模型的残差值anova() #生成两个拟合模型的方差分析表plot() #生成评价拟合模型的诊断图predict() #用拟合模型对新数据进行预测13.1.3 模型的拟合和回归诊断#当评价模型的适用性,可以绘制初始相应变量的预测值与残差的图形,例如,如下代码可绘制一个常见的诊断图plot(predict(model,type="response"),residuals(model,type="deviance"))#特别注意:当相应变量有很多值时,诊断图非常有用,而当相应变量只有有限的个值时(比如Logistic回归),诊断图的功效就会降低很多13.2 Logistic实例分析data(Affairs,package = "AER")summary(Affairs)table(Affairs$affairs)#我们感兴趣的是二值型结果(有过一次/没有货婚外情)Affairs$yaffairs[Affairs$affairs>0]=1Affairs$yaffairs[Affairs$affairs==0]=0Affairs$yaffairs=factor(Affairs$yaffairs,levels = c(0,1),labels = c("No","Yes"))table(Affairs$yaffairs)#调用logistic回归模型attach(Affairs)fit.full=glm(yaffairs~gender+age+yearsmarried+children+religiousness+education+occupation+rating,data=Affairs,family = binomial())summary(fit.full)***********************************************  结果显示Call:  glm(formula = yaffairs ~ gender + age + yearsmarried + children +         religiousness + education + occupation + rating, family = binomial(),       data = Affairs)Deviance Residuals:   Min       1Q   Median       3Q      Max  -1.5713  -0.7499  -0.5690  -0.2539   2.5191  Coefficients:  Estimate Std. Error z value Pr(>|z|)    (Intercept)    1.37726    0.88776   1.551 0.120807    gendermale     0.28029    0.23909   1.172 0.241083    age           -0.04426    0.01825  -2.425 0.015301 *    yearsmarried   0.09477    0.03221   2.942 0.003262 **   childrenyes    0.39767    0.29151   1.364 0.172508    religiousness -0.32472    0.08975  -3.618 0.000297 ***  education      0.02105    0.05051   0.417 0.676851    occupation     0.03092    0.07178   0.431 0.666630    rating        -0.46845    0.09091  -5.153 2.56e-07 ***  ---  Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)Null deviance: 675.38  on 600  degrees of freedomResidual deviance: 609.51  on 592  degrees of freedomAIC: 627.51Number of Fisher Scoring iterations: 4***************************************************  ##从回归系数的p值可以看出,性别 是否有孩子 学历和职业对方程的贡献都不显著 去除这些变量重新拟合模型 检验新模型是否拟合很好fit.reduced=glm(yaffairs~age+yearsmarried+religiousness+rating,data=Affairs,family = binomial())summary(fit.reduced)***********  结果分析:新模型的每个回归系数都非常显著。由于两个模型嵌套,可以使用anova() 函数对他们进行比较,对于广义线性回归,可以用卡方检验anova(fit.reduced,fit.full,test="Chisq")****************************结果Analysis of Deviance TableModel 1: yaffairs ~ age + yearsmarried + religiousness + ratingModel 2: yaffairs ~ gender + age + yearsmarried + children + religiousness +   education + occupation + ratingResid. Df Resid. Dev Df Deviance Pr(>Chi)1       596     615.36                     2       592     609.51  4   5.8474   0.2108*******************************************卡方值不显著,表明四个预测变量的新模型与九个完整预测变量的模型拟合程度一样好13.2.1 解释模型参数先看看回归系数coef(fit.reduced)(Intercept)           age  yearsmarried religiousness        rating 1.93083017   -0.03527112    0.10062274   -0.32902386   -0.46136144 由于对数优势比解释性差,可对结果进行指数化exp(coef(fit.reduced))13.2.2 评价预测变量对结果概率的影响使用predict方法对婚姻平分对婚外情概率的影响testdata=data.frame(rating=c(1,2,3,4,5),age=mean(Affairs$age),yearsmarried=mean(Affairs$yearsmarried),religiousness=mean(Affairs$religiousness))testdata##接下来,使用测试集预测相应的概率testdata$prob=predict(fit.reduced,newdata = testdata,type = "response")testdata13.2.4 扩展'''R中扩展的Logistic回归和变种如下所示:1.稳健的Logistic回归,robust包中的glmRob()函数可用来拟合稳健的广义线性模型,包括稳健的Logistic回归,当拟合Logistic回归模型数据出现利群点和强影响点时,稳健Logistic回归便可排上永昌2.多项分布回归  若相应变量包含两个或者两个以上的无序类别(比如,已婚/寡居/离婚),便可使用mlogit包中的mlogit()函数拟合多项回归3.序数Logistic回归  若相应变量时一组有序的类别(比如,差,良,好) 便可使用rms包中的lrm() 函数来拟合'''13.3 泊松分布当通过一系列连续性或者类别型预测变量来预测计数型结果变量时,泊松分布式一个非常好的工具opar=par(no.readonly = TRUE)par(mfrow=c(1,2))attach(breslow.cat)hist(sumY,breaks=20)boxplot(sumY~Trt)par(opar)#####拟合模型fit=glm(sumY~.,dta=breslow,family = poisson())summary(fit)13.3 扩展R提供了基本泊松分布的一些有用扩展,包含了允许时间段变化,存在过多0时会自动修正的模型,以及当数据存在离群点和强影响点时有用的稳健模型
0 0
原创粉丝点击