statsmodel.formula.api python 中的线性回归

linear regression in statsmodel.formula.api python

我正在使用 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)

如果您试图确保模型的输出值被限制在一定范围内,线性回归可能不是一个合适的选择。听起来您可能需要逻辑回归或某种输出落在已知范围内的模型。 CrossValidated.

可能需要确定您想要的模型类型

话虽如此,您可以轻松地在事后限制您的预测 - 只需将所有负面预测设置为 0。这是否有意义是另一个问题。

对正或非负相关(或响应或输出)变量建模的一种标准方法是假设指数均值函数。

给定协变量的响应的预期值为 E(y | x) = exp(x b)。

对此建模的一种方法是使用泊松回归,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-vs-log-count-least-squares-regression

请注意,statsmodels 并未强制要求泊松、二项式、Logit 等中的响应变量是整数,因此我们可以使用这些模型对连续数据进行准最大似然估计。