Пакет gmm в R: Использование условий момента
У меня есть проблема при реализации пакета GMM в R: при включении менее определенного количества условий моментов (т.е. 27) код работает отлично. При включении более определенного количества условий моментов (например, 27) код возвращает следующее сообщение об ошибке:
Error in AA %*% t(X) : requires numeric/complex matrix/vector arguments
In addition: Warning message:
In ar.ols(x, aic = aic, order.max = order.max, na.action = na.action, :
model order: 1 singularities in the computation of the projection matrix results are only valid up to model order 0
Ниже приведен код, который не работает, однако при установке t0 = rep(0,27) и без учета g_B(3) - g_B(7) код работает отлично.
gl <- function(ttt, x) {
g_B <- function(a) {
B <- ((as.vector(z %*% matrix(ttt[(a*3-2):(a*3)],3,1)) * z) -
(as.vector(z %*% matrix(ttt[(19+a*3):(21+a*3)],3,1)) * as.vector(z %*% matrix(ttt[19:21],3,1)) * z))
return(B)
}
g_PF <- function(a) {
A <- (as.vector(x[,a]) * z) - (as.vector(z %*% matrix(ttt[(a*3-2):(a*3)],3,1)) * z)
return(A)
}
gmat <- cbind(g_PF(1),g_PF(2),g_PF(3),g_PF(4),g_PF(5),g_PF(6),g_PF(7),g_B(1),g_B(2),g_B(3),g_B(4),g_B(5),g_B(6))
return(gmat)
}
ress <- gmm(g = gl,x = x, t0 = rep(0,39))
summary(ress)
Это данные, используемые для x (возврат портфеля) и z (переменные состояния): https://1drv.ms/f/s!AuPlGq9-jRlpgzVR12selaXgL8s8
Основной экономической моделью является явная бета-модель Gyhsels: