生成具有可变输入和可变权重的加权分层样本。预期的输入是整数的可变长度因子,其整数具有不同的级别。
我正在尝试避免对权重和层次进行硬编码,因为它们可能会有所不同。关于分层采样,在堆栈交换上有很多问题,但是我看不到避免硬编码值的问题。
我对R还是有点陌生,并尝试了各种方法:Survey :: svydesign()和sample :: balancedstratification()。似乎没有人采用频率比例的矢量作为加权。
variable_vector <- as.factor(c(1, 1, 1, 2, 2, 2, 2, 3))
freq_prop <- prop.table(table(factor_vector))
library(survey)
mysdesign <- svydesign(id = ~1,
strata = ~levels(variable_vector),
data = variable_vector,
fpc = freq_prop)
library(sampling)
sampling::balancedstratification(variable_vector,
strata = levels(variable_vector),
pik = freq_prop)
以上两种方法均无效。
freq_prop的输出是
[1] 0.375 0.500 0.125
Now I need a way of generating random samples of size 30 for example:
sample size 1 = 30 * 0.375
sample size 2 = 30 * 0.500
sample size 3 = 30 * 0.125
任何帮助将不胜感激。
您可以使用基于r的sample
生成随机样本。例如,要从元素30
生成随机样本大小(1,2,3)
,您可以执行以下操作:
set.seed(777)
r_sample<- sample(c(1,2,3), size=30, replace = TRUE, prob = c(0.375, 0.5, 0.125))
table(r_sample)
# r_sample
# 1 2 3
# 13 14 3
这是您想要的吗?您也可以看到?sample
来查看帮助页面。