R语言实战(八)广义线性模型
本文对应《R语言实战》第13章:广义线性模型
广义线性模型扩展了线性模型的框架,包含了非正态因变量的分析。
两种流行模型:Logistic回归(因变量为类别型)和泊松回归(因变量为计数型)
glm()函数的参数
分布族 |
默认的连接函数 |
binomial |
(link = “logit”) |
gaussian |
(link = “identity”) |
gamma |
(link = “inverse”) |
inverse.gaussian |
(link = “1/mu^2”) |
poisson |
(link = “log”) |
quasi |
(link = “identity”, variance = “constant”) |
quasibinomial |
(link = “logit”) |
quasipoisson |
(link = “log”) |
连用的函数
函数 |
描述 |
summary() |
展示拟合模型的细节 |
coefficients(), coef() |
列出拟合模型的参数(截距项和斜率) |
confint() |
给出模型参数的置信区间(默认为95%) |
residuals() |
列出拟合模型的残差值 |
anova() |
生成两个拟合模型的方差分析表 |
plot() |
生成评价拟合模型的诊断图 |
predict() |
用拟合模型对新数据集进行预测 |
模型拟合和回归诊断:
#诊断图(以下model都是glm拟合的模型)
plot(predict(model, type = “response”), residuals(model, type = “deviance”)) #帽子值(hat value),学生化残差,Cook距离统计量近似值
plot(hatvalues(model))
plot(rstudent(model))
plot(cooks.distance(model)) #综合性诊断图
library(car)
influencePlot(model)
当响应变量有许多时,诊断图非常有用;而当响应变量只有有限个值时(比如Logistic回归),诊断图的功效就会降低很多。
Logistic回归
一般过程:
首先将所有变量作为预测变量拟合模型,通过回归系数的显著性,筛选对方程贡献显著的变量,再次拟合模型。使用anova()函数对两个嵌套模型的拟合优度进行检验,广义线性回归时,可采用卡方检验,在卡方值不显著的时候,表示少变量的模型与多变量的模型拟合效果没有差异。(具体例子详见书上285-288页)
解释模型参数:
Logistic回归中,响应变量是Y=1的对数优势比(log)。回归系数含义是当其他预测变量不变时,一单位预测变量的变化可引起的响应变量对数优势比的变化。由于对数优势比解释性差,所以常将结果进行指数化后进行解释,也可以使用confint()函数获取系数的置信区间。
exp(confint(fit.reduced))
评价预测变量对结果概率的影响:
由于使用概率的方式思考比使用优势比更直观,所以可以先创建一个包含感兴趣预测变量值的虚拟数据集,然后对这个数据集使用predict()函数,以预测这些值的结果概率。(具体例子详见书289-290页)
过度离势:
抽样于二项分布的期望方差是,n为观测数,pie为属于Y=1组的概率。
所谓过度离势,即观测到的响应变量的方差大于期望的二项分布的方差。过度离势会导致奇异的标准误检验和不精确的显著性检验。
当出现过度离势时,仍可使用glm()函数拟合Logistic回归,但此时需要将二项分布改为类二项分布(quasibinomial distribution)。
检测过度离势的一种方法是比较二项分布模型的残差偏差与残差自由度,如果比值:
比1大很多,便可认为存在过度离势。
具体检验方式:拟合两次模型,第一次使用family = “binomial”, 第二次使用family = “quasibinomial”, 记第一次返回的对象为fit,第二次返回的对象为fit.od,
pchsq(summary(fit.od)$dispersion * fit$df.residual, fit$df.residual, lower = F)
提供的p值即可对零假设H0:Φ=1 与备择假设 H1:Φ≠1进行检验,若p很小就可以拒绝H0.
Logistic回归的扩展:
稳健Logistic回归:robust包中的glmRob()函数,解决离群点和强影响点的问题
多项分布回归:mlogit包中的mlogit()函数,应用于响应变量包含两个以上的无序类别
序数Logistic回归:rms包中的lrm()函数,应用于响应变量是一组有序类别
泊松回归:
适用范围:通过一系列连续型和类别型预测变量来预测计数型结果变量。
分析过程与模型参数的解释与Logistic回归类似。
过度离势:
泊松分布的方差和均值相等。当响应变量观测的方差观测的方差比依据泊松分布预测的方差大时,泊松回归可能发生过度离势。处理计数型数据时经常发生过度离势,因此需要格外注意。
可能的原因:
- 遗漏了某个重要的预测变量;
- 可能因为时间相关;
- 在纵向数据分析中,重复测量的数据由于内在群聚特性可导致过度离势。
如果存在过度离势,在模型中将无法进行解释,可能会得到很小的标准误和置信区间,并且显著性检验也过于宽松(也就是说,将会发现并不真是存在的效应)。
与Logistic回归类似,如果残差偏差与残差自由度的比例远远大于1,表明存在过度离势。
检验方法:qcc包
library(qcc)
qcc.overdispersion.test(breslow.dat$sumY, type = “poisson”)
p值显著(小于0.05)表明存在过度离势。
与Logistic回归的过度离势处理类似,通过用family = “quasipoisson”替换family = “poisson”改进。需要注意的是,使用类泊松(quasi-Poisson)方法所得的参数估计与泊松方法相同,但标准误变大了许多。
泊松回归的扩展:
- 时间段变化的泊松回归:
对于泊松回归的讨论,是将响应变量局限在一个固定长度时间段中进行测量,整个观测集中时间长度都是不变的。允许时间段变化时,假设结果变量是一个比率,也就是将
修改为:
或等价形式:
具体实现方式是,在glm()函数里增加offset参数,offset = log(time).
- 零膨胀的泊松回归:
在数据集中0计数的数目时常比用泊松模型预测的数目多,这些0值称为结构零值。此时使用零膨胀的泊松回归分析数据,将同时拟合两个模型,可以看做是Logistic回归和泊松回归的组合。pscl包中的zeroinfl()函数可做零膨胀泊松回归。
- 稳健泊松回归:
robust包中的glmRob()函数可以拟合稳健广义线性模型,包含稳健泊松回归。解决存在离群点和强影响点带来的问题。
R语言实战(八)广义线性模型的更多相关文章
- R语言实战(四)回归
本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...
- R语言实战(五)方差分析与功效分析
本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ================================================================ ...
- R语言实战(六)重抽样与自助法
本文对应<R语言实战>第12章:重抽样与自助法 之前学习的基本统计分析.回归分析.方差分析,是假定观测数据抽样自正态分布或者其他性质较好的理论分布,进而进行的假设检验和总体参数的置信区间估 ...
- R 语言实战-Part 4 笔记
R 语言实战(第二版) part 4 高级方法 -------------第13章 广义线性模型------------------ #前面分析了线性模型中的回归和方差分析,前提都是假设因变量服从正态 ...
- R 语言实战-Part 3 笔记
R 语言实战(第二版) part 3 中级方法 -------------第8章 回归------------------ #概念:用一个或多个自变量(预测变量)来预测因变量(响应变量)的方法 #最常 ...
- R语言实战(十)处理缺失数据的高级方法
本文对应<R语言实战>第15章:处理缺失数据的高级方法 本文仅在书的基础上进行简单阐述,更加详细的缺失数据问题研究将会单独写一篇文章. 处理缺失值的一般步骤: 识别缺失数据: 检查导致数据 ...
- R语言实战(九)主成分和因子分析
本文对应<R语言实战>第14章:主成分和因子分析 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量成为主成分. 探索性因子分析(EFA)是 ...
- R语言实战(七)图形进阶
本文对应<R语言实战>第11章:中级绘图:第16章:高级图形进阶 基础图形一章,侧重展示单类别型或连续型变量的分布情况:中级绘图一章,侧重展示双变量间关系(二元关系)和多变量间关系(多元关 ...
- R入门<三>-R语言实战第4章基本数据管理摘要
入门书籍:R语言实战 进度:1-4章 摘要: 1)实用的包 forecast:用于做时间序列预测的,有auto.arima函数 RODBC:可以用来读取excel文件.但据说R对csv格式适应更加良好 ...
随机推荐
- CSS3实战-文字篇
text-shadow的大作用 多颜色阴影效果,用逗号分隔text-shaodow即可. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...
- 小记 百度地图 soso地图 经纬度偏移
项目里遇到了这么个问题,数据库原有数据是微信上用的,所以是soso地图坐标, 但是现在要做百度地图,坐标偏移严重,网上找了也没说偏移多少,自己手动测试10多分钟,得到个大概值,反正差不多就行了. so ...
- Cookie详解、ASP.NET核心知识(7)
无状态的http协议 1.回顾http协议 Http协议是请求响应式的,有请求才有响应,是无状态的,不会记得上次和网页“发生了什么”. 关于http协议的这种特点,黑兔在前面的这三篇博文中进行了详细的 ...
- No known class method for selector 'setImage:andName:'错误分析.//删除.h与.m文件时的注意事项
CHENYILONG Blog No known class method for selector 'setImage:andName:'错误分析.//删除.h与.m文件时的注意事项 ...
- pta 一
7-1 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数 ...
- URL访问 和命名规范
手册:http://v9.help.phpcms.cn/html/2010/structure_0928/71.html http://yourdomain.com/index.php?m=conte ...
- HDU 4690 EBCDIC 2013 Multi-University Training Contest 9
解题报告:一个模拟题,有两张表格,然后输入一个字符在第一章表格中的位置,让你找出这个字符在第二章表对应的位置. 我欧诺个的是暴力打表,输了两百多个数字,时间复杂度直接降到O(1),这题觉得比较坑的就是 ...
- 【leetcode 简单】 第九十题 字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = "leetcode" 返回 0. s = "loveleetcod ...
- hdu 5438 Ponds(长春网络赛 拓扑+bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5438 Ponds Time Limit: 1500/1000 MS (Java/Others) ...
- 配置虚拟机时间使其与国内时间同步,linux时间 ntp
设置系统时间 [root@node2 ~]# date -s "10/30/18 09:30:00"Tue Oct 30 09:30:00 PDT 2018[root@node2 ...