過分散の問題

Pythonで学ぶ一般化線形モデル

Ita Cirovic Donev

Data Science Consultant

データの把握

衛星数(カニ)の分布プロット

# mean of y
y_mean = crab['sat'].mean()
2.919
# variance of y
y_variance = crab['sat'].var()
9.912
Pythonで学ぶ一般化線形モデル

平均と分散が一致しない

  • $variance > mean$ $\rightarrow$ 過分散
  • $variance < mean$ $\rightarrow$ 過小分散

影響:

  • 標準誤差が小さすぎる
  • p値が小さすぎる
Pythonで学ぶ一般化線形モデル

過分散の確認方法

当てはめ結果の要約(残差の自由度とピアソンχ二乗統計を強調)

Pythonで学ぶ一般化線形モデル

推定過分散の計算

ratio = crab_fit.pearson_chi2 / crab_fit.df_resid
print(ratio)
3.134
  • Ratio $ =1$ $\rightarrow$ ほぼポアソン

  • Ratio $ <1$ $\rightarrow$ 過小分散

  • Ratio $ >1$ $\rightarrow$ 過分散

Pythonで学ぶ一般化線形モデル

負の二項回帰

  • $E(y)=\lambda$
  • $Var(y) = \lambda+\alpha\lambda^2$
  • $\alpha$:分散パラメータ
Pythonで学ぶ一般化線形モデル

PythonでのGLM(負の二項)

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm('y ~ x', data = my_data, 
            family = sm.families.NegativeBinomial(alpha = 1)).fit()
Pythonで学ぶ一般化線形モデル

¡Vamos a practicar!

Pythonで学ぶ一般化線形モデル

Preparing Video For Download...