我有一个值在 0 和 1 之间的矩阵垫(所以可以是概率),如下所示:
> t <- c(22, 65, 37, 84, 36, 14, 9, 19, 5, 49)
> x <- t/max(t)
> mat <- x%*%t(x)
我现在想将此矩阵 b 转换为马尔可夫转换矩阵,即每行的元素加起来为 1。我通过将矩阵除以 rowSums 来实现这一点:
> y <- mat/rowSums(mat)
> z <- y/rowSums(y)
> rowSums(z)
[1] 1 1 1 1 1 1 1 1 1 1
但是,这会导致每列中的元素具有相同的值:
[,1] [,2] [,3] [,4] [,5]
[1,] 0.06470588 0.1911765 0.1088235 0.2470588 0.1058824
[2,] 0.06470588 0.1911765 0.1088235 0.2470588 0.1058824
[3,] 0.06470588 0.1911765 0.1088235 0.2470588 0.1058824
[4,] 0.06470588 0.1911765 0.1088235 0.2470588 0.1058824
这不是我想要的。我要求每个元素具有不同的值,但我不知道如何做到这一点。任何建议表示赞赏!