我正在阅读《贝叶斯数据分析》一书中的以下内容
书中,矩阵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))
从文档中我不清楚应该是哪一个。
我认为解决这个问题的方法是仔细考虑每个对象/变量是否处于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