統計ソフトRで負の二項分布モデルを分析するには?

にほんブログ村 科学ブログ 数学へ

ゼロが多くて、 ものすごくバランバランなデータを解析したいなら、 負の二項分布モデルを使うことができる。

重回帰モデルやポアソン回帰モデルよりも適切だ。

統計ソフトRで負の二項分布モデルを解析する

データはこちらからダウンロード可能。

データを読み込む。

dat <- read.csv("C:/data/NegBin-sample-data.csv")

 

Yの分布。

> table(dat$Y)

   0    1    2    4 
3601   35    3    1 

 

Yの分布図はすごいことに。

plot(table(dat$Y))

XとYの関係を見ていこう。

まずクロス集計表だ。

> table(dat$X, dat$Y)
   
       0    1    2    4
  1  910    2    1    0
  2 1333   11    1    0
  3  509    9    1    0
  9  849   13    0    1

 

Yがゼロばかりなのが目立つ。

負の二項分布モデルは、 MASSライブラリの glm.nb()を使う。

 

library(MASS)
nb.res <- glm.nb(Y ~ factor(X), data=dat)
summary(nb.res)

 

結果は、Xが1に比べて、3とか、9とかはYに関連がある。

> summary(nb.res)

Call:
glm.nb(formula = Y ~ factor(X), data = dat, init.theta = 0.05009536409, 
    link = log)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.18802  -0.18228  -0.13295  -0.09165   3.10151  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  -5.4304     0.5214 -10.415   <2e-16 ***
factor(X)2    0.7912     0.6030   1.312   0.1895    
factor(X)3    1.5764     0.6334   2.489   0.0128 *  
factor(X)9    1.5032     0.5948   2.527   0.0115 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for Negative Binomial(0.0501) family taken to be 1)

    Null deviance: 210.18  on 3639  degrees of freedom
Residual deviance: 199.65  on 3636  degrees of freedom
AIC: 465.67

Number of Fisher Scoring iterations: 1


              Theta:  0.0501 
          Std. Err.:  0.0236 

 2 x log-likelihood:  -455.6660 

 

まとめ

データがゼロばかりで、 ほんの少しゼロより大きいデータがある。

こんなデータの場合に使えるモデルだ。

ふだん使いではないが、 知っておいて損はない、 そんなモデルだ。