R语言广义线性模型
来源:互联网 发布:nginx 域名根目录 编辑:程序博客网 时间:2024/05/17 09:32
1.广义线性模型和glm()函数
广义线性模型扩展了线性模型的框架,它包含了非正态因变量的分析。
广义线性模型通过拟合响应变量的条件均值的一个函数(不是响应变量的条件均值),假设响应变量服从指数分布族中的某个分布(并不仅限于正态分布),极大地扩展了标准线性模型。模型参数估计的推导依据的是极大似然估计,而非最小二乘法。
(1)与glm()连用的函数
函数
描述
summary
展示拟合模型的细节
Coefficients()、coef()
列出拟合模型的参数(截距项和斜率)
Confint()
给出模型参数的置信(默认为95%)
Residuals()
列出拟合模型的残差值
Anova()
生成两个拟合模型的方差分析表
Plot()
生成评价拟合模型的诊断图
Predict()
用拟合模型对新数据集进行预测
(2)模型拟合和回归诊断
当评价模型的适用性时,可以绘制初始响应变量的预测值与残差的图形
Eg:
Plot(predict(model,type=”response”),residuals(model,type=”deviance”))
R中列出帽子(hat value)、学生化残差值和Cook距离统计量的近似值
对于识别异常点的阈值,并没有统一答案,都是通过相互比较来进行判断的
可绘制各统计量的参考图,然后找出异常大的值
Eg
Plot(hatvalues(models))
Plot(rstudent(model))
Plot(cooks.distance(model))
还可以:
Library(car)
InfluencePlot(model)
2. Logistic回归
(1)Logistic
当通过一系列连续型和/或类别型预测变量来预测二值型结果变量时,Logistic回归是一个非常有用的工具。
Eg:
AER包中的数据框Affairs为例
install.packages("AER")library(AER)data(Affairs,package="AER")summary(Affairs)Affairs$ynaffair[Affairs$affairs>0]<-1Affairs$ynaffair[Affairs$affairs==0]<-0Affairs$ynaffair<-factor(Affairs$ynaffair,levels=c(0,1),labels=c("No","Yes"))table(Affairs$ynaffair)fit.full<-glm(ynaffair~gender+age+yearsmarried+children+religiousness+education+occupation+rating,data=Affairs,family=binomial())summary(fit.full)
fit.reduced<-glm(ynaffair~age+yearsmarried+religiousness+rating,data=Affairs,family=binomial())summary(fit.reduced)
新模型的每个回归系数都非常显著,由于两模型嵌套,故可以使用anova()函数对它们进行比较,对于广义线性回归,可用卡方检验。
anova(fit.reduced,fit.full,test="Chisq")
(2)解释模型参数
先看回归系数
coef(fit.reduced)
因对数优势化解释性差,故可对结果进行指数化
exp(coef(fit.reduced))
若有需要还可使用confit()函数获取系数的置信区间
(3)评价预测变量对结果概率的影响
使用predict()观察某个预测变量在各个水平时对结果概率的影响
testdata<-data.frame(rating=c(1,2,3,4,5),age=mean(Affairs$age), yearsmarried=mean(Affairs$yearsmarried), religiousness=mean(Affairs$religiousness))testdatatestdata$prob<-predict(fit.reduced,newdata=testdata,type="response")testdata
testdata<-data.frame(rating=mean(Affairs$rating), age=seq(17,57,10), yearsmarried=mean(Affairs$yearsmarried), religiousness=mean(Affairs$religiousness))testdatatestdata$prob<-predict(fit.reduced,newdata=testdata,type="response")testdata
(4)过度离势
过度离势会导致奇异的标准误检验和不精确的显著性检验
当出现过度离势时,仍可使用glm()函数拟合Logistic回归,但此时需要将二项分布必为类二项分布(quasibinomial distribution)
检测过度离势的一种方法是比较二项分布模型的残差偏差与自由度,若比值:r=残差偏差/残差自由度 ,比1大很多,便认为是存在过度离势。
还可对过度离势进行检验:需拟合模型两次,第一次使用family="binomial",第二次使用family="quasibinomial"
fit<-glm(ynaffair~age+yearsmarried+religiousness+rating,family=binomial(),data=Affairs)fit.od<-glm(ynaffair~age+yearsmarried+religiousness+rating,family=quasibinomial(),data=Affairs)pchisq(summary(fit.od)$dispersion*fit$df.residual,fit$df.residual,fit$df.residual,lower=F)
(5)扩展
3.泊松回归
当通过一系列连续型和/或类别型预测变量来预测计数型结果变量时,泊松回归是一个非常有用的工具。
利用robust 包中的Breslow癫痫数据
install.packages("robust")library(robust)data(breslow.dat,package="robust")names(breslow.dat)summary(breslow.dat[c(6:8,10)])opar<-par(no.readonly=TRUE)par(mfrow=c(1,2))attach(breslow.dat)hist(sumY,breaks=20,xlab="Seizure Count",main="Distribution of Seizures")boxplot(sumY~Trt,xlab="Treatment",main="Group Comparisons")par(opar)
fit<-glm(sumY~Base+Age+Trt,data=breslow.dat,family=poisson())summary(fit)
(1)解释模型参数
使用coef()函数可获取模型系数,或调用summary()函数的输出结果中的Coefficients表格
coef(fit)exp(coef(fit))
与Logistic回归中的指数化参数相似,泊松模型中的指数化参数对响应变量的影响都是成倍增加的,而不是线性相加。
(2)过度离势
泊松分布的方差和均值相等,当响应变量观测的方差比根据汽枪颁预测的方差在时,泊松回归可能发生过度离势。
可能发生过度离势的原因有如下几个:
遗漏了某个重要的预测变量;
可能因为事件相关;
在纵向数据分析中,重复测量的数据由于内在群聚特性可导致过度离势。此处暂不讨论纵向泊松模型。
与Logisitic回归类似,此处如果残差偏差与残差自由度的给远远大于1,则表明存在过度离势。
qcc包提供了一个对泊松模型过度离势的检验方法
install.packages("qcc")library(qcc)qcc.overdispersion.test(breslow.dat$sumY,type="poisson")
p<0.05,进一步表明确实存在过度离势。
通过用family="quasipoisson"替换family="poisson",仍可使用glm()函数对该数据进行拟合,与Logistic回归中处理过度离势的方法是相同的。
fit.od<-glm(sumY~Base+Age+Trt,data=breslow.dat,family=quasipoisson())summary(fit.od)
(3)扩展
时间段变化的泊松回归
fit<-glm(sumY~Base+Age+Trt,data=breslow.dat,offset=log(time),family=poisson())
零膨胀的泊松回归
稳健泊松回归
- R语言广义线性模型
- R语言广义线性模型
- R语言广义线性模型
- R语言广义线性模型
- R语言实战笔记--第十三章 广义线性模型
- 广义线性模型 R--glm函数
- 多元统计分析及R语言建模-第5章 广义与一般线性模型
- R语言解决Lasso问题----glmnet包(广义线性模型)
- 广义加法模型R语言示例
- R回归诊断广义线性模型非线性模型
- 广义线性模型
- 广义线性模型1
- 广义线性模型2
- 广义线性模型
- 广义的线性模型
- 广义线性模型3
- 广义线性模型
- 广义线性模型
- 自定义ios7标题栏和状态栏
- ODI的agent启动
- Android异步处理二:使用AsyncTask异步更新UI界面
- SuperBlock损坏修复
- crm2013javascript编程新增的方法
- R语言广义线性模型
- oracle-1
- 开发者服务 官网网址 上面提供一些开发资料
- Head First 单例模式
- python将字典内容存入mysql
- 使用gdb调试nginx源码
- 工作计划制定应当遵循的几大原则
- repair filesystem 1 #一般是什么引起的和该怎样解决
- Copy List with Random Pointer