R - Bootstrap CI 覆盖范围 属性 的编码函数
R - Coding Function for Bootstrap CI Coverage Property
我需要编写一个函数来执行模拟,以评估正态分布中 n 个样本方差的 bootstrap 置信区间的覆盖率。下面是我尝试过的,但对于 CI...
范围内的样本数量,它一直返回 0 或 0.002 的平均值
Var_CI_Coverage <- function(true_mean,true_var, nsim, nboot, alpha, nsamples){
cover = NULL
for(k in 1:nsim){
Var = as.numeric()
y <- rnorm(1, mean = true_mean, sd = sqrt(true_var))
for(i in 1:nboot){
resample_y <- sample(y, size = nsamples, replace = TRUE)
Var[i] <- var(resample_y)
}
LB <- quantile(Var, probs=c(alpha/2))
UB <- quantile(Var, probs=c(1 - (alpha/2)))
cover[k] <- ifelse(LB <= true_var & UB >= true_var, 1, 0)
}
return(mean(cover))
}
Var_CI_Coverage(true_mean= 0, true_var = 4, nsim = 500, nboot = 1000, alpha = 0.05, nsamples = 10)
主要问题是您使用
生成y
y <- rnorm(1, mean = true_mean, sd = sqrt(true_var))
这意味着 y
是一个单一的值,而你所有的 bootstrap 样本只是那个单一的 y
值重复 nsamples
次。你需要
y <- rnorm(nsamples, mean = true_mean, sd = sqrt(true_var))
然后您会得到具有实际方差的样本,并且您会得到一个看起来更接近正确范围的覆盖率估计值(不评论它是否正确,我还没有尝试检查)。
我需要编写一个函数来执行模拟,以评估正态分布中 n 个样本方差的 bootstrap 置信区间的覆盖率。下面是我尝试过的,但对于 CI...
范围内的样本数量,它一直返回 0 或 0.002 的平均值Var_CI_Coverage <- function(true_mean,true_var, nsim, nboot, alpha, nsamples){
cover = NULL
for(k in 1:nsim){
Var = as.numeric()
y <- rnorm(1, mean = true_mean, sd = sqrt(true_var))
for(i in 1:nboot){
resample_y <- sample(y, size = nsamples, replace = TRUE)
Var[i] <- var(resample_y)
}
LB <- quantile(Var, probs=c(alpha/2))
UB <- quantile(Var, probs=c(1 - (alpha/2)))
cover[k] <- ifelse(LB <= true_var & UB >= true_var, 1, 0)
}
return(mean(cover))
}
Var_CI_Coverage(true_mean= 0, true_var = 4, nsim = 500, nboot = 1000, alpha = 0.05, nsamples = 10)
主要问题是您使用
生成y
y <- rnorm(1, mean = true_mean, sd = sqrt(true_var))
这意味着 y
是一个单一的值,而你所有的 bootstrap 样本只是那个单一的 y
值重复 nsamples
次。你需要
y <- rnorm(nsamples, mean = true_mean, sd = sqrt(true_var))
然后您会得到具有实际方差的样本,并且您会得到一个看起来更接近正确范围的覆盖率估计值(不评论它是否正确,我还没有尝试检查)。