我正在尝试使用gmm
包在R中运行GMM估算。
我发现估算对选项t0
非常敏感,后者是起始值。
但据我所知,估计GMM的 STATA 或 SAS 没有起始值。如果估算值对起始值敏感,我应该如何设置t0
以获得商业程序的相同结果?
包含的代码和数据
要清楚,我包含了我的代码和数据。我正在估算lambda
。我的问题是,lambda的估计值在起始值上变化太大(您可以将lambda的起始值设置为0,然后比较结果)。因此,我不确定我应该依赖哪种估计。
library(tidyverse)
library(gmm)
instrument <- read_csv("instrument.csv")
test_assets <- read_csv("test_assets.csv")
# Define Moment Conditions
g <- function(params, y){
# Number of instrument variables: 6
l <- dim(instrument)[2]
# Moment condition 1: 6 x 1
u_jt <- y - instrument %*% params[1:l]
mom_cond1 <- c(u_jt) * instrument
# Moment condition 2: 6 x 1
u_mt <- test_assets$vwretd - instrument %*% params[(l+1):(l+l)]
mom_cond2 <- c(u_mt) * instrument
# Moment condition 3: 6 x 1
e_jt <- y - params[l+l+1] * u_jt * u_mt
mom_cond3 <- c(e_jt) * instrument
# Moment condition: 18 x 1
mom_cond <- list(mom_cond1, mom_cond2, mom_cond3) %>%
reduce(cbind)
return(mom_cond)
}
# Define starting values.
t0 <- c(gamma1 = -0.01, gamma2 = 0.1, gamma3 = 0.05,
gamma4 = 5, gamma5 = 20, gamma6 = 5,
gamma7 = -0.01, gamma8 = 0.01, gamma9 = 0.01,
gamma10 = 8, gamma11 = 13, gamma12 = 3,
lambda = 10
)
y <- test_assets$decret1
gmm_results <- gmm(g, y, t0)
summary(gmm_results)