Belirli bir örnek kovaryans matrisi ile veri üretmek


22

Bir kovaryans matrisi Σs , örnek kovaryans matrisi Σ^=Σs ?


Daha genel olarak: sık sık bir yoğunluk ile ilgili üretim verileri ile ilgili olarak f(x|θ) , veri ile x bazı parametre vektörü verilen θ . Bu, daha sonra \ boldsymbol {\ hat \ theta} değerini tahmin edebileceğimiz bir örneklemle sonuçlanır θ^. İlgilendiğim şey ters problem: Ya \ boldsymbol \ theta_ {s} 'in bir dizi parametresi verilirseθs ve \ boldsymbol {\ hat \ theta} = \ boldsymbol gibi bir örnek x üretmek istiyorsak \ theta_ {s} .xθ^=θs

Bu bilinen bir problem mi? Böyle bir yöntem yararlı mı? Algoritmalar mevcut mu?


Attilio Meucci tarafından ölçeklenebilir bir çözüm sunulmaktadır. Bu Risk Makale ve matlab koduna bakınız
Peter Cotton

Yanıtlar:


16

Bu tür problemler için iki farklı tipik durum vardır:

i) popülasyon özellikleri belirtilenlerle uyuşan belirli bir dağıtımdan bir örnek oluşturmak istiyorsanız (ancak örnekleme varyasyonu nedeniyle, tam olarak eşleşen örnek özelliklere sahip değilsiniz).

ii) örnek özellikleri belirtilen özelliklerle eşleşen bir örnek oluşturmak istiyorsunuz (ancak örnek miktarlarının önceden belirlenmiş bir değer kümesine tam olarak uyması nedeniyle, istediğiniz dağıtımdan gelmiyor).

İkinci davayı istiyorsun - fakat ilk davayla aynı yaklaşımı takip ederek, ekstra bir standardizasyon adımı ile anlıyorsun.

Dolayısıyla, çok değişkenli normaller için, ya oldukça basit bir şekilde yapılabilir:

İlk durumda, nüfus yapısı olmadan rastgele normları kullanabilirsiniz (örneğin, beklenti 0 ve kimlik kovaryansı matrisi olan standart standart kimliği gibi) ve daha sonra dayatabilirsiniz - kovaryans matrisi elde etmek ve istediğiniz demek için dönüştürün. Eğer ve nüfusun ortalama ve kovaryans ihtiyaç ve IID standart normal, hesaplamak bazıları için, (örneğin, uygun bir Cholesky parçalanması yoluyla elde edilebilir) . Daha sonra istenen popülasyon özelliklerine sahiptir.Σ z y = L z + μ L L L = Σ L yμΣzy=Lz+μLLL'=ΣLy

İkincisi ile, rastgele değişimleri sıfır ortalama ve özdeş kovaryanstan (örnek sıfıra sıfır ve örnek kovaryansı ) yapmaktan sonra rastgele değişimleri gidermek için önce rastgele normlarınızı dönüştürmeniz gerekir . Fakat bu örnek sapmayı kesin ortalama çıkarmanın ilk adımı , varyans dağılıma müdahale eder. (Küçük örneklerde oldukça şiddetli olabilir.) 0 Ibenn0ben

Bu, örnek ortalaması çıkarılarak yapılabilir ( ) ve Cholesky ayrışma hesaplanması . Eğer sola Cholesky faktörü, sonra da örnek ortalaması 0 ve kimlik örnek kovaryans sahip olmalıdır. Daha sonra hesaplayabilir ve istenen örnek anlarla bir örneğiniz olabilir. (Örnek miktarlarınızın nasıl tanımlandığına bağlı olarak, gibi faktörlerle çarpma / bölmeyle ilgili ekstra küçük bir keman olabilir , ancak bu ihtiyacı tanımlamak yeterince kolaydır.)z = z - ˉ z z L z ( 0 ) = ( L ) - 1 z y = L z ( 0 ) + μ zz*=z-z¯z*L*z(0)=(L*)-1z*y=Lz(0)+μn-1n


1
+1. Geçen gün, belirli bir örnek kovaryans matrisi ile bazı veriler üretmem gerekiyordu, nasıl yapılacağını bilmiyordum ve bazı nedenlerden dolayı cevabınızı bulmam çok zaman aldı. Bu konunun görünürlüğünü arttırmak ve önerilerinizi göstermek için, bazı Matlab kodları ile birlikte başka bir cevap gönderdim.
amip diyor Reinstate Monica,

@amoeba Burada kullanmamış olduğunuz arama terimlerinden birini burada henüz soru etiketlerine koyma ihtimalinin olup olmadığını merak ediyorum (veya muhtemelen birkaçını, yine de bulunmasına yardımcı olması gereken, sorunun metnine küçük bir düzenlemeye eklemek) ). Şimdi ben de aynı şeyi R'de yapmalı mıyım diye merak ediyorum ... ama cevabımda daha iyi mi yoksa sizinkilerinize ek olarak mı?
Glen_b -Reinstate Monica

1
Soruyu düzenleme özgürlüğünü zaten kullandım ve ayrıca cevabımı olabildiğince fazla anahtar kelime içerecek şekilde formüle etmeye çalıştım. Umarım bu yardımcı olur. Bu arada, bu basit ipucunun (gerekli kovaryansa geçmeden önce üretilen verileri beyazlatmak) google'ı çok zorlaştırmasından şaşırdım; cevabını bulana kadar hiçbir şey bulamadım (CV'de veya başka yerlerde).
amip diyor Reinstate Monica

1
@ amoeba Oh, tamam, teşekkürler. Evet, aslında, çok değişkenli dava için herhangi bir yerde bahsettiğimi hatırlayamadığımı söyleyemem (şüphesiz ki, çünkü tek değişkenli dava için çoktan düşündüğünüzde ya da tek değişkenli durumda zaten görmüştüm).
Glen_b -Reinstate Monica

Z|z¯=μ,COv(z)=Σ

17

@Glen_b, bazı kodlarla göstermek istediğim iyi bir cevap verdi (+1).

Nasıl oluşturmak için örnekler arasından , belirli bir kovaryans matrisi ile boyutlu değişkenli Gauss dağılımı ? Bu, standart bir Gaussian'dan örnekler üreterek ve bunları kovaryans matrisinin bir kare kökü ile çarparak, örneğin ile yapmak kolaydır . Bu, CV'deki birçok iş parçacığında ele alınmaktadır, örneğin burada: Önceden belirlenmiş bir korelasyon matrisi ile nasıl veri üretebilirim? İşte basit bir Matlab uygulaması:d Σ c h o l ( Σ )ndΣchOl(Σ)

n = 100;
d = 2;
Sigma = [ 1    0.7  ; ...
          0.7   1   ];
rng(42)
X = randn(n, d) * chol(Sigma);

Elde edilen verinin örnek kovaryans matrisi elbette tam olarak ; örneğin yukarıdaki örnekte dönerΣcov(X)

1.0690    0.7296
0.7296    1.0720

Önceden belirlenmiş bir örnek korelasyonu veya kovaryans matrisi ile veri nasıl oluşturulur ?

@Glen_b'in yazdığı gibi, standart bir Gaussian'dan veri ürettikten sonra, merkez, beyazlatır ve standartlaştırır, böylece örnek kovaryans matrisi ; ancak o zaman ile çarpın .c h O l ( Σ )benchOl(Σ)

Matlab örneğimin devamı:

X = randn(n, d);
X = bsxfun(@minus, X, mean(X));
X = X * inv(chol(cov(X)));
X = X * chol(Sigma);

Şimdi cov(X), gerektiği gibi geri döner

1.0000    0.7000
0.7000    1.0000

+1. Her nasılsa, bu soru CV'de çeşitli yerlerde çeşitli şekillerdedir. Çok değişkenli dağılımın gauss olmadığını biliyorsak, ilerlemenin bir yolu var mı?
rgk

Çok değişkenli dağılımın şeklini biliyorsanız, belki de bazı durumlarda bunun gibi görünmesini istersiniz.
Glen_b -Reinstate Monica,
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.