MIH*_*MIH 3 random r sample probability random-sample
我在R中找不到这个问题的答案.我想生成0到1'随机样本'的随机样本.对于每个样本,我希望有一个特定数量的值'numval',它是从矢量'Prob'的长度导出的.'Prob'给出了每个单独的点将为0或1的概率值.因此,在这种情况下,第一个数字的概率值为0.9为1,0.1为0.依此类推.然后,我想重复随机样本生成1000次.我有一个脚本(下面)生成随机0和1,但我在给出概率值时缺少组件.非常感谢帮助 - 我对R来说相当新.
Prob <- c(0.9, 0.3, 0.6, 0.8, 0.23, 0.45, 0.1, 0.3, 0.5, 0.03)
RandomSample <- list()
zeroones <- c(0,1)
rep = 1000
numval <- length(Prob)
for (i in 1:rep) RandomSample[[i]] <- c(sample(zeroones,numval,replace = TRUE))
t(sapply(RandomSample, unlist, simplify = TRUE))
Run Code Online (Sandbox Code Playgroud)
您可以使用rbinom()从二项分布生成随机样本.
试试这个:
prob <- c(0.9, 0.3, 0.6, 0.8, 0.23, 0.45, 0.1, 0.3, 0.5, 0.03)
rbinom(length(prob), size = 1, prob=prob)
[1] 1 1 1 0 0 0 0 1 0 0
Run Code Online (Sandbox Code Playgroud)
为了证明概率实际上是您所追求的,请尝试replicate()使用您的概率重复绘制样本:
x <- t(replicate(100, rbinom(length(prob), size = 1, prob=prob)))
head(x)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 0 1 1 1 1 0 0 1 0
[2,] 1 1 1 1 0 1 0 1 0 0
[3,] 1 0 1 1 0 0 0 1 0 0
[4,] 1 0 1 0 0 1 0 0 1 0
[5,] 1 1 1 1 0 0 0 0 0 0
[6,] 1 0 0 0 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
现在您可以colMeans()用来比较实际获得的概率与您的规格:
colMeans(x)
[1] 0.93 0.28 0.61 0.67 0.25 0.43 0.11 0.29 0.40 0.01
Run Code Online (Sandbox Code Playgroud)