Je m'intéresse à la façon de calculer un quantile d'une distribution multivariée. Dans les figures, j'ai tracé les quantiles 5% et 95% d'une distribution normale univariée donnée (à gauche). Pour la bonne distribution normale multivariée, j'imagine qu'un analogue serait une isoline qui entoure la base de la fonction de densité. Ci-dessous est un exemple de ma tentative de calcul en utilisant le package mvtnorm
- mais sans succès. Je suppose que cela pourrait être fait en calculant un contour des résultats de la fonction de densité multivariée, mais je me demandais s'il y avait une autre alternative ( par exemple , analogique de qnorm
). Merci de votre aide.
Exemple:
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 dans la boîte
la source
la source
Réponses:
La ligne de contour est un ellipsoïde. La raison en est qu'il faut regarder l'argument de l'exponentielle, dans le pdf de la distribution normale multivariée: les isolignes seraient des lignes avec le même argument. On obtient alors où Σ est la matrice de covariance. C'est exactement l'équation d'une ellipse; dans le cas le plus simple, μ = ( 0 , 0 ) et Σ est diagonale, donc vous obtenez ( x
Maintenant, vous devez intégrer le pdf du multivarié à l'intérieur (ou à l'extérieur) de l'ellipse et demander qu'il soit égal au quantile souhaité. Disons que vos quantiles ne sont pas les quantiles habituels, mais elliptiques en principe (c'est-à-dire que vous recherchez la région de densité la plus élevée, HDR, comme le souligne la réponse de Tim). Je changerais les variables du pdf en , intégrerais dans l'angle puis pour z de 0 à √z2= ( x / σX)2+ ( y/ σy)2 z 0 1-α= ∫ √c√
Ensuitevous remplacement de s = - z 2 / 2 :
∫ √
la source
Vous avez posé des questions sur la normale multivariée, mais avez commencé votre question en posant des questions sur le "quantile d'une distribution multivariée" en général. D'après le libellé de votre question et l'exemple fourni, il semble que vous vous intéressez aux régions à plus forte densité . Ils sont définis par Hyndman (1996) comme suit:
Hyndman, RJ (1996). Calcul et représentation graphique des régions de plus haute densité. The American Statistician, 50 (2), 120-126.
la source
la source
Vous pouvez dessiner des ellipses correspondant aux distances de Mahalanobis.
Ou avec des cercles autour de 95%, 75% et 50% des données
la source