我使用循环函数执行了多个Pooled回归,并将回归输出存储在列表中(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
}
这就是我的问题所在:虽然我能够对列表的invidiual组件执行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?
答案 0 :(得分:1)
尝试
COEFTEST<-lapply(myregression, function(x) coeftest(x, vcov=vcovSCC(x, type="HC3", maxlag=4)))
Thsi将为您提供每个回归的coeftest-outputs列表,然后您可以以任何方式使用它们。
作为旁注,请确保无论您对此输出做什么都有意义。取一个coeftest输出的平均值对我来说并不是很明智。如果你想得到所有系数的平均值,可以试试
mean(sapply(COEFTEST, function(x) x["capital", "Estimate"]))
此处,sapply
从capital
输出中检索变量COEFTEST
的所有估算值,并将它们放入向量中。
要访问其他元素,使用str()
查看对象的结构会很有帮助。例如,str(summary(myregression[[1]]))
显示r方块以名称r.squared
保存。您可以使用例如summary(myregression[[1]])$r.squared
表示第一个回归输出。自动执行此操作,您可以再次使用上述构造,例如
sapply(myregression, function(x) summary(x)$r.squared)
答案 1 :(得分:0)
有一种更好的方法可以使用pmg()
中的plm
获取平均系数(技术上称为均值组估算器)。从它的外观来看,你正试图估计Fama-MacBeth的回归和SE。
require(foreign)
require(plm)
require(lmtest)
test <- read.dta("http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/test_data.dta")
fpmg <- pmg(y~x, test, index=c("year","firmid")) ##Fama-MacBeth
> ##Fama-MacBeth
> coeftest(fpmg)
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.031278 0.023356 1.3392 0.1806
x 1.035586 0.033342 31.0599 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
有关详细信息,请参阅Fama-MacBeth and Cluster-Robust (by Firm and Time) Standard Errors in R。
另见: