python统计模型 - 回归中的二次项

时间:2015-08-13 03:18:19

标签: python regression statsmodels quadratic

我有以下线性回归:

import statsmodels.formula.api as sm

model = sm.ols(formula = 'a ~ b + c', data = data).fit()

我想在此模型中为b添加二次项。

使用statsmodels.ols有一种简单的方法吗? 我应该用更好的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:19)

尽管亚历山大的解决方案正在发挥作用,但在某些情况下它并不是很方便。例如,每次要预测新值的模型结果时,都需要记住传递b ** 2和b值,这些值很麻烦且不必要。虽然patsy不识别符号" b ** 2"但它确实识别numpy函数。因此,您可以使用

import statsmodels.formula.api as sm
import numpy as np

data = {"a":[2, 3, 5], "b":[2, 3, 5], "c":[2, 3, 5]}
model = sm.ols(formula = 'a ~ np.power(b, 2) + b + c', data = data).fit()

通过这种方式,后者可以重用此模型,而无需为b ** 2

指定值
model.predict({"a":[1, 2], "b":[5, 2], "c":[2, 4]})

答案 1 :(得分:1)

这应该有效:

data['b2'] = data.b ** 2
model = sm.ols(formula = 'a ~ b2 + b + c', data=data).fit()