繁体   English   中英

R 从指数随机变量生成二项式随机变量

[英]R generating binomial Random variables from exponential random variables

我有 100000 个使用rexp生成的指数随机变量,我被要求使用内置的 R 函数从中生成 100000 个二项式随机变量。

我真的不知道如何从另一个生成一个随机变量。 我在互联网上搜索了一些资源,但它们主要是关于从指数生成泊松,这非常相关,因为指数分布可以解释为泊松的时间间隔。 通过在指数上应用cumsum并使用cut function 制作一些包含时间间隔内出现次数的箱,可以轻松实现泊松。

但我不知道如何从指数生成二项式。

下面的 function rbin从指数 rv 生成二项式 rv。 原因可能是CrossValidated的问题,而不是 StackOverflow 的问题,它与代码有关。

rbin <- function(n, size, p){
  onebin <- function(i, size, thres){
    I <- 0L
    repeat{
      S <- sum(rexp(I + 1)/(size + 1 - seq_len(I + 1)))
      if(S > thres) break
      I <- I + 1L
    }
    I
  }
  thres <- -log(1 - p)
  sapply(seq_len(n), onebin, size, thres)
}


set.seed(1234)
u <- rbin(100000, 1, 0.5)
v <- rbinom(100000, 1, 0.5)

X <- cbind(u, v)
cbind(Mean = colMeans(X), Var = apply(X, 2, var))
#     Mean       Var
#u 0.50124 0.2500010
#v 0.49847 0.2500002

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM