R-如何生成离散随机变量的随机样本?

时间:2014-04-04 15:41:24

标签: r binary-data random-sample

在R中,我想生成离散随机变量的随机样本:X,其中:P(X=a)=P(X=-a)=1/2。我一直在网上搜索一个功能,但似乎没有直接功能这样做。

4 个答案:

答案 0 :(得分:18)

我认为您正在寻找生成伯努利随机变量的样本。伯努利随机变量是二项式随机变量的特例。因此,您可以尝试rbinom(N,1,p)。这将生成N个样本,其值1的概率为p,值0的概率为(1-p)。要获得a-a的值,您可以使用a*(2*rbinom(N,1,p)-1)

答案 1 :(得分:7)

1)如果您使用sample,这就足够了:

sample(c(-a,a),1)

e.g:

 a <- 10
 sample(c(-a,a),1)
[1] -10

尝试另外一对:

> sample(c(-a,a),1)
[1] -10
> sample(c(-a,a),1)
[1] 10

作品。

如果你需要抽取多个元素,那么设置replace=TRUE ...这里我们抽样12次:

 sample(c(-a,a),12,replace=TRUE)

 [1]  10  10 -10  10  10  10 -10 -10  10 -10  10 -10

2)你可以使用runif;这是一个9号样本:

a <- 1
ifelse(runif(9)<.5,-a,a)

[1] -1  1 -1  1 -1  1 -1  1  1  

3)你可以使用rbinom;这是一个4号样本:

a <- 6
ifelse(rbinom(4,1,.5),-a,a)

[1] -6  6 -6  6

答案 2 :(得分:2)

或者这个:

> n=10
> X=rep(0,n)
> Y=rbinom(n,1,1/2)
> #Since they the probability is 1/2 for both cases, I assigned "a" when Y=1 and "-a" otherwise.
> X[Y==1]="a"
> X[Y==0]="-a"
> X
 [1] "a"  "-a" "a"  "a"  "a"  "-a" "a"  "-a" "-a" "-a"
> Y
 [1] 1 0 1 1 1 0 1 0 0 0
> 

答案 3 :(得分:-1)

index <- sample(1,c(1,2),replace=T)
if (index == 1) {xx = a} else {xx = -a}

每个分发生成过程都以$ \ text {uniform}(0,1)$开头。由于使用$ \ text {uniform}(0,1)$更容易生成离散分布,因此人们不会为它们包含函数。但是,您可以编写自己的功能,并在下次使用它们时进行选择。