Saat ini saya mencoba untuk nilai-nilai simulasi dari berdimensi variabel acak yang memiliki distribusi normal multivariat dengan mean vector dan kovarians matriks .
Saya berharap untuk menggunakan prosedur yang sama dengan metode inverse CDF, yang berarti bahwa saya ingin pertama menghasilkan berdimensi seragam variabel acak dan kemudian steker yang ke CDF kebalikan dari distribusi ini, sehingga untuk menghasilkan nilai .
Saya mengalami masalah karena prosedurnya tidak didokumentasikan dengan baik dan ada sedikit perbedaan antara fungsi mvnrnd di MATLAB dan deskripsi yang saya temukan di Wikipedia .
Dalam kasus saya, saya juga memilih parameter distribusi secara acak. Secara khusus, saya menghasilkan masing-masing cara, , dari distribusi seragam . Saya kemudian membuat matriks kovarians menggunakan prosedur berikut:
Buat matriks segitiga lebih rendah di mana untuk dan untuk
Biarkan di mana menunjukkan transpos dari .
Prosedur ini memungkinkan saya untuk memastikan bahwa simetris dan pasti positif. Ini juga menyediakan matriks segitiga lebih rendah sehingga , yang saya percaya diperlukan untuk menghasilkan nilai dari distribusi.
Menggunakan pedoman di Wikipedia, saya harus dapat menghasilkan nilai-nilai menggunakan seragam dimensi sebagai berikut:
Menurut fungsi MATLAB, ini biasanya dilakukan sebagai:
Dimana adalah CDF terbalik dari berdimensi, dipisahkan, distribusi normal, dan satu-satunya perbedaan antara kedua metode hanyalah apakah penggunaan atau . N L L T
Apakah MATLAB atau Wikipedia adalah jalan yang harus ditempuh? Atau keduanya salah?
Jawaban:
Jika adalah vektor kolom dari standar yang normal RV, maka jika Anda menetapkan Y = L X , kovarians dari Y adalah L L T .X∼N(0,I) Y=LX Y LLT
Saya pikir masalah yang Anda hadapi mungkin timbul dari fakta bahwa fungsi mvnrnd matlab mengembalikan vektor baris sebagai sampel, bahkan jika Anda menentukan rata-rata sebagai vektor kolom. misalnya,
Dan perhatikan bahwa mengubah vektor baris memberi Anda formula yang berlawanan. jika adalah vektor baris, maka Z = X L T juga merupakan vektor baris, sehingga Z T = L X T adalah vektor kolom, dan kovarians dari Z T dapat ditulis E [ Z T Z ] = L L T .X Z=XLT ZT=LXT ZT E[ZTZ]=LLT
Berdasarkan apa yang Anda tulis meskipun, rumus Wikipedia benar: jika adalah vektor baris dikembalikan oleh matlab, Anda tidak bisa meninggalkan-kalikan dengan L T . (Tapi benar-mengalikannya dengan L T akan memberikan contoh dengan kovarians yang sama L L T ).Φ−1(U) LT LT LLT
sumber