Saya tertarik pada bagaimana seseorang dapat menghitung kuantil dari distribusi multivariat. Dalam gambar, saya telah menggambar 5% dan 95% kuantil dari distribusi normal univariat yang diberikan (kiri). Untuk distribusi normal multivariat yang tepat, saya membayangkan analog akan menjadi isoline yang mengelilingi basis fungsi kerapatan. Di bawah ini adalah contoh dari upaya saya untuk menghitung ini menggunakan paket mvtnorm
- tetapi tidak berhasil. Saya kira ini bisa dilakukan dengan menghitung kontur hasil dari fungsi kepadatan multivarian, tetapi saya bertanya-tanya apakah ada alternatif lain ( misalnya , analog qnorm
). Terima kasih atas bantuan Anda.
Contoh:
mu <- 5
sigma <- 2
vals <- seq(-2,12,,100)
ds <- dnorm(vals, mean=mu, sd=sigma)
plot(vals, ds, t="l")
qs <- qnorm(c(0.05, 0.95), mean=mu, sd=sigma)
abline(v=qs, col=2, lty=2)
#install.packages("mvtnorm")
require(mvtnorm)
n <- 2
mmu <- rep(mu, n)
msigma <- rep(sigma, n)
mcov <- diag(msigma^2)
mvals <- expand.grid(seq(-2,12,,100), seq(-2,12,,100))
mvds <- dmvnorm(x=mvals, mean=mmu, sigma=mcov)
persp(matrix(mvds,100,100), axes=FALSE)
mvqs <- qmvnorm(0.95, mean=mmu, sigma=mcov, tail = "both") #?
#ex. plot
png("tmp.png", width=8, height=4, units="in", res=400)
par(mfcol=c(1,2))
#univariate
plot(vals, ds, t="l")
qs <- qnorm(c(0.05, 0.95), mean=mu, sd=sigma)
abline(v=qs, col=2, lty=2)
#multivariate
pmat <- persp(seq(-2,12,,100), seq(-2,12,,100), matrix(mvds,100,100), axes=FALSE, shade=TRUE, lty=0)
cont <- contourLines(seq(-2,12,,100), seq(-2,12,,100), matrix(mvds,100,100), levels=0.05^2)
lines(trans3d(cont[[1]]$x, cont[[1]]$y, cont[[1]]$level, pmat), col=2, lty=2)
dev.off()
r
pdf
quantiles
multivariate-normal
multivariate-distribution
Marc di dalam kotak
sumber
sumber
Jawaban:
Garis kontur adalah ellipsoid. Alasannya adalah karena Anda harus melihat argumen eksponensial, dalam pdf distribusi normal multivarian: isolin akan menjadi garis dengan argumen yang sama. Maka Anda mendapatkan mana Σ adalah matriks kovarians. Persisnya persamaan elips; dalam kasus paling sederhana, μ = ( 0 , 0 ) dan Σ adalah diagonal, sehingga Anda mendapatkan ( x
Sekarang, Anda harus mengintegrasikan pdf dari multivariat di dalam (atau di luar) elips dan meminta ini sama dengan jumlah yang Anda inginkan. Katakanlah bahwa kuantil Anda bukan yang biasa, tetapi pada prinsipnya berbentuk elips (yaitu Anda mencari Wilayah Kepadatan Tertinggi, HDR, seperti yang ditunjukkan oleh jawaban Tim). Saya akan mengubah variabel dalam pdf ke , berintegrasi dalam sudut dan kemudian untuk z dari 0 ke √z2= ( x / σx)2+ ( y/ σy)2 z 0 1-α= ∫ √c√
Kemudian Anda pengganti s = - z 2 / 2 :
∫ √
Jadi pada prinsipnya, Anda harus mencari elips yang berpusat di , dengan sumbu di atas vektor eigen Σ dan radius efektif - 2 ln α : ( x - μ ) T Σ - 1 ( x - μ ) = - 2 ln αμ Σ - 2 lnα
sumber
Anda bertanya tentang multivarian normal, tetapi memulai pertanyaan Anda dengan bertanya tentang "kuantil distribusi multivarian" secara umum. Dari kata-kata pertanyaan Anda dan contoh yang diberikan tampaknya Anda tertarik pada daerah dengan kepadatan tertinggi . Mereka didefinisikan oleh Hyndman (1996) sebagai berikut
HDR dapat diperoleh dengan integrasi tetapi, seperti dijelaskan oleh Hyndman, Anda dapat melakukannya menggunakan metode numerik yang lebih sederhana. JikaY= f( x ) , maka Anda dapat memperoleh sehingga Pr ( f ( x ) ≥ f α ) ≥ 1 - α hanya dengan mengambil α kuantil dari Y . Hal ini dapat diperkirakan dengan menggunakan quantiles sampel dari serangkaian pengamatan y 1 , . . . , Y mfα Pr ( f( x ) ≥ fα) ≥ 1 - α α Y y1, . . . , ym . Metode ini berlaku bahkan jika kita tidak tahu , tetapi hanya memiliki satu set pengamatan iid. Metode ini akan bekerja juga untuk distribusi multimoda.f( x )
Hyndman, RJ (1996). Komputasi dan grafik daerah kepadatan tertinggi. The American Statistician, 50 (2), 120-126.
sumber
sumber
Anda bisa menggambar elips yang sesuai dengan jarak Mahalanobis.
Atau dengan lingkaran sekitar 95%, 75%, dan 50% data
sumber