stats | 广义线性模型(二)——泊松回归
本篇介绍一种常见的广义线性模型:泊松回归。泊松分布是离散型分布,它的概率分布函数如下:
写成指数族分布的形式如下:
对照指数族分布的通式:
可得,
广义线性模型假设与解释变量存在线性关系,即
又因为泊松分布的数学期望就是,因此泊松回归可写成如下形式:
泊松回归是计数模型,因变量必须为自然数。一般针对具有稳定发生频数/率的事件进行建模。在glm
函数中,泊松回归的family
参数设置为poisson(link = "log")
或poisson()
。
示例
示例数据是来自dlnm
工具包的chicagoNMMAPS
数据集,它记录的是芝加哥逐日的死亡人口数和温度、环境污染物浓度等信息。
library(dlnm)
names(chicagoNMMAPS)
## [1] "date" "time" "year" "month" "doy" "dow" "death" "cvd" "resp"
## [10] "temp" "dptp" "rhum" "pm10" "o3"
在一段时间内,自然状态下地区的死亡人口可以看作是等频数发生的,因此可以使用泊松回归进行建模。
model <- glm(death ~ 1, family = poisson(),data = chicagoNMMAPS)summary(model)
##
## Call:
## glm(formula = death ~ 1, family = poisson(), data = chicagoNMMAPS)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -4.6735 -0.9850 -0.1323 0.7891 21.2791
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.748568 0.001302 3648 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 9873.8 on 5113 degrees of freedom
## Residual deviance: 9873.8 on 5113 degrees of freedom
## AIC: 43525
##
## Number of Fisher Scoring iterations: 4
在模型中添加温度变量temp
作为解释变量:
model.2 <- glm(death ~ temp, family = poisson(),data = chicagoNMMAPS)summary(model.2)
##
## Call:
## glm(formula = death ~ temp, family = poisson(), data = chicagoNMMAPS)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -4.3097 -0.8563 -0.0719 0.7530 22.5216
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.7927697 0.0017346 2762.97 <2e-16 ***
## temp -0.0044903 0.0001197 -37.51 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 9873.8 on 5113 degrees of freedom
## Residual deviance: 8471.8 on 5112 degrees of freedom
## AIC: 42125
##
## Number of Fisher Scoring iterations: 4
在模型中添加温度的时间滞后项作为解释变量:
library(dplyr)
model.3 <- glm(death ~ temp + lag(temp, 1) + lag(temp, 2) +lag(temp, 3) + lag(temp, 4) + lag(temp, 5),family = poisson(),data = chicagoNMMAPS)summary(model.3)
##
## Call:
## glm(formula = death ~ temp + lag(temp, 1) + lag(temp, 2) + lag(temp,
## 3) + lag(temp, 4) + lag(temp, 5), family = poisson(), data = chicagoNMMAPS)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.8876 -0.8192 -0.0514 0.7029 22.6409
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.8028333 0.0017758 2704.577 < 2e-16 ***
## temp 0.0019664 0.0003720 5.286 1.25e-07 ***
## lag(temp, 1) -0.0011023 0.0005198 -2.121 0.034 *
## lag(temp, 2) -0.0021813 0.0005301 -4.115 3.87e-05 ***
## lag(temp, 3) -0.0005632 0.0005295 -1.064 0.287
## lag(temp, 4) -0.0008187 0.0005193 -1.577 0.115
## lag(temp, 5) -0.0028462 0.0003720 -7.651 1.99e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 9856.6 on 5108 degrees of freedom
## Residual deviance: 7768.2 on 5102 degrees of freedom
## (5 observations deleted due to missingness)
## AIC: 41398
##
## Number of Fisher Scoring iterations: 4
偏移项
在很多情况下,保持恒定的并非计数变量(如示例中的死亡人口),而是比率变量。在上述示例中,死亡人口受到总人口或老年人口(如60岁以上人口)数量的影响:
泊松回归要求因变量必须为非负整数,比率变量显然不能满足这一条件。
利用对数的运算法则,有如下变形:
在上式中,log(pop)
作为系数恒为1的解释变量,即偏移项。因此可以设置如下形式的模型:
model.4 <- glm(death ~ temp, offset = log(pop),family = poisson(),data = chicagoNMMAPS)
chicagoNMMAPS
数据集中无pop
变量,上式只作为演示,不能运行。
准泊松回归
泊松分布的均值和方差相等,均为:
## (Dispersion parameter for poisson family taken to be 1)
但很多情况下该条件并满足:
deviance(model.2)/df.residual(model.2)
## [1] 1.657238
这种情况可以使用准泊松分布族quasipoisson()
:
model.22 <- glm(death ~ temp, family = quasipoisson(),data = chicagoNMMAPS)summary(model.22)
结果对比:
coef(summary(model.2))
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.792769652 0.0017346450 2762.9687 0.000000e+00
## temp -0.004490284 0.0001196991 -37.5131 5.633927e-308coef(summary(model.22))
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.792769652 0.0023079821 2076.60605 0.000000e+00
## temp -0.004490284 0.0001592622 -28.19428 1.102289e-162
泊松回归和准泊松回归的系数估计值是一样的,但后者的标准误(Std. Error)较大。
相关阅读:
stats | 概率分布与随机数生成(一)——离散型分布
stats | 线性回归(一)——模型表达式和输出结果
stats | 广义线性模型(一)——广义线性模型的基本结构及与线性模型的比较
往期推荐阅读:
《数据处理通识》专辑-base | 使用apply族函数进行向量化运算
《制表与可视化》专辑-ggplot2 | ggplot2作图语法入门
《数学模型》专辑-car | 线性回归(三)——残差分析和异常点检验
《地理计算与分析》专辑-spdep | 如何在R语言中计算空间自相关指数
stats | 广义线性模型(二)——泊松回归相关推荐
- Python使用sklearn构建广义线性模型:泊松回归(Poisson regression)实战
Python使用sklearn构建广义线性模型:泊松回归(Poisson regression)实战 目录 Python使用sklearn构建广义线性模型:泊松回归(Poisson regressio ...
- Python使用sklearn构建广义线性模型:gamma回归(Gamma regression)实战
Python使用sklearn构建广义线性模型:gamma回归(Gamma regression)实战 目录 Python使用sklearn构建广义线性模型:gamma回归(Gamma regress ...
- Python使用sklearn构建广义线性模型:Tweedie回归(Tweedie regression)实战
Python使用sklearn构建广义线性模型:Tweedie回归(Tweedie regression)实战 目录 Python使用sklearn构建广义线性模型:Tweedie回归(Tweedie ...
- 广义线性模型(逻辑回归、泊松回归)
线性回归模型也并不适用于所有情况,有些结果可能包含而元数据(比如正面与反面)或者计数数据,广义线性模型可用于解释这类数据,使用的仍然是自变量的线性组合. 目录 逻辑回归 使用statsmodels 使 ...
- stats | 广义线性模型(三)——二元Logistic模型和Probit模型
本篇再介绍一种常见的广义线性模型:Logistic模型.该模型主要针对分类结果进行建模.与之功能类似的另一个模型是Probit模型,但较少应用. Logistic模型的形式 两点分布,又称伯努利分布, ...
- 对数线性模型之一(逻辑回归), 广义线性模型学习总结
经典线性模型自变量的线性预测就是因变量的估计值. 广义线性模型:自变量的线性预测的函数是因变量的估计值.常见的广义线性模型有:probit模型.poisson模型.对数线性模型等等.对数线性模型里有: ...
- UA MATH571A 多元线性回归IV 广义线性模型
UA MATH571A 多元线性回归IV 广义线性模型 广义线性模型 二值被解释变量 Probit模型 Logit模型 系数的最大似然估计 系数的推断 Wald检验 似然比检验 二项回归 拟合优度检验 ...
- 大数据分析R中泊松回归模型实例
如果您知道如何以及何时使用泊松回归,它可能是一个非常有用的工具.在大数据分析R中泊松回归模型实例中,我们将深入研究泊松回归,它是什么以及R程序员如何在现实世界中使用它. 具体来说,我们将介绍: 1)泊 ...
- 调整泊松回归中的过度分散
广义线性模型(Generalized Linear Models) The Poisson regression model naturally arises when we want to mode ...
最新文章
- 【综述】介绍这些常用机器学习算法的优缺点
- 深圳大学面向全球引进高精尖缺人才!
- [原]如何做一份精致的性能测试报告?
- QML笔记-QML中SpriteSequence及Sprite的基本使用
- h5跳转小程序_微信小程序吞掉H5?
- [leetcode] Median of Two Sorted Arrays 寻找两个有序数组的中位数
- Sqlyog的安装与使用
- 前端的c语言面试题,腾讯WEB前端笔试题和面试题答案
- 统计二叉树的叶子结点个数(C语言数据结构)
- matlab中的插值函数
- bootstrap3.x popover报错Cannot read property 'off' of null
- wps折线图如何画多条折线_如何用wps制作折线图
- 时间戳转换格林威治时间
- 创业的路,每一天都是劫后余生,怎么走?
- 磁盘盘符隐藏并访问隐藏磁盘的文件数据
- 一图读懂DV、OV、EV三种SSL证书之间的区别
- 面试时想拿 13K,HR 说你只值 8K,该怎么回答?
- 利用 Universal Transformer,翻译将无往不利!
- [从零开始学习FPGA编程-7]:快速入门篇 - 总体 - FPGA产品开发简化流程、关键步骤解读
- 修改d2-admin
热门文章
- qpushbutton 添加本地文件图标_1.PyQt5实现多文件调用以及UI和逻辑分离
- 万测试验机软件,万测TestStar®新秀®100kN微机控制电子万能试验机
- (一)java版spring cloud+spring boot+redis多租户社交电子商务平台-简介
- 联合国儿童基金会投资六家区块链初创企业,目标是解决“全球性挑战”
- 通过样式调整input 中password text默认长度
- java 父类 new 子类
- 关于虚拟化 云计算
- “变态级”系统管理员笔试题 我的答卷
- cratedb导入json文件
- 洛谷 p1197 [JSOI2008]星球大战(并查集)