我有一个看起来像这样的数据框:
company_name co_stkdate dailyreturns marketreturn
A 01-01-2000 5.67 4.54
A 02-01-2000 3.43 1.23
A 03-01-2000 -1.01 -0.53
.
.
.
A 30-12-2018 5.65 3.45
A 31-12-2018 2.32 1.32
B 01-01-2000 -2.34 -1.12
B 02-01-2000 1.32 0.34
.
.
.
有数百家这样的公司。我想在移动窗口为1年的情况下对公司进行OLS回归。
回归模型是
dailyreturn = alpha + beta * marketreturn
执行回归后。我想获得每年的beta值。
输出应类似于。
company_name year beta
A 2000 0.87
A 2001 0.99
A 2002 0.76
A 2003 0.65
.
.
.
这是我到目前为止所做的。
betas <- dbdf %>% group_by(co_code,company_name) %>% do(model=lm(formula=dailylogrtn~niftyreturns,data=.))
这帮助我在2000-2018年间获得了一个beta价值的公司。我不确定如何使用1年的移动窗口执行回归分析。 回归分析应该是从01-01-2000到31-12-2000,然后是新窗口01-01-2001到31-12-2001,然后是01-01-2002到31-12-2002,依此类推。
答案 0 :(得分:0)
我自己解决了这个问题。首先,您需要将日期转换为年份。您只需要替换group_by()中的某些术语即可。
betas <- dbdf %>% group_by(company_name,year) %>% do(model=lm(formula=dailylogrtn~niftyreturns,data=.))
模型可以通过库(扫帚)中的tiny()函数转换为数据框