我们如何计算R中的有限群体校正(FPC)群集鲁棒标准误差?
在R中没有计算FPC群集稳健标准错误的功能。
以下函数在没有FPC的情况下计算集群稳健的标准错误。
clx <-
function(fm, dfcw, cluster){
library(sandwich)
library(lmtest)
M <- length(unique(cluster))
N <- length(cluster)
dfc <- (M/(M-1))*((N-1)/(N-fm$rank))
u <- apply(estfun(fm),2,
function(x) tapply(x, cluster, sum))
vcovCL <- dfc*sandwich(fm, meat=crossprod(u)/N)*(fm$df / (fm$df - (M -1)))
coeftest(fm, vcovCL) }
我非常接近编写自定义函数来计算R中的FPC集群稳健标准错误,但最后一行存在数学错误。
clx_FPC <-
function(fm, dfcw, cluster){
library(sandwich)
library(lmtest)
M <- length(unique(cluster))
N <- length(cluster)
dfc <- (M/(M-1))*((N-1)/(N-fm$rank))
u <- apply(estfun(fm),2,
function(x) tapply(x, cluster, sum))
vcovCL <- dfc*sandwich(fm, meat=crossprod(u)/N)*(fm$df / (fm$df - (M -1)))
vcovCL_FPC <- (sqrt( (N_full - n_sample) / (N_full - 1) ))*(vcovCL)
coeftest(fm, vcovCL_FPC)
}
代码运行时没有错误,但对象vcovCL_FPC
中的数学运算错误。我们不能简单地将协方差矩阵乘以FPC作为标量,因为当我们计算标准误差时,FPC将被错误地影响,除以 n 并取对角线的平方根。在这种情况下,FPC太小,SE太大了。