Как выполнить функцию начальной загрузки с накопленными строками? - PullRequest
0 голосов
/ 09 октября 2019

Мне нужно определенным образом выполнить начальную загрузку набора данных, которая должна выполнять итерации с особым видом повторной выборки по накопленным строкам.

У меня есть набор данных (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, рассчитанный со всеми данными в таблице) с каждой итерацией начальной загрузки.

Однако понятия не имею, как это сделать;Я очень застрял. Будем весьма благодарны за любые сведения о предлагаемых процедурах!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...