-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()
で表示される結果の要素についての解説です。
- Dep. Variable (被説明変数):
- この列には回帰分析で予測しようとしている変数(被説明変数)の名前が表示されます。
- Model (モデル):
- 使用されているモデルの種類が表示されます。例えば、ここでは
GLM
(Generalized Linear Model)が使われています。
- 使用されているモデルの種類が表示されます。例えば、ここでは
- Model Family (モデルファミリー):
- モデルのファミリー(分布の種類)が表示されます。この例では
NegativeBinomial()
が使用されています。
- モデルのファミリー(分布の種類)が表示されます。この例では
- Link Function (リンク関数):
- 使用されているリンク関数が表示されます。この例では
log
が使用されています。
- 使用されているリンク関数が表示されます。この例では
- Date (日付):
- 分析が実行された日時が表示されます。
- AIC (赤池情報量基準):
- 赤池情報量基準の値が表示されます。モデルの適合度と複雑さを考慮してモデルを比較する指標です。小さいほど良いモデルとされます。
- BIC (ベイズ情報量基準):
- ベイズ情報量基準の値が表示されます。AICと同様にモデルの適合度と複雑さを考慮してモデルを比較します。
- Log-Likelihood (対数尤度):
- 対数尤度の値が表示されます。最大化されるべき対数尤度で、モデルの適合度を示す指標です。
- No. Observations (観測数):
- モデルに使用されたデータの観測数が表示されます。
- Df Residuals (残差の自由度):
- 残差の自由度が表示されます。
- Df Model (モデルの自由度):
- モデルの自由度が表示されます。
- Covariance Type (共分散のタイプ):
- 使用された共分散のタイプが表示されます。
- coef, std err, z, P>|z|, [0.025, 0.975] (係数、標準誤差、z値、p値、信頼区間):
- 各説明変数の係数、標準誤差、z値、p値、95%信頼区間が表示されます。これらは回帰係数に関する情報です。
- statsmodels.apiを用いた最小2乗法による線形回帰
- statsmodels.apiモジュールを用いて重みづけ最小2乗法を行う
- statsmodels.apiモジュールを用いて一般化最小2乗法を行う
- statsmodels.apiを使って自己相関のある誤差項を考慮した一般化最小二乗法を行う
- Pythonのstatsmodels.apiを使って分位点回帰を行う
- Pythonのstatsmodels.apiを用いてロジスティック回帰を行う
- Pythonでプロビットモデルを推定する
- Pythonのstatsmodelsを使って多項ロジットモデルを推定する
- Pythonのstatsmodelsを使ってポワソン回帰モデルを推定する
にほんブログ村
インターネット・コンピュータランキング
ブログ王ランキングに参加中!
PC関連ランキング