我正在尝试找到一种方法来获取多元回归“收益〜MKTRF + SMB + HML + RMW + CMA + MOM + TERM + DEF”的系数(β)。在多因素的基础上,这被称为Fama-Macbeth过程的“首过”。
这里的问题是,这种回归应该在滚动的基础上进行,并且窗口设置为60个周期,但最重要的是按组 strong>。
即使此页面上有很多此类“按组滚动回归”的示例,它们几乎都专门处理单因子回归,这使我无法正确提取所需的所有系数(是的,我是新来的R)。
为了省去引起问题的NA并使它更快,我将数据集转换为“长”版本。请注意,NA会由于不同证券的发行日期不同而出现在第一个数据帧中(B1:GB5),并且在将数据转换为垂直(或长期)时,只能将其删除,而不排除其他不应排除的数据)。这也使变量“ Company”和“ Yield”出现。
最后,完成回归后,我想以一种很好的可读方式存储每个证券的系数,并在可能的情况下存储它们各自的标签,并显示由于“滚动”过程而出现的NA(便于理解什么)是什么)。
摘要:
谢谢
在下面找到可复制的数据;关于回归的部分是空的,因为我尝试了许多方法,但没有成功。因此,我给您所有的自由去做。
###LIBRARIES
library(readr)
library(tidyr)
library(dplyr)
library(compare)
###DATASET & TRANSFORMATIONS
#a)
set.seed(10000000)
df <- data.frame(
##Date
Date = seq(as.Date("2000/01/01"), by = "day", length.out = 5000),
##Factors (indep var)
MKTRF = sample(1:100, 5000, replace=TRUE),
SMB = sample(1:100, 5000, replace=TRUE),
HML = sample(1:100, 5000, replace=TRUE),
RMW = sample(1:100, 5000, replace=TRUE),
CMA = sample(1:100, 5000, replace=TRUE),
MOM = sample(1:100, 5000, replace=TRUE),
TERM = sample(1:100, 5000, replace=TRUE),
DEF = sample(1:100, 5000, replace=TRUE),
##Securities (dep var)
#type 0
B1 = c(rep(NA, 1000), sample(1:100, 3000, replace=TRUE), rep(NA, 1000)),
B2 = c(rep(NA, 1500), sample(1:100, 3000, replace=TRUE), rep(NA, 500)),
B3 = c(sample(1:100, 3000, replace=TRUE), rep(NA, 2000)),
B4 = c(rep(NA, 1000), sample(1:100, 4000, replace=TRUE)),
B5 = c(sample(1:100, 5000, replace=TRUE)),
#type 1
GB1 = c(rep(NA, 1500), sample(1:100, 2000, replace=TRUE), rep(NA, 1500)),
GB2 = c(rep(NA, 1500), sample(1:100, 3000, replace=TRUE), rep(NA, 500)),
GB3 = c(sample(1:100, 3000, replace=TRUE), rep(NA, 2000)),
GB4 = c(rep(NA, 1000), sample(1:100, 4000, replace=TRUE)),
GB5 = c(sample(1:100, 5000, replace=TRUE)))
#b) transfrom to long dataset
long_df <- df %>% gather(Company, Yield, B1:GB5)
head(long_df, 24)
#c) delete NA rows
omit_df <- na.omit(long_df)
#d) check validity of the process (correct = TRUE)
sum(is.na(omit_df))
sum(is.na(long_df))
a <- nrow(long_df) - nrow(omit_df)
b <- sum(is.na(long_df))
compare(a,b)
###REGRESSION
#a) The regression is of the form: Yield ~ MKTRF + SMB + HML + RMW + CMA + MOM + TERM + DEF