R中的广义矩量法:如何设定起始值?

时间:2018-04-07 01:57:15

标签: r

我正在尝试使用gmm包在R中运行GMM估算。 我发现估算对选项t0非常敏感,后者是起始值。

但据我所知,估计GMM的 STATA SAS 没有起始值。如果估算值对起始值敏感,我应该如何设置t0以获得商业程序的相同结果?

包含的代码和数据

要清楚,我包含了我的代码和数据。我正在估算lambda。我的问题是,lambda的估计值在起始值上变化太大(您可以将lambda的起始值设置为0,然后比较结果)。因此,我不确定我应该依赖哪种估计。

instrument.csv

test_assets.csv

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)

0 个答案:

没有答案