Python statsmodels.glm - family=Poisson() 时的类型错误

Python statsmodels.glm - TypeError when family=Poisson()

我有一个内生值列表 y,其中 len(y) = n 我有一个 n x 5 nympy 数组 X 的外生值

当我运行

import statsmodels.api as sm
sm.GLM(y, X).fit().summary() 

一切都运行很好。

但是,当我添加 family 参数时:

sm.GLM(y, X, family=Poisson()).fit().summary()

我得到一个错误:

TypeError: __init__() missing 2 required positional arguments: 'endog' and 'exog'

我试过将 y 对象重铸为 numpy 数组,我试过显式声明参数 - 似乎没有任何帮助,也无法在文档中找到任何帮助。

GLM的用法是正确的。

不过,我猜你的泊松分布是 discrete_model.Poisson,它是一个单独的模型。 GLM 需要泊松族。

使用 api 的正确用法应该是

sm.GLM(y, X, family=sm.families.Poisson()).fit().summary()

或直接导入,来自我正在处理的示例

from statsmodels.genmod.generalized_linear_model import GLM
from statsmodels.genmod import families

mod = GLM(y, x, family=families.Poisson())
res = mod.fit()
print(res.summary())