R语言进行泊松回归

泊松回归(Poisson regression)是以结局变量为计数结果时的一种回归分析。泊松回归在我们的生活中应用非常广泛,例如:1分钟内过马路人数,1天内火车站的旅客流动数,1天内的银行取钱人数,一周内的销售经营数据等等都可以使用泊松回归进行分析。
今天我们来说说怎么使用R语言进行泊松回归分析,需要使用到robust包和qcc包,先要下载好。我们使用的是robust包知道的stack.dat数据集进行分析,我们先导入数据

library(robust)
library(qcc)
data("stack.dat",package = "robust")
names(stack.dat)

R语言进行泊松回归_第1张图片
R语言进行泊松回归_第2张图片
这个数据集比较简单,只有4个变量,是一个化工厂21天内记录氨气流失的数据,Loss是我们的结局变量,氨气损失量,Air.Flow空气流动量, Water.Temp水温,Acid.Conc.酸浓缩比。
泊松回归可以使用广义线性方程拟合,主要是调整一下family这个参数

f1<-glm(Loss~.,data = stack.dat,family = poisson(link = "log"))
summary(f1)

R语言进行泊松回归_第3张图片
从拟合方程看到,空气流动和水温对氨气的流失存在明显的影响(P<0.05),我们可以求出系数和指数话系数,利于模型解释,

coef(f1)
exp(coef(f1))

R语言进行泊松回归_第4张图片
由此可以空流动每增加1单位氨气流失增加2%。
接下来我们可以通过qcc包自带的函数检测是否存在过度离势

deviance(f1)/df.residual(f1)
qcc.overdispersion.test(stack.dat$Loss,type = "poisson")

在这里插入图片描述
P>0.05由此可知,本结果不存在过度离势。
过度离势产生的常见原因:

  1. 没有纳入某个重要变量
  2. 可能与因为时间相关
  3. 内在群聚特性
    假如结果P小于0.05存在过度离势,我们可以使用family = quasipoisson替换family = poisson进行类泊松回归
f2<-glm(Loss~.,data = stack.dat,family = quasipoisson())
summary(f2)

R语言进行泊松回归_第5张图片
假如我们想拟合存在时间变化的泊松回归模型,我们可以在offset中加入时间变量,但这样的话结果变量必须是比率的形式,我这里结果本来就是比率的形式,我就不改了,只做演示。

stack.dat$time<-round(rnorm(21,mean = 15,sd=6))
f3<-glm(Loss~Air.Flow+Water.Temp+Acid.Conc.,data = stack.dat,
        family = poisson(link = "log"),offset = log(time))
summary(f3)

R语言进行泊松回归_第6张图片
值得一提的是,如果泊松分布P值很小的时候,其结果和二项式分布是很接近。
R语言进行泊松回归_第7张图片
更多精彩文章请关注公众号:零基础说科研
R语言进行泊松回归_第8张图片

你可能感兴趣的:(R语言,数据分析)