我想用熊猫和statsmodel预测电子商务的商品销售量(每种产品的销售量)。因为商品销售是一个与计数相关的变量,所以我认为泊松模型最有效。
在理想情况下,该模型将用于决定要在广告中使用哪些产品(增加产品观看次数),并决定价格点(更改价格)以达到最佳效果/利润。
到目前为止很好,但是当我尝试时:
...
import statsmodels.formula.api as smf
...
result = smf.poisson(formula="Item_Sales ~ Product_Detail_Views + Variant_Price + C(Product_Type)", data=df).fit()
我得到:
RuntimeWarning: invalid value encountered in multiply
return -np.dot(L*X.T, X)
RuntimeWarning: invalid value encountered in greater_equal
return mu >= 0
RuntimeWarning: invalid value encountered in greater
oldparams) > tol))
还有一张充满NaN的桌子
如果我对同一数据集使用OLS:
result = smf.ols(formula="Item_Sales ~ Product_Detail_Views + Variant_Price + C(Product_Type)", data=df).fit()
我得到0.809的R平方,所以数据很好。该模型并不实用,因为我得到了负面的预测,这显然是不可能的(您不能有负面的商品销售)。
如何使泊松模型有效?
答案 0 :(得分:1)
看起来像是数据问题。由于未显示示例数据,因此无法确定。您可以尝试与Poisson家族一起使用GLM或与Poisson家族一起使用GEE
示例:
smf.glm('sedimentation ~ C(control_grid)', data=df, families=sm.families.Poisson)