У меня есть вымышленный фрейм данных, такой как, включая непрерывные и категориальные переменные
library(dplyr)
library(ggplot2)
library(tidyr)
df <- tibble(
# each sample gets id from 1:1000
id = 1:1000,
# sex,categorical, either "f" or "m"
sex = ifelse(runif(1000, 0, 1) < 0.5, "f","m"),
# disease stage, categorical, either 1 or 2
stage = ifelse(runif(1000,0,1) < 0.5, 1,2),
# age, continuous
age = runif(1000,20,80),
# blood, continuous
blood = runif(1000,10,1000)
)
Категориальные переменные имеют распределение почти 50:50
prop.table(table(df$sex))
prop.table(table(df$stage))
А непрерывные имеют довольно произвольное ненормальное распределение
df %>%
gather(test, result, 4:5) %>%
ggplot(aes(result)) +
geom_density() +
facet_wrap(test ~ ., scale="free")
Если я сейчас беру 100 выборок из df, результирующие распределения полностью отличаются от исходного распределения
sample_df <- sample_n(df, 100, replace=F)
sample_df %>%
gather(test, result, 4:5) %>%
ggplot(aes(result)) +
geom_density() +
facet_wrap(test ~ ., scale="free")
Теперь у меня вопрос, как мне сделать выборку из df, чтобы мой sample_df соответствовал распределению и пригодности всех моих параметров (пол , возраст, этап, кровь). Я думал о подгонке регрессионной модели к df и отборе выборок на основе остатков, отсюда и расстояние каждой выборки до линии регрессии.
Фактической основной проблемой является большая когорта данных о пациентах, из которых я хочу выбрать субкогорту, сохраняя при этом распределение и достоверность определенных характеристик пациента и заболевания.
Любая помощь высоко ценится.
Редактировать
Я знаю, что выборка 1/10 населения слишком мала и что увеличение размера выборки сделает Распределите приблизительное количество населения, из которого оно было взято. Чтобы сделать мою ситуацию более понятной, мне не удается использовать больше, чем, скажем, 1/4 моего населения. И с каждой ничьей от населения есть некоторый риск, что я выберу очень непредставительную когорту (ошибка выборки). Так что в основном я ищу метод, чтобы минимизировать этот риск и максимально увеличить вероятность того, что моя выборка является наиболее точным представлением населения.