Je suis sûr que c'est simple, mais en tant que novice complet en python, j'ai du mal à comprendre comment itérer sur des variables dans un pandas
dataframe et exécuter une régression avec chacune.
Voici ce que je fais:
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()
Je sais que je peux exécuter une régression comme celle-ci:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
mais supposons que je veuille le faire pour chaque colonne du dataframe. En particulier, je veux régresser FIUIX sur FSTMX, puis FSAIX sur FSTMX, puis FSAVX sur FSTMX. Après chaque régression, je souhaite stocker les résidus.
J'ai essayé différentes versions de ce qui suit, mais je dois me tromper dans la syntaxe:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
Je pense que le problème est que je ne sais pas comment faire référence aux retours colonne par clé, donc returns[k]
c'est probablement faux.
Toute orientation sur la meilleure façon de procéder serait très appréciée. Il me manque peut-être une approche commune aux pandas.
for i in len(df): if i + 1 != len(df): # sm.OLS(returns[returns.coloumns[i]], returns[returns.columns[ i+1]]), fit()