Mar*_* GS 3 benchmarking r plm gmm
我正在使用该库估计 GMM 模型plm。我有不同的时刻条件。
Z <- list(~YDWPP + ST_DEGREE, ~YDWPP + ST_DEGREE, ~YDWPP + ST_DEGREE,
~YDWPP + ST_DEGREE, ~YDWPP + ST_TRANSITIVITY, ~YDWPP + ST_STRUC_HOLE,
~YDWPP + ST_STRUC_HOLE, ~YDWPP + ST_STRUC_HOLE, ~YDWPP +
ST_STRUC_HOLE)
Z <- lapply(Z, as.formula)
lg.gmm <- list(c(4L, 8L), c(5L, 8L), c(6L, 8L), 7:8, 7:8, c(4L, 8L), c(5L,
8L), c(6L, 8L), 7:8)
Run Code Online (Sandbox Code Playgroud)
我正在为每组力矩限制运行一个循环Z,这样
out.1 <- list()
for(i in seq_along(Z)){
plm.gmm <-
pgmm(
dynformula(as.formula(model), lg),
data = pdata,
effect = 'twoway',
model = 'twostep',
transformation = 'd',
gmm.inst = Z[[i]],
lag.gmm = c(lg.gmm[[i]][[1]], lg.gmm[[i]][[2]])
)
sum <- summary(plm.gmm, robust = T)
print(sum)
out.1[[i]] <- sum
}
Run Code Online (Sandbox Code Playgroud)
例如,我想使用BIC和来比较这些模型AIC
AIC(plm.gmm, k=2)
Error in UseMethod("logLik") :
no applicable method for 'logLik' applied to an object of class "c('pgmm', 'panelmodel')"
Run Code Online (Sandbox Code Playgroud)
关于如何计算 BIC 和 AIC 的任何想法或在不同力矩限制之间进行选择的替代方法?
小智 6
我正在关注这个问题的答案。
有关 AIC 标准的更多参考,您可以查看维基百科。
这是应该可以工作的代码。但是,您没有提供任何可重现的模型估计。因此,这没有对您的案例进行验证。
# Function: Calculates AIC based on an lm or plm object
AIC_adj <- function(mod){
# Number of observations
n.N <- nrow(mod$model)
# Residuals vector
u.hat <- residuals(mod)
# Variance estimation
s.sq <- log( (sum(u.hat^2)/(n.N)))
# Number of parameters (incl. constant) + one additional for variance estimation
p <- length(coef(mod)) + 1
# Note: minus sign cancels in log likelihood
aic <- 2*p + n.N * ( log(2*pi) + s.sq + 1 )
return(aic)
}
Run Code Online (Sandbox Code Playgroud)