身份链接功能不尊重 Gamma 家族的域?

机器算法验证 广义线性模型 Python 伽马分布 统计模型
2022-03-12 02:45:57

我正在使用带有身份链接的伽玛广义线性模型(GLM)。自变量是特定群体的补偿。

Python 的 statsmodels 摘要给了我一个关于身份链接函数的警告(“DomainWarning:身份链接函数不尊重 Gamma 家族的域。”),我不明白,希望得到一些帮助。背景:只有基本的正规统计教育,除了逻辑回归之外几乎没有 GLM 经验。

这是相关的Python代码:

model=statsmodels.genmod.generalized_linear_model.GLM(target, reducedFeatures, family=sm.families.Gamma(link=sm.families.links.identity)) results=model.fit() print(results.summary())

这是输出: 在此处输入图像描述

我的问题是:身份链接以何种方式不尊重 Gamma 家族的域?gamma 家族的域是 0 到无穷大?我还觉得身份链接没有做任何事情,即它保持自变量不变,而不是改变它们/它们与因变量的关系。这听起来像是一个尊重的链接功能;)

请纠正我

2个回答

Gamma GLM 模型是:

yXGamma(μ=f(Xβ),ϕ)

在哪里μ是期望参数,并且ϕ是一个色散参数(在标准 GLM 框架中没有估计色散参数),Xβ是线性预测器,β是模型学习的参数,和f称为链接函数。

请注意,虽然Xβ允许取任何实际价值,f(Xβ)正在对 Gamma 分布的期望进行建模,它必须是一个正实数这就是 Python 告诉你的,身份函数不能保证映射Xβ为正实数,因此并不总是产生有效的均值参数。

凉爽的。谢谢!我所有的自变量都是正的实数,所以我很高兴,对吧?

不一定,您的估计系数之一可能为负(您的截距非常负)。

你介意更详细地说明你的意思吗?为什么截距的符号会对系数产生影响?这对我来说没有意义。

它对条件 Gamma 分布的平均参数有影响。请记住,模型的结构方程是:

μ=f(Xβ)

μ 必须是正面的。假设您的预测变量的所有值都为零是有效的(我不知道您的数据是否属于这种情况,因为我缺乏您的特征的上下文)。然后,您对该数据点的预测将是:

μ(x)=f((1,0,0,,0)β)=f(Intercept)

如果您使用身份链接功能,这意味着

μ(x)=Intercept

这是一个无效的值μ当截距为负时。

同样,由于数据的上下文限制,您可以避免这种情况,但在数学上是可能的。

自从我一年多前发布这个问题以来,我参加了关于广义线性模型的课程并学到了很多东西。由于这篇文章的浏览频率很高,我想我会添加一些我希望当时有的指导。

Gamma 模型要考虑的链接函数:

  • 对数 - 通过确保所有预测值都是正数,强制预测/输出“尊重领域”
  • 互惠 - 不强制价值观尊重领域,但通常运作良好。(使用它是因为它是 Gamma 模型规范形式的自然参数。)这是 R 中的默认链接函数。

作为一般规则,请避免使用身份链接功能。

也就是说,在大多数情况下,您可能可以而且应该避免使用 Gamma 模型。如果您的数据存在显着偏斜,请转换目标变量并运行标准线性回归模型。结果通常会更容易理解,并且同样好或更好。