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)
吗?那就一样了。
我无法找到为什么我在采样后没有得到正确的相关结构。
我在 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)
吗?那就一样了。