Sono sicuro che è semplice, ma come newbie completo di python, sto avendo problemi a capire come iterare su variabili in un dataframe pandas
ed eseguire una regressione con ogni.Come eseguire l'iterazione su colonne di dataframe panda per eseguire la regressione
Ecco quello che 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 correre una regressione in questo modo:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
ma supponiamo che io voglio fare questo per ogni colonna della dataframe. In particolare, voglio regredire FIUIX su FSTMX, quindi FSAIX su FSTMX e poi su FSAVX su FSTMX. Dopo ogni regressione voglio conservare i residui.
ho provato varie versioni di quanto segue, ma devo essere sempre dalla parte del torto sintassi:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
Credo che il problema è che non so come fare riferimento alla colonna rendimenti a chiave, quindi returns[k]
è probabilmente sbagliato.
Qualsiasi consiglio sul modo migliore per farlo sarebbe molto apprezzato. Forse c'è un approccio comune ai panda che mi manca.
È possibile pedice i colli in questo modo: 'for i in len (df): se i + 1 = len (df):! # Sm .OLS (restituisce [returns.columns [i]], restituisce [returns.columns [i + 1]]), fit() 'os simile – EdChum