Saya ingin menghasilkan matriks korelasi acak sehingga distribusi elemen off-diagonal yang tampak kurang seperti biasa. Bagaimana saya bisa melakukannya?
Motivasinya adalah ini. Untuk satu set data deret waktu, distribusi korelasi sering terlihat cukup dekat dengan normal. Saya ingin menghasilkan banyak matriks korelasi "normal" untuk mewakili situasi umum dan menggunakannya untuk menghitung angka risiko.
Saya tahu satu metode, tetapi standar deviasi yang dihasilkan (dari distribusi elemen off-diagonal) terlalu kecil untuk tujuan saya: menghasilkan seragam atau baris acak normal dari matriks X , membakukan baris (kurangi rata-rata, bagi dengan standar deviasi), maka sampel matriks korelasi 1telah terdistribusi normal off-diagonal entri [Perbaruisetelah komentar: standar deviasi akan~n-1/2].
Adakah yang bisa menyarankan metode yang lebih baik yang saya dapat mengontrol standar deviasi?
Jawaban:
Saya pertama kali memberikan apa yang sekarang saya yakini sebagai jawaban yang kurang optimal; karena itu saya mengedit jawaban saya untuk memulai dengan saran yang lebih baik.
Menggunakan metode pokok anggur
Di utas ini: Bagaimana cara efisien menghasilkan matriks korelasi positif-semidefinit acak? - Saya menjelaskan dan menyediakan kode untuk dua algoritma yang efisien untuk menghasilkan matriks korelasi acak. Keduanya berasal dari sebuah makalah oleh Lewandowski, Kurowicka, dan Joe (2009).
Silakan lihat jawaban saya di sana untuk banyak angka dan kode matlab. Di sini saya hanya ingin mengatakan bahwa metode anggur memungkinkan untuk menghasilkan matriks korelasi acak dengan distribusi korelasi parsial (perhatikan kata "parsial") dan dapat digunakan untuk menghasilkan matriks korelasi dengan nilai off-diagonal yang besar. Berikut adalah angka yang relevan dari utas itu:
Saya pikir distribusi ini cukup "normal", dan orang dapat melihat bagaimana standar deviasi meningkat secara bertahap. Saya harus menambahkan bahwa algoritma ini sangat cepat. Lihat utas terkait untuk detailnya.
Jawaban asli saya
Modifikasi langsung metode Anda dapat melakukan trik (tergantung pada seberapa dekat Anda ingin distribusi menjadi normal). Jawaban ini terinspirasi oleh komentar @ cardinal di atas dan oleh jawaban @ psarka untuk pertanyaan saya sendiri. Bagaimana cara menghasilkan matriks korelasi acak peringkat penuh yang besar dengan beberapa korelasi kuat yang ada?
Semua matriks ini tentu saja pasti positif. Berikut ini adalah kode matlab:
Output dari kode ini (nilai eigen minimum dan maksimum) adalah:
sumber
Anda mungkin tertarik pada beberapa kode di tautan berikut:
Korelasi dan Co-integrasi
sumber
Jika Anda mencoba untuk menghasilkan matriks korelasi acak, pertimbangkan pengambilan sampel dari distribusi Wishart. Pertanyaan berikut ini memberikan informasi distribusi Wishart serta saran tentang cara sampel: Bagaimana cara efisien menghasilkan matriks korelasi positif-semidefinit acak?
sumber
Ini bukan jawaban yang sangat canggih, tetapi saya tidak dapat membantu tetapi berpikir itu masih jawaban yang bagus ...
Jika motivasi Anda adalah bahwa parameter korelasi yang dihasilkan oleh data deret waktu cenderung terlihat normal, mengapa tidak hanya mensimulasikan data deret waktu, hitung parameter korelasinya dan gunakan itu?
Anda mungkin punya alasan bagus untuk tidak melakukan ini, tetapi tidak jelas bagi saya dari pertanyaan Anda.
sumber