Sono sicuro che questo è semplice, ma come principiante completo di Python, ho difficoltà a capire come iterare su variabili in un pandas
frame di dati ed eseguire una regressione con ciascuno.
Ecco cosa sto facendo:
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()
So di poter eseguire una regressione come questa:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
ma supponiamo che io voglia fare questo per ogni colonna nel frame di dati. In particolare, desidero regredire FIUIX su FSTMX, quindi FSAIX su FSTMX e infine FSAVX su FSTMX. Dopo ogni regressione voglio archiviare i residui.
Ho provato varie versioni di quanto segue, ma devo sbagliare la sintassi:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
Penso che il problema sia che non so come fare riferimento alla colonna dei resi per chiave, quindi returns[k]
probabilmente è sbagliato.
Qualsiasi consiglio sul modo migliore per farlo sarebbe molto apprezzato. Forse c'è un approccio panda comune che mi manca.
for i in len(df): if i + 1 != len(df): # sm.OLS(returns[returns.coloumns[i]], returns[returns.columns[ i+1]]), fit()