Estoy interesado en cómo se puede calcular un cuantil de una distribución multivariada. En las figuras, he dibujado los cuantiles de 5% y 95% de una distribución normal univariada dada (izquierda). Para la distribución normal multivariada correcta, estoy imaginando que un análogo sería una isolina que rodea la base de la función de densidad. A continuación se muestra un ejemplo de mi intento de calcular esto usando el paquete mvtnorm
, pero sin éxito. Supongo que esto podría hacerse calculando un contorno de los resultados de la función de densidad multivariada, pero me preguntaba si hay otra alternativa ( por ejemplo , análogo de qnorm
). Gracias por tu ayuda.
Ejemplo:
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 en la caja
fuente
fuente
Respuestas:
La línea de contorno es un elipsoide. La razón es porque hay que mirar el argumento de la exponencial, en el pdf de la distribución normal multivariante: las isolinas serían líneas con el mismo argumento. Entonces obtienes donde Σ es la matriz de covarianza. Esa es exactamente la ecuación de una elipse; en el caso más simple, μ = ( 0 , 0 ) y Σ es diagonal, por lo que obtienes ( x
Ahora, tendría que integrar el pdf del multivariado dentro (o fuera) de la elipse y solicitar que sea igual al cuantil que desea. Digamos que sus cuantiles no son los habituales, sino elípticos en principio (es decir, está buscando la Región de mayor densidad, HDR, como señala la respuesta de Tim). Cambiaría las variables en el pdf a , me integraría en el ángulo y luego para z de 0 a √z2=(x/σx)2+(y/σy)2 z 0 0 1-α= ∫ √do√
A continuación, sustitutos s = - z 2 / 2 :
∫ √
fuente
Usted preguntó sobre multivariante normal, pero comenzó su pregunta preguntando sobre "cuantil de una distribución multivariada" en general. Según la redacción de su pregunta y el ejemplo proporcionado, parece que está interesado en las regiones de mayor densidad . Son definidos por Hyndman (1996) de la siguiente manera
Los HDR se pueden obtener por integración, pero, como lo describe Hyndman, puede hacerlo utilizando un método numérico más simple. Si , entonces se puede obtener de tal manera que simplemente tomando cuantil de . Se puede estimar utilizando cuantiles de muestra de un conjunto de observaciones . El método se aplica incluso si no conocemos , pero solo tenemos un conjunto de observaciones iid. Este método funcionaría también para distribuciones multimodales.f α Pr ( f ( x ) ≥ f α ) ≥ 1 - α α Y y 1 , . . . , y m f ( x )Y= f( x ) Fα Pr ( f( x ) ≥ fα) ≥ 1 - α α Y y1, . . . , ymetro F( x )
Hyndman, RJ (1996). Calcular y graficar regiones de mayor densidad. El estadístico estadounidense, 50 (2), 120-126.
fuente
La respuesta correcta debería ser . Hubo un error en el cálculo anterior. La versión corregida: ∫ √- 2 ∗ ln( α )
fuente
Podrías dibujar una elipsis correspondiente a las distancias de Mahalanobis.
O con círculos alrededor del 95%, 75% y 50% de los datos
fuente