如何实现泊松回归?

11

通用线性模型有两种类型:
1. 对数线性回归,也称泊松回归
2. 逻辑回归

如何在Python中实现泊松回归以预测价格弹性?


1
这个链接是否是你正在寻找的内容 http://statsmodels.sourceforge.net/devel/glm.html?此外,这个问题太过宽泛。 - Ilja Everilä
你分享的链接中有“泊松分布”。我正在寻找“泊松回归”。在R中有,但如何在Python中实现呢? - User456898
1
我不是在寻找逻辑回归。我想了解Python中的对数线性(泊松)回归。 - User456898
@IljaEverilä,当处理泊松回归问题时,逻辑回归肯定会有很大帮助。不要添加毫无意义的评论,最好保持沉默。 - Altons
@Altons,没错,已经移除了。 - Ilja Everilä
显示剩余6条评论
2个回答

20
请看Python中的statmodels包。
这里是一个示例
为了避免仅链接答案,我提供更多的输入。
假设您已经了解Python,这是我之前提到的示例的一部分。
import numpy as np
import pandas as pd
from statsmodels.genmod.generalized_estimating_equations import GEE
from statsmodels.genmod.cov_struct import (Exchangeable,
    Independence,Autoregressive)
from statsmodels.genmod.families import Poisson

pandas 将保存您想要用于提供泊松模型的数据框。

statsmodels 包含大量的统计模型,例如线性、probit、泊松等。从这里,您将导入泊松家族模型(提示:请参见最后一个导入)。

拟合模型的方式如下(假设您的因变量称为 y,自变量为年龄、trt 和基础):

fam = Poisson()
ind = Independence()
model1 = GEE.from_formula("y ~ age + trt + base", "subject", data, cov_struct=ind, family=fam)
result1 = model1.fit()
print(result1.summary())

由于我不熟悉您遇到的问题的性质,如果您需要计数数据过度离散化,建议使用负二项式回归。当过度离散化较高时,泊松分布的假设可能不成立。在R中有大量关于泊松回归的信息 - 只需谷歌即可。希望现在这个答案能够帮助您。

2
抱歉,这里的“subject”是什么意思? - famargar
“subject” 是因变量吗? - Hassan Baig
抱歉,我没有看到这些评论。 "Subject" 是一个分组变量。因变量是 'y'。 - Altons

6
如果我没有理解错,@Altons的回答是针对具有某种分组结构的广义估计方程(GEEs),而不需要像“主题”这样的分组的普通泊松回归在statsmodels中实现为一般线性模型。
import patsy
import statsmodels as sm
from statsmodels.genmod.families import Poisson


fam = Poisson()
f = 'some_count ~ some_numeric_variable + C(some_categorical_variable)'
y, X = patsy.dmatrices(f, data, return_type='matrix')

p_model = sm.GLM(y, X, family=fam)

result = p_model.fit()
print(result.summary())

公式中使用的变量只是用来替代DataFrame data 中的变量。


何时使用"C",何时不使用?它适用于标签编码和独热编码列吗? - Naveen Reddy Marthala
1
如果变量类型是分类的,则应使用C。这通常适用于标签编码和独热变量。 - Ben
谢谢@Ben,你能给我指点一些学习编写这些公式的文档吗? - Naveen Reddy Marthala
对于任何新手来说,使用statsmodels包时,请确保将第2行更改为“import statsmodels.api as sm”。如果没有“.api”,它会出现错误。 - Sam

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