Чтобы применить подход начальной загрузки, как описано в вопросе https://stats.stackexchange.com/questions/481803/is-estimating-confidence-intervals-ci-with-different-sample-sizes-in-each-boot, мне нужно применить различные фильтры к таблице данных, а затем создать новую таблицу данных, которая состоит из результатов каждого шага фильтрации.
Это воспроизводимый пример подхода начальной загрузки.
library(data.table)
dt <- data.table(compound= c(rep("ala", 5), rep("beta", 3), rep("phe", 8)),
obs = c(rep(FALSE, 7), rep(TRUE, 9)))
boot::boot.ci(boot::boot(data.frame(var = dt$compound),
function(data, indices, stat_tab = dt){
comp_samp <- data[indices,]
fin_tab <-
lapply(as.list(comp_samp), function(x, stat_tab_l = stat_tab){
stat_tab_l[x == compound]
})
fin_tab <- rbindlist(fin_tab)
round(nrow(fin_tab[obs == TRUE])/nrow(fin_tab )*100,1)
},
R = 1000),
index=1,
type='basic')$basic
Обычно он работает, но очень медленно, что является проблемой, потому что мои настоящие наборы данных состоят из сотен соединений и 10000 наблюдений. Есть ли способ сделать это быстрее?