Я уверен, что это просто, но как полный новичок на python, мне трудно понять, как перебирать переменные в pandas
dataframe и запускать регрессию с каждым.
Вот что я делаю:
all_data = {}
for ticker in ['FIUIX', 'FSAIX', 'FSAVX', 'FSTMX']:
all_data[ticker] = web.get_data_yahoo(ticker, '1/1/2010', '1/1/2015')
prices = DataFrame({tic: data['Adj Close'] for tic, data in all_data.iteritems()})
returns = prices.pct_change()
Я знаю, что могу запустить регрессию следующим образом:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
но предположим, что я хочу сделать это для каждого столбца в dataframe. В частности, я хочу регрессировать FIUIX на FSTMX, а затем FSAIX на FSTMX, а затем FSAVX на FSTMX. После каждой регрессии я хочу сохранить остатки.
Я пробовал различные версии следующих, но я должен получать синтаксис неправильно:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
Я думаю, проблема в том, что я не знаю, как обращаться к столбцу return по ключу, поэтому returns[k]
, вероятно, неверно.
Любые рекомендации относительно наилучшего способа сделать это будут высоко оценены. Возможно, существует общий подход pandas, который мне не хватает.