Эффективная вложенная выборка с заменой на каждом из нескольких этапов - PullRequest
0 голосов
/ 22 июня 2019

Скажем, у меня есть набор данных (как в смоделированном наборе данных ниже) с ответными данными, организованными по нескольким факторам (субъект и состояние).Как мне загрузить из этого набора данных так, чтобы я сначала получил случайную выборку субъектов (с заменой), а затем (в пределах этих случайно выбранных субъектов) случайную выборку ответов (с заменой)?

И почти так же важноКак мне сделать это эффективно - с тяжелой премией в скорости вычислений?

Вот смоделированный набор данных:

Subjects = c(rep(LETTERS[1:10],95), rep(LETTERS[1:8],3), rep(LETTERS[1:5],2))
data <- data.frame(
  Subject = Subjects,
  Condition = sample(c("Pre", "Post"), length(Subjects), replace = TRUE),
  Response = sample(c(0,1), length(Subjects), replace = TRUE, prob = c(0.25, 0.75)),
  ResponseTime = rgamma(length(Subjects),shape=5,scale=1)
)

Примечание: ответы здесь являются двоичными,Я сознательно сделал так, чтобы у одних испытуемых было меньше «испытаний», чем у других.

Dplyr позволяет сравнительно легко отбирать ответы по предмету, но таким образом, чтобы все предметы были представлены в финальной симуляции.Я адаптировал отличный пример от пользователя @ cb14 в отдельном потоке , чтобы продемонстрировать это:

if (!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}

sim_output <- data %>% crossing(Simulation = seq(100)) %>% sample_n(n(), replace = TRUE)

sim_summary <- sim_output %>% group_by(Subject, Condition) %>%
  summarize(Count = n(), Accuracy = mean(Response), ResponseTime = mean(ResponseTime))

Важно, что это действительно только один из двух шагов, которые я упомянул выше, а именновторая (выборка с заменой в рамках темы).Первый шаг (выборка предметов с заменой) отсутствует.

Хотя я привел здесь пример dplyr, я открыт для любого метода (base R, Rcpp, data.table).Заранее спасибо

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