次の線形回帰があります。
import statsmodels.formula.api as sm
model = sm.ols(formula = 'a ~ b + c', data = data).fit()
このモデルでbの2次項を追加したいと思います。
Statsmodels.olsでこれを行う簡単な方法はありますか?これを達成するために使用すべきより良いパッケージはありますか?
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(...)
は基本的に、「パッシー、ここで賢くなるのをやめて、Python kthx内のすべてを処理するようにしてください」と言います。( 詳細な説明 )
これはうまくいくはずです:
data['b2'] = data.b ** 2
model = sm.ols(formula = 'a ~ b2 + b + c', data=data).fit()