表达式导致 GMM 库出现错误“需要数字/复数矩阵/向量参数”

问题描述 投票:0回答:1

我正在尝试使用 R 中的 GMM 库来估计模型。但是,当我运行代码时,我收到错误“需要数字/复杂矩阵/向量参数”。我按照多个类似问题中的建议将数据框转换为矩阵,但我仍然遇到相同的错误,关于如何解决该问题有什么想法吗?我知道该模型非常简单,但我试图了解该命令的工作原理。我加载的数据都是数字,我已经用 mode (X) 函数对其进行了测试。

library(gmm) # For gmm

data_r <- data.frame(replicate(7,sample(0:5,1000,rep=TRUE)))

g <- function(theta, data_r){
  y <- as.numeric(data_r[, "X1"])
  x <- as.matrix(data_r[,c("X2", "X3", "X4", "X5")])
  z <- as.matrix(data_r[,c("X2", "X6", "X4", "X7")])
  
  # Moment conditions
  m1 <- z * as.vector(y - x %*% theta)
  return(cbind(m1))
}

g_test <- gmm(g, data_r)
summary(g_test)

这会返回错误:

Error in x %*% theta: requires numeric/complex matrix/vector arguments
r matrix gmm
1个回答
0
投票

根据

gmm

的帮助页面

t0

A k × 1 k×1 起始值向量。 仅在以下情况下才需要 “g”是一个函数,因为只有这样才使用数值算法 最小化目标函数。 ...

因此,您需要提供起始值 (

t0
),其长度必须等于
x
的列数,即 4,因为您在函数中将
x
乘以 theta。

g_test <- gmm(g, data_r, t0 = rep(0, 4))
summary(g_test)

Coefficients:
          Estimate   Std. Error  t value    Pr(>|t|) 
Theta[1]  -0.152082   0.322655   -0.471347   0.637393
Theta[2]  -0.866059   3.465883   -0.249881   0.802679
Theta[3]  -0.060006   0.099921   -0.600539   0.548147
Theta[4]   2.048832   3.735988    0.548404   0.583414

J-Test: degrees of freedom is 0 
                J-test               P-value            
Test E(g)=0:    0.00173925349613719  *******
© www.soinside.com 2019 - 2024. All rights reserved.