Як визначити кванти (ізолінії?) Багатоваріантного нормального розподілу


24

введіть тут опис зображення

Мене цікавить, як можна обчислити квантил багатофакторного розподілу. На малюнках я намалював 5% і 95% квантилів даного одновимірного нормального розподілу (зліва). Для правильного багатоваріантного нормального розподілу я уявляю, що аналогом був би ізолін, який оточує основу функції щільності. Нижче наводиться приклад моєї спроби обчислити це за допомогою пакету mvtnorm- але без успіху. Я припускаю, що це можна зробити, обчисливши контур результатів функції багатоваріантної щільності, але мені було цікаво, чи існує інша альтернатива ( наприклад , аналог qnorm). Спасибі за вашу допомогу.

Приклад:

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()

3
Рішення Mathematica подано (і проілюстровано для випадку 3D) на сайті mateica.stackexchange.com/questions/21396/… . Він визнає, що контурні рівні задаються розподілом на квадратні чі.
whuber

@whuber - чи не проти ви продемонструвати, що ви маєте на увазі під "... еліпсоїд впевненості - це контур оберненої матриці коваріації"? Ура.
Марк у коробці

2
Це найпростіше побачити в одному вимірі, де "матриця коваріації" (для розподілу вибірки) є число , тому її обернена дорівнює 1 / с 2 , що розглядається як квадратична карта на R 1 через x x 2 / с 2 . Контур на рівні λ за визначенням - це набір x, для якого x 2 / s 2 = λs21/s2R1xx2/s2λxx2/s2=λ ; тобто або рівнозначно xx2=λs2. Колиλ- тоx=±λsλ - квантиль х 2 ( 1 ) розподілу,1αχ2(1) є1-αквантильт(1)розподілу, звідки відновлюватися звичайним довірчі межі±т 1 - & alpha ; ; 1λ1αt(1) . ±t1α;1s
whuber

Ви можете використати першу формулу у цій відповіді, вибравши в ( 0 , 1 ), щоб отримати відповідний еліпс S α (червона пунктирна лінія у ваших графіках) для будь-якого xα(0,1)SαxR2
user603

Відповіді:


25

Лінія контуру - це еліпсоїд. Причина полягає в тому, що ви повинні подивитися на аргумент експоненціалу в pdf багатофакторного нормального розподілу: ізолінії були б рядками з тим же аргументом. Тоді ви отримуєте де Σ - матриця коваріації. Це саме рівняння еліпса; у найпростішому випадку μ = ( 0 , 0 ) і Σ - діагональна, тому ви отримаєте ( x

(xμ)TΣ1(xμ)=c
Σμ=(0,0)Σ ЯкщоΣне діагональний, діагоналізуючи, ви отримуєте той самий результат.
(xσx)2+(yσy)2=c
Σ

Тепер вам доведеться інтегрувати pdf багатоваріантного всередині (або зовні) еліпса і вимагати, щоб це було рівним квантилеві, який ви хочете. Скажімо, ваші кванти не є звичайними, а в принципі еліптичними (тобто ви шукаєте область найвищої щільності, HDR, як вказує відповідь Тіма). Я міняв би змінні в pdf на , інтегруватись у кут, а потім для z від 0 до z2=(x/σx)2+(y/σy)2z0 1-α=c Тоді ви замінюєте сек = - Z 2 /

1α=0cdzzez2/22π02πdθ=0czez2/2
: s=z2/2
0czez2/2=c/20esds=(1ec/2)

Тому в принципі потрібно шукати еліпс із центром у , з віссю над власними векторами Σ та ефективним радіусом - 2 ln α : ( x - μ ) T Σ - 1 ( x - μ ) = - 2 ln αμΣ2lnα

(xμ)TΣ1(xμ)=2lnα

4

Ви запитували про багатоваріантне нормальне, але розпочали своє запитання з питання про "квантил багатоваріантного розподілу" взагалі. З формулювань вашого запитання та прикладу, здається, що вас цікавлять регіони найвищої щільності . Вони визначаються Hyndman (1996) наступним чином

f(z)X100(1α)%R(fα)X таким, що

R(fα)={x:f(x)fα}

where fα is the largest constant such that Pr(XR(fα))1a.

HDR's can be obtained by integration but, as described by Hyndman, you can do it using a simpler, numerical method. If Y=f(x), then you can obtain fα such that Pr(f(x)fα)1α simply by taking α quantile of Y. It can be estimated using sample quantiles from a set of observations y1,...,ym. The method applies even if we do not know f(x), but have only a set of i.i.d. observations. This method would work also for multimodal distributions.


Hyndman, R.J. (1996). Computing and graphing highest density regions. The American Statistician, 50(2), 120-126.


2

The correct answer should be 2ln(α). There was a mistake in the calculation above. The corrected version:

0czez2/2=c/20esds=(1ec/2)

1

You could draw an ellipses corresponding to Mahalanobis distances.

library(chemometrics)
data(glass)
data(glass.grp)
x=glass[,c(2,7)]
require(robustbase)
x.mcd=covMcd(x)
drawMahal(x,center=x.mcd$center,covariance=x.mcd$cov,quantile=0.90)

Or with circles around 95%, 75%, and 50% of data

drawMahal(x,center=x.mcd$center,covariance=x.mcd$cov,quantile=c(0.95,.75,.5))

4
Welcome to the site @user98114. Can you provide some text to explicate what this code is doing & how it resolves the OP's issue?
gung - Reinstate Monica
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.