我已经使用循环函数执行了多个池化回归,并将回归输出存储在列表中(myregression)。我现在想做的是在我所有的回归(即 myregression 列表)上有效地执行 lmtest 包中的 coeftest 函数,以调整标准误差和 t 统计量。最后,我想获得系数、标准误差和 t 值的平均值。
这是我到目前为止提出的:
library(plm)
data("Grunfeld", package="plm")
# Store each subset regression in myregression
myregression <- list()
count <- 1
# Regression on six-year subsets of Grunfeld
for(t in 1940:1950){
myregression[[count]] <- plm(inv ~ value + capital,
subset(Grunfeld, year<=t & year>=t-5),
index=c("firm","year"))
# Name each regression based on the year range included in the data subset
names(myregression)[[count]] = paste0("Year_",t)
count <- count+1
}
这是我的问题出现的地方:虽然我能够对列表的各个组件执行 coeftest 函数,但我无法相应地编写 lapply 函数。
## Apply coeftest function to all plm-objects
library(lmtest)
coeftest(myregression$Year_1940, vcov=function(x) vcovSCC(x, type="HC3", maxlag=4))
coeftest(myregression$Year_1941, vcov=function(x) vcovSCC(x, type="HC3", maxlag=4))
COEFTEST<-lapply(myregression, coeftest(x, vcov=function(x) vcovSCC(x, type="HC3", maxlag=4)))
## obtaining average coefficients, se's,and t values over all regressions
lapply(COEFTEST, mean)
我希望只有一个我看不到的小错误。我进一步注意到 plm 回归输出小于常规 lm 输出是否有另一种获得均值调整的方法。R^2?