R语言统计系列第12篇-泊松回归

【科研绘图点我】【付费精品合集【SEER点我】

今天是各类统计方法R语言实现的第12期,我们主要介绍泊松回归。

泊松回归

计数型,如某地区某年发生肿瘤患者的人数等,常用泊松回归,假设因变量Y服从泊松分布。

此处分析的是robust 包中的Breslow癫痫数据,我们需要预测癫痫的发病次数。

# 载入数据
library(robust)
## Loading required package: fit.models
data(breslow.dat,package="robust")
names(breslow.dat)
##  [1] "ID"    "Y1"    "Y2"    "Y3"    "Y4"    "Base"  "Age"   "Trt"   "Ysum" 
## [10] "sumY"  "Age10" "Base4"
summary(breslow.dat[c(6:8,10)])
##       Base             Age               Trt          sumY       
##  Min.   :  6.00   Min.   :18.00   placebo  :28   Min.   :  0.00  
##  1st Qu.: 12.00   1st Qu.:23.00   progabide:31   1st Qu.: 11.50  
##  Median : 22.00   Median :28.00                  Median : 16.00  
##  Mean   : 31.22   Mean   :28.34                  Mean   : 33.05  
##  3rd Qu.: 41.00   3rd Qu.:32.00                  3rd Qu.: 36.00  
##  Max.   :151.00   Max.   :42.00                  Max.   :302.00
opar<-par(no.readonly=TRUE)

hist(breslow.dat$sumY,breaks=20,xlab="Seizure Count",main="Distribution of Seizures")

img

可以看到该数据为计数资料。

boxplot(breslow.dat$sumY~breslow.dat$Trt,xlab="Treatment",main="Group Comparisons")

img

两组间看起来似乎有一定的差异,但差异不大。同时progabide治疗组似乎有一个离群点。

泊松回归

fit<-glm(sumY~Base+Age+Trt,data=breslow.dat,family=poisson())
summary(fit)
## 
## Call:
## glm(formula = sumY ~ Base + Age + Trt, family = poisson(), data = breslow.dat)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -6.0569  -2.0433  -0.9397   0.7929  11.0061  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   1.9488259  0.1356191  14.370  < 2e-16 ***
## Base          0.0226517  0.0005093  44.476  < 2e-16 ***
## Age           0.0227401  0.0040240   5.651 1.59e-08 ***
## Trtprogabide -0.1527009  0.0478051  -3.194   0.0014 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 2122.73  on 58  degrees of freedom
## Residual deviance:  559.44  on 55  degrees of freedom
## AIC: 850.71
## 
## Number of Fisher Scoring iterations: 5

此处每一个变量均非常显著。

解释模型参数

coef(fit)
##  (Intercept)         Base          Age Trtprogabide 
##   1.94882593   0.02265174   0.02274013  -0.15270095
exp(coef(fit))
##  (Intercept)         Base          Age Trtprogabide 
##    7.0204403    1.0229102    1.0230007    0.8583864

以Age 为例进行举例:此处说明保持其他变量不变,年龄增加一岁,期望的癫痫发病次数将乘以1.023。同时,可以分析得出治疗组发病次数比安慰剂组期望发病数降低了14%(即1-0.858)

过度离势

可能发生过度离势的原因如下:

(1)遗漏了某个重要的预测变量;

(2)可能因为事件相关;

(3)在纵向数据分析中,重复测量的数据由于内在群聚特性可导致过度离势。此处暂不讨论纵向泊松模型。

过度离势由于放宽了统计检验的条件,会导致模型不准确,评价方法与上次Logistic回归类似。

deviance(fit)/df.residual(fit)
## [1] 10.1717

得到的结果远大于1.

library(qcc)
## Warning: package 'qcc' was built under R version 3.6.3
## Package 'qcc' version 2.7
## Type 'citation("qcc")' for citing this R package in publications.
qcc.overdispersion.test(breslow.dat$sumY,type="poisson")
##                    
## Overdispersion test Obs.Var/Theor.Var Statistic p-value
##        poisson data          62.87013  3646.468       0

p=0,二者有显著差异,因此存在过度离势,可以使用quasipoisson方法进行拟合。

fit<-glm(sumY~Base+Age+Trt,data=breslow.dat,family=quasipoisson())
summary(fit)
## 
## Call:
## glm(formula = sumY ~ Base + Age + Trt, family = quasipoisson(), 
##     data = breslow.dat)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -6.0569  -2.0433  -0.9397   0.7929  11.0061  
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   1.948826   0.465091   4.190 0.000102 ***
## Base          0.022652   0.001747  12.969  < 2e-16 ***
## Age           0.022740   0.013800   1.648 0.105085    
## Trtprogabide -0.152701   0.163943  -0.931 0.355702    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasipoisson family taken to be 11.76075)
## 
##     Null deviance: 2122.73  on 58  degrees of freedom
## Residual deviance:  559.44  on 55  degrees of freedom
## AIC: NA
## 
## Number of Fisher Scoring iterations: 5

此时age不再显著,可以将其剔除后重新建模。

好了,今天的R语言实现统计方法系列推文暂时告一段落,我们下次再见吧!小伙伴们如果有什么统计上的问题,或者如果想要学习什么方面的生物信息内容,可以在微信群或者知识星球提问,没准哪天的推文就是专门解答你的问题哦!

(0)

相关推荐