Mich interessiert, wie man ein Quantil einer multivariaten Verteilung berechnen kann. In den Abbildungen habe ich die 5% - und 95% -Quantile einer gegebenen univariaten Normalverteilung gezeichnet (links). Für die richtige multivariate Normalverteilung stelle ich mir vor, dass ein Analog eine Isolinie ist, die die Basis der Dichtefunktion umgibt. Unten ist ein Beispiel für meinen Versuch, dies mit dem Paket zu berechnen mvtnorm
- aber ohne Erfolg. Ich nehme an, dies könnte durch Berechnen einer Kontur der Ergebnisse der multivariaten Dichtefunktion geschehen, aber ich habe mich gefragt, ob es eine andere Alternative gibt ( z. B. Analog von qnorm
). Danke für Ihre Hilfe.
Beispiel:
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()