Çok değişkenli bir Gauss dağılımından değer üretme


14

Şu anda ortalama vektör ve kovaryans matris ile çok değişkenli normal dağılıma sahip boyutlu rastgele değişken değerlerini simüle etmeye çalışıyorum .Nμ = ( μ 1 , . . . , Μ K ) T GXμ=(μ1,...,μN)TS

Ters CDF yöntemine benzer bir yordam kullanmayı umuyorum, yani önce bir -boyutlu tekdüze rastgele değişken ve daha sonra bu dağılımın ters CDF'sine bu şekilde değeri üretmek istiyorum .U XNUX

Prosedür iyi belgelenmediğinden ve MATLAB'daki mvnrnd işlevi ile Wikipedia'da bulduğum bir açıklama arasında küçük farklılıklar olduğundan sorun yaşıyorum .

Benim durumumda, dağılımın parametrelerini rastgele seçiyorum. Özellikle, her bir aracı, , tek tip bir dağılım . Daha sonra aşağıdaki prosedürü kullanarak kovaryans matrisi inşa ediyorum : U ( 20 , 40 ) SμiU(20,40)S

  1. Daha düşük bir üçgen matris oluşturma için ve için L ( i , i ) = 1 i = 1 .. N L ( i , j ) = U ( - 1 , 1 ) i < jLL(i,i)=1i=1..NL(i,j)=U(1,1)i<j

  2. Let transpozunu göstermek .L T LS=LLTLTL

Bu prosedür, simetrik ve pozitif kesin olmasını sağlamamı sağlar. Aynı zamanda, daha düşük bir üçgen matris sağlar böylece I dağılımının değerleri üretmek için gerekli olduğuna inanıyoruz.L S = L L TSLS=LLT

Wikipedia'daki yönergeleri kullanarak , aşağıdaki gibi bir boyutlu üniforma kullanarak değerleri üretebilmeliyim :NXN

  • X=μ+LΦ1(U)

Ancak MATLAB fonksiyonuna göre, bu tipik olarak şu şekilde yapılır:

  • X=μ+LTΦ1(U)

Burada , bir ters CDF olan boyutlu, ayrılabilir, normal dağılım ve her iki yöntem arasındaki tek fark, sadece kullanımı olup olmadığı veya . N L L TΦ1NLLT

MATLAB mı yoksa Wikipedia mı? Yoksa ikisi de yanlış mı?


2
Belirtildiği gibi, her ikisi de yanlıştır, çünkü bir satır vektörü iken bir sütun vektörü olmalıdır . Eğer satırlar ve sütunlar düz olsun, bu soru sadece hangi sürümünü belirleyerek kendisini cevap vermelidir veya veren bir matrisi ve hangi sürümün sadece bir sayı verdiğini: matris sürümünün beklentisini hesaplayabildiğinizi ve verdiğini kontrol edin . T i n v n o r m ( U ) ( X - μ ) ( X - μ ) ( X - μ ) ( X - μ ) SμTinvnorm(U) (Xμ)(Xμ)(Xμ)(Xμ)S
whuber

@whuber Yeap. Sorunun biçimlendirmesinde değişiklikler yapıldı. Bahşiş için teşekkürler - kesinlikle kontrol etmenin en kolay yolu.
Berk U.Temmuz

Yanıtlar:


14

Eğer , standart normal RV bir kolon vektörü, set ise daha sonra, , kovaryans olan . Y = L X Y L L TXN(0,I)Y=LXYLLT

Ortada bir sütun vektörü olarak belirtmiş olsanız bile, yaşadığınız sorunun matlab'ın mvnrnd işlevinin satır vektörlerini örnek olarak döndürmesinden kaynaklanabileceğini düşünüyorum . Örneğin,

 > size(mvnrnd(ones(10,1),eye(10))  
 > ans =
 >      1    10

Ve bir satır vektörünü dönüştürmenin size zıt formülü verdiğini unutmayın. Eğer bir satır vektördür sonra , aynı zamanda, bir sıra vektörü yani kolon vektörü ve kovaryans olan yazılabilir . Z = X L T Z T = L X T Z T E [ Z T Z ] = L L TXZ=XLTZT=LXTZTE[ZTZ]=LLT

Gerçi yazdıklarını dayanarak, Vikipedi formülü doğrudur: eğer Matlab tarafından döndürülen bir satır vektörü, sola-çarpın olamaz bunu tarafından idi L T . (Ancak sağ çarparak L T size aynı kovaryans ile bir örnek verecek L L T ).Φ1(U)LTLTLLT


Matlab'daki mvnrnd yardımının örnek sayısı olarak kullandığını unutmayın ; boyut sayısı D'dir . Bu nedenle, D boyutlu çok değişkenli bir normalden N örnekleri isterseniz , bunları bir N × D matrisi olarak döndürür . NDNDN×D
jpillow
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.