假设我有一个分类变量,可以取值 A、B、C 和 D。如何生成 10000 个随机数据点并控制每个数据点的频率?例如:
A = 10% B = 20% C = 65% D = 5%
任何想法我怎么能做到这一点?
假设我有一个分类变量,可以取值 A、B、C 和 D。如何生成 10000 个随机数据点并控制每个数据点的频率?例如:
A = 10% B = 20% C = 65% D = 5%
任何想法我怎么能做到这一点?
您是否希望样本中的比例与所述比例完全相同?还是代表从具有这些比例的非常大的人口中抽样的想法(因此样本比例将接近但不准确)?
如果您想要精确的比例,那么您可以按照 Brandon 的建议并使用 Rsample
函数来随机化具有精确比例的向量的顺序。
如果你想从总体中抽样,但不限制比例是准确的,那么你仍然可以使用sample
R 中的函数,prob
参数如下:
> x <- sample( LETTERS[1:4], 10000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05) )
> prop.table(table(x))
x
A B C D
0.0965 0.1972 0.6544 0.0519
使用 R (http://cran.r-project.org/)。我在这里所做的只是根据您指定的比例创建一个随机列表。
x <- c(rep("A",0.1*10000),rep("B",0.2*10000),rep("C",0.65*10000),rep("D",0.05*10000))
# cheating
x <- sample(x, 10000)
prop.table(summary(as.factor(x)))
/me 耐心等待关于这是多么随机的争论
n <- 10000
blah <- character(n)
u <- runif(n)
blah[u<=0.1] <- "A"
blah[u>0.1 & u<=0.3] <- "B"
blah[u>0.3 & u<=0.95] <- "C"
blah[u>0.95] <- "D"
table(blah)
prop.table(summary(as.factor(blah)))
我毫不怀疑这真的是随机的。我的意思是,在某种程度上runif()
是随机的:)
如果您是 SAS 用户,最新版本提供了类似的功能,可以从所谓的“表”分布中提取 - 这是您正在寻找的,作为 Rand() 函数的一部分。请参阅http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001466748.htm