Мне нужно определенным образом выполнить начальную загрузку набора данных, которая должна выполнять итерации с особым видом повторной выборки по накопленным строкам.
У меня есть набор данных (baseEV), который выглядит как эти три столбца(но с большим количеством строк):
Ntree Ntrans Xi
1 1 0.1
2 1 0.1
3 1 0.1
4 1 7
5 1 7
1 3 0.1
2 3 0.1
3 3 9
4 3 6
5 3 3
1 4 0.1
2 4 11
3 4 9
4 4 6
5 4 3
1 5 0.1
2 5 10
3 5 4
4 5 2
5 5 4
Мне нужно проверить, как меняется статистика, если я повторно сэмплирую Xi, изменив Ntree, рассчитав статистику и затем оценив статистику с помощью начальной загрузки: D = (35 * Ntree-1) / SUM ([Xi]) Однако мне также нужно, чтобы при изменении Ntree, чтобы увидеть, как влияет D, он не должен сбрасывать меньшие значения Ntree. Например, когда я вычисляю для Ntree = 4, мне нужен загрузчик, чтобы использовать строки для Ntree = 1,2 и 3 вместе с Ntree = 4, без использования данных для Ntree = 5.
Но когда я применяю этот код:
library(boot)
library(dplyr)
library(tidyr)
library(broom)
AvgDEns <- function(data, indices) {
data <- data[indices,]
mean((35*(data$Ntree))-1)/sum((data$Xi))
}
bootresults2 <- baseEV %>%
group_by(Ntree) %>%
do(tidy(boot(data = ., statistic = AvgDEns , R = 200)))
bootresults2
Таким образом, итоговый загрузчик дает результаты только с учетом Ntree = 1, или Ntree = 2, или 3 и т. Д., На ихсобственный, но мне нужна процедура для сохранения строк с меньшим (Ntree) значением и вычисления функции с ними. Приведенный выше код дает следующие результаты
> bootresults2
# A tibble: 5 x 4
# Groups: Ntree [5]
Ntree statistic bias std.error
<dbl> <dbl> <dbl> <dbl>
1 1 85 0 0
2 2 3.25 12.9 44.7
3 3 4.71 3.34 25.6
4 4 6.62 0.252 1.43
5 5 10.2 0.298 2.01
Если мы выполняем эти вычисления так, как нам нужно, то правильные результаты должны быть, например, в строке 2: 3.19444, НЕ 3.25 (неверный результат, который приводит кТОЛЬКО применяя только функцию AvgDens к строке для Ntree = 2, игнорируя Ntree = 1);для 3 это должно быть 2.3798 (в результате выполнения только AvgDens с Ntree = 3, без учета Ntree = 2 и Ntree = 1) в, NOT 4.71, а Ntreee = 5 должно сходиться к 2.12974 (AvgDens, рассчитанный со всеми данными в таблице) с каждой итерацией начальной загрузки.
Однако понятия не имею, как это сделать;Я очень застрял. Будем весьма благодарны за любые сведения о предлагаемых процедурах!