广义线性模型¶
广义线性模型目前支持使用单参数指数族进行估计。
请参见 模块参考 了解命令和参数。
示例¶
# 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)\) 是具有自然参数 \(\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)\)
其中 \(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\) | \(\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\) 在代码中表示为 - mu,即 \(Y\) 的期望值(以 \(x\) 为条件)
- \(g\) 在代码中表示为 - link,它是- class Family的参数
- \(\phi\) 在代码中表示为 - scale,即 EDM 的弥散参数
- \(w\) 尚未得到支持(即 \(w=1\)),将来可能会表示为 - var_weights
- \(p\) 在代码中表示为 - var_power,它是 Tweedie 分布的方差函数 \(v(\mu)\) 的幂,请参见表
- \(\alpha\) 表示以下内容: - 负二项式:辅助参数 - alpha,请参见表
- Tweedie:方差函数幂 \(p\) 的 \(\frac{p-2}{p-1}\) 的缩写,请参见表 
 
参考文献¶
- Gill, Jeff. 2000. Generalized Linear Models: A Unified Approach. SAGE QASS Series. 
- 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 结果的类。 | 
| 
 | GLM 的预测结果。 | 
族¶
当前已实现的分布族为
| 
 | 一参数指数族的父类。 | 
| 
 | 二项式指数族分布。 | 
| 
 | 伽马指数族分布。 | 
| 
 | 高斯指数族分布。 | 
| 
 | 逆高斯指数族。 | 
| 
 | 负二项式指数族 (对应于 NB2)。 | 
| 
 | 泊松指数族。 | 
| 
 | Tweedie 族。 | 
连接函数¶
注意:小写连接类已被弃用,将在未来的版本中删除。连接类现在遵循 Python 类名称约定。
当前已实现的连接函数如下所示。并非所有连接函数都适用于每个分布族。可以通过以下方法获取可用连接函数的列表
>>> sm.families.family.<familyname>.links
| 
 | 一参数指数族的通用连接函数。 | 
| 
 | 使用 scipy.stats 分布的 CDF | 
| 
 | 互补对数对数变换 | 
| 
 | 对数对数变换 | 
| 
 | 对数补变换 | 
| 
 | 对数变换 | 
| 
 | Logit 变换 | 
| 
 | 负二项式连接函数 | 
| 
 | 幂变换 | 
| 
 | 柯西 (标准柯西 CDF) 变换 | 
| 
 | 恒等变换 | 
| 逆变换 | |
| 逆平方变换 | |
| 
 | Probit (标准正态 CDF) 变换 | 
方差函数¶
每个族都有一个相关的方差函数。您可以在此处访问方差函数
>>> sm.families.<familyname>.variance
| 将随机变量的方差与其均值相关联。 | |
| constant 的调用方法返回一个常数方差,即一个全为一的向量。 | |
| 
 | 幂方差函数 | 
| 返回 np.fabs(mu) | |
| 返回 np.fabs(mu)**2 | |
| 返回 np.fabs(mu)**3 | |
| 
 | 二项式方差函数 | 
| n = 1 的二项式方差函数 | |
| 
 | 负二项式方差函数 | 
| 负二项式方差函数。 |