python 统计模型 - 回归中的二次项
python stats models - quadratic term in regression
我有以下线性回归:
import statsmodels.formula.api as sm
model = sm.ols(formula = 'a ~ b + c', data = data).fit()
我想在这个模型中为 b 添加一个二次项。
有没有一种简单的方法可以用 statsmodels.ols
做到这一点?
我应该使用更好的软件包来实现这一目标吗?
这应该有效:
data['b2'] = data.b ** 2
model = sm.ols(formula = 'a ~ b2 + b + c', data=data).fit()
虽然Alexander的解决方案有效,但在某些情况下并不是很方便。例如,每次你想为新值预测模型的结果时,你需要记住同时传递 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]})
最简单的方法是
model = sm.ols(formula = 'a ~ b + c + I(b**2)', data = data).fit()
I(...)
基本上就是 "patsy, please stop being clever here and just let Python handle everything inside kthx"。 ()
我有以下线性回归:
import statsmodels.formula.api as sm
model = sm.ols(formula = 'a ~ b + c', data = data).fit()
我想在这个模型中为 b 添加一个二次项。
有没有一种简单的方法可以用 statsmodels.ols
做到这一点?
我应该使用更好的软件包来实现这一目标吗?
这应该有效:
data['b2'] = data.b ** 2
model = sm.ols(formula = 'a ~ b2 + b + c', data=data).fit()
虽然Alexander的解决方案有效,但在某些情况下并不是很方便。例如,每次你想为新值预测模型的结果时,你需要记住同时传递 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]})
最简单的方法是
model = sm.ols(formula = 'a ~ b + c + I(b**2)', data = data).fit()
I(...)
基本上就是 "patsy, please stop being clever here and just let Python handle everything inside kthx"。 (