Eminim bu basit, ama python için tam bir acemi olarak, bir pandas
veri çerçevesinde değişkenler üzerinde yineleme ve her bir ile bir regresyon çalıştırmak için nasıl bulmakta sorun yaşıyorum .
İşte yaptığım şey:
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()
Böyle bir gerileme yapabilirim biliyorum:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
ancak bunu veri çerçevesindeki her sütun için yapmak istediğimi varsayalım. Özellikle, FSTMX üzerinde FIUIX ve sonra FSTMX üzerinde FSAIX ve sonra FSTMX üzerinde FSAVX regress istiyorum. Her regresyondan sonra artıkları saklamak istiyorum.
Aşağıdakilerin çeşitli sürümlerini denedim, ancak sözdizimini yanlış alıyorum:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
Ben sorun nasıl anahtarları döner sütun başvurmak bilmiyorum, bu yüzden returns[k]
muhtemelen yanlış olduğunu düşünüyorum.
Bunu yapmanın en iyi yoluna dair herhangi bir rehberlik çok takdir edilecektir. Belki de kaçırdığım ortak bir panda yaklaşımı vardır.
for i in len(df): if i + 1 != len(df): # sm.OLS(returns[returns.coloumns[i]], returns[returns.columns[ i+1]]), fit()