นิพจน์แบบปิดสำหรับควอนไทล์ของ


16

ฉันมีตัวแปรสุ่มสองตัวโดยที่คือการกระจายแบบ 0-1U ( 0 , 1 )αiiid U(0,1),i=1,2U(0,1)

จากนั้นสิ่งเหล่านี้ให้กระบวนการพูดว่า:

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

ตอนนี้ฉันกำลังสงสัยว่ามีการแสดงออกในรูปแบบปิดสำหรับเชิงทฤษฎี 75 เปอร์เซ็นต์ quantile ของสำหรับ - ฉันคิดว่าฉันสามารถทำได้ด้วยคอมพิวเตอร์และการรับรู้จำนวนมากของแต่ฉันชอบรูปแบบปิด -P ( x ) x ( 0 , 2 π ) P ( x )F1(P(x);0.75)P(x)x(0,2π)P(x)


1
ฉันคิดว่าคุณต้องการถือว่าαและαมีความเป็นอิสระทางสถิติ 212
Michael R. Chernick

@Procrastinator: คุณสามารถเขียนเป็นคำตอบได้ไหม?
user603

4
(+1) มุมมอง "กระบวนการ" ดูเหมือนว่าเป็นปลาเฮอริ่งแดงที่นี่ เขียนที่2) จากนั้นสำหรับแต่ละค่าคงที่คำสองคำแรกจะกำหนดฟังก์ชันความหนาแน่นรูปสี่เหลี่ยมคางหมูและคำสุดท้ายเป็นเพียงค่าเฉลี่ยชดเชย สำหรับการกำหนดความหนาแน่นของรูปทรงสี่เหลี่ยมคางหมูที่เราจะต้องพิจารณา2)
P(x)=β1sinx+β2cosx+12(sinx+cosx),
βi=αi1/2U(1/2,1/2)xx[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

ปัญหานี้ได้อย่างรวดเร็วจะลดลงไปอย่างใดอย่างหนึ่งในการหา quantile ของการกระจายรูปทรงสี่เหลี่ยมคางหมู

ให้เราเขียนกระบวนการเป็น ที่ U 1และ U 2เป็นตัวแปรสุ่มiid U ( - 1 , 1 ) และโดยสมมาตรนี้มีเหมือนกันเล็กน้อยกระจายเป็นกระบวนการ ¯ P ( x ) = U 1| 1

P(x)=U112sinx+U212cosx+12(sinx+cosx),
U1U2U(1,1) คำสองคำแรกกำหนดความหนาแน่นรูปทรงสี่เหลี่ยมคางหมูแบบสมมาตรเนื่องจากนี่คือผลรวมของตัวแปรสุ่มที่มีค่าเฉลี่ยเป็นศูนย์สองชุด (โดยทั่วไปโดยทั่วไปมีความกว้างครึ่งหนึ่งแตกต่างกัน) เทอมสุดท้ายส่งผลให้มีการแปลความหนาแน่นนี้และควอนไทล์ก็เท่ากันเมื่อเทียบกับการแปลนี้ (กล่าวคือควอนไทล์ของการกระจายแบบเลื่อนคือการเปลี่ยนควอไทล์ของการกระจายแบบกึ่งกลาง)
P¯(x)=U1|12sinx|+U2|12cosx|+12(sinx+cosx).

ปริมาณของการแจกแจงแบบสี่เหลี่ยมคางหมู

ให้โดยที่X 1และX 2เป็นอิสระจากU ( - a , a )และU ( - b , b )การแจกแจง สมมติว่าไม่มีการสูญเสียของทั่วไปที่ จากนั้นความหนาแน่นของYจะเกิดขึ้นโดย convolving ความหนาแน่นของX 1และX 2 นี้จะเห็นได้อย่างง่ายดายที่จะเป็นรูปสี่เหลี่ยมคางหมูที่มีจุด( -Y=X1+X2X1X2U(a,a)U(b,b)abYX1X2 , ( - + B , 1 / 2 ) , ( - , 1 / 2 )และ ( + B , 0 )(ab,0)(a+b,1/2a)(ab,1/2a)(a+b,0)

quantile ของการกระจายของ , สำหรับการใด ๆP < 1 / 2เป็นจึง Q ( P ) : = Q ( PYp<1/2 โดยสมมาตรสำหรับP>1/2เรามีคิว(P)=-Q(1-P)

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)

p<1/2|sinx||cosx|a=|sinx|/2b=|cosx|/2

qx(p)=q(p;a,b)+12(sinx+cosx),
|sinx|<|cosx|p1/2
qx(p)=q(1p;a,b)+12(sinx+cosx),

ควอนไทล์

ด้านล่างนี้เป็นสอง heatmaps ครั้งแรกแสดงให้เห็นถึงปริมาณของการกระจายตัวของP(x) สำหรับตารางของ x วิ่งจาก 0 ถึง 2π. Y- ผู้ร่วมงานให้ความน่าจะเป็น พี 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.