在Python中运行多个OLS回归

我需要运行大量的OLS回归(约1.600)。 我已经为〜1.600个观测值中的每一个收集了60个数据点。

我使用Fama&French 5因子模型,每个观察的60个数据点与样本中的date相匹配。 例如,我有一个数据框的开始date['2010-1-1']到结束date['2015-1-1']的五个因子参数。

我需要针对给定股票的股票收益率运行这些参数。 现在,由于五个因子参数被收集在一个数据框中,大约有96.000行(1600 * 60)和五列(对于每个因子),我需要select前60个观察值,用OLS对一组返回值进行运算,存储估计的系数,然后为因子参数和股票收益select接下来的 60个观测值。

我曾尝试使用切片,如:

start = 0 stop = 59 empty_list = [] for i in my_data: coef = my_date[i][start:stop] # run regression with the coef slice and store them in a dataframe start += 60 stop += 60 

但是,我似乎无法得到这个工作。 任何build议如何解决这个问题?

使用groupby + np.arange() // 60

 from statsmodels.api import formula import pandas as pd df = pd.DataFrame( np.random.randn(96000, 6), columns=['f1', 'f2', 'f3', 'f4', 'f5', 'r'] ) f = 'r ~ f1 + f2 + f3 + f4 + f5' def regress(df, f): return formula.ols(f, df).fit().params results = df.groupby(np.arange(len(df)) // 60).apply(regress, f=f) results.head() Intercept f1 f2 f3 f4 f5 0 -0.108910 0.205059 0.006981 0.088200 0.064486 -0.003423 1 0.155242 -0.057223 -0.097207 -0.098114 0.163142 -0.029543 2 0.014305 -0.123687 -0.120924 0.017383 -0.168981 0.090547 3 -0.254084 -0.063028 -0.092831 0.137913 0.185524 -0.088452 4 0.025795 -0.126270 0.043018 -0.064970 -0.034431 0.081162