2つのランダム変数、があり、は一様な0-1分布です。
次に、これらはプロセスを生成します:
今、私はの与えられたのの理論的な75パーセント分位の閉形式表現があるかどうか疑問に思っていました --iコンピューターと多くの実現でそれができると仮定しますが、私は閉じた形を好むでしょう-。
2つのランダム変数、があり、は一様な0-1分布です。
次に、これらはプロセスを生成します:
今、私はの与えられたのの理論的な75パーセント分位の閉形式表現があるかどうか疑問に思っていました --iコンピューターと多くの実現でそれができると仮定しますが、私は閉じた形を好むでしょう-。
回答:
この問題は、台形分布の分位数を見つけることの1つにすぐに減らすことができます。
私たちのように、プロセスを書き換えてみましょう ここで、 U 1及び U 2は IIDである U(- 1 、1 ) ;ランダム変数 そして、対称性により、これは同じ有するマージナルプロセスとして分布 ¯ P(X )= U 1 ⋅を| 1
台形分布の分位点
ましょうX 1及びX 2は独立しているU(- 、)及びU(- B 、B )の分布。一般性を失うことなく想定≥ B。次に、Yの密度は、X 1とX 2の密度を畳み込むことによって形成されます。これは容易に頂点を有する台形であることが示されている(- A、(− a + b 、1 / 2 a )、(a − b 、1 / 2 a )および(a + b 、0 )。
分布の分位いずれかのために、P < 1 / 2は、このように、ある Q (P ):= Q (P
手元のケースに戻る
変位値
サンプルR
コード
qproc
qtrap
# 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))
}
以下は、対応する出力のテストです。
# 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