gpt4 book ai didi

r - 引导示例意味着在 R 中使用引导包,为 boot() 函数创建统计函数

转载 作者:行者123 更新时间:2023-12-01 06:43:15 24 4
gpt4 key购买 nike

我有一个包含 15 个密度计算的数据集,每个来自不同的横断面。我想用替换对这些重新采样,从 15 个横断面中随机抽取 15 个样本,然后获得这些重新采样的平均值。在此过程中,每个样带都应该有自己的个人概率被采样。这应该做5000次。我有一个代码可以在不使用引导函数的情况下执行此操作,但是如果我想使用引导包计算 BCa 95% CI,则需要首先通过引导函数完成引导。
我一直在尝试创建一个函数,但我无法得到任何似乎有效的函数。我希望 bootstrap 从某个列 (data$xs) 中进行选择,并且要使用的概率在列 data$prob 中。

我认为可能工作的功能是;

library(boot)
meanfun <- function (data, i){
d<-data [i,]
return (mean (d)) }
bo<-boot (data$xs, statistic=meanfun, R=5000)
#boot.ci (bo, conf=0.95, type="bca") #obviously `bo` was not made

但这告诉我“维数不正确”

我理解如何在正常意义上创建一个函数,但该函数在 boot 中的工作方式似乎很奇怪。由于该函数仅通过名称来引导,并且没有指定要传递给函数的参数,因此我似乎仅限于引导本身将作为参数传递的内容(例如,我无法将 data$xs 作为参数传递给函数)数据,我无法将 data$prob 作为概率参数传递,等等)。它似乎真的限制了可以做的事情。也许我错过了什么?

感谢您的任何帮助

最佳答案

这个错误的原因是,data$xs返回一个向量,然后您尝试通过 data [i, ] 对其进行子集化.

解决此问题的一种方法是将其更改为 data[i]或使用 data[, "xs", drop = FALSE]反而。 drop = FALSE避免类型强制,即。将其保留为 data.frame .

我们试着

data <- data.frame(xs = rnorm(15, 2))

library(boot)
meanfun <- function(data, i){
d <- data[i, ]
return(mean(d))
}
bo <- boot(data[, "xs", drop = FALSE], statistic=meanfun, R=5000)
boot.ci(bo, conf=0.95, type="bca")

并获得:
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 5000 bootstrap replicates

CALL :
boot.ci(boot.out = bo, conf = 0.95, type = "bca")

Intervals :
Level BCa
95% ( 1.555, 2.534 )
Calculations and Intervals on Original Scale

关于r - 引导示例意味着在 R 中使用引导包,为 boot() 函数创建统计函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40025160/

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