廣義線性模型

廣義線性模型目前支援使用單參數指數族進行估計。

請參閱模組參考以取得指令和參數。

範例

# 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:                Thu, 03 Oct 2024   Deviance:                     0.087389
Time:                        16:15:27   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)\)\(\mu_i = E[Y_i|x_i] = g^{-1}(x_i^\prime\beta)\)

其中 \(g\) 是鏈結函數,而 \(F_{EDM}(\cdot|\theta,\phi,w)\) 是指數分散模型 (EDM) 族的分佈,具有自然參數 \(\theta\)、尺度參數 \(\phi\) 和權重 \(w\)。其密度由下式給出

\(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)\)

其中 \(v(\mu) = b''(\theta(\mu))\)。因此,據說 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\)

\(\mu\)

\(\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\) 編碼為 mu,即 \(Y\) 的期望值(以 \(x\) 為條件)

  • \(g\) 編碼為 class Familylink 引數

  • \(\phi\) 編碼為 scale,即 EDM 的分散參數

  • \(w\) 尚不支援(即 \(w=1\)),未來可能會是 var_weights

  • \(p\) 對於 Tweedie 分佈的變異數函數 \(v(\mu)\) 的冪次,編碼為 var_power,請參閱表格

  • \(\alpha\) 為下列其中之一

    • 負二項式:輔助參數 alpha,請參閱表格

    • Tweedie:變異數函數的冪次 \(p\) 的縮寫 \(\frac{p-2}{p-1}\),請參閱表格

參考文獻

  • Gill, Jeff. 2000. Generalized Linear Models: A Unified Approach. SAGE QASS 系列。

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

  • Hardin, J.W. and Hilbe, J.M. 2007. “Generalized Linear Models and Extensions.” 2nd ed. Stata Press, College Station, TX。

  • McCullagh, P. and Nelder, J.A. 1989. “Generalized Linear Models.” 2nd ed. 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])

單參數指數族的父類別。

Binomial([link, check_link])

二項式指數族分佈。

Gamma([link, check_link])

Gamma 指數族分佈。

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

連結()

單參數指數族的通用連結函數。

CDFLink([dbn])

使用 scipy.stats 分佈的 CDF

CLogLog()

互補對數對數轉換

LogLog()

對數對數轉換

LogC()

對數互補轉換

Log()

對數轉換

Logit()

logit 轉換

NegativeBinomial([alpha])

負二項式連結函數

Power([power])

冪轉換

Cauchy()

柯西(標準柯西 CDF)轉換

Identity()

恆等轉換

InversePower()

反轉換

InverseSquared()

反平方轉換

Probit([dbn])

機率單位 (標準常態 CDF) 轉換

變異數函數

每個族都有一個相關的變異數函數。您可以在這裡存取變異數函數

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

VarianceFunction()

將隨機變數的變異數與其平均值關聯起來。

constant

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

負二項式變異數函數。


上次更新:2024 年 10 月 03 日