Вираз закритої форми для квантилів


16

У мене є дві випадкові величини, αiiid U(0,1),i=1,2 деU(0,1) - рівномірний розподіл 0-1.

Потім, вони дають процес, скажімо:

P(x)=α1sin(x)+α2cos(x),x(0,2π)

Тепер мені було цікаво, чи існує вираз закритої форми для F1(P(x);0.75) теоретичного 75-відсоткового квантиля P(x) для заданого x(0,2π) якщо припустити, що я можна зробити це за допомогою комп’ютера та багатьох реалізацій P(x) , але я вважаю за краще закриту форму--


1
Я думаю, ви хочете припустити, що α 1 і α 2 є статистично незалежними. 12
Майкл Р. Черник

@Procrastinator: чи можете ви написати це як відповідь?
user603

4
(+1) Точка зору "процесу", здається, тут трохи червона оселедець. Запишіть
P(x)=β1sinx+β2cosx+12(sinx+cosx),
Деβi=αi1/2U(1/2,1/2) . Тоді для кожного фіксованогоx перші два доданки визначають функціюгустинитрапеції,а останній член - це лише середнє зміщення. Для визначення трапецієподібної щільності нам потрібно розглянути лишеx[0,π/2) .
кардинал

2
Числово це можна зробити просто за допомогою quant = function(n,p,x) return( quantile(runif(n)*sin(x)+runif(n)*cos(x),p) )і quant(100000,0.75,1).

Відповіді:


19

Ця проблема може бути швидко зведена до знаходження квантиля трапецієподібного розподілу .

Перепишемо процес як де U 1 і U 2 є iid U ( - 1 , 1 ) випадковими змінними; і за симетрією це має такий самийграничнийрозподіл, що і процес ¯ P ( x ) = U 1| 1

П(х)=U112гріхх+U212cosх+12(гріхх+cosх),
U1U2U(-1,1) Перші два доданки визначають симетричнутрапеційну щільність,оскільки це сума двох рівномірних випадкових величин середнього нуля (із загальною різницею півширини). Останній доданок якраз і призводить до перекладу цієї щільності, і квантил є еквівалентним щодо цього перекладу (тобто квантил зміщеного розподілу є зміщеним квантилем централізованого розподілу).
П¯(х)=U1|12гріхх|+U2|12cosх|+12(гріхх+cosх).

Квантили трапецієподібного розподілу

Нехай де X 1 і X 2 є незалежними розподілами U ( - a , a ) і U ( - b , b ) . Припустимо, не втрачаючи загальності, що a b . Тоді щільність Y формується за рахунок згортання густин X 1 і X 2 . Це легко сприймається як трапеція з вершинами ( - aY=Х1+Х2Х1Х2U(a,a)U(b,b)abYX1X2 , ( - + б , 1 / 2 ) , ( - б , 1 / 2 ) і ( + б , 0 ) .(ab,0)(a+b,1/2a)(ab,1/2a)(a+b,0)

Квантиль розподілу , для будь-якого р < 1 / 2 , таким чином, д ( р ) : = д ( рYp<1/2 В силу симетрії дляр>1/2, ми маємод(р)=-д(1-р).

q(p):=q(p;a,b)={8abp(a+b),p<b/2a(2p1)a,b/2ap1/2.
p>1/2q(p)=q(1p)

Назад до справи, що знаходиться під рукою

|sinx||cosx||sinx|<|cosx|2a2bP¯(x)

For p<1/2, on |sinx||cosx|, we set a=|sinx|/2 and b=|cosx|/2 and get

qx(p)=q(p;a,b)+12(sinx+cosx),
and on |sinx|<|cosx| the roles reverse. Similarly, for p1/2
qx(p)=q(1p;a,b)+12(sinx+cosx),

The quantiles

Below are two heatmaps. The first shows the quantiles of the distribution of P(x) for a grid of x running from 0 to 2π. The y-coordinate gives the probability p associated with each quantile. The colors indicate the value of the quantile with dark red indicating very large (positive) values and dark blue indicating large negative values. Thus each vertical strip is a (marginal) quantile plot associated with P(x).

Quantiles as a function of x

The second heatmap below shows the quantiles themselves, colored by the corresponding probability. For example, dark red corresponds to p=1/2 and dark blue corresponds to p=0 and p=1. Cyan is roughly p=1/4 and p=3/4. This more clearly shows the support of each distribution and the shape.

Quantile plot

Some sample R code

The function qproc below calculates the quantile function of P(x) for a given x. It uses the more general qtrap to generate the quantiles.

# Pointwise quantiles of a random process: 
# P(x) = a_1 sin(x) + a_2 cos(x)

# Trapezoidal distribution quantile
# Assumes X = U + V where U~Uni(-a,a), V~Uni(-b,b) and a >= b
qtrap <- function(p, a, b)
{
    if( a < b) stop("I need a >= b.")
    s <- 2*(p<=1/2) - 1
    p <- ifelse(p<= 1/2, p, 1-p)
    s * ifelse( p < b/2/a, sqrt(8*a*b*p)-a-b, (2*p-1)*a )
}

# Now, here is the process's quantile function.
qproc <- function(p, x)
{
    s <- abs(sin(x))
    c <- abs(cos(x))
    a <- ifelse(s>c, s, c)
    b <- ifelse(s<c, s, c)
    qtrap(p,a/2, b/2) + 0.5*(sin(x)+cos(x))
} 

Below is a test with the corresponding output.

# Test case
set.seed(17)
n <- 1e4
x <- -pi/8
r <- runif(n) * sin(x) + runif(n) * cos(x)

# Sample quantiles, then actual.
> round(quantile(r,(0:10)/10),3)
    0%    10%    20%    30%    40%    50%    60%    70%    80%    90%   100%
-0.380 -0.111 -0.002  0.093  0.186  0.275  0.365  0.453  0.550  0.659  0.917
> round(qproc((0:10)/10, x),3)
 [1] -0.383 -0.117 -0.007  0.086  0.178  0.271  0.363  0.455  0.548
[10]  0.658  0.924

3
I wish i could upvote more. This is the reason i love this website: the power of specialization. i didn't know of the trapezoid distribution. It would have taken me some time to figure this out. Or I would have had to settle for using Gaussians instead of Uniforms. Anyhow, it's awesome.
user603
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.