本文对应《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. Git之版本回退及回滚

    应用场景 当开发某个项目时,会有多次提交记录,如A版本àB版本àC版本,假如目前处于C版本状态,我想回退到A版本,该如何操作:而当回退到A版本后,我又想回滚到B版本,又该如何操作,见下文分解!

  2. hbase系列之:独立模式部署hbase

    一.概述 在上一篇博文中,我简要介绍了hbase的部分基础概念,如果想初步了解hbase的理论,可以参看上一篇博文 hbase系列之:初识hbase .本博文主要介绍独立模式下部署hbase及hbas ...

  3. 微服务深入浅出(1)-- SpringBoot

    基于Spring的开发框架,旨在简化配置快速开发,是新一代web开发框架.下面介绍一下常用的几个功能: 1.Spring单元测试 针对DAO层 (1) @RunWith(Spring.class),表 ...

  4. 查看 CUDA cudnn 版本

    cuda 版本 cat /usr/local/cuda/version.txt cudnn 版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MA ...

  5. MySQL服务器修改主机名后问题解决

    1.单机MySQL主机名修改 今天无事看到自己的主机名不对,于是改了一下,以便区分服务器,那只重启MySQL时出现下面错误: MySQL manager or server PID file coul ...

  6. 如何扎实自己的Java基础?

    问:如何扎实自己的Java基础? 答:玩好JDK JDK其实就是Java SE Development Kit的缩写,要玩好这东西可不简单.JDK主要包含了三部分,第一部分就是Java运行时环境,这其 ...

  7. Python和MySQL数据库交互PyMySQL

    Python数据库操作 对于关系型数据库的访问,Python社区已经指定了一个标准,称为Python Database API SepcificationV2.0.MySQL.Qracle等特定数据库 ...

  8. 教你用DrawLayout 实现Android 侧滑菜单

    现在的APP越来越注重用户体验,百度视频客户端有一个特效还是挺吸引人的,在主界面手指向右滑动,就可以将菜单展示出来,而主界面会被隐藏大部分,但是仍有左侧的一小部分同菜单一起展示.类似的还有天天动听,人 ...

  9. MongoDB官方文档结构

    本文展示MongoDB 3.6.4.0的官方Server文档的结构图——一眼可见完整的知识脉络图.不过,MongoDB除了Server的文档外,还有DRIVERS.CLOUD.TOOLS.DUIDES ...

  10. Flask:操作SQLite3(0.1)

    Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2 本文介绍了第一次在Flask框架中操作SQLite3数据库的测试,参考了官网的文档Using SQLite 3 wit ...