Jestem pewien, że jest to proste, ale jako kompletny nowicjusz w pythonie mam problem z ustaleniem, jak iterować zmienne w pandas
ramce danych i uruchomić regresję dla każdej z nich.
Oto co robię:
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()
Wiem, że mogę przeprowadzić taką regresję:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
ale przypuśćmy, że chcę to zrobić dla każdej kolumny w ramce danych. W szczególności chcę zresetować FIUIX na FSTMX, a następnie FSAIX na FSTMX, a następnie FSAVX na FSTMX. Po każdej regresji chcę przechowywać resztki.
Wypróbowałem różne wersje następujących elementów, ale muszę mieć złą składnię:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
Myślę, że problem polega na tym, że nie wiem, jak odwoływać się do kolumny zwrotów według klucza, więc returns[k]
prawdopodobnie jest źle.
Wszelkie wskazówki dotyczące najlepszego sposobu osiągnięcia tego celu byłyby bardzo mile widziane. Być może brakuje mi wspólnego podejścia do pand.
for i in len(df): if i + 1 != len(df): # sm.OLS(returns[returns.coloumns[i]], returns[returns.columns[ i+1]]), fit()