gmm错误:维数不正确

时间:2018-02-15 21:37:46

标签: r

我想在R中应用gmm估计并使用单个函数 g 作为时刻限制的公式:

library(sandwich)
library(gmm)

#set up data for 10 observations and asume a linear function y~x
intercept <- 1
beta <- 1
x <- 1:10
e <- rnorm(10)
y <- intercept + beta*x + e

#generate matrix
data <- cbind(x,y)

#define function g with moments restrictions for gmm estimation
g <- function(data,theta){
    x <- data[,1]
    y <- data[,2]
    tmp <- x*(y-theta*x)
    return (tmp)
}

estimation <- gmm(g,data)

上面的示例导致错误:

Error in data[,1]: Incorrect number of dimensions.

我得到了

dim(data)
[1] 10 2

data[,1]
[1] 1 2 3 4 5 6 7 8 9 10

除了统计模型是学习gmm的一个非常简单的例子之外,我的数据在变量维度方面做错了什么?

1 个答案:

答案 0 :(得分:0)

我找到了我的缺陷,这是由于函数 g 的定义。 作为R状态中gmm的reference manual g 可以是公式(如果使用线性模型)或具有两个参数的显式函数。 g 作为函数的声明必须是参数 theta 的估计向量,作为第一个参数和数据矩阵 x < / em>作为第二个参数。事实上,

g <- function(data,theta){
...
}

必须替换为

g <- function(theta,data){
...
}