我有一个样本,其中 50% 的观察结果是白人和 50% 的非裔美国人。
我想获得一个随机子样本,其中该比例被修改为 80% 白人和 20% 非洲裔美国人。
我尝试了分层命令,但找不到允许我将股份分配给分层标准的选项。
预先感谢您的帮助!
我有一个样本,其中 50% 的观察结果是白人和 50% 的非裔美国人。
我想获得一个随机子样本,其中该比例被修改为 80% 白人和 20% 非洲裔美国人。
我尝试了分层命令,但找不到允许我将股份分配给分层标准的选项。
预先感谢您的帮助!
如果您的原始数据集有 100 行(50 个白人和 50 个非洲裔美国人),那么 80% 将是 40 个样本,20% 将是 10 个样本。知道了这些值,你可以试试:stratified(mydf, "group", size = c("White" = 40, "African-American" = 10))
.
例子:
mydf <- data.frame(group = rep(c("White", "African-American"), each = 50), value = 1:100)
mydf
library(splitstackshape)
set.seed(1)
x <- stratified(mydf, "group", size = c("White" = 40, "African-American" = 10))
summary(x)
# group value
# African-American:10 Min. : 1.00
# White :40 1st Qu.:15.25
# Median :31.00
# Mean :34.88
# 3rd Qu.:47.50
# Max. :93.00
好吧,我会过滤白人和非裔美国人的数据,然后从每个子集中进行选择。
## 80% of the white sample
smp_size <- floor(train_ratio * nrow(df_white))
## set the seed to make your partition reproductible
set.seed(42)
data_ind_w <- sample(seq_len(nrow(df_white)), size = smp_size)
对于非裔美国人
## 20% of the african sample
smp_size <- floor(train_ratio * nrow(df_african))
## set the seed to make your partition reproductible
set.seed(42)
data_ind_a <- sample(seq_len(nrow(df_african)), size = smp_size)
那是新数据
new_data <- c(white[data_ind_w,],african[data_ind_a,])