在python中运行多元OLS回归

2024-09-29 02:19:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要运行很多OLS回归(~1.600)。我收集了大约1600个观测值的60个数据点。你知道吗

我使用的是Fama&French五因子模型,其中每个观测值的60个数据点与样本中的日期相匹配。例如,我在数据帧中有一个从开始日期['2010-1-1']到结束日期['2015-1-1']的五因素参数。你知道吗

我需要对给定股票的股票回报运行这些参数。现在,由于五因子参数是在一个数据帧中收集的,大约有96000行(1600*60)和五列(每个因子),我需要选择前60个观察值,用OLS对一组返回值运行它们,存储估计系数,然后为因子参数和股票收益选择下一个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

然而,我似乎无法让这个工作。如何解决这个问题有什么建议吗?你知道吗


Tags: 数据in模型参数mystart因子股票
1条回答
网友
1楼 · 发布于 2024-09-29 02:19:13

使用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

相关问题 更多 >