Misalkan kita punya
X 2 ∼ unif ( n , 0 , 1 ) ,
di mana adalah sampel acak ukuran seragam, dan
Maka korelasi antara dan Z adalah 0,4 .
Bagaimana saya bisa memperluas ini ke tiga variabel: , X 2 , X 3 ?
Misalkan kita punya
X 2 ∼ unif ( n , 0 , 1 ) ,
di mana adalah sampel acak ukuran seragam, dan
Maka korelasi antara dan Z adalah 0,4 .
Bagaimana saya bisa memperluas ini ke tiga variabel: , X 2 , X 3 ?
Jawaban:
Pertanyaan tersebut berisi beberapa kesalahan seperti yang tercantum dalam komentar - seperti yang didefinisikan dalam pertanyaan, Z tidak seragam dan tidak memiliki korelasi yang ditentukan.
kardinal menyebutkan kopula, dan itulah cara paling umum untuk melakukannya. Namun, ada beberapa cara yang cukup mudah untuk mendapatkan seragam berkorelasi (yang dapat dilihat sebagai jalan pintas ke berbagai jenis kopula).
Jadi mari kita mulai dengan beberapa cara untuk mendapatkan sepasang seragam berkorelasi.
1) Jika Anda menambahkan dua seragam hasilnya adalah segitiga, bukan seragam. Tetapi Anda dapat menggunakan cdf dari variabel yang dihasilkan sebagai transformasi untuk membawa hasilnya kembali ke seragam. Hasilnya tidak berkorelasi linier lagi, tentu saja.
Inilah fungsi R untuk mengubah segitiga simetris pada (0,2) menjadi seragam standar
t2u = function(x) ifelse(x<1, x^2, 2-(2-x)^2)/2
Mari kita periksa apakah itu memberikan seragam
u1 = runif(30000)
u2 = runif(30000)
v1 = t2u(u1+u2)
Dan itu berkorelasi dengan u1 dan u2:
> cor(cbind(u1,u2,v1))
u1 u2 v1
u1 1.000000000 0.006311667 0.7035149
u2 0.006311667 1.000000000 0.7008528
v1 0.703514895 0.700852805 1.0000000
tetapi tidak secara linear, karena transformasi monoton menjadi keseragaman
Dengan ini sebagai alat, kita dapat menghasilkan beberapa variabel tambahan untuk mendapatkan tiga seragam yang sama:
u3 = runif(30000)
v2 = t2u(u1+u3)
v3 = t2u(u2+u3)
cor(cbind(v1,v2,v3))
v1 v2 v3
v1 1.0000000 0.4967572 0.4896972
v2 0.4967572 1.0000000 0.4934746
v3 0.4896972 0.4934746 1.0000000
Hubungan antara variabel-v semua terlihat seperti ini:
-
Alternatif kedua adalah menghasilkan dengan mengambil campuran . Alih-alih menjumlahkan seragam, bawa dengan probabilitas tetap.
misalnya
z = ifelse(rbinom(30000,1,.7),u1,u2)
cor(cbind(u1,z))
u1 z
u1 1.0000000 0.7081533
z 0.7081533 1.0000000
Yang sekali lagi dapat digunakan untuk menghasilkan banyak seragam berkorelasi.
-
Pendekatan sederhana ketiga adalah menghasilkan normals berkorelasi dan mentransformasikannya menjadi keseragaman.
n1=rnorm(30000)
n2=rnorm(30000)
n3=rnorm(30000)
x=.6*n1+.8*n2
y=.6*n2+.8*n3
z=.6*n3+.8*n1
cor(cbind(x,y,z))
x y z
x 1.0000000 0.4763703 0.4792897
y 0.4763703 1.0000000 0.4769403
z 0.4792897 0.4769403 1.0000000
Jadi sekarang kita beralih ke seragam:
w1 = pnorm(x)
w2 = pnorm(y)
w3 = pnorm(z)
cor(cbind(w1,w2,w3))
w1 w2 w3
w1 1.0000000 0.4606723 0.4623311
w2 0.4606723 1.0000000 0.4620257
w3 0.4623311 0.4620257 1.0000000
Satu hal yang menyenangkan tentang metode 2 dan 3 adalah Anda mendapatkan banyak variasi dalam pilihan Anda tentang bagaimana hal-hal yang berkorelasi mungkin (dan mereka tidak harus sama seperti contoh di sini).
Tentu saja ada banyak pendekatan lain, tetapi semua ini cepat dan mudah.
Bagian yang sulit adalah mendapatkan korelasi populasi yang diinginkan; itu tidak sesederhana ketika Anda hanya ingin berkausausa berkorelasi. Jawaban Quantibex di Hasilkan pasangan angka acak yang terdistribusi dan dikorelasikan secara seragam memberikan pendekatan yang memodifikasi metode ketiga saya di sini yang seharusnya memberikan tentang korelasi populasi yang diinginkan.
Pertama, apakah Anda menganggap itu independen? Jika ya, maka koefisien korelasi antara dan adalah tidak . Itu akan jika didefinisikan sebagai .
Pandangan sederhana pada definisi rumus koefisien korelasi dan hukum cosinus harus meyakinkan Anda akan hal itu adalah antara seri jika seri diperlakukan sebagai vektor dengan setiap titik data diperlakukan sebagai dimensi vektor. Jika Anda memiliki seri independen pasangan-bijaksana, itu tiga vektor yang semuanya ortogonal satu sama lain (karena Dari sudut di antara mereka semua ini
Ini akan membuat Anda memulai cara mendekomposisi suatu seri menjadi komponen-komponennya dengan cara yang sama seperti Anda menguraikan vektor menjadi komponen-komponen ortogonalnya.