广义线性模型¶
广义线性模型目前支持使用单参数指数族进行估计。
请参见 模块参考 了解命令和参数。
示例¶
# 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 的二项式方差函数 |
|
|
负二项式方差函数 |
负二项式方差函数。 |