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()