Estoy seguro de que esto es simple, pero como un novato completo en Python, tengo problemas para descubrir cómo iterar sobre las variables en un pandas
marco de datos y ejecutar una regresión con cada una.
Esto es lo que estoy haciendo:
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()
Sé que puedo ejecutar una regresión como esta:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
pero supongamos que quiero hacer esto para cada columna en el marco de datos. En particular, quiero regresar FIUIX en FSTMX, y luego FSAIX en FSTMX, y luego FSAVX en FSTMX. Después de cada regresión quiero almacenar los residuos.
He probado varias versiones de lo siguiente, pero debo estar equivocando la sintaxis:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
Creo que el problema es que no sé cómo referirme a la columna de devoluciones por clave, por returns[k]
lo que probablemente esté mal.
Cualquier orientación sobre la mejor manera de hacer esto sería muy apreciada. Tal vez hay un enfoque de pandas común que me falta.
for i in len(df): if i + 1 != len(df): # sm.OLS(returns[returns.coloumns[i]], returns[returns.columns[ i+1]]), fit()
os similar