说我有一个数据集(如下面的模拟数据集),其中响应数据跨多个因素(对象和条件)进行组织。如何从该数据集中进行引导,以便首先获得受试者的随机样本(有替换),然后再获得响应的随机样本(有替换)?
几乎同样重要的是,我如何有效地做到这一点-在计算速度上要有大量的溢价?
这是模拟的数据集:
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使得在主体内对响应进行采样相对容易,但是以使所有主体都代表最终模拟的方式进行。我已经在单独的thread上改编了@ 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示例,但我可以使用任何方法(基于R,Rcpp,data.table的方法)。提前谢谢