从 R 中的逆 Wishart 分布中采样

问题描述 投票:0回答:1

我正在阅读《贝叶斯数据分析》一书中的以下内容

书中,矩阵S定义如下:

为了回答这个问题,我们假设我已经计算了S。我希望能够从 Sigma|y 分布(即逆 Wishart 分布)中采样。我正在使用

MCMCpack
中的
R
包来执行此操作,但我不太明白的是该函数是否期望我传递 S 还是 S 的逆,即

library(MCMCpack)
S <- matrix(c(1,.3,.3,1),2,2)

## Use S?
riwish(4, S)

## or use S^{-1}
riwish(4, solve(S))

从文档中我不清楚应该是哪一个。

r inverse
1个回答
1
投票

我认为解决这个问题的方法是仔细考虑每个对象/变量是否处于variance尺度或 precision(逆方差)尺度。

?riwish
说:

具有“v”自由度和尺度矩阵“S”的逆 Wishart 随机变量的平均值为 (v-p-1)^{-1} S。

我们希望最终答案(协方差矩阵的后验分布)位于方差尺度上。如果随机变量的均值与

S
成正比,则必定意味着
S
作为
riwish
的输入也应该位于协方差尺度上。

我们还可以通过蛮力确认使用

S
为我们提供了一个合理的值(因为 Jeffreys 先验的信息量很弱,我们应该得到大约等于
S
的平均值):

S <- matrix(c(1,.3,.3,1),2,2)
set.seed(101)
replicate(10000, MCMCpack::riwish(4, S)) |> apply(c(1,2), mean)

         [,1]      [,2]
[1,] 1.009743 0.2656540
[2,] 0.265654 0.9415342
Sinv <- solve(S)
replicate(10000, MCMCpack::riwish(4, Sinv)) |> apply(c(1,2), mean)

           [,1]       [,2]
[1,]  1.0273954 -0.3092717
[2,] -0.3092717  1.0217894
© www.soinside.com 2019 - 2024. All rights reserved.