广义线性模型¶
广义线性模型目前支持使用单参数指数族进行估计。
查看模块参考以获取命令和参数。
示例¶
# 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: 三, 16 10 2024 Deviance: 0.087389
Time: 18:43:04 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\) |
\(\frac{1}{2}\theta^2\) |
\(\sigma^2\) |
Gamma \(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}\),参见表格
参考文献¶
吉尔, 杰夫. 2000. 广义线性模型: 一种统一的方法. SAGE QASS 系列.
Green, PJ. 1984. “用于最大似然估计的迭代加权最小二乘法,以及一些稳健和抗性替代方法。” 皇家统计学会杂志, 系列 B, 46, 149-192.
Hardin, J.W. 和 Hilbe, J.M. 2007. “广义线性模型及其扩展”。第二版。Stata 出版社,德克萨斯州学院站。
McCullagh, P. 和 Nelder, J.A. 1989. “广义线性模型”。第2版。Chapman & Hall, Boca Rotan。
模块参考¶
模型类¶
|
广义线性模型 |
结果类¶
|
包含GLM结果的类。 |
|
GLM的预测结果。 |
家族¶
目前实现的分布族有
|
用于单参数指数族的父类。 |
|
二项式指数族分布。 |
|
伽马指数族分布。 |
|
高斯指数族分布。 |
|
逆高斯指数族。 |
|
负二项式指数族(对应于NB2)。 |
|
泊松指数族。 |
|
Tweedie 族。 |
链接函数¶
注意:小写链接类已被弃用,并将在未来移除。链接类现在遵循Python类名约定。
目前实现的链接函数如下。并非每个分布族都支持所有链接函数。可以通过以下方式获取可用的链接函数列表:
>>> sm.families.family.<familyname>.links
|
一个用于单参数指数族的通用链接函数。 |
|
使用 scipy.stats 分布的 CDF |
|
互补对数-对数变换 |
|
对数-对数变换 |
|
对数补码变换 |
|
对数变换 |
|
logit 变换 |
|
负二项链接函数 |
|
幂变换 |
|
柯西(标准柯西CDF)变换 |
|
恒等变换 |
逆变换 |
|
逆平方变换 |
|
|
概率单位(标准正态累积分布函数)变换 |
方差函数¶
每个族都有一个相关的方差函数。您可以在此处访问方差函数:
>>> sm.families.<familyname>.variance
将随机变量的方差与其均值相关联。 |
|
constant 的 call 方法返回一个常数方差,即一个全为1的向量。 |
|
|
幂方差函数 |
返回 np.fabs(mu) |
|
返回 np.fabs(mu)**2 |
|
返回 np.fabs(mu)**3 |
|
|
二项式方差函数 |
n = 1 时的二项式方差函数 |
|
|
负二项分布方差函数 |
负二项分布方差函数。 |