Меня интересует, как можно рассчитать квантиль многомерного распределения. На рисунках я нарисовал квантили 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()
r
pdf
quantiles
multivariate-normal
multivariate-distribution
Марк в коробке
источник
источник
Ответы:
Контурная линия - эллипсоид. Причина в том, что вы должны посмотреть на аргумент экспоненты в pdf многомерного нормального распределения: изолинии будут строки с одним и тем же аргументом. Тогда вы получите где Σ - ковариационная матрица. Это в точности уравнение эллипса; в простейшем случае μ = ( 0 , 0 ) и Σ диагональный, поэтому вы получите ( x
Теперь вам нужно будет интегрировать PDF многомерного внутри (или снаружи) эллипса и запросить, чтобы он был равен требуемому квантилю. Предположим, что ваши квантили не обычные, а в принципе эллиптические (т.е. вы ищете регион с наивысшей плотностью, HDR, как указывает Тим). Я бы изменил переменные в pdf на , интегрировал по углу, а затем для z от 0 до √z2=(x/σx)2+(y/σy)2 z 0 1-α= ∫ √c√
Тогда вы заменяете сек = - Z 2 / 2 :
∫ √
источник
Вы спрашивали о многомерном нормальном, но начали свой вопрос с вопроса о «квантиле многомерного распределения» в целом. Из формулировки вашего вопроса и приведенного примера видно, что вы заинтересованы в регионах с высокой плотностью . Они определены Hyndman (1996) следующим образом
HDR могут быть получены путем интеграции, но, как описано Hyndman, вы можете сделать это, используя более простой численный метод. Если , то вы можете получить такое , что , просто принимая - квантиль . Его можно оценить, используя выборочные квантили из набора наблюдений . Метод применяется, даже если мы не знаем , но имеем только набор iid наблюдений. Этот метод будет работать также для мультимодальных распределений.Y=f(x) ; Pr ( F ( х ) ≥ F & alpha ; ) ≥ 1 - & alpha ; & alpha ; Y у 1 , . , , , у м е ( х )fα Pr(f(x)≥fα)≥1−α α Y y1,...,ym f(x)
Hyndman, RJ (1996). Вычисление и построение графиков областей с высокой плотностью. Американский статистик, 50 (2), 120-126.
источник
Правильный ответ должен быть . Произошла ошибка в расчете выше. Исправленная версия: ∫ √−2∗ln(α)
источник
Вы можете нарисовать эллипсы, соответствующие расстояниям Махаланобиса.
Или с кругами около 95%, 75% и 50% данных
источник