ループ関数を使用して複数のプールされた回帰を実行し、回帰出力をリスト (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 出力よりも小さいことに気付きました。平均 adj を取得する別の方法があります。R^2?