[英]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.