一般化線形モデル

一般化線形モデルは現在、1 パラメーター指数族を使用した推定をサポートしています。

コマンドと引数については Module Reference を参照してください。

# Load modules and data
In [1]: import statsmodels.api as sm

In [2]: data = sm.datasets.scotland.load()

In [3]: data.exog = sm.add_constant(data.exog)

# Instantiate a gamma family model with the default link function.
In [4]: gamma_model = sm.GLM(data.endog, data.exog, family=sm.families.Gamma())

In [5]: gamma_results = gamma_model.fit()

In [6]: print(gamma_results.summary())
                 Generalized Linear Model Regression Results                  
==============================================================================
Dep. Variable:                    YES   No. Observations:                   32
Model:                            GLM   Df Residuals:                       24
Model Family:                   Gamma   Df Model:                            7
Link Function:           InversePower   Scale:                       0.0035843
Method:                          IRLS   Log-Likelihood:                -83.017
Date:                Tue, 28 Jan 2025   Deviance:                     0.087389
Time:                        00:09:05   Pearson chi2:                   0.0860
No. Iterations:                     6   Pseudo R-squ. (CS):             0.9800
Covariance Type:            nonrobust                                         
======================================================================================
                         coef    std err          z      P>|z|      [0.025      0.975]
--------------------------------------------------------------------------------------
const                 -0.0178      0.011     -1.548      0.122      -0.040       0.005
COUTAX              4.962e-05   1.62e-05      3.060      0.002    1.78e-05    8.14e-05
UNEMPF                 0.0020      0.001      3.824      0.000       0.001       0.003
MOR                -7.181e-05   2.71e-05     -2.648      0.008      -0.000   -1.87e-05
ACT                    0.0001   4.06e-05      2.757      0.006    3.23e-05       0.000
GDP                -1.468e-07   1.24e-07     -1.187      0.235   -3.89e-07    9.56e-08
AGE                   -0.0005      0.000     -2.159      0.031      -0.001   -4.78e-05
COUTAX_FEMALEUNEMP -2.427e-06   7.46e-07     -3.253      0.001   -3.89e-06   -9.65e-07
======================================================================================

詳細な例は次の場所にあります :

技術文書

各観測値 \(i\) の統計モデルは以下のように仮定されます

\(Y_i \sim F_{EDM}(\cdot|\theta,\phi,w_i)\) and \(\mu_i = E[Y_i|x_i] = g^{-1}(x_i^\prime\beta)\).

ここで \(g\) はリンク関数で、 \(F_{EDM}(\cdot\theta,\phi,w)\) は自然パラメータ \(\theta\) 、スケールパラメータ \(\phi\) 、重み \(w\) を持つ指数分散モデル(EDM)族の分布です。その密度は次のようになります

\(f_{EDM}(y|\theta,\phi,w) = c(y,\phi,w) \exp\left(\frac{y\theta-b(\theta)}{\phi}w\right)\,.\)

その結果、\(\mu=b'(\theta)\)\(Var[Y x]=\frac{\phi}{w}b''(\theta)\) になります。最初の式の逆関数は、自然パラメータを期待値の関数として与えます。 \(\theta(\mu)\) 以下のようになります

\(Var[Y_i|x_i] = \frac{\phi}{w_i} v(\mu_i)\)

したがって、GLMはリンク関数 \(g\) と分散関数 \(v(\mu)\) だけで決まると言われています(もちろん \(x\) も)。

\(\phi\)\(y_i\) のどの観測値に対しても同じなので、 \(\beta\) の推定には影響しませんが、 \(w_i\) の重みは \(y_i\) ごとに異なる可能性があり、 \(\beta\) の推定はそれらに依存することに注意してください。

分布

ドメイン

\(\mu=E[Y|x]\)

\(v(\mu)\)

\(\theta(\mu)\)

\(b(\theta)\)

\(\phi\)

二項 \(B(n,p)\)

\(0,1,\ldots,n\)

\(np\)

\(\mu-\frac{\mu^2}{n}\)

\(\log\frac{p}{1-p}\)

\(n\log(1+e^\theta)\)

1

ポアソン \(P(\mu)\)

\(0,1,\ldots,\infty\)

\(\mu\)

\(\mu\)

\(\log(\mu)\)

\(e^\theta\)

1

負二項. \(NB(\mu,\alpha)\)

\(0,1,\ldots,\infty\)

\(\mu\)

\(\mu+\alpha\mu^2\)

\(\log(\frac{\alpha\mu}{1+\alpha\mu})\)

\(-\frac{1}{\alpha}\log(1-\alpha e^\theta)\)

1

ガウス/正規 \(N(\mu,\sigma^2)\)

\((-\infty,\infty)\)

\(\mu\)

\(1\)

\(\mu\)

\(\frac{1}{2}\theta^2\)

\(\sigma^2\)

ガンマ \(N(\mu,\nu)\)

\((0,\infty)\)

\(\mu\)

\(\mu^2\)

\(-\frac{1}{\mu}\)

\(-\log(-\theta)\)

\(\frac{1}{\nu}\)

逆ガウス. \(IG(\mu,\sigma^2)\)

\((0,\infty)\)

\(\mu\)

\(\mu^3\)

\(-\frac{1}{2\mu^2}\)

\(-\sqrt{-2\theta}\)

\(\sigma^2\)

Tweedie \(p\geq 1\)

\(p\) に依存

\(\mu\)

\(\mu^p\)

\(\frac{\mu^{1-p}}{1-p}\)

\(\frac{\alpha-1}{\alpha}\left(\frac{\theta}{\alpha-1}\right)^{\alpha}\)

\(\phi\)

Tweedie 分布には \(p=0,1,2\) に対する特殊なケースがあります。それは表にはなく、 \(\alpha=\frac{p-2}{p-1}\) を使います。

数学的変数とコードの対応 :

  • \(Y\)\(y\) はモデル化したい変数であり endog としてコード化されます

  • \(x\) は共変量の別名説明変数であり exog 、としてコード化されます

  • \(\beta\) は推定したいパラメータであり、 params 、としてコード化されます

  • \(\mu\) は( \(x\) の条件のもとでの) \(Y\) の期待値であり mu 、としてコード化されます

  • \(g\)class Family への link 引数としてコード化されています

  • \(\phi\) は、EDMの分散パラメータである scale としてコード化されます

  • \(w\) はまだサポートされていません(つまり \(w=1\) )。将来は ``var_weights` `になるかもしれません

  • \(p\) は、Tweedie分布の分散関数 \(v(\mu)\) の累乗に対して、 var_power としてコード化されます。表を参照してください

  • \(\alpha\) は次のいずれかです

    • 負の二項:補助パラメータ alpha (表参照)

    • Tweedie: \(\frac{p-2}{p-1}\) の略語であり、 \(p\) は分散関数のべき指数。表を参照

参考文献

  • Gill, Jeff、2000年、Generalized Linear Models: A Unified Approach、SAGE QASS Series。

  • Green, PJ.、PJ. 1984年。“Iteratively reweighted least squares for maximum likelihood estimation, and some robust and resistant alternatives.” Journal of the Royal Statistical Society、シリーズB、46、149-192。

  • Hardin, J.W. and Hilbe, J.M. 2007年, "Generalized Linear Models and Extensions." 第2版,Stata Press, College Station, TX.

  • McCullagh, P. and Nelder, J.A. 1989年. "Generalized Linear Models." 第2版.Chapman&Hall, Boca Rotan.

モジュールリファレンス

モデルクラス

GLM(endog, exog[, family, offset, exposure, ...])

一般化線形モデル

結果クラス

GLMResults(model, params, ...[, cov_type, ...])

GLM 結果を含むクラス。

PredictionResultsMean(predicted_mean, ...[, ...])

GLMの予測結果。

分布族

現在実装されている分布族は次のとおりです

Family(link, variance[, check_link])

1 パラメータ指数型分布族の親クラス。

Binomial([link, check_link])

二項指数族分布。

Gamma([link, check_link])

ガンマ指数族分布。

Gaussian([link, check_link])

ガウス指数族分布。

InverseGaussian([link, check_link])

逆ガウス指数族分布。

NegativeBinomial([link, alpha, check_link])

負二項指数族分布(NB2に対応)。

Poisson([link, check_link])

ポアソン指数族分布。

Tweedie([link, var_power, eql, check_link])

Tweedie 族.

注: 小文字のリンク クラスは廃止されており、将来削除される予定です。リンク クラスは Python クラス名の規則に従うようになりました。

現在実装されているリンク機能は以下の通りです。すべてのリンク機能が各分布族で利用できるわけではありません。利用可能なリンク関数のリストは、次の方法で取得できます

>>> sm.families.family.<familyname>.links

Link()

1 パラメータ指数型分布族の汎用リンク関数。

CDFLink([dbn])

scipy.stats 分布の CDF を使用する

CLogLog()

相補的な対数対対数変換

LogLog()

対数対対変換

LogC()

対数補数変換

Log()

ログ変換

Logit()

ロジット変換

NegativeBinomial([alpha])

負二項リンク関数

Power([power])

べき変換

Cauchy()

コーシー (標準コーシー CDF) 変換

Identity()

恒等変換

InversePower()

逆変換

InverseSquared()

逆二乗変換

Probit([dbn])

プロビット (標準正規 CDF) 変換

分散関数

各関数族には、関連する分散関数があります。ここから分散関数にアクセスできます :

>>> sm.families.<familyname>.variance

VarianceFunction()

確率変数の分散をその平均に関連付けます。

constant

定数の分散、つまり 1 のベクトルを返します。

Power([power])

分散関数のべき乗

mu

np.fabs(mu)を返す

mu_squared

np.fabs(mu)**2 を返す

mu_cubed

np.fabs(mu)**3 を返す

Binomial([n])

二項分散関数

binary

n = 1 の二項分散関数

NegativeBinomial([alpha])

負二項分散関数

nbinom

負の二項分散関数。


最終更新日: 2025年01月28日