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

dat*_*dan 14 python regression quadratic statsmodels

我有以下线性回归:

import statsmodels.formula.api as sm

model = sm.ols(formula = 'a ~ b + c', data = data).fit()
Run Code Online (Sandbox Code Playgroud)

我想在这个模型中为b添加二次项.

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

Nat*_*ith 25

最简单的方法是

model = sm.ols(formula = 'a ~ b + c + I(b**2)', data = data).fit()
Run Code Online (Sandbox Code Playgroud)

I(...)基本上说"懦夫,请不要再聪明在这里,只是让Python的手柄内kthx一切".(更详细的解释)


Chr*_*lly 24

尽管亚历山大的解决方案正在发挥作用,但在某些情况下它并不是很方便.例如,每次要预测新值的模型结果时,都需要记住传递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()
Run Code Online (Sandbox Code Playgroud)

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

model.predict({"a":[1, 2], "b":[5, 2], "c":[2, 4]})
Run Code Online (Sandbox Code Playgroud)