我想在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的一个非常简单的例子之外,我的数据在变量维度方面做错了什么?
答案 0 :(得分:0)
我找到了我的缺陷,这是由于函数 g 的定义。 作为R状态中gmm的reference manual, g 可以是公式(如果使用线性模型)或具有两个参数的显式函数。 g 作为函数的声明必须是参数 theta 的估计向量,作为第一个参数和数据矩阵 x < / em>作为第二个参数。事实上,
g <- function(data,theta){
...
}
必须替换为
g <- function(theta,data){
...
}