繁体   English   中英

在 R 中创建一个给定向量的矩阵

[英]create a matrix given a vector in R

在此处输入图像描述 在此处输入图像描述 我在 R 中有以下向量:

p = c(1/4,1/8,1/6,1/16,3/16,1/12,1/8);p

长度为 7。

我想创建一个 N 乘以 N 的矩阵,这里 N = 7,但条目与 Metropolis Hastings 算法一起使用。 如图所示:
所以 $r(x,y)=1/7$

和 $p(x,y) =r(x,y) \min(\frac{\pi(y)}{\pi(x)},1)$

例如 $$p(1,2) = 1/7 \cdot \min(\frac{1/8}{1/4},1) =1/14$$

$$p(1,3) = 1/7 \cdot \min(\frac{1/6}{1/4},1) =2/21$$ 除了入口 $p(1,1) = 1-\sum_{i=2}^{j=7}p(i,j).$ 这个总和将在所有对角线条目中。

r = 1/7
r*min(p[2]/p[1],1)

有什么帮助吗?

我不完全确定我理解你想要什么(例如,为什么'P(2,1)= 1/7'?),但我想我会试一试。 这有帮助吗?

f <- function(x) p[-x]/p[x]*(1/7)
M <- t(sapply(1:7,f))
M[1,1] <- 0

Output:

> M

          [,1]      [,2]       [,3]       [,4]       [,5]       [,6]
[1,] 0.0000000 0.0952381 0.03571429 0.10714286 0.04761905 0.07142857
[2,] 0.2857143 0.1904762 0.07142857 0.21428571 0.09523810 0.14285714
[3,] 0.2142857 0.1071429 0.05357143 0.16071429 0.07142857 0.10714286
[4,] 0.5714286 0.2857143 0.38095238 0.42857143 0.19047619 0.28571429
[5,] 0.1904762 0.0952381 0.12698413 0.04761905 0.06349206 0.09523810
[6,] 0.4285714 0.2142857 0.28571429 0.10714286 0.32142857 0.21428571
[7,] 0.2857143 0.1428571 0.19047619 0.07142857 0.21428571 0.09523810

暂无
暂无

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

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