カウントデータのポアソン回帰についての穏やかな入門書


回帰は、1 つ以上の予測変数と応答変数の間の関係を決定するために使用できる統計手法です。

ポアソン回帰は、応答変数が「カウント データ」である特別なタイプの回帰です。次の例は、ポアソン回帰が使用できるケースを示しています。

例 1:ポアソン回帰を使用して、プログラム入学時の GPA と性別に基づいて、特定の大学プログラムを卒業する学生の数を調べることができます。この場合、「卒業する学生の数」は応答変数、「プログラム入学時の GPA」は連続予測変数、「性別」はカテゴリ予測変数です。

例 2:ポアソン回帰を使用すると、気象条件 (「晴れ」、「曇り」、「雨」) と、市内で特別なイベントが発生したかどうか (「はい」) に基づいて、特定の交差点での交通事故の数を調べることができます。またはいいえ」)。この場合、「交通事故の件数」は応答変数ですが、「気象条件」と「特別な出来事」はどちらもカテゴリカル予測変数です。

例 3:ポアソン回帰を使用すると、時間帯、曜日、セールが行われているかどうか (「はい」または「いいえ」) に基づいて、店で並んでいる人の数を調べることができます。 .」)。この場合、「前に並んでいる人の数」が応答変数、「時刻」と「曜日」は両方とも連続予測変数、「進行中のセール」はカテゴリ予測変数です。

例 4:ポアソン回帰を使用して、気象条件 (「晴れ」、「曇り」、「雨」) とコースの難易度 (「簡単」、「雨」) に基づいてトライアスロンを完走した人の数を調べることができます。 「中程度」、「難しい」)。この場合、「完走者数」が応答変数であるのに対し、「気象条件」と「コースの難易度」はどちらもカテゴリカル予測変数です。

ポアソン回帰を実行すると、どの予測子変数 (存在する場合) が応答変数に統計的に有意な影響を与えるかを確認できます。

連続予測変数の場合、その変数の 1 単位の増加または減少が応答変数の数値の変化率とどのように関連付けられているかを解釈できます (たとえば、「GPA の 1 単位の増加ごとに追加ポイントが関連付けられている)」応答変数の 12.5% 増加)。

カテゴリ予測変数の場合、あるグループの数 (たとえば、晴れた日にトライアスロンを完走した人の数) を、別のグループ (たとえば、トライアスロンを完走した人の数) と比較したときの変化率を解釈できます。雨天時のトライアスロン)。

ポアソン回帰の仮定

ポアソン回帰を実行する前に、ポアソン回帰の結果が有効であるように、次の前提が満たされていることを確認する必要があります。

仮定 1:応答変数はカウント データです。従来の線形回帰では、応答変数は連続データです。ただし、ポアソン回帰を使用するには、応答変数が 0 以上の整数 (0、1、2、14、34、49、200 など) を含むカウント データで構成されている必要があります。応答変数に負の値を含めることはできません。

仮説 2: 観測値は独立しています。データセット内の各観測値は互いに独立している必要があります。これは、ある観測値が別の観測値に関する情報を提供できないことを意味します。

仮説 3: アカウントの分布はポアソン分布に従います。結果として、観測された数と期待される数は同様になるはずです。これをテストする簡単な方法は、予想される数と観測された数をプロットし、それらが類似しているかどうかを確認することです。

仮定 4: モデルの平均と分散は等しい。これは、カウントの分布がポアソン分布に従うという仮定から生じます。ポアソン分布の場合、分散は平均と同じ値になります。この仮定が満たされれば、等分散になります。ただし、過分散は一般的な問題であるため、この仮定はしばしば破られます。

例: R でのポアソン回帰

次に、R でポアソン回帰を実行する方法の例を確認します。

背景

特定の郡の高校野球選手が学校区分 (「A」、「B」、または「C」) と学年に基づいて受け取った奨学金の数を知りたいとします。大学入学試験(0から100で評価)。 )。

次のコードは、使用するデータセットを作成します。これには、100 人の野球選手に関するデータが含まれます。

 #make this example reproducible
set.seed(1)

#create dataset
data <- data.frame(offers = c(rep(0, 50), rep(1, 30), rep(2, 10), rep(3, 7), rep(4, 3)),
                   division = sample(c("A", "B", "C"), 100, replace = TRUE),
                   exam = c(runif(50, 60, 80), runif(30, 65, 95), runif(20, 75, 95)))

データを理解する

実際にポアソン回帰モデルをこのデータセットに当てはめる前に、データセットの最初の数行を視覚化し、 dplyrライブラリを使用して要約統計を実行することで、データをより深く理解できます。

 #view dimensions of dataset
dim(data)

#[1] 100 3

#view first six lines of dataset
head(data)

# offers division exam
#1 0 A 73.09448
#2 0 B 67.06395
#3 0 B 65.40520
#4 0 C 79.85368
#5 0 A 72.66987
#6 0 C 64.26416

#view summary of each variable in dataset
summary(data)

# offers division exam      
# Min. :0.00 To:27 Min. :60.26  
# 1st Qu.:0.00 B:38 1st Qu.:69.86  
# Median: 0.50 C:35 Median: 75.08  
# Mean:0.83 Mean:76.43  
# 3rd Qu.:1.00 3rd Qu.:82.87  
# Max. :4.00 Max. :93.87  

#view mean exam score by number of offers
library(dplyr)
data %>%
  group_by (offers) %>%
  summarize (mean_exam = mean(exam))

# A tibble: 5 x 2
# offers mean_exam
#        
#1 0 70.0
#2 1 80.8
#3 2 86.8
#4 3 83.9
#5 4 87.9

上記の結果から、次のことがわかります。

  • データセットには 100 行と 3 列があります
  • プレーヤーが受け取ったオファーの最小数は 0、最大は 4、平均は 0.83 でした。
  • このデータセットには、「A」部門の 27 人のプレーヤー、「B」部門の 38 人のプレイヤー、「C」部門の 35 人のプレイヤーがいます。
  • 試験の最低点は 60.26 点、最高点は 93.87 点、平均は 76.43 点でした。
  • 一般に、より多くの奨学金オファーを受けたプレーヤーは、試験のスコアが高くなる傾向があります (たとえば、オファーを受け取らなかったプレーヤーの試験スコアの平均は 70.0 で、オファーを 4 件受け取ったプレーヤーのレビューの平均スコアは 87.9 でした)。

ヒストグラムを作成して、部門に基づいてプレーヤーが受け取ったオファーの数を視覚化することもできます。

 #load ggplot2 package
library(ggplot2)

#create histogram
ggplot(data, aes(offers, fill = division)) +
  geom_histogram(binwidth=.5, position="dodge")

ほとんどのプレイヤーがオファーをまったく受け取っていないか、オファーを 1 つだけ受け取っていることがわかります。これはポアソン分布に従うデータセットの典型的なものであり、応答値のかなりの部分がゼロです。

ポアソン回帰モデルのフィッティング

次に、 glm()関数を使用し、モデルにfamily=”fish”を使用することを指定してモデルを調整できます。

 #fit the model
model <- glm(offers ~ division + exam, family = "fish" , data = data)

#view model output
summary(model)

#Call:
#glm(formula = offers ~ division + exam, family = "fish", data = data)
#
#Deviance Residuals: 
# Min 1Q Median 3Q Max  
#-1.2562 -0.8467 -0.5657 0.3846 2.5033  
#
#Coefficients:
#Estimate Std. Error z value Pr(>|z|)    
#(Intercept) -7.90602 1.13597 -6.960 3.41e-12 ***
#divisionB 0.17566 0.27257 0.644 0.519    
#divisionC -0.05251 0.27819 -0.189 0.850    
#exam 0.09548 0.01322 7.221 5.15e-13 ***
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#(Dispersion parameter for fish family taken to be 1)
#
# Null deviance: 138,069 on 99 degrees of freedom
#Residual deviance: 79,247 on 96 degrees of freedom
#AIC: 204.12
#
#Number of Fisher Scoring iterations: 5

結果から次のことがわかります。

  • ポアソン回帰係数、推定値の標準誤差、Z スコア、および対応する p 値がすべて提供されます。
  • レビュー係数は0.09548です。これは、レビューで 1 ユニット増加する場合のオファー数の予想ログ数が0.09548であることを示します。これを解釈する簡単な方法は、べき乗された値、つまりe 0.09548 = 1.10を取得することです。これは、入学試験で獲得した追加ポイントごとに、受け取るオファーの数が 10% 増加することを意味します。
  • ディビジョン Bの係数は0.1756で、これはディビジョン B のプレーヤーの予想オファー数がディビジョン A のプレーヤーより0.1756高いことを示しています。これを解釈する簡単な方法は、べき乗された値、つまりe 0.1756 = を取ることです。 1.19 。これは、ディビジョン B のプレーヤーがディビジョン A のプレーヤーよりも 19% 多くのオファーを受け取ることを意味します。この差は統計的に有意ではないことに注意してください (p = 0.519)。
  • Division Cの係数は-0.05251で、これは、Division C のプレーヤーのオファー数の予想ログ数が、Division A のプレーヤーよりも0.05251低いことを示します。これを解釈する簡単な方法は、べき乗された値を取得することです。つまり、 e 0.05251 = 0.94です。これは、ディビジョン C のプレーヤーが受け取るオファーがディビジョン A のプレーヤーより 6% 少ないことを意味します。この差は統計的に有意ではないことに注意してください (p = 850)。

モデルの逸脱に関する情報も提供されます。特に、 96自由度のうち79,247の値を持つ残留逸脱度に注目します。これらの数値を使用して、カイ二乗適合度検定を実行して、モデルがデータに適合するかどうかを確認できます。次のコードは、このテストを実行する方法を示しています。

 pchisq(79.24679, 96, lower.tail = FALSE)

#[1] 0.8922676

この検定の p 値は0.89で、有意水準 0.05 を大きく上回っています。データがモデルにかなりよく適合していると結論付けることができます。

結果を見る

次のコードを使用して、部門と入学試験の結果に基づいて受け取られる奨学金のオファーの予想数を示すグラフを作成することもできます。

 #find predicted number of offers using the fitted Poisson regression model
data$phat <- predict(model, type="response")

#create plot that shows number of offers based on division and exam score
ggplot(data, aes(x = exam, y = phat, color = division)) +
  geom_point(aes(y = offers), alpha = .7, position = position_jitter(h = .2)) +
  geom_line() +
  labs(x = "Entrance Exam Score", y = "Expected number of scholarship offers")

このグラフは、入学試験で高得点を獲得した選手に対して予想される奨学金オファーの最大数を示しています。さらに、ディビジョン B (緑の線) のプレーヤーは、一般的にディビジョン A またはディビジョン C のプレーヤーよりも多くのオファーを受け取るはずであることがわかります。

結果報告

最後に、調査結果を要約した方法で回帰結果を報告できます。

ポアソン回帰を実行して、野球選手が受け取る奨学金オファーの数を部門別および入学試験のスコアに基づいて予測しました。入学試験で獲得した追加ポイントごとに、受け取ったオファーの数は 10% 増加します ( p < 0.0001) 。この部門は統計的に有意であるとはわかりませんでした。

追加リソース

単線形回帰の概要
重線形回帰の概要
多項式回帰の概要

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です