如何在Python中使用R式公式运行GLM伽马回归

4

我正在使用statsmodels在Python中运行GLM回归,使用以下代码。我特别想要实现对数链接函数。我能够使用Statsmodels编写像R一样的公式。

以下代码成功运行,但会抛出一个弃用警告。有人能建议如何消除这个警告吗?谢谢帮助。

代码:

mod = smf.glm(formula='y ~  C(x1) + C(x2) + C(x3) + x4 + x5', data=data,family=sm.families.Gamma(link=sm.families.links.log))
reg = mod.fit()
print(reg.summary())

警告:DeprecationWarning: 使用链接类作为参数调用Family(..)已过时。使用链接类的实例代替。


2
Gamma(...) 中使用 link=sm.families.links.log(),它会创建一个链接类的实例,其中 log 是类名(大写的别名为 Log)。 - Josef
太好了,它可以工作。 - Data Modeler
3个回答

3

我认为以上回答都不正确。根据警告信息指示,正确的方法是在括号内使用相应的链接功能实例:

mod = smf.glm(formula='y ~  C(x1) + C(x2) + C(x3) + x4 + x5', data=data,family=sm.families.Gamma(link=sm.families.links.log()))
reg = mod.fit()
print(reg.summary())

0

我正在解决同样的问题。我注意到如果我删除括号内的所有内容,结果就完全相同了,而且没有错误。模型摘要具有相同的值,AIC值也相同。

带有警告的代码:

glm_poisson_log = sm.GLM(endog, exog, family = sm.families.Poisson(sm.families.links.log))
results = glm_poisson_log.fit()

没有警告的代码:

glm_poisson_log = sm.GLM(endog, exog, family = sm.families.Poisson **()**)
results = glm_poisson_log.fit()

尝试删除链接信息。

这个网站也特别有帮助:https://www.statsmodels.org/stable/glm.html


0

这是解决方案:

sm.families.family.Gamma.links
link_g = sm.genmod.families.links.log
link_g

fit = sm.GLM.from_formula(formula, data=df, family=sm.families.Gamma(link_g())).fit()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接