Logit,样本选择,GMM

时间:2019-07-19 21:55:35

标签: r statistics economics generalized-method-of-moments

我正在尝试使用GMM R包中的GMM。我有片刻,但是我正在使用协方差矩阵。时刻是:

psi1 = tau-(pi /(((pi / W1)+((1 + pi)/ w0)))

psi2 = Xik *(yi-((pi / w1)/((((pi / W1)+((1 + pi)/ w0)))))

其中w1,w0和t(tau)是常数,pi是logit模型,Xik是解释变量,“ y”是二进制因变量。余数比自由参数多,因此有必要最小化transpose(psi) S psi,其中S为正定矩阵,我使用恒等矩阵。

首先,我不知道代码是否正确。如果不正确,可以给我正确的版本。如果代码正确,哪里有问题,如何解决?

这是我的代码:

require(gmm)
#generate the data
set.seed(124)

z <- rnorm(1000,0,2)
t <- rbinom(1000,1,2/3)
y <- rbinom(n = 1000,size =1,prob = plogis(1+2*z-3*t))
dat <- as.data.frame.matrix(cbind(y,1,z))

#weight matrix + w0 + w1+ tau
tau <- 0.1
w1 <- tau/mean(y)
w0 <- (1-tau)/(1-mean(y))
S <- matrix(data = c(1,0,0,1),nrow=2,ncol=2)

#moments
moments <- function(theta, data) {
  y <- as.numeric(data[, 1])
  x <- data.matrix(data[, 2:3])
  thet <- t(cbind(theta[2],theta[3]))
  p <- plogis(x%*%thet)
  m1 <- as.vector(0.5-(p/((p/w1)+((1-p)/w0))))
  m2 <- x*as.vector((y-((p/w1)/((p/w1)+((1-p)/w0)))))
  M <- cbind(m1,m2)
  return(M)
  #return(t(M)%*%S%*%M)
}

init <- cbind(1,1,2)

logitss.gmm <- gmm(moments, x = dat, t0 = init, type = "iterative", 
                   crit = 1e-25, wmatrix = "optimal", method = "Nelder-Mead", 
                   control = list(reltol = 1e-25, maxit = 20000)) 

logitss.gmm$coefficients

注意:我正在使用二值逻辑回归进行Lancester和Imbens(1996)矩的半参数方法。假设这很容易实现...但是让我迷失了方向。

0 个答案:

没有答案