【问题标题】:Wrong answer in rtmvnorm() in R while sampling truncated normal采样截断正常时 R 中 rtmvnorm() 中的错误答案
【发布时间】:2016-08-17 04:45:04
【问题描述】:

我无法找到采样后没有得到正确相关结构的原因。

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

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

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

也许我在这里遗漏了一些东西。有人可以更好地向我解释一下吗?

【问题讨论】:

    标签: r covariance normal-distribution truncated


    【解决方案1】:

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

    您想比较cov2cor(cov(x))cor(x) 吗?那将是相同的。

    【讨论】:

    • 谢谢@Li,您能否建议使用截断正态的协方差结构(例如sigma)生成随机数的最佳方法,这样我的cor(x) 与相关结构相同的sigma。我在上面的问题中提供了一个示例。
    • @Li 是的,我阅读了文档,它使用非截断法线并使用算法丢弃超出范围的值。
    • @Li,谢谢,我现在明白了。我试图重新创建一个模拟示例,其中说 1) 需求是在0.2xmean and 1.8xmean2 处截断的正常 RVs) 它们与 0.3 的相关系数呈正相关。 3)作者正在通过抽样估计预期需求。所以,我想知道是否有一种方法可以将 cor(x) 设置为特定数字。无论如何,谢谢。
    • @vivek 考虑接受哲元的回答,如果你觉得满意,也许可以投票
    • @ZheyuanLi 当然。我会写一个新问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 2017-10-16
    • 1970-01-01
    相关资源
    最近更新 更多