Я впевнений, що це просто, але, як повноцінна новачка в 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()
os similar