我正在使用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(x b)。
对此进行建模的一种方法是使用泊松回归,即 statsmodels Poisson 或带有 family Poisson 的 GLM。鉴于泊松对于连续变量来说不是正确的似然,我们需要使用 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-vs-log-count-least-squares-regression
请注意,statsmodels 并不强制要求泊松、二项式、Logit 等中的响应变量为整数,因此我们可以使用这些模型对连续数据进行准最大似然估计。
关于python - statsmodel.formula.api python 中的线性回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44544386/