生成随机变量

时间:2015-05-01 17:27:19

标签: r

我有一个关于使用R生成随机变量的问题。

我必须生成随机变量

$X_{ij}$ (i=1,...,25, j=1,...,5 ) knowing that 

每个X_ij遵循二项分布

$X_{ij} \sim Bin(n_{ij}, p_{ij}) 

$我已经知道了

$n_{ij}$ and $p_{ij}$ 
每个索引

。如何生成这些随机变量?

我不知道它是否有用,但我已经生成$p_{ij}$知道它们也是跟随beta分布的随机变量(因此实际上$X_{ij}$遵循beta二项式)

1 个答案:

答案 0 :(得分:4)

我们假设你有n和p的以下矩阵:

(n <- matrix(4:7, nrow=2))
#      [,1] [,2]
# [1,]    4    6
# [2,]    5    7
set.seed(144)
(p <- matrix(rbeta(4, 1, 2), nrow=2))
#           [,1]      [,2]
# [1,] 0.1582904 0.2794913
# [2,] 0.5176909 0.2889718

现在您可以使用以下内容绘制样本X_ {ij}:

set.seed(144)
matrix(apply(cbind(as.vector(n), as.vector(p)), 1, function(x) rbinom(1, x[1], x[2])), nrow=2)
#      [,1] [,2]
# [1,]    0    2
# [2,]    2    2

此表达式的cbind部分构建包含每个(n,p)配对的2列矩阵,apply部分为每个(n,p)对绘制单个二进制分布的样本,将matrix部分转换为矩阵。