如何确定多元正态分布的分位数(等值线)


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情况示出)在mathematica.stackexchange.com/questions/21396/...。它认识到轮廓级别由卡方分布给出。
ub

@whuber-您介意展示“ ...的置信椭球是协方差矩阵逆矩阵的轮廓”的意思吗?干杯。
2013年

2
这在一个维度上最容易看到,其中“协方差矩阵”(对于采样分布)为数,因此其逆值为1 / s 2,被认为是R 1上通过x x 2的二次映射。/ 2。根据定义,水平为λ的轮廓是x的集合,其中x 2 / s 2 = λ;即,X 2 = λ 小号2或等效X = ± s21/s2R1xx2/s2λxx2/s2=λx2=λs2。当λ1-α一个的位数χ21分配,x=±λsλ1αχ2(1)t1分布的1-α分位数,从中我们恢复了通常的置信限度±t 1 - α ; 1和小号λ1αt(1)±t1α;1s
ub

可以使用第一个公式中答案通过选择0 1 ,以获得相应的椭圆小号α(红色虚线在图线)对于任何X- [R 2α(0,1)SαxR2
user603

Answers:


25

等高线是椭圆形。原因是因为您必须在多元正态分布的pdf中查看指数参数:等值线将是具有相同参数的线。然后,你

(xμ)TΣ1(xμ)=c
其中是协方差矩阵。那就是椭圆的等式。在简单的情况下,μ = 0 0 Σ是对角,所以你 XΣμ=(0,0)Σ 如果Σ是不是对角线,你对角化得到相同的结果。
(xσx)2+(yσy)2=c
Σ

现在,您将必须在椭圆内部(或外部)集成多变量的pdf,并要求它等于所需的分位数。假设您的分位数不是通常的分位数,而是原则上是椭圆的(即Tim指出,您正在寻找最高密度区域HDR)。我会改变在PDF变量,集成在角度,然后Ž0z2=(x/σx)2+(y/σy)2z0 1-α=&Integral; c 然后,你替代小号= - ž 2 / 2&Integral;

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

因此,在原则上,你必须寻找在中心的椭圆以上的特征向量,与轴Σ和有效半径- 2 LN αX - μ Ť Σ - 1X - μ = - 2 LN αμΣ2lnα

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

4

您曾问过多元正态,但通常是从询问“多元分布的分位数”开始的。从问题的措辞和提供的示例中,您似乎对最高密度的区域感兴趣。Hyndman(1996)对它们的定义如下

FžX1001个-α[RFαX

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

fαPr(XR(fα))1a

Y=f(x)fαPr(f(x)fα)1ααYy1,...,ym。即使我们不知道该方法也适用f(x)


Hyndman,RJ(1996)。计算并绘制最高密度区域。美国统计学家,50(2),120-126。


2

正确答案应该是 -2lnα。上面的计算有误。更正的版本:

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.