私の問題はこれです:NA
ロバストな標準誤差の計算でいくつかの値を取得する必要がある場所を取得します。
クラスターロバストな標準誤差を使用して、固定効果パネル回帰を実行しようとしています。このために、私はp。3はStock/Watson(2006)に続く(後でEconometricaで公開され、アクセスできる人向け)。(M/(M-1)*(N-1)/(N-K)
クラスターの数が有限でデータが不均衡であるため、下向きのバイアスに対抗して自由度を修正したいと思います。
同様の問題がStackOverflowの[1、2]の前に投稿され、 CrossValidatedの関連する問題[ 3 ]が投稿されています。
Arai(および最初のリンクの回答)は、関数に次のコードを使用します(以下にデータを追加してコメントを付けます)。
gcenter <- function(df1,group) {
variables <- paste(
rep("C", ncol(df1)), colnames(df1), sep=".")
copydf <- df1
for (i in 1:ncol(df1)) {
copydf[,i] <- df1[,i] - ave(df1[,i], group,FUN=mean)}
colnames(copydf) <- variables
return(cbind(df1,copydf))}
# 1-way adjusting for clusters
clx <- function(fm, dfcw, cluster){
# R-codes (www.r-project.org) for computing
# clustered-standard errors. Mahmood Arai, Jan 26, 2008.
# The arguments of the function are:
# fitted model, cluster1 and cluster2
# You need to install libraries `sandwich' and `lmtest'
# reweighting the var-cov matrix for the within model
library(sandwich);library(lmtest)
M <- length(unique(cluster))
N <- length(cluster)
K <- fm$rank
dfc <- (M/(M-1))*((N-1)/(N-K))
uj <- apply(estfun(fm),2, function(x) tapply(x, cluster, sum));
vcovCL <- dfc*sandwich(fm, meat=crossprod(uj)/N)*dfcw
coeftest(fm, vcovCL) }
、ここでgcenter
、平均からの偏差を計算します(固定効果)。次に、クラスター変数として回帰を続行しDS_CODE
ます(データに「データ」という名前を付けました)。
centerdata <- gcenter(data, data$DS_CODE)
datalm <- lm(C.L1.retE1M ~ C.MCAP_SEC + C.Impact_change + C.Mom + C.BM + C.PD + C.CashGen + C.NITA + C.PE + C.PEdummy + factor(DS_CODE), data=centerdata)
M <- length(unique(data$DS_CODE))
dfcw <- datalm$df / (datalm$df - (M-1))
計算したい
clx(datalm, dfcw, data$DS_CODE)
ただし、分散のuj(clx
上記の式を参照)を計算する場合、最初にリグレッサーのいくつかの値を取得し、次に多くのゼロを取得します。この入力ujが分散に使用される場合、NAs
結果のみになります。
私のデータ
私のデータは特殊な構造である可能性があり、問題を理解できないため、Hotmailからのリンクとしてすべてを投稿します。その理由は、他のデータ(新井(2011)から取得)では問題が発生しないためです。ご迷惑をおかけして申し訳ございませんが、ご覧いただければ幸いです。このファイルは、純粋にデータを含む5MBの.txtファイルです。