2013-09-26 78 views
1

我想從預先指定的相關矩陣創建相關的二元變量,其中大部分變量高度相關,某些變量相對不相關。指定相關矩陣用於生成相關二元變量

例如我的相關矩陣將是:

cor.mat<-matrix(0.8,nrow=50,ncol=50) 
cor.mat[,sample(1:50,10)]<-0.2 
diag(cor.mat) <- 1 

然後我會用rmvbin:

library(bindata) 
rmvbin(100, margprob=rep(.6,50), bincorr=cor.mat) 

然而,在這種情況下,我得到NaNs作爲輸出,因爲六西格瑪不是正定。

如何指定一個符合我的標準的相關矩陣(即大多數高相關性和少數低相關性)?

+5

這個問題似乎是脫離主題,因爲它是關於應用數學/統計。 – Frank

回答

0

您的相關矩陣應該是對稱的。這意味着如果您將對角線以下的所有內容都放在對角線上方,則它與對角線上方所有內容的鏡像一樣。相關矩陣必須是這種情況,因爲xi和xj的相關性應與xj和xi的相關性相同。

我將製作一個11x11矩陣,因爲我不想輸入您的50x50矩陣。高度相關部分看起來像這樣。

1 .8 .8 .8 .8 .8 .8 .8 
.8 1 .8 .8 .8 .8 .8 .8 
.8 .8 1 .8 .8 .8 .8 .8 
.8 .8 .8 1 .8 .8 .8 .8 
.8 .8 .8 .8 1 .8 .8 .8 
.8 .8 .8 .8 .8 1 .8 .8 
.8 .8 .8 .8 .8 .8 1 .8 
.8 .8 .8 .8 .8 .8 .8 1 

這是你的第8個變量的矩陣。然後再添加3個與你擁有的8個和對方相關性較低的另外3個。

1 .8 .8 .8 .8 .8 .8 .8 .2 .2 .2 
.8 1 .8 .8 .8 .8 .8 .8 .2 .2 .2 
.8 .8 1 .8 .8 .8 .8 .8 .2 .2 .2 
.8 .8 .8 1 .8 .8 .8 .8 .2 .2 .2 
.8 .8 .8 .8 1 .8 .8 .8 .2 .2 .2 
.8 .8 .8 .8 .8 1 .8 .8 .2 .2 .2 
.8 .8 .8 .8 .8 .8 1 .8 .2 .2 .2 
.8 .8 .8 .8 .8 .8 .8 1 .2 .2 .2 
.2 .2 .2 .2 .2 .2 .2 .2 1 .2 .2 
.2 .2 .2 .2 .2 .2 .2 .2 .2 1 .2 
.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 1 

該矩陣可以分爲4部分。只與高度相關的變量x1至x8之間存在相關性的部分,即左上部分。低相關變量x9到x11之間的相關部分,右下角。最後,右上角和左下角是三個和八個之間的相關性。這兩個必須彼此轉置。

有很多方法如果你擔心建立這個矩陣中R.

cormat=matrix(.8,nrow=11,ncol=11) 
cormat[,9:11]=.2 #set the right columns 
cormat[9:11,]=.2 #set the bottom rows 
diag(cormat)=1  #set the diagonal 

該矩陣不是正定只是檢查特徵值都與陽性

eigen(cormat)$values 
+0

感謝您的幫助。這似乎並沒有解決西格瑪不確定的事實。我正在尋找滿足這個標準的矩陣。 – ghb

+0

上面的矩陣是正定的。我也認爲它符合你上面的其他要求。 – Seth

+0

我添加了一些語法來檢查矩陣實際上是pos-def,所以你可以檢查你的確定。 – Seth