【发布时间】:2015-03-28 21:56:08
【问题描述】:
我确信这很简单,但作为一个完整的 python 新手,我无法弄清楚如何迭代 pandas 数据帧中的变量并对每个变量运行回归。
这就是我正在做的事情:
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()
我知道我可以像这样运行回归:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
但假设我想对数据框中的每一列执行此操作。特别是,我想在 FSTMX 上回归 FIUIX,然后在 FSTMX 上回归 FSAIX,然后在 FSTMX 上回归 FSAVX。每次回归后,我都想存储残差。
我尝试了以下各种版本,但我一定是语法错误:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
我认为问题是我不知道如何按键引用returns列,所以returns[k]可能是错误的。
任何关于最佳方式的指导将不胜感激。也许我缺少一种常见的 pandas 方法。
【问题讨论】:
-
你可以像这样给列下标:
for i in len(df): if i + 1 != len(df): # sm.OLS(returns[returns.coloumns[i]], returns[returns.columns[ i+1]]), fit()os similar
标签: python pandas statsmodels