以前もこの話題をやったが、手を動かしていろいろ実験した結果、前よりも腑に落ちた(感覚的にしっくりくるようになった)ので再度まとめ。
まず、簡単な場合。[0, 2]の範囲の一様乱数 X がある。その密度関数は f(x) = 1/2、変域は[0, 2]である。
Y = 2X と変数変換する。明らかに Y も一様乱数で、範囲は [0, 4]。密度関数は 、変域は[0, 4]である。「変域が広がった分だけ密度が薄くなった」わけだ。
Y = X^2 と変数変換する。新たな変域は上と同じく [0, 4] だが、密度の薄まり方が場所によって異なる。X が 0 に近い領域では、Y はゆっくりとしか変化しないから、相対的に「濃い」と考えられる。あるいは、同じ Y の幅を取った時、その元となる X の範囲が広い、したがって確率が高いとも言える。上の場合の類推で、となる。つまり、導関数の逆数を元の確率分布に掛ければよろしい。
やや複雑な場合。[0, ]の範囲の一様乱数 X がある。その密度関数は [f(x) = {1 \over 2\pi}]、変域は[0, ]である。
Y = cos(X) と変数変換する。 となる。ここで、はというと、cos が y のときに sin はいくらかと聞いているので、である。したがって、である。ーといいたい所なのだが、X が [0, ] を動く間に Y は [-1, 1] を2回動くので、上を2倍しなければならない。実際、そのままだと、
(%i21) integrate(1/2/%pi/sin(acos(x)), x, -1, 1); 1 (%o21) - 2
となってしまうことが maxima で確認できる。以上より、 が答え。
なにはともあれ、この関数をプロットすると、y = -1 と 1 で大きくて、y = 0 付近では小さい値になっているのが分かる。
R で乱数を発生させて実験してみても、
hist(cos(runif(10000, min=0, max=2*pi))) curve(1/pi/sqrt(1-x*x), xlim=c(-1, 1))
で、いい具合である。