Pythonのstatsmodelsを使って負の2項分布回帰モデルを推定する
-How to estimate negative binomial regression in Python-

Pythonのstatsmodelsを使って負の2項分布回帰モデルを推定する
-How to estimate negative binomial regression in Python-

負の2項分布回帰モデル

負の2項分布回帰は、ポアソン分布と比較して過分散を考慮したカウントデータの統計モデリングに使用される統計手法です。

負の2項分布の確率質量関数は次のように表されます:

\[ P(Y = y) = \frac{\Gamma(y + r)}{y! \cdot \Gamma(r)} \left(\frac{r}{r + \lambda}\right)^r \left(\frac{\lambda}{r + \lambda}\right)^y \]

ここで、\(\Gamma\) はガンマ関数、\(r\) は分散を調整する正のハイパーパラメータであり、\(\lambda\) は平均発生回数です。

負の2項分布回帰モデルは次のように表されます:

\[ \lambda = e^{\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_k X_k} \]

ここで、\(\beta_0, \beta_1, \ldots, \beta_k\) は回帰係数であり、\(X_1, X_2, \ldots, X_k\) は説明変数です。

statsmodels ライブラリを使用して、負の2項分布モデルを実装することができます。モデルの結果には回帰係数、尤度比検定、AIC、BIC などが含まれます。

statsmodelsを使用して負の2項分布回帰

import statsmodels.api as sm

# ダミーデータの生成(例として)
import numpy as np

np.random.seed(42)
X = np.random.rand(100, 2)
y = np.random.poisson(lam=np.exp(2 + 0.5 * X[:, 0] + 0.8 * X[:, 1]))

# NegativeBinomialモデルの構築
nb_model = sm.GLM(y, sm.add_constant(X), family=sm.families.NegativeBinomial())
result = nb_model.fit()

# モデルの結果を表示
print(result.summary())

この例では、statsmodels ライブラリを使用してネガティブビノミアル回帰モデルを構築しています。GLM クラスにモデルの応答変数(y)、説明変数(X)、および分布ファミリー(family=sm.families.NegativeBinomial())を指定し、fit() メソッドでモデルを適合させます。最後に、result.summary() でモデルの結果を表示します。

この例ではダミーデータを使用していますが、実際のデータに適用する際には適切なデータを用意してください。

負の2項分布回帰の結果の例

                 Generalized Linear Model Regression Results                  
==============================================================================
Dep. Variable:                outcome_variable   No. Observations: 1000
Model:                            GLM   Df Residuals: 996
Model Family:          NegativeBinomial   Df Model: 3
Link Function:                    log   Scale: 1.0
Method:                          IRLS   Log-Likelihood: -1200.567
Date:                Tue, 05 Nov 2023   Deviance: 2401.134
Time:                        12:34:56   Pearson chi2: 2.12e+03
No. Iterations:                    10   Covariance Type: HC3
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.1234      0.045      2.735      0.006       0.035       0.212
var1           0.5678      0.123      4.620      0.000       0.327       0.809
var2          -0.9876      0.202     -4.889      0.000      -1.384      -0.591
var3           0.4567      0.175      2.609      0.009       0.113       0.800
==============================================================================

以下は、result.summary()で表示される結果の要素についての解説です。

  1. Dep. Variable (被説明変数):
    • この列には回帰分析で予測しようとしている変数(被説明変数)の名前が表示されます。
  2. Model (モデル):
    • 使用されているモデルの種類が表示されます。例えば、ここではGLM(Generalized Linear Model)が使われています。
  3. Model Family (モデルファミリー):
    • モデルのファミリー(分布の種類)が表示されます。この例ではNegativeBinomial()が使用されています。
  4. Link Function (リンク関数):
    • 使用されているリンク関数が表示されます。この例ではlogが使用されています。
  5. Date (日付):
    • 分析が実行された日時が表示されます。
  6. AIC (赤池情報量基準):
    • 赤池情報量基準の値が表示されます。モデルの適合度と複雑さを考慮してモデルを比較する指標です。小さいほど良いモデルとされます。
  7. BIC (ベイズ情報量基準):
    • ベイズ情報量基準の値が表示されます。AICと同様にモデルの適合度と複雑さを考慮してモデルを比較します。
  8. Log-Likelihood (対数尤度):
    • 対数尤度の値が表示されます。最大化されるべき対数尤度で、モデルの適合度を示す指標です。
  9. No. Observations (観測数):
    • モデルに使用されたデータの観測数が表示されます。
  10. Df Residuals (残差の自由度):
    • 残差の自由度が表示されます。
  11. Df Model (モデルの自由度):
    • モデルの自由度が表示されます。
  12. Covariance Type (共分散のタイプ):
    • 使用された共分散のタイプが表示されます。
  13. coef, std err, z, P>|z|, [0.025, 0.975] (係数、標準誤差、z値、p値、信頼区間):
    • 各説明変数の係数、標準誤差、z値、p値、95%信頼区間が表示されます。これらは回帰係数に関する情報です。

にほんブログ村 教育ブログへ
にほんブログ村
インターネット・コンピュータランキング
インターネット・コンピュータランキング
ブログ王ランキングに参加中!
PC関連ランキング
くる天 人気ブログランキング

コメントを残す

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