【问题标题】:create a matrix given a vector in R在给定 R 中的向量的情况下创建矩阵
【发布时间】:2021-04-14 15:40:50
【问题描述】:

我在 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)

有什么帮助吗?

【问题讨论】:

  • 我猜你可以看到乳胶在你的帖子中不起作用。请尝试更好地格式化您的问题。
  • 我这里怎么写latex?
  • 你不能。但您可以插入带有链接的外部图片。

标签: r loops matrix


【解决方案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

输出:

> 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

【讨论】:

  • P(2,1)= 1/7*min(1/4/1/8,1) 即 1/7。对角线项是 1-sum(所有值在行)
  • 函数必须是 1/7*min(p[1]/p[2],1) 才能进入 p(2,1)
  • 我上传了一张新照片以便更好地理解
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 2019-10-10
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多