Interesuje mnie, jak można obliczyć kwantyl rozkładu wielowymiarowego. Na rysunkach narysowałem 5% i 95% kwantyli danego rozkładu jednowymiarowego normalnego (po lewej). Dla właściwego wielowymiarowego rozkładu normalnego wyobrażam sobie, że analog byłby izoliną otaczającą podstawę funkcji gęstości. Poniżej znajduje się przykład mojej próby obliczenia tego za pomocą pakietu mvtnorm
- ale bez powodzenia. Przypuszczam, że można tego dokonać, obliczając kontur wyników funkcji wielowymiarowej gęstości, ale zastanawiałem się, czy istnieje inna alternatywa ( np. Analog qnorm
). Dzięki za pomoc.
Przykład:
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 w pudełku
źródło
źródło
Odpowiedzi:
Linia konturu jest elipsoidą. Powodem jest to, że musisz spojrzeć na argument wykładniczy w pliku pdf wielowymiarowego rozkładu normalnego: izolinie byłyby liniami z tym samym argumentem. Otrzymujesz gdzie Σ jest macierzą kowariancji. To jest dokładnie równanie elipsy; w najprostszym przypadku μ = ( 0 , 0 ) i Σ jest przekątna, więc otrzymujesz ( x
Teraz musiałbyś zintegrować pdf wielowymiarowy w elipsie (lub poza nią) i zażądać, aby była ona równa żądanemu kwantylowi. Powiedzmy, że twoje kwantyle nie są zwykłymi, ale w zasadzie eliptycznymi (tzn. Szukasz regionu o największej gęstości, HDR, jak wskazuje Tim). Zmieniłbym zmienne w pdf na , całkuj w kącie, a następnie dla z od 0 do √z2=(x/σx)2+(y/σy)2 z 0 1-α= ∫ √c√
Następnie zastąpić s = - Z 2 / 2 :
∫ √
źródło
Pytałeś o normalną wielowymiarową normę, ale zacząłeś od pytania o „kwantyl rozkładu wielowymiarowego” w ogóle. Z treści pytania i podanego przykładu wynika, że interesują Cię regiony o największej gęstości . Są one zdefiniowane przez Hyndman (1996) w następujący sposób
Hyndman, RJ (1996). Obliczanie i tworzenie wykresów regionów o największej gęstości. The American Statistician, 50 (2), 120-126.
źródło
źródło
Możesz narysować elipsy odpowiadające odległościom Mahalanobisa.
Lub z kręgami około 95%, 75% i 50% danych
źródło