如何在R中创建具有概率分布的矩阵

时间:2016-12-23 12:38:03

标签: r matrix probability-distribution

我想在R中创建一个矩阵,其元素[-1,0,1]的概率分别为[1 / 6,2 / 3,1 / 6]。概率可能在运行时期间发生变化对于静态概率我得到了输出,但问题是概率的动态变化。  例如,如果我使用[sqrt(3),0,-sqrt(3)]为上述概率创建矩阵,则所需的输出为。

注意:如上所述,概率不应该是静态的。它可能在运行时有所不同。

请帮助解决这个问题。

enter image description here

2 个答案:

答案 0 :(得分:3)

假设你想要一个2x3矩阵:

matrix(sample(c(-1,0,1), size=6, replace=TRUE, prob=c(1/6,2/3,1/6)), nrow=2)

因此,您可以使用prob中定义的概率从所需的值中进行采样。这只是一个矢量,但您可以使用matrix将其制作成所需形状的矩阵。用变量而不是值替换概率,使其不是静态的。

如果数字应按照某种方案分配,而不是根据概率随机抽取,则复制矢量元素并将其混洗:

 matrix(sample(rep(c(-1,0,1), times=c(1,4,1))), nrow=2)

答案 1 :(得分:1)

您可以尝试生成mxn矩阵:

sample.dynamic.matrix <- function(pop.symbols, probs, m, n) {
   samples <- sample(pop.symbols, m*n, prob = probs, replace=TRUE)
   return(matrix(samples, nrow=m))
}

set.seed(123)
sample.dynamic.matrix(-1:1, c(1/6,2/3,1/6), 2, 3)
#     [,1] [,2] [,3]
#[1,]    0    0   -1
#[2,]    1   -1    0