Рандомизационный тест для двоичного значения в R - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть набор данных со значениями Да Нет для Рака. Ниже приведен пример набора данных

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

Этот код ниже рассчитывается пропорция. Но теперь мне нужно это из 10% набора данных, 5000 раз и в гистограмме со сводкой

resample <- sample(dat, replace = TRUE)
proportion <- prop.table(table(resample$Cancer))

. Я могу найти несколько примеров того, как сделать это со значениями цифр c, но не с двоичными значениями , Но как я могу выполнить такой тест с двоичными значениями?

1 Ответ

0 голосов
/ 27 апреля 2020

Учитывая набор данных dat, который вы предлагаете выше, вы можете l oop 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...