Estou interessado em saber como calcular um quantil de uma distribuição multivariada. Nas figuras, desenhei os quantis de 5% e 95% de uma determinada distribuição normal univariada (esquerda). Para a distribuição normal multivariada correta, estou imaginando que um análogo seria uma isolina que circunda a base da função densidade. Abaixo está um exemplo da minha tentativa de calcular isso usando o pacote mvtnorm
- mas sem sucesso. Suponho que isso possa ser feito calculando um contorno dos resultados da função de densidade multivariada, mas fiquei pensando se há outra alternativa ( por exemplo , analógica de qnorm
). Obrigado pela ajuda.
Exemplo:
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 na caixa
fonte
fonte
Respostas:
A linha de contorno é um elipsóide. O motivo é que você deve examinar o argumento da exponencial, no pdf da distribuição normal multivariada: as isolinhas seriam linhas com o mesmo argumento. Então você obtém onde Σ é a matriz de covariância. Essa é exatamente a equação de uma elipse; no caso mais simples, μ = ( 0 , 0 ) e Σ é diagonal, então você obtém ( x
Agora, você precisaria integrar o pdf do multivariado dentro (ou fora) da elipse e solicitar que isso seja igual ao quantil desejado. Digamos que seus quantis não sejam os habituais, mas elípticos em princípio (ou seja, você está procurando a Região de Maior Densidade, HDR, como a resposta de Tim aponta) Eu mudaria variáveis no pdf para , integrei no ângulo e depois para z de 0 a √z2= ( x / σx)2+ ( y/ σy)2 z 0 0 1-α= ∫ √c√
Então você substitutos s = - z 2 / 2 :
∫ √
fonte
Você perguntou sobre o normal multivariado, mas iniciou sua pergunta perguntando sobre "quantil de uma distribuição multivariada" em geral. Pela redação da sua pergunta e pelo exemplo fornecido, parece que você está interessado em regiões de maior densidade . Eles são definidos por Hyndman (1996) da seguinte maneira
Hyndman, RJ (1996). Computar e representar graficamente as regiões de maior densidade. The American Statistician, 50 (2), 120-126.
fonte
fonte
Você pode desenhar uma elipse correspondente às distâncias de Mahalanobis.
Ou com círculos em torno de 95%, 75% e 50% dos dados
fonte