近期碰到这样一个小问题, 当 xxx 是在 [0,2π][0, 2\pi][0,2π] 上均匀分布时, 求 y=sin(x)y=\sin(x)y=sin(x) 的分布?
然后发现百度出来的答案都是错的…
先上结论, 用matlab先看一下概率分布图, 代码如下:
for i = 1 : 100000
a = unifrnd(0, 2 * pi);
b(i) = sin(a);
end
cdfplot(b)
结果如图所示, 也就是说, sin(x)\sin(x)sin(x)并不是如直觉所想, 在[−1,1][-1,1][−1,1]上均匀分布!
注意到由于 sinx=−sin(x+π)\sin x = -\sin(x + \pi)sinx=−sin(x+π), 因此 sin(x)在[0,π]\sin(x)在[0,\pi]sin(x)在[0,π]上的分布与sin(x)在[π,2π]\sin(x)在[\pi,2\pi]sin(x)在[π,2π]应该刚好对称。
那么我们进行推导, 当 xxx在[0,π][0, \pi][0,π]上均匀分布时:
FY(y)=P(Y≤y)=P(sinX≤y)=P(X≤sin−1y)+P(X≥π−sin−1y)F_Y(y)=P(Y\le y)=P(\sin X\le y)=P(X\le\sin^{-1}y)+P(X\ge\pi-\sin^{-1}y)FY(y)=P(Y≤y)=P(sinX≤y)=P(X≤sin−1y)+P(X≥π−sin−1y)
这里我们假定, arcsin:[−1;1]↦[−π/2;π/2]\arcsin :[-1 ; 1] \mapsto[-\pi / 2 ; \pi / 2]arcsin:[−1;1]↦[−π/2;π/2]。
接着有:
P(X≤sin−1y)=∫−∞sin−1yfX(x)dx=1π∫−∞sin−1ydx=sin−1yπ P(X\le\sin^{-1}y) =\int_{-\infty}^{\sin ^{-1} y} f_{X}(x) d x=\frac{1}{\pi}\int_{-\infty}^{\sin ^{-1} y} d x=\frac{\sin ^{-1} y}{\pi}P(X≤sin−1y)=∫−∞sin−1yfX(x)dx=π1∫−∞sin−1ydx=πsin−1y
类似的,
P(X≥π−sin−1y)=1−P(X≤π−sin−1y)=sin−1yπP(X\ge\pi-\sin^{-1}y)=1 - P(X\le \pi-\sin^{-1}y)=\frac{\sin ^{-1} y}{\pi}P(X≥π−sin−1y)=1−P(X≤π−sin−1y)=πsin−1y
因此 FY(y)=2sin−1yπF_Y(y) = \frac{2\sin ^{-1} y}{\pi}FY(y)=π2sin−1y.
当 xxx在[π,2π][\pi, 2\pi][π,2π]上均匀分布时:
FY(y)=P(Y≤y)=P(sinX≤y)=P(π−sin−1y≤X≤2π+sin−1y)F_Y(y)=P(Y\le y)=P(\sin X\le y)=P(\pi-\sin^{-1}y\le X\le2\pi+\sin^{-1}y)FY(y)=P(Y≤y)=P(sinX≤y)=P(π−sin−1y≤X≤2π+sin−1y)
接着有:
P(X≤2π+sin−1y)=∫−∞2π+sin−1yfX(x)dx=1π∫−∞2π+sin−1ydx=π+sin−1yπ P(X\le2\pi+\sin^{-1}y) =\int_{-\infty}^{2\pi + \sin ^{-1} y} f_{X}(x) d x=\frac{1}{\pi}\int_{-\infty}^{2\pi + \sin ^{-1} y} d x=\frac{\pi + \sin ^{-1} y}{\pi}P(X≤2π+sin−1y)=∫−∞2π+sin−1yfX(x)dx=π1∫−∞2π+sin−1ydx=ππ+sin−1y
类似的,
P(X≤π−sin−1y)=−sin−1yπP(X\le\pi-\sin^{-1}y)=\frac{-\sin ^{-1} y}{\pi}P(X≤π−sin−1y)=π−sin−1y,
因此 FY(y)=π+2sin−1yπF_Y(y) = \frac{\pi+2\sin ^{-1} y}{\pi}FY(y)=ππ+2sin−1y.
综上,
FY(y)={sin−1yπ+12y≥0π+2sin−1y2πy<0. F_Y(y)= \begin{cases} \frac{\sin ^{-1}y}{\pi} + \frac{1}{2}&y\ge0 \\ \frac{\pi+2\sin ^{-1} y}{2\pi} & y<0\end{cases}.FY(y)={πsin−1y+212ππ+2sin−1yy≥0y<0.
用matlab程序验证:
y = -1 : 0.001: 1;
for i = 1 : length(y)
if y(i) >= 0
z(i) = asin(y(i))/pi + 0.5;
else
z(i) = (pi + 2 * asin(y(i))) / 2 / pi;
end
end
plot(y,z)
最后两条线完美重合, 证明正确!