Tenho certeza de que isso é simples, mas como um novato em python, estou tendo problemas para descobrir como iterar sobre variáveis em um pandas
dataframe e executar uma regressão com cada uma.
Aqui está o que estou fazendo:
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()
Eu sei que posso executar uma regressão como esta:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
mas suponha que eu queira fazer isso para cada coluna no quadro de dados. Em particular, quero regredir o FIUIX no FSTMX e, em seguida, o FSAIX no FSTMX e o FSAVX no FSTMX. Após cada regressão, quero armazenar os resíduos.
Eu tentei várias versões do seguinte, mas devo estar com a sintaxe errada:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
Acho que o problema é que não sei como me referir à coluna de retornos por chave, então returns[k]
provavelmente está errado.
Qualquer orientação sobre a melhor maneira de fazer isso seria muito apreciada. Talvez esteja faltando uma abordagem comum dos pandas.
for i in len(df): if i + 1 != len(df): # sm.OLS(returns[returns.coloumns[i]], returns[returns.columns[ i+1]]), fit()
OS semelhante