Kuantitas dari kombinasi distribusi normal


13

Saya memiliki informasi tentang distribusi dimensi antropometrik (seperti rentang bahu) untuk anak-anak dari berbagai usia. Untuk setiap usia dan dimensi, maksud saya, standar deviasi. (Saya juga punya delapan kuantil, tetapi saya pikir saya tidak akan bisa mendapatkan yang saya inginkan dari mereka.)

Untuk setiap dimensi, saya ingin memperkirakan kuantil tertentu dari distribusi panjang. Jika saya berasumsi bahwa masing-masing dimensi terdistribusi normal, saya dapat melakukan ini dengan cara dan standar deviasi. Apakah ada rumus cantik yang bisa saya gunakan untuk mendapatkan nilai yang terkait dengan kuantil tertentu dari distribusi?

Kebalikannya cukup mudah: Untuk nilai tertentu, dapatkan area di sebelah kanan nilai untuk setiap distribusi normal (usia). Jumlahkan hasilnya dan bagi dengan jumlah distribusi.

Pembaruan : Ini pertanyaan yang sama dalam bentuk grafik. Asumsikan bahwa masing-masing distribusi berwarna terdistribusi secara normal. Pertanyaan yang sama dalam bentuk grafik

Juga, saya jelas dapat mencoba sekelompok panjang yang berbeda dan terus mengubahnya sampai saya mendapatkan yang cukup dekat dengan jumlah yang diinginkan untuk ketepatan saya. Saya bertanya-tanya apakah ada cara yang lebih baik dari ini. Dan jika ini adalah pendekatan yang tepat, apakah ada nama untuk itu?


3
Apakah Anda bertanya apakah ada rumus sederhana untuk menghitung kuantil dari campuran distribusi normal? Dalam aplikasi ini, Anda akan meminta kuantil (katakanlah) rentang bahu tanpa memandang usia berdasarkan parameter khusus usia . Apakah ini interpretasi yang benar?
whuber

Jawaban:


16

Sayangnya, standar normal (dari mana semua yang lain dapat ditentukan, karena normal adalah keluarga skala lokasi) fungsi kuantil tidak mengakui bentuk tertutup (yaitu 'rumus cantik'). Hal terdekat dengan bentuk tertutup adalah bahwa fungsi kuantil normal standar adalah fungsi, , yang memenuhi persamaan diferensialw

d2wdp2=w(dwdp)2

dan kondisi awal dan . Di sebagian besar lingkungan komputasi ada fungsi yang secara numerik menghitung fungsi kuantil normal. Di R, Anda akan mengetikw(1/2)=0w(1/2)=2π

qnorm(p, mean=mu, sd=sigma)

untuk mendapatkan kuantil dari distribusi .pN(μ,σ2)


Sunting: Dengan pemahaman yang dimodifikasi tentang masalah, data dihasilkan dari campuran normals, sehingga kepadatan data yang diamati adalah:

p(x)=iwipi(x)

di mana dan setiap adalah kepadatan normal dengan rata-rata dan standar deviasi . Oleh karena itu CDF dari data yang diamati adalahiwi=1pi(x)μiσi

F(y)=yiwipi(x)dx=iwiypi(x)=iwiFi(y)

di mana adalah CDF normal dengan mean dan standar deviasi . Integrasi dan penjumlahan dapat dipertukarkan karena integral ini terbatas. CDF ini kontinu dan cukup mudah untuk dihitung pada komputer, sehingga CDF terbalik, , juga dikenal sebagai fungsi kuantil, dapat dihitung dengan melakukan pencarian garis. Saya default untuk opsi ini karena tidak ada rumus sederhana untuk fungsi kuantil dari campuran normal, sebagai fungsi dari kuantil dari distribusi konstituen, datang ke pikiran.μ i σ i F - 1Fi(x)μiσiF1

Kode R berikut secara numerik menghitung menggunakan pembagian dua untuk pencarian baris. Fungsi F_inv () adalah fungsi kuantil, Anda harus menyediakan vektor yang berisi setiap dan quantile yang harus dipecahkan untuk, . w i , μ i , σ i pF1wi,μi,σip

# evaluate the function at the point x, where the components 
# of the mixture have weights w, means stored in u, and std deviations
# stored in s - all must have the same length.
F = function(x,w,u,s) sum( w*pnorm(x,mean=u,sd=s) )

# provide an initial bracket for the quantile. default is c(-1000,1000). 
F_inv = function(p,w,u,s,br=c(-1000,1000))
{
   G = function(x) F(x,w,u,s) - p
   return( uniroot(G,br)$root ) 
}

#test 
# data is 50% N(0,1), 25% N(2,1), 20% N(5,1), 5% N(10,1)
X = c(rnorm(5000), rnorm(2500,mean=2,sd=1),rnorm(2000,mean=5,sd=1),rnorm(500,mean=10,sd=1))
quantile(X,.95)
    95% 
7.69205 
F_inv(.95,c(.5,.25,.2,.05),c(0,2,5,10),c(1,1,1,1))
[1] 7.745526

# data is 20% N(-5,1), 45% N(5,1), 30% N(10,1), 5% N(15,1)
X = c(rnorm(5000,mean=-5,sd=1), rnorm(2500,mean=5,sd=1),
      rnorm(2000,mean=10,sd=1), rnorm(500, mean=15,sd=1))
quantile(X,.95)
     95% 
12.69563 
F_inv(.95,c(.2,.45,.3,.05),c(-5,5,10,15),c(1,1,1,1))
[1] 12.81730

2
Paragraf terakhir dari pertanyaan mengisyaratkan bahwa ada sesuatu yang diminta. Saya sudah meminta klarifikasi.
whuber

dugaan whuber benar. Saya menambahkan gambar untuk membuat pertanyaannya kurang membingungkan.
Thomas Levine

1
Sekarang ada paket R untuk menangani masalah ini, lihat stats.stackexchange.com/questions/390931/…
Christoph Hanck
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.