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)