广义线性模型(Generalized Linear Model)之三:Poisson回归

  • 一、泊松回归(Poisson regression)简介
    • (一)泊松回归
    • (二)计数数据
    • (三)泊松分布
      • 1)数学表达式
      • 2)不同λ的泊松分布图
    • (四)泊松回归模型
  • 二、R语言实例分析
    • 例1. Breslow癫痫数据分析
    • 过度离势

一、泊松回归(Poisson regression)简介

(一)泊松回归

在统计学中,泊松回归是回归分析的广义线性模型形式,用于对计数数据和列联表进行建模。泊松回归假设响应变量Y具有泊松分布,并假设其期望值的对数可以通过未知参数的线性组合来建模。泊松回归模型有时被称为对数线性模型,尤其是在用于对列联表建模时。

负二项式回归(Negative binomial regression) 是泊松回归的一种流行推广,因为它放松了方差等于泊松模型做出的均值的高度限制性假设。传统的负二项式回归模型基于泊松-伽马混合分布。该模型很受欢迎,因为它使用伽马分布对泊松异质性进行建模。

如上图,左侧的模型是线性回归,表示对于 X 的每个水平,响应大致是正常的。

右侧的模型是泊松回归模型,表示对于 X 的每个水平,响应遵循泊松分布。

(二)计数数据

计数数据 也可以表示为 速率数据,因为事件在一个时间范围内发生的次数可以表示为原始计数(即“一天中,我们吃三顿饭”)或速率(“我们吃0.125 餐/小时”)

计数数据的特征:

  • 整数数据: 数据由非负整数组成,回归技术(例如普通最小二乘回归)可能不适合对此类数据建模。
  • 偏态分布: 数据可能仅包含几个值的大量数据点,从而使频率分布非常偏斜。
  • 稀疏性: 数据可能反映诸如伽马射线暴等罕见事件的发生,从而使数据稀疏。
  • 发生率: 为了创建模型,可以假设有一定的事件发生率λ驱动此类数据的生成,事件率可能会随着时间而漂移。

例如:布鲁克林大桥上骑自行车人数的时序图

(三)泊松分布

1)数学表达式

泊松分布是一种以法国数学家西蒙·丹尼斯·泊松命名的统计理论。它模拟事件或事件 y 在特定时间范围内发生的概率,假设 y 的发生不受 y先前发生的时间的影响。这可以使用以下数学公式表示:


这里, λ 是每单位曝光可能发生的事件的平均次数 ,也称为泊松分布的参数。暴露可能是时间、 空间、人口规模、距离或面积,但通常是时间,用 t表示。如果未给出暴露值,则假定它等于 1。

2)不同λ的泊松分布图

# vector of colors
colors <- c("Red", "Blue", "Gold", "Black", "Pink", "Green")
# declare a list to hold distribution values
poisson.dist <- list()a <- c(1, 2, 3, 4, 5, 6) # A vector for values of u
for (i in 1:6) {poisson.dist[[i]] <- c(dpois(0:20, i)) # Store distribution vector for each corresponding value of u
}
# plot each vector in the list using the colors vectors to represent each value for u
plot(unlist(poisson.dist[1]), type = "o", xlab="y", ylab = "P(y)",col = colors[i])
for (i in 1:6) {lines(unlist(poisson.dist[i]), type = "o", col = colors[i])
}
# Adds legend to the graph plotted
legend("topright", legend = a, inset = 0.08, cex = 1.0, fill = colors, title = "Values of λ")

结果如下:

(四)泊松回归模型

泊松回归模型的工作是通过链接函数将观察到的计数y拟合到回归矩阵X,该链接函数将速率向量λ表示为 :

  1. 回归系数β
  2. 回归矩阵X的函数

将λ与X连接起来的良好链接函数f (.)可能是什么?事实证明,以下指数链接函数效果很好:

即使回归量X或回归系数β具有负值,此链接函数也保持λ非负值。这是基于计数的数据的要求。

一般来说,我们有:

二、R语言实例分析

例1. Breslow癫痫数据分析

使用robust包中的Breslow癫痫数据(Breslow,1993)来讨论在治疗初期的八周内,抗癫痫药物对癫痫发病数的影响。

就遭受轻微或严重间歇性癫痫的病人的年龄和癫痫发病数收集了数据,包含病人被随机分配到药物组或者安慰剂组前八周和随机分配后八周两种情况。响应变量为sumY(随机化后八周内癫痫发病数),预测变量为治疗条件(Trt)、年龄(Age)和前八周内的基础癫痫发病数(Base)。之所以包含基础癫痫发病数和年龄,是因为它们对响应变量有潜在影响。在解释这些协变量后,我们感兴趣的是药物治疗是否能减少癫痫发病数。

install.packages("robust")
library(robust)
data(breslow.dat, package="robust")
names(breslow.dat)
summary(breslow.dat[c(6,7,8,10)])

数据集的统计汇总信息:

虽然数据集有12个变量,但是我们只关注之前描述的四个变量。基础和随机化后的癫痫发病数都有很高的偏度。现在,我们更详细地考察响应变量。

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 Comparison")
par(opar)


从图中可以清楚地看到因变量的偏倚特性以及可能的离群点。初看图形时,药物治疗下癫痫发病数似乎变小了,且方差也变小了(泊松分布中,较小的方差伴随着较小的均值)。与标准最小二乘回归不同,泊松回归并不关注方差异质性。

接下来拟合泊松回归:

fit <- glm(sumY~Base+Age+Trt, data = breslow.dat, family = poisson())
summary(fit)


输出结果列出了偏差、回归参数、标准误和参数为0的检验。注意,此处预测变量在p<0.05的水平下都非常显著。

使用coef()函数可获取模型系数,或者调用summary()函数的输出结果中的Coefficients表格:

coef(fit)
exp(coef(fit))
deviance(fit)/df.residual(fit)


在泊松回归中,因变量以条件均值的对数形式loge(λ)来建模。年龄的回归参数为0.0227,表明保持其他预测变量不变,年龄增加一岁,癫痫发病数的对数均值将相应增加0.03。截距项即当预测变量都为0时,癫痫发病数的对数均值。由于不可能为0岁,且调查对象的基础癫痫发病数均不为0,因此本例中截距项没有意义。

通常在因变量的初始尺度(癫痫发病数,而非发病数的对数)上解释回归系数比较容易。为此,指数化系数,可以看到,保持其他变量不变,年龄增加一岁,期望的癫痫发病数将乘以1.023。这意味着年龄的增加与较高的癫痫发病数相关联。更为重要的是,一单位Trt的变化(即从安慰剂到治疗组),期望的癫痫发病数将乘以0.86,也就是说,保持基础癫痫发病数和年龄不变,服药组相对于安慰剂组癫痫发病数降低了20%。

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

过度离势

泊松分布的方差和均值相等。当响应变量观测的方差比依据泊松分布预测的方差大时,泊松回归可能发生过度离势。处理计数型数据时经常发生过度离势,且过度离势会对结果的可解释性造成负面影响,因此我们需要花些时间讨论该问题。

fit.od <- glm(sumY~Base+Age+Trt, data=breslow.dat,family = quasipoisson())
summary(fit.od)

广义线性模型(Generalized Linear Model)之三:Poisson回归相关推荐

  1. 广义线性模型(Generalized Linear Model)——机器学习

    零.前言 对于条件分布(y|x;θ),对于线性回归模型有,而对分类问题有.其实这些分布均是广义线性模型(GLM)的特殊情况. 我们通过定义广义线性模型,可以据此求出拟合函数h(x) 一.指数分布族(E ...

  2. 系统学习机器学习之线性判别式(三)--广义线性模型(Generalized Linear Models)

    转自:https://www.cnblogs.com/czdbest/p/5769326.html 在线性回归问题中,我们假设,而在分类问题中,我们假设,它们都是广义线性模型的例子,而广义线性模型就是 ...

  3. 广义线性模型--Generalized Linear Models

    监督学习问题: 1.线性回归模型: 适用于自变量X和因变量Y为线性关系 2.广义线性模型: 对于输入空间一个区域改变会影响所有其他区域的问题,解决为:把输入空间划分成若干个区域,然后对每个区域用不同的 ...

  4. 广义线性模型(Generalized Linear Model)之二:Logistic回归

    广义线性模型(Generalized Linear Model)之二:Logistic回归 一.引入:多元线性回归模型 二.Logistic回归模型 三.非条件logistic回归模型 (一)介绍 ( ...

  5. 广义线性模型(Generalized Linear Model)

    广义线性模型 1. 广义线性模型(Generalized Linear Model) 1.1 指数分布族 1.2 广义线性模型建模(三个假设) 2. 线性回归推导 2.1 Gaussian 分布的指数 ...

  6. 混合线性模型+mixed linear model+GEEs+GLMM+LMM

    混合线性模型+mixed linear model+GEEs+GLMM+LMM 线性回归 广义线性回归 混合线性模型/线性混合模型 的区别是什么? spss中遇见线性混合模型 价值,意义,目的是什么? ...

  7. R语言对数线性模型loglm函数_使用R语言进行混合线性模型(mixed linear model) 分析代码及详解...

    1.混合线性模型简介 混合线性模型,又名多层线性模型(Hierarchical linear model).它比较适合处理嵌套设计(nested)的实验和调查研究数据.此外,它还特别适合处理带有被试内 ...

  8. AI实践之路:线性/逻辑回归背后的广义线性模型与最大似然估计

    写上一篇文章的过程中,讲到逻辑回归是如何利用Sigmoid函数将线性回归的数值转换为概率时,才意识到自己对逻辑回归的理解十分浅显,为什么是Sigmoid函数?它一个就说是概率了?数学原理是什么?为了增 ...

  9. 线性模型(Linear Model)

    线性模型(Linear Model) 对于给定样本x⃗ \mathbf{\vec{x}},假定其有n维特征,则,x⃗ =(x1,x2,x3,-,xn)T\mathbf{\vec{x}}=(x_1, x ...

  10. Machine Learning——Linear Model

    本系列博客是我学习周志华的<机器学习(西瓜书)>的自学笔记. 我是零基础学习,因此所写只是书上的知识,肯定不全面,以后随着学习的深入,慢慢补充吧. 基本形式 给定由ddd个属性描述的示例x ...

最新文章

  1. ping 命令还能这么玩?
  2. 《研磨设计模式》chap18 状态模式state(1)模式简介
  3. C++编译-链接错误集合
  4. (027) Linux之shell分支if语句
  5. 区分内边距与外边距padding和margin
  6. ecs 对比 本地服务器_阿里云服务器双十一活动福利
  7. MySQL建立的索引看_MYSQL索引问题:索引在查询中如何使用?看了很多资料都只说索引的建立。是否建立了就不用再理会?...
  8. linux服务器进程不存在,查看 Linux 服务器的进程
  9. docker 镜像导入导出
  10. Corn Fields——POJ3254状态压缩Dp
  11. Windows Installer 3.1
  12. 八数码宽度优先搜索python代码_图之遍历--广度优先遍历
  13. c++ Primer plus 之c++学习
  14. 对应的ctrl_定位神技Ctrl+G,12种常用操作技巧,你都知道吗
  15. DOS命令大全(存档自用)
  16. JS 页面刷新/数据刷新
  17. 一文介绍完整:python猴子补丁python monkey patch 没听过?
  18. 【机器学习】PAC 学习理论
  19. C#通过ToLower()方法将字符串转换成小写的代码
  20. 刘颂计算机学院,关于表彰2013—2014学年 - 首页 北京工商大学计算机与 .doc

热门文章

  1. linux不能显示微软雅黑字体
  2. HP CQ40-512TX不刷BIOS安装XP系统
  3. 供应链金融——研究结果总结
  4. 解决在Access中显示ActiveX部件不能创建对象
  5. 零基础CSS入门教程(29)–CSS下拉菜单实例
  6. SAP:SMARTFORM打开WORD文档出错,或无法编辑
  7. Verilog -- 乘法器Booth算法
  8. dnf新起号怎么才不出人脸_教你如何快速养成一个新号 新角色速成教学
  9. VBScript教程-第二章. 运行脚本
  10. 《密码编码学与网络安全》William Stalling著---学习笔记(一)【知识点速过】【传统密码+经典对称加密算法+经典公钥密码算法+密码学Hash函数】