我有一个关于使用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二项式)
答案 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
部分转换为矩阵。