2016-08-17 131 views
1

我无法找到为什么我没有在采样后获得正确的相关结构。R中rtmvnorm()中的错误答案,而采样截断正常

我在tmvtnorm包中使用了R中的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 

也许我在这里失去了一些东西。有人能以更好的方式向我解释吗?

回答

1

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

想要比较cov2cor(cov(x))cor(x)?这将是相同的。

+0

谢谢@李,你能提出什么是最好的方法,然后生成随机数使用协方差结构的截断法线(说'sigma'),使我的'cor(x)'相同的相关结构的' sigma'。我在上面的问题中提供了一个例子。 – vivek

+0

@Li是的,我阅读文档,它使用非截断法线并使用算法来放弃超出范围的值。 – vivek

+0

@李,谢谢,我现在明白了。我试图重新创建一个模拟的例子,其中说1)需求在0.2xmean和1.8xmean处截断正常RVs2)它们与相关系数0.3正相关。 3)作者通过抽样估计预期需求。所以,我想知道是否有一种方法让cor(x)达到一个特定的数字。不管怎么说,多谢拉。 – vivek