使用R语言gmm库时遇‘requires numeric/complex matrix/vector arguments’错误求解
解决gmm库中"requires numeric/complex matrix/vector arguments"错误
问题原因
你遇到的错误核心是未指定GMM估计的初始参数值t0。gmm函数无法自动推断你模型中参数theta的维度(你的模型包含4个解释变量,对应4个参数),导致初始传入的theta不符合矩阵乘法的要求,进而触发报错。
解决方案
在调用gmm函数时,显式指定初始参数值t0,维度与解释变量数量一致(这里是4个参数,可初始化为全0向量)。同时优化矩条件函数的写法,确保变量逻辑更清晰:
library(gmm) # 加载gmm库 data_r <- data.frame(replicate(7,sample(0:5,1000,rep=TRUE))) g <- function(theta, data){ y <- data[["X1"]] x <- as.matrix(data[,c("X2", "X3", "X4", "X5")]) z <- as.matrix(data[,c("X2", "X6", "X4", "X7")]) # 生成矩条件矩阵:工具变量逐元素乘残差 m1 <- z * (y - x %*% theta) return(m1) } # 指定初始参数t0,长度与解释变量数量匹配 g_test <- gmm(g, data_r, t0 = rep(0, 4)) summary(g_test)
额外说明
t0的取值可以是任意合理初始值(比如全0、OLS估计结果等),只要维度与参数数量一致即可。- 你的矩条件函数逻辑是正确的:用工具变量矩阵
z逐元素乘残差y - x%*%theta,生成符合GMM要求的矩条件矩阵。 - 验证数据类型时,
is.numeric()比mode()更精准,整数型属于数值型子集,完全兼容矩阵乘法。
内容的提问来源于stack exchange,提问作者user280809
相关产品推荐
相关产品推荐

