本文对应《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回归类似。

过度离势:

泊松分布的方差和均值相等。当响应变量观测的方差观测的方差比依据泊松分布预测的方差大时,泊松回归可能发生过度离势。处理计数型数据时经常发生过度离势,因此需要格外注意。

可能的原因:

  1. 遗漏了某个重要的预测变量;
  2. 可能因为时间相关;
  3. 在纵向数据分析中,重复测量的数据由于内在群聚特性可导致过度离势。

如果存在过度离势,在模型中将无法进行解释,可能会得到很小的标准误和置信区间,并且显著性检验也过于宽松(也就是说,将会发现并不真是存在的效应)。

与Logistic回归类似,如果残差偏差与残差自由度的比例远远大于1,表明存在过度离势。

检验方法:qcc包

library(qcc)
qcc.overdispersion.test(breslow.dat$sumY, type = “poisson”)

  

p值显著(小于0.05)表明存在过度离势。

与Logistic回归的过度离势处理类似,通过用family = “quasipoisson”替换family = “poisson”改进。需要注意的是,使用类泊松(quasi-Poisson)方法所得的参数估计与泊松方法相同,但标准误变大了许多。

泊松回归的扩展:

  1. 时间段变化的泊松回归:

对于泊松回归的讨论,是将响应变量局限在一个固定长度时间段中进行测量,整个观测集中时间长度都是不变的。允许时间段变化时,假设结果变量是一个比率,也就是将

修改为:

或等价形式:

具体实现方式是,在glm()函数里增加offset参数,offset = log(time).

  1. 零膨胀的泊松回归:

在数据集中0计数的数目时常比用泊松模型预测的数目多,这些0值称为结构零值。此时使用零膨胀的泊松回归分析数据,将同时拟合两个模型,可以看做是Logistic回归和泊松回归的组合。pscl包中的zeroinfl()函数可做零膨胀泊松回归。

  1. 稳健泊松回归:

robust包中的glmRob()函数可以拟合稳健广义线性模型,包含稳健泊松回归。解决存在离群点和强影响点带来的问题。

R语言实战(八)广义线性模型的更多相关文章

  1. R语言实战(四)回归

    本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来 ...

  2. R语言实战(五)方差分析与功效分析

    本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ================================================================ ...

  3. R语言实战(六)重抽样与自助法

    本文对应<R语言实战>第12章:重抽样与自助法 之前学习的基本统计分析.回归分析.方差分析,是假定观测数据抽样自正态分布或者其他性质较好的理论分布,进而进行的假设检验和总体参数的置信区间估 ...

  4. R 语言实战-Part 4 笔记

    R 语言实战(第二版) part 4 高级方法 -------------第13章 广义线性模型------------------ #前面分析了线性模型中的回归和方差分析,前提都是假设因变量服从正态 ...

  5. R 语言实战-Part 3 笔记

    R 语言实战(第二版) part 3 中级方法 -------------第8章 回归------------------ #概念:用一个或多个自变量(预测变量)来预测因变量(响应变量)的方法 #最常 ...

  6. R语言实战(十)处理缺失数据的高级方法

    本文对应<R语言实战>第15章:处理缺失数据的高级方法 本文仅在书的基础上进行简单阐述,更加详细的缺失数据问题研究将会单独写一篇文章. 处理缺失值的一般步骤: 识别缺失数据: 检查导致数据 ...

  7. R语言实战(九)主成分和因子分析

    本文对应<R语言实战>第14章:主成分和因子分析 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量成为主成分. 探索性因子分析(EFA)是 ...

  8. R语言实战(七)图形进阶

    本文对应<R语言实战>第11章:中级绘图:第16章:高级图形进阶 基础图形一章,侧重展示单类别型或连续型变量的分布情况:中级绘图一章,侧重展示双变量间关系(二元关系)和多变量间关系(多元关 ...

  9. R入门<三>-R语言实战第4章基本数据管理摘要

    入门书籍:R语言实战 进度:1-4章 摘要: 1)实用的包 forecast:用于做时间序列预测的,有auto.arima函数 RODBC:可以用来读取excel文件.但据说R对csv格式适应更加良好 ...

随机推荐

  1. soj1090.Highways

    1090. Highways Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description The island nation of ...

  2. BZOJ4816 数字表格

    4816: [Sdoi2017]数字表格 Time Limit: 50 Sec  Memory Limit: 128 MB Description Doris刚刚学习了fibonacci数列.用f[i ...

  3. datagrid时间插件

    jquery easyui日期控件中,在页面里用JS拿到设立的日期值的方法 链接:http://blog.csdn.net/liweibin_/article/details/13509917 jqu ...

  4. 《区块链100问》第75集:大零币Zcash是什么?

    Zcash,全称Zero Cash,简称ZEC,中文叫大零币,研发者为Zooko Wilcox,诞生于2011年11月9日. 采用零知识证明机制提供完全的支付保密性,是目前匿名性最强的数字资产.零知识 ...

  5. 冲量:momentum

    参见:http://www.jianshu.com/p/58b3fe300ecb,这个博客里有冲量的python实现的代码和讲解 “冲量”这个概念源自于物理中的力学,表示力对时间的积累效应. 在普通的 ...

  6. Linux USB驱动框架分析(2)【转】

    转自:http://blog.chinaunix.net/uid-23046336-id-3243543.html   看了http://blog.chinaunix.net/uid-11848011 ...

  7. LINUX的DNS设置【转】

    网卡DNS设置 用windos系统大家都知道,本地连接里面有一个DNS设置. 那么这个选项对应Linux系统的话就是在网卡配置文件,通过编辑vi  /etc/sysconfig/network-scr ...

  8. 双机/RAC/Dataguard的区别【转】

    本文转自 双机/RAC/Dataguard的区别-jasoname-ITPUB博客 http://blog.itpub.net/22741583/viewspace-684261/ Data Guar ...

  9. CNN Architectures(AlexNet,VGG,GoogleNet,ResNet,DenseNet)

    AlexNet (2012) The network had a very similar architecture as LeNet by Yann LeCun et al but was deep ...

  10. day09作业

    一.填空题 1.方法 2.堆内存 3.构造方法 4.this 5.this 6.static 7.使用类名进行访问 8.package import class 9.关键字 10.lang 二.选择题 ...