我有一个癌症的数据集,是否。下面的数据集示例
set.seed(42)
cancer <- sample(c("yes", "no"), 200, replace=TRUE)
agegroup <- sample(c("35-39", "40-44", "45-49"), 200, replace=TRUE)
agefirstchild <- sample(c("Age < 30", "Age 30 or greater", "nullipareous"), 200, replace=TRUE)
dat <- data.frame(cancer, agegroup, agefirstchild)
我想从这个数据集中减去5000个样本。每个样本包含数据集的10%。然后取每个样品的“是”值的比例。然后我要从5000个值中绘制出来自Cancer Yes的5000个比例值的直方图,并获得该直方图的均值,中位数,四分位数和标准差的摘要。
下面的这段代码计算比例。但是现在我需要数据集的10%,5000次并在带有摘要的直方图中使用它
resample <- sample(dat, replace = TRUE)
proportion <- prop.table(table(resample$Cancer))
我可以找到一些使用数字值而不使用二进制值的方法的示例。但是如何使用二进制值执行这样的测试?
鉴于您上面建议的数据集dat
,您可以循环5000次,每次保持cancer=="yes"
的比例,如下所示:
samplesize <- nrow(dat)*0.10
result_vec <- vector(length=samplesize)
for(i in 1:5000) {
rows_to_keep <- sample(1:nrow(dat), size=samplesize, replace=F)
result_vec[i] <- mean(dat$cancer[rows_to_keep] == "yes")
}
hist(result_vec)
这里带有二进制变量的“技巧”是,当条件为真/假时,首先创建一个1和0的向量,然后取该向量的平均值。这为您提供条件成立的次数的百分比。
如果您要计算其他感兴趣的数量(例如5000比例的标准偏差),则可以执行:
sd(result_vec)