[英]R boot::boot(): function which returns mean and the used samples
我正在使用 boot 包中的boot()
函数从人群中引导手段。 使用的功能是:
boot_mean <- function(data, i){
ds_m <- data[i]
return(mean(ds_m))
}
像魅力一样工作,但现在我想调整boot_mean
函数,以便我可以获得导致平均值的样本。 我试过了:
library('boot')
boot_mean <- function(data, i){
ds_m <- data[i]
ds_m_mean <- mean(ds_m)
rlist <- list("means" = ds_m_mean, "data" = ds_m)
return(rlist)
}
dummy_data <- rnorm(500)
dummy_boot <- boot(dummy_data, boot_mean, R = 1000)
这会导致错误:
t.star[r, ] <- res[[r]] 中的错误:矩阵上的下标数量不正确
这里有什么问题? 我怎样才能得到对应的数据集来引导平均值?
从文档?boot
中,描述了statistic
参数。
一个函数,当应用于数据时返回一个包含感兴趣的统计数据的向量。 ...
boot()
函数只想处理输出单个向量的函数。 修改代码以返回包含两个元素的list
意味着它不再起作用。 在 R 和boot()
函数中实际上有一点有趣的奇怪之处,这意味着如果你在boot()
调用中设置R=1
,代码几乎可以工作,但它仍然是错误的。
幸运的是,出于您的目的,作者已经编写了有用的boot.array()
函数。 它输出一个包含R
行和nrow(data)
列的矩阵,指示第 j 个个体在第 i 个引导程序中被采样的次数,或者被采样个体的索引。 通过从数据中选择这些人,可以很容易地找到自举数据集。 这可能需要一点时间。
dats <- lapply(1:nrow(boot.array(dummy_boot)),
FUN = function(x) dummy_data[boot.array(dummy_boot, indices = TRUE)[x, ]])
如果您有多列数据,您应该添加, , drop = FALSE
dats <- lapply(1:nrow(boot.array(dummy_boot)),
FUN = function(x) dummy_data[boot.array(dummy_boot, indices = TRUE)[x, ], , drop = FALSE])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.