按组进行的时间序列回归,newey-West标准误差加上R2
我有一个data.table,其中包含25种不同股票投资组合的年度回报和2个解释变量。我想为25个标准错误得到最新修正的投资组合中的每一个估算相同的按组进行的时间序列回归,newey-West标准误差加上R2,r,time-series,regression,lm,broom,R,Time Series,Regression,Lm,Broom,我有一个data.table,其中包含25种不同股票投资组合的年度回报和2个解释变量。我想为25个标准错误得到最新修正的投资组合中的每一个估算相同的lm模型。到目前为止,我正在使用dplyr中的groupby在每个投资组合上运行模型,然后使用lmtest包中的coeftest和三明治包中的NeweyWest纠正标准错误,总结为扫帚包中的tidy: library(dplyr) library(broom) library(lmtest) library(sandwich) regressio
lm
模型。到目前为止,我正在使用dplyr
中的groupby
在每个投资组合上运行模型,然后使用lmtest
包中的coeftest
和三明治
包中的NeweyWest
纠正标准错误,总结为扫帚
包中的tidy
:
library(dplyr)
library(broom)
library(lmtest)
library(sandwich)
regressions <- data %>%
group_by(Portfolio) %>%
do({fit = lm(Portfolio_return ~ x1 + x2, data = .)
tidy(coeftest(fit, vcov. = NeweyWest(fit, prewhite = FALSE)))
})
库(dplyr)
图书馆(扫帚)
图书馆(lmtest)
图书馆(三明治)
回归%
集团(投资组合)%>%
do({fit=lm(投资组合收益率~x1+x2,数据=)
整洁(系数(fit,vcov.=NeweyWest(fit,prewhite=FALSE)))
})
我的问题是:
tridy
,glance
和augment
来自broom
包,但是当我运行regressions%>%glance(fit)
时,我得到了致命错误和R崩溃
data.table
或data.frame
中汇总所有25个模型的所有统计数据(如系数、p值、R2)
非常感谢 我认为您现在可以使用
dplyr
、tidyr
和purrr
,下面我使用了一个示例数据集:
library(dplyr)
library(broom)
library(lmtest)
library(sandwich)
library(tidyr)
library(purrr)
data(Investment)
set.seed(999)
data = rbind(
data.frame(Investment + matrix(rnorm(140),20,7),set="A"),
data.frame(Investment + matrix(rnorm(140),20,7),set="B")
)
我们在dplyr中执行类似于do()
的操作,只需将数据嵌套到data
列中,拟合并存储结果,然后应用glance
和tidy
:
regressions <-data %>%
nest(data=c("GNP","Investment","Price","Interest","RealGNP","RealInv","RealInt")) %>%
mutate(fit=map(data,~lm(RealInv ~ RealGNP + RealInt, data = .))) %>%
mutate(
glance = map(fit,glance),
tidy = map(fit,~tidy(coeftest(., vcov. = NeweyWest(., prewhite = FALSE))))
)
regressions %>% unnest(tidy)
# A tibble: 6 x 9
set data fit glance term estimate std.error statistic p.value
<fct> <list> <list> <list> <chr> <dbl> <dbl> <dbl> <dbl>
1 A <tibble … <lm> <tibble [… (Inte… -15.8 18.1 -0.871 3.97e-1
2 A <tibble … <lm> <tibble [… RealG… 0.172 0.0174 9.88 3.24e-8
3 A <tibble … <lm> <tibble [… RealI… -2.55 3.25 -0.785 4.44e-1
4 B <tibble … <lm> <tibble [… (Inte… -5.03 19.7 -0.256 8.01e-1
5 B <tibble … <lm> <tibble [… RealG… 0.161 0.0185 8.71 1.80e-7
6 B <tibble … <lm> <tibble [… RealI… 0.662 2.40 0.275 7.86e-1
regressions %>% unnest(glance)
# A tibble: 2 x 15
set data fit tidy r.squared adj.r.squared sigma statistic p.value df
<fct> <lis> <lis> <lis> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
1 A <tib… <lm> <tib… 0.830 0.809 16.5 39.0 7.02e-7 3
2 B <tib… <lm> <tib… 0.801 0.776 17.6 32.2 2.47e-6 3
# … with 5 more variables: logLik <dbl>, AIC <dbl>, BIC <dbl>, deviance <dbl>,
# df.residual <int>