R 中 rtmvnorm() 的错误答案,同时采样截断正常

Wrong answer in rtmvnorm() in R while sampling truncated normal

我无法找到为什么我在采样后没有得到正确的相关结构。

我在 R 中使用 tmvtnorm 包中的 rtmvnorm。我正在使用 pdf 中提供的示例 1 作为此函数的部分。

sigma <- matrix(c(4,2,2,3), ncol=2)
x <- rtmvnorm(n=500, mean=c(1,2), sigma=sigma, upper=c(1,0))

当我使用上面的方法查找 cor(x)cov2cor(sigma) 时,我的结果看起来非常不同。

> cor(x)
#          [,1]      [,2]
#[1,] 1.0000000 0.2126776
#[2,] 0.2126776 1.0000000

> cov2cor(sigma)
#          [,1]      [,2]
#[1,] 1.0000000 0.5773503
#[2,] 0.5773503 1.0000000

我的objective是生成具有协方差结构的截断正态样本。

     [,1] [,2]
[1,]  9.0  3.6
[2,]  3.6 16.0

也许我在这里遗漏了什么。谁能用更好的方式向我解释一下?

你为什么感到惊讶? cov2cor(sigma) 是非截断法线的相关矩阵,而 cor(x) 是截断法线的相关矩阵。当然它们不一样。同样,cov(x) 不同于 sigma

你想比较 cov2cor(cov(x))cor(x) 吗?那就一样了。