r - R - Bootstrap CI 覆盖属性的编码函数
问题描述
我需要编写一个执行模拟的函数,以评估引导置信区间对正态分布中 n 个样本的方差的覆盖率。以下是我尝试过的,但对于 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
是一个单一的值,你所有的引导样本只是那个单一的y
值重复nsamples
次数。你需要
y <- rnorm(nsamples, mean = true_mean, sd = sqrt(true_var))
然后你会得到具有实际方差的样本,你会得到一个看起来更合适的覆盖率估计(不评论它是否正确,我没有尝试检查)。
推荐阅读
- javascript - 如何使文本输入字段接受关键字?
- html - 如何为 Outlook 网络邮件应用条件内容
- c# - C# TextBox 自动大写锁定
- sublimemerge - Sublime Merge - “文件历史记录”的键盘快捷键
- snowflake-cloud-data-platform - Lock_timeout 可以在雪花中设置为相同的值 STATEMENT_TIMEOUT_IN_SECONDS 吗?
- php - PHP Serverless Slim 无法执行 imagettftext
- python - 从照片的像素确定到平面上参考点的真实距离的算法
- c# - 如何将自定义 ObservableCollection 元素复制到另一个自定义 ObservableCollection?
- apache-kafka-connect - 如何从具有复合键的主题创建 KSQL 表?
- c# - 从一个 ViewModel 到另一个 ViewModel 获取 PropertyChanged 通知