我正在使用statsmodels.formula.api
执行线性回归。我使用了三个自变量进行预测。在某些情况下,我得到负值,但所有输出都应该是正值。
有没有办法告诉模型输出不能为负?
import statsmodels.formula.api as smf
output1 = smf.ols(formula= 'y ~A+B+C', data= data).fit()
output = output.predict(my_data)
对正或非负相关(或响应或输出)变量建模的一种标准方法是假设指数均值函数。
给定协变量的响应的预期值为 E(y | x) = exp(xb)。
对此建模的一种方法是使用 Poisson 回归,statsmodels Poisson 或 GLM with family Poisson。鉴于泊松不是连续变量的正确似然,我们需要调整参数估计的协方差以应对错误指定,其中cov_type='HC0'
。那就是我们正在使用准最大似然。
output1 = smf.poisson(formula= 'y ~A+B+C', data= data).fit(cov_type='HC0')
另一种方法是记录响应变量,它隐含地假设一个对数正态模型。
http://blog.stata.com/2011/08/22/use-poisson-rather-than-regress-tell-a-friend/ https://stats.stackexchange.com/questions/8505/poisson-regression-与对数计数最小二乘回归
请注意,statsmodels 并没有强加 Poisson、Binomial、Logit 和类似变量中的响应变量是整数,因此我们可以使用这些模型对连续数据进行准最大似然估计。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句