Standart sapma ile yaklaşık normalde diyagonal olmayan girişler dağıtan rastgele korelasyon matrisi nasıl oluşturulur?


11

Çapraz diyagonal elemanlarının dağılımı yaklaşık olarak normal görünecek şekilde rastgele bir korelasyon matrisi oluşturmak istiyorum. Nasıl yapabilirim?

Motivasyon bu. Bir dizi için zaman serisi verileri, korelasyon dağılımı genellikle normale oldukça yakın görünüyor. Genel durumu temsil etmek için birçok "normal" korelasyon matrisi oluşturmak ve bunları risk sayısını hesaplamak için kullanmak istiyorum.n


Bir yöntem biliyorum, ancak ortaya çıkan standart sapma (diyagonal elemanların dağılımının) amacım için çok küçük: bir matris düzgün veya normal rastgele satırlarını oluşturun , satırları standartlaştırın (ortalamayı çıkarın, standart sapmaya göre bölün), ardından örnek korelasyon matrisi normalde diyagonal olmayan girişleri dağıttı [ Yorumlardan sonra güncelleme : standart sapma ].X 1nX1n1XXn1/2

Herkes standart sapmayı kontrol edebileceğim daha iyi bir yöntem önerebilir mi?


1
@Richard, sorunuz için teşekkürler. Ne yazık ki, yukarıda tarif yöntem olacaktır değil normalde dağıtılır girdileri üretmek. Çaprazlar 1 olasılıkla ve köşegenler ile arasında sınırlanmıştır . Şimdi, yeniden ölçeklendirilmiş girişler asimptotik olarak sıfır merkezli normal bir dağılıma yaklaşacaktır. Aslında çözmeye çalıştığınız sorun hakkında daha fazla bilgi verebilir misiniz? Ve neden "normal olarak dağılmış" köşegenleri istiyorsunuz? + 11+1
kardinal

1
@Richard, demek istediğim, ve her birinin girişi standart normal olacak şekilde iki bağımsız vektör. Bilgi işlem ; yani ve arasındaki örnek korelasyonu . Sonra dağıtımda standart normal rasgele değişkene yakınsar. "Yeniden ölçeklendirildi" ile, çarpımı kastediyorum ki bu dejenere olmayan sınırlayıcı bir dağılım elde etmek için gereklidir. Y = ( E 1 , Y 2 , ... , Y, n ) ρ , n = s x y / ( s x s y ) X, Y, n, 1 / 2 ρ n , n 1 / 2X=(X1,X2,,Xn)Y=(Y1,Y2,,Yn)ρ^n=sxy/(sxsy)XYn1/2ρ^nn1/2
kardinal

1
@Richard, "problemin" özü, (a) her bir satırın normlarının 1 olduğu ve (b) girişlerin rastgele bir örneklemden üretildiği konusunda iki kısıtlama yaparak, mutlaka korelasyonları oldukça zorlamaya küçük (sırasına nedeni sıralar arasında keyfi büyük korelasyon var ve hala çok bağımsızlık böylece varlığında 1 olmak üzere her satırın normları alamayan olmasıdır..n1/2
kardinal

1
... şimdi, tarafından büyüklük içinde daha büyük korelasyon alabilirsiniz ilk yeniden normalize önce kendi aralarında satırları ilişkilendirmek. Ancak, esasen oynamak için sadece bir parametreniz var, bu nedenle hem asimtotik ortalama hem de varyans bu parametreye bağlı olacaktır. Yani, bu muhtemelen size istediğiniz gibi esneklik vermeyecektir.
kardinal

1
Elbette, basit bir davaya bakalım. Genellik kaybı olmadan olarak kabul edeceğimiz üretme matrisini çağırın . Şimdi, oluşturmak sütun arasında IID olarak vektörlerin her vektör elemanları korelasyon ile equicorrelated standart normal rasgele değişkenlerdir şekilde . Şimdi, uyguladığınız prosedürü kullanın. Let arasındaki numune korelasyon belirtmek inci ve ait * sıranın inci * . Sonra sabit , ,m x N x ρ ρ i j ı j x m , n ∞ iken n 1 / 2 ( ρ i j - ρ ) , N ( 0 , ( 1 - ρ 2 ) 2 )Xm×nXρρ^ijijXmnn1/2(ρ^ijρ)dağılımda rastgele değişkene yakınsar . N(0,(1ρ2)2)
kardinal

Yanıtlar:


5

İlk önce, optimal olmayan bir cevap olduğuna inandığım şeyi sağladım; bu nedenle cevabımı daha iyi bir öneri ile başlamak için düzenledim.


Asma yöntemini kullanma

Bu konuda: Rasgele pozitif-semidefinite korelasyon matrisleri nasıl verimli bir şekilde üretilir? - Rastgele korelasyon matrisleri oluşturmak için iki verimli algoritmanın kodunu tanımladım ve sağladım. Her ikisi de Lewandowski, Kurowicka ve Joe (2009) tarafından hazırlanan bir makaleden alınmıştır .

Çok sayıda figür ve matlab kodu için lütfen cevabımı bakın . Burada sadece asma yönteminin kısmi korelasyonların herhangi bir dağılımıyla rastgele korelasyon matrisleri üretmeye izin verdiğini ("kısmi" kelimesine dikkat edin) ve büyük diyagonal olmayan değerlere sahip korelasyon matrislerini üretmek için kullanılabileceğini söylemek istiyorum. İşte o iplikten ilgili rakam:

Asma yöntemi

Alt grafikler arasında değişen tek şey, kısmi korelasyonların dağılımının civarında ne kadar yoğunlaştığını kontrol eden bir parametredir . OP diyagonal olarak yaklaşık normal bir dağılım istediğinden, burada diyagonal olmayan elemanların histogramları olan grafik (yukarıdaki ile aynı matrisler için):±1

Diyagonal olmayan elemanlar

Bu dağılımların makul "normal" olduğunu düşünüyorum ve standart sapmanın kademeli olarak nasıl arttığını görebilirsiniz. Eklemeliyim ki algoritma çok hızlı. Ayrıntılar için bağlantılı konuya bakın.


Orijinal cevabım

Senin yöntemin bir düz ileri modifikasyon olabilir hile yapmak (eğer dağıtım normale olmak istiyorum ne kadar yakın bağlı olarak). Bu cevap, @ cardinal'in yukarıdaki yorumları ve @ psarka'nın kendi soruma verdiği yanıttan ilham aldı. Bazı güçlü korelasyonları olan büyük bir tam dereceli rastgele korelasyon matrisi nasıl üretilir?

İşin püf noktası örneklerini birbiriyle ilişkilendirmektir (özellikler değil, örnekler). Bir örnek: rastgele matris oluşturmak bir boyutu (standart normal tüm elemanları) ve daha sonra bir rastgele sayı eklemek her satır için, için . İçin bağıntı matrisinin (özelliklerini standartlaştırılması sonra) yaklaşık olarak normal standart sapma ile dağıtılmış elemanları diyagonal kapalı olacaktır . ForX 1000 × 100 [ - a / 2 , a / 2 ] a = 0 , 1 , 2 , 5 a = 0 XX 1 / XX1000×100[a/2,a/2]a=0,1,2,5a=0XX a>0aa=0,1,2,51/1000a>0, Ben değişkenleri ortalamadan korelasyon matrisini hesaplarım (eklenen korelasyonları korur) ve diyagonal olmayan elemanların standart sapması bu şekilde gösterildiği gibi ile büyür (satırlar karşılık gelir ):aa=0,1,2,5

rasgele korelasyon matrisleri

Tüm bu matrisler elbette pozitif tanımlıdır. İşte matlab kodu:

offsets = [0 1 2 5];
n = 1000;
p = 100;

rng(42) %// random seed

figure
for offset = 1:length(offsets)
    X = randn(n,p);
    for i=1:p
        X(:,i) = X(:,i) + (rand-0.5) * offsets(offset);
    end
    C = 1/(n-1)*transpose(X)*X; %// covariance matrix (non-centred!)

    %// convert to correlation
    d = diag(C);
    C = diag(1./sqrt(d))*C*diag(1./sqrt(d));

    %// displaying C
    subplot(length(offsets),3,(offset-1)*3+1)
    imagesc(C, [-1 1])

    %// histogram of the off-diagonal elements
    subplot(length(offsets),3,(offset-1)*3+2)
    offd = C(logical(ones(size(C))-eye(size(C))));
    hist(offd)
    xlim([-1 1])

    %// QQ-plot to check the normality
    subplot(length(offsets),3,(offset-1)*3+3)
    qqplot(offd)

    %// eigenvalues
    eigv = eig(C);
    display([num2str(min(eigv),2) ' ... ' num2str(max(eigv),2)])
end

Bu kodun çıktısı (minimum ve maksimum özdeğerler):

0.51 ... 1.7
0.44 ... 8.6
0.32 ... 22
0.1 ... 48

arazinizle birlikte bu yöntemi kullanarak elde ettiğiniz en küçük özdeğerlerin değerini çizebilir misiniz?
user603

1
Şekli değiştirmeden, burada en küçük özdeğerlerin sırasıyla 0.5, 0.4, 0.3 ve 0.1 olduğunu (şeklimin her satırı için) yazabilirim. En büyükleri 1.7'den 48'e büyür.
amip

fakat bunlar korelasyon matrisinin veya X'X'in özdeğerleri midir?
user603

Bunlar diyagonalde olduğu için normalize edilen matrisimin özdeğerleridir - yani korelasyon matrisi. Yanıtımı kodda görebilmek için güncelledim. Bunun mümkün olduğundan şüphe uyandıran şeyi sorabilir miyim? Büyük korelasyon matrislerinin çok küçük diyagonal olmayan elemanlara sahip olması gerektiğini düşünmek için herhangi bir neden var mı? C
amoeba

Bunun imkansız olduğunu düşünmüyorum, sadece koddan göremedim (bu noktada yıllardır matlab kullanmadı)
user603


1

Rastgele korelasyon matrisleri oluşturmaya çalışıyorsanız, Wishart dağılımından örneklemeyi düşünün. Bu soru Wishart dağılımına ilişkin bilgilerin yanı sıra örneklemeyle ilgili öneriler de sunmaktadır: Rastgele pozitif-semidefinite korelasyon matrisleri nasıl verimli bir şekilde üretilir?


Ancak, sonuçta ortaya çıkan diyagonal elemanların Wishart dağılımının parametreleriyle standart sapması kontrol edilebilir mi? Öyleyse nasıl?
amip

1

Bu çok sofistike bir cevap değil, ama yardım edemiyorum ama yine de iyi bir cevap olduğunu düşünüyorum ...

Motivasyonunuz zaman serisi verileri tarafından üretilen korelasyon parametrelerinin normal görünme eğilimindeyse, neden sadece zaman serisi verilerini simüle etmemek, korelasyon parametrelerini hesaplamak ve bunları kullanmak değil?

Bunu yapmamak için iyi bir nedeniniz olabilir, ancak sorunuzdan bana açık değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.