gpt4 book ai didi

通过引导 R 中的数据来复制函数

转载 作者:行者123 更新时间:2023-12-04 12:16:45 25 4
gpt4 key购买 nike

我正在使用 library(gmm) 估算 GMM 模型。

n <- 200
x1 <- rnorm(n)
x2 <- rnorm(n)
x3 <- rnorm(n)
x4 <- rnorm(n)
x5 <- rnorm(n)
x6 <- rnorm(n)

xx <- cbind(x1, x2, x3, x4, x5, x6)
fun <- function(betastar, x) {
m1 <- (x[,1] - x[,2]*betastar - x[,3] - x[,4])*x[,5]
m2 <- (x[,1] - x[,2]*betastar - x[,3] - x[,4])*x[,6]
f <- cbind(m1,m2)
return(f)
}

library(gmm)
k <- gmm(fun, x=xx, 0, optfct="optim", lower = 0, upper = 2, method="Brent")

我想通过引导我的示例 xx(替换)来复制它 B 次。我的范围是为每个复制保存 betastar 的标准错误,并将它们全部存储在某个地方。有快速的方法吗?我知道有 library(boot) 原则上应该允许我这样做,但我很难弄清楚如何做,因为要使用函数 gmm 我需要指定另一个函数(有趣)

编辑:gmm 函数正在做的是最小化关于参数 betastar 的其他函数 fungmm() 中的所有术语都定义了 gmm 的工作方式。我想要的是为任何 1:B 复制绑定(bind) betastar(这是一个系数)及其在对象中的标准误差。它们可以通过命令 coef(k)sqrt(k$vcov) 恢复我正在尝试以下操作

B <- 199  # number of bootstrapping
betak_boot <- rep(NA, 199)
se_betak_boot <- rep(NA, 199)
for (ii in 1:B){
sample <- (replicate(ii, apply(xx, 2, sample, replace = TRUE)))
k_cons <- gmm(fun, x=samples, 0, gradv=Dg, optfct="optim", lower = 0, upper = 2, method="Brent")
betak_boot[ii] <- coef(k_cons)
se_betak_boot[ii] <- sqrt(k_cons$vcov)
}

我不知道为什么,我在应用 fun 时遇到错误,即 Error in x[, 1] : incorrect number of dimensions。的确,我不知道为什么sample

dim(sample)
[1] 200 6 1

最佳答案

library(gmm)
set.seed(123)
n <- 200
x1 <- rnorm(n)
x2 <- rnorm(n)
x3 <- rnorm(n)
x4 <- rnorm(n)
x5 <- rnorm(n)
x6 <- rnorm(n)

xx <- cbind(x1, x2, x3, x4, x5, x6)
fun <- function(betastar, x) {
m1 <- (x[,1] - x[,2]*betastar - x[,3] - x[,4])*x[,5]
m2 <- (x[,1] - x[,2]*betastar - x[,3] - x[,4])*x[,6]
f <- cbind(m1,m2)
return(f)
}
ii=4
samples <- replicate(ii, apply(xx, 2, sample, replace = TRUE))

coefk <- rep(0,ii)
sdk <- rep(0,ii)

for (i in 1:ii) {
xx <- samples[,,i]
k <- gmm(fun, x=xx, 0, optfct="optim", lower = 0, upper = 2, method="Brent")
coefk[i] <- coef(k)
sdk[i] <- sqrt(k$vcov)[1,1]
}

关于通过引导 R 中的数据来复制函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23105492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com