Я уверен, что это просто, но как полный новичок в python, у меня возникают проблемы с выяснением, как перебирать переменные в pandas
кадре данных и запускать регрессию с каждым.
Вот что я делаю:
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()
но предположим, что я хочу сделать это для каждого столбца в кадре данных. В частности, я хочу регрессировать FIUIX на FSTMX, а затем FSAIX на FSTMX, а затем FSAVX на FSTMX. После каждой регрессии я хочу сохранить остатки.
Я пробовал различные версии следующего, но я, должно быть, неправильно понял синтаксис:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
Я думаю, проблема в том, что я не знаю, как ссылаться на столбец возврата по ключу, так returns[k]
что, вероятно, это неправильно.
Любое руководство по наилучшему способу сделать это будет высоко ценится. Возможно, мне не хватает общего подхода панд.
for i in len(df): if i + 1 != len(df): # sm.OLS(returns[returns.coloumns[i]], returns[returns.columns[ i+1]]), fit()