Python statsmodels.glm - 当family = Poisson()

时间:2018-06-05 14:49:12

标签: python typeerror statsmodels glm

我有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数组,我尝试明确声明参数 - 似乎没有任何帮助,也无法在docs中找到任何帮助。

1 个答案:

答案 0 :(得分:0)

GLM的使用是正确的。

但是,我猜你的Poisson是discrete_model.Poisson,它是一个单独的模型。 GLM需要Poisson家族。

使用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())