2016-08-17 132 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