0
現在、1つのデータフレーム(dfと呼ばれている)からの異なる従属変数全体で回帰を実行しています。私は約48回の回帰をしているので、どのようにループを作り出すことができるのだろうと思っていました。この関数の非ループバージョンは以下の通りである:あなたの助けがずっとここデータフレームのPythonで回帰を実行するループを作成する方法
現在、1つのデータフレーム(dfと呼ばれている)からの異なる従属変数全体で回帰を実行しています。私は約48回の回帰をしているので、どのようにループを作り出すことができるのだろうと思っていました。この関数の非ループバージョンは以下の通りである:あなたの助けがずっとここデータフレームのPythonで回帰を実行するループを作成する方法
を高く評価している
agric_ff = ols(formula = 'agric ~ prem + smb + hml', data=df).fit()
agric_ff_df = pd.DataFrame({'params': agric_ff.params})
agric_ff_df.columns = ['agric']
food_ff = ols(formula = 'food ~ prem + smb + hml', data=df).fit()
food_ff_df = pd.DataFrame({'params': food_ff.params})
food_ff_df.columns = ['food']
soda_ff = ols(formula = 'soda ~ prem + smb + hml', data=df).fit()
soda_ff_df = pd.DataFrame({'params': soda_ff.params})
soda_ff_df.columns = ['soda']
beer_ff = ols(formula = 'beer ~ prem + smb + hml', data=df).fit()
beer_ff_df = pd.DataFrame({'beer': beer_ff.params})
beer_ff_df.columns = ['beer']
smoke_ff = ols(formula = 'smoke ~ prem + smb + hml', data=df).fit()
smoke_ff_df = pd.DataFrame({'smoke': smoke_ff.params})
smoke_ff_df.columns = ['smoke']
toys_ff = ols(formula = 'toys ~ prem + smb + hml', data=df).fit()
toys_ff_df = pd.DataFrame({'toys': toys_ff.params})
toys_ff_df.columns = ['toys']
fun_ff = ols(formula = 'fun~ prem + smb + hml', data=df).fit()
fun_ff_df = pd.DataFrame({'fun': fun_ff.params})
fun_ff_df.columns = ['fun']
books_ff = ols(formula = 'books ~ prem + smb + hml', data=df).fit()
books_ff_df = pd.DataFrame({'books': fun_ff.params})
books_ff_df.columns = ['books']
式の表記を使用して一つのアプローチは、次のとおりです。
import statsmodels.regression.linear_model as sm
import pandas as pd
from sklearn import datasets # load a dummy dataset
# build a model using 4 columns, regressed on 4 others
boston = pd.DataFrame(boston.data, columns = boston.feature_names)
boston.head()
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT
0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 396.90 4.98
1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 396.90 9.14
2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 392.83 4.03
3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 394.63 2.94
4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 396.90 5.33
list_of_responses = ["LSTAT","RM","RAD","B"]
# list of models
models = []
for resp in list_of_responses:
formula = resp + " ~ CRIM + ZN + INDUS + NOX"
models.append(sm.OLS.from_formula(formula, data = boston).fit())
# each element is your model. For example, you can access its params
models[0].params