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

article/2025/8/15 14:40:30

广义线性模型(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)

在这里插入图片描述


http://chatgpt.dhexx.cn/article/qEQDNP6o.shtml

相关文章

MIT自然语言处理第五讲:最大熵和对数线性模型

MIT自然语言处理第五讲&#xff1a;最大熵和对数线性模型&#xff08;第一部分&#xff09; 自然语言处理&#xff1a;最大熵和对数线性模型 Natural Language Processing: Maximum Entropy and Log-linear Models 作者&#xff1a;Regina Barzilay&#xff08;MIT,EECS Depar…

机器学习教程 之 线性模型:线性回归、对数几率回归、线性判别分析

常用的三个线性模型的原理及python实现——线性回归&#xff08;Linear Regression&#xff09;、对数几率回归&#xff08;Logostic Regression&#xff09;、线性判别分析&#xff08;Linear Discriminant&#xff09;。 这可能会是对线性模型介绍最全面的博客 文章目录 一、…

机器学习(二)线性模型——线性回归、对数几率回归、线性判别分析

一、线性回归 线性回归&#xff08;linear regression&#xff1a;试图学得一个线性模型以尽可能准确地预测实值输出标记。 1.最简单的形式&#xff1a;输入属性的数且只有一个&#xff0c; 最小二乘法&#xff1a;基于均方差误差最小化来进行模型的求解&#xff0c;在线性回…

对数线性模型:逻辑斯谛回归和最大熵模型

http://blog.csdn.net/pipisorry/article/details/52788947 对数线性模型log linear model 对数线性模型有&#xff1a;最大熵模型和逻辑斯谛回归。 特征和指示特征 对数线性模型的一般形式 [概率图模型原理与技术] 某小皮 对数线性模型的不同形式 因子图 将因子转换到对…

从线性到非线性模型-对数线性模型

从线性到非线性模型 1、线性回归&#xff0c;岭回归&#xff0c;Lasso回归&#xff0c;局部加权线性回归 2、logistic回归&#xff0c;softmax回归&#xff0c;最大熵模型 3、广义线性模型 4、Fisher线性判别和线性感知机 5、三层神经网络 6、支持向量机 code: https://…

论文总结3 对数线性模型 罗盛

研究变量之间的相互关系、列联表、对应分析 目录 一、模型介绍 二、比较-对数线性模型&对应分析 1.相同&不同 2.相互关系 三、应用实例 1.模型确立 2.列因素&因子负荷 四、总结经验 一、模型介绍 列联表分析无法系统地评价变量间的联系&#xff0c;无法…

对数线性模型之一(逻辑回归), 广义线性模型学习总结

经典线性模型自变量的线性预测就是因变量的估计值。 广义线性模型:自变量的线性预测的函数是因变量的估计值。常见的广义线性模型有:probit模型、poisson模型、对数线性模型等等。对数线性模型里有:logistic regression、Maxinum entropy。本篇是对逻辑回归的学习总结,以及…

机器学习篇——对数线性模型

建议首先看cs229讲的广义线性模型、exponential family&#xff08;指数分布族&#xff09; 对数线性模型包括逻辑回归、最大熵模型和条件随机场等 1、模型 条件概率分布&#xff08;对数线性模型、概率模型&#xff09;、判别模型 逻辑回归&#xff1a; 概率分布可由广…

对数线性模型(Logistic回归算法)

1.Logistic分布&#xff1a; logistic分布定义&#xff1a;设X是连续随机变量&#xff0c;X服从logistic分布&#xff0c;即为X具有下列分布函数和密度函数&#xff1a; 其中&#xff0c;mu为位置参数&#xff0c;r>0为形状参数&#xff1b; logistic分布的分布函数F(x)的…

Log-Linear Models

一&#xff0c;简介 引入 对数线性模型被广泛应用于NLP中&#xff0c;对数线性模型的一个关键优点在于它的灵活性&#xff1a;它允许非常丰富的特征集合被用于模型中。常见的对数线性模型有Logistic回归、最大熵模型、MEMMs和CRFs等。 目的 1&#xff0c;Trigram LM Trigr…

Android getText(int resId)和getString(int resId)

Android提供多种获取资源文件方法&#xff0c;但是需要注意以下方法&#xff1a; CharSequence getText(int resId)&#xff1a;返回本地、样式化的字符。 String getString(int resId) &#xff1a;返回字符串 比如&#xff1a; String.xml文件中定义资源文件&#xff1a; <…

Resid

关于Resid服务器闪退问题&#xff0c;导致客户端&#xff1a;Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝无法连接解决方案。 前言&#xff1a;最近在整理计算机文档时发现过去学习过程中自己出现bug和解决办法&#xff0c;就整理一下发到个人博客…

redis05-Resid数据类型综合实践案例

Resid数据类型综合实践案例 业务场景 1.计数器 解决方案 设计计数器&#xff0c;记录调用次数&#xff0c;用于控制业务执行次数。以用户id作为key,使用此时作为value在调用前获取次数&#xff0c;判断是否超过限定次数&#xff0c;不超过次数的情况下&#xff0c;每次调用计…

ResDrawableImgUtil【根据图片名称获取resID值或者Bitmap对象】

版权声明&#xff1a;本文为HaiyuKing原创文章&#xff0c;转载请注明出处&#xff01; 前言 根据图片名称获取项目的res/drawable-xxdhpi中相应资源的ID值以及bitmap值的封装类。 效果图 代码分析 根据图片名称获取图片的resID值有两个方案&#xff0c;选其一即可。 使用步骤 …

Android - Context中的getText(int resId)方法和getString(int resId)方法的区别

Android开发中&#xff0c;经常在Activity中使用getText(int resId)和getString(int resId)这两个方法&#xff0c;那么这两个方法有什么区别和联系呢&#xff1f; 这两个方法的参数都是资源ID&#xff0c;区别在于getText(int resId)返回的是一个CharSequence&#xff0c;而ge…

Resources类中getString (int ResID)与getText (int ResID)的区别

Resources类中getString (int ResID)与getText (int ResID)的区别 getString (int ResID)和getText (int ResID)都是Resources类中方法&#xff0c;都是获取资源文件中的字符串资料。 getString (int ResID)&#xff1a;是获得资源文件的字符串资源&#xff08;XML文件中Strin…

【Redis】5. Resid数据类型综合实践案例

Resid数据类型综合实践案例 业务场景 1.计数器 解决方案 设计计数器&#xff0c;记录调用次数&#xff0c;用于控制业务执行次数。以用户id作为key,使用此时作为value在调用前获取次数&#xff0c;判断是否超过限定次数&#xff0c;不超过次数的情况下&#xff0c;每次调用计…

springboot打成jar后获取resources下文件失败, cannot be resolved to absolute file path because it does not resid

读取resources下的文件quotaShow.jasper 本地开发环境能正常下载&#xff1a; ClassPathResource resource new ClassPathResource("jasper" File.separator "quotaShow.jasper"); reportFile resource.getFile(); 打jar包发布至linux服务器时报错&am…

Resid作为缓存可能遇到的问题

1.缓存的执行流程 前台请求&#xff0c;后台先从缓存中取数据&#xff0c;取到直接返回结果&#xff0c;取不到时从数据库中取&#xff0c;数据库取到更新缓存&#xff0c;并返回结果&#xff0c;数据库也没取到&#xff0c;那直接返回空结果。 [外链图片转存失败,源站可能有…

动态修改android中的资源索引resId

目录 一、引言 1、为什么要动态修改资源索引 2、怎么修改资源索引 3、什么时候修改 二、处理Task及R文件 1、处理Task 2、修改R文件 三、处理编译后的二进制文件 1、编译后的文件在哪&#xff1f; 2、解压、压缩AP_文件 3、修改resources.arsc文件的pkgId 4、修改Xm…