例 2g
计算机怎样选择随机子集 大部分计算机都产生或模拟$(0,1)$均匀随机变量的值。现在希望从给定集合$\{1,2,\cdots,n\}$中均匀随机选择$k$个对象,使得$\binom{n}{k}$种不同组合等概率地被选上。
大部分计算机算法中会给出一种基于随机交换位置的方式。具体方式可参考《具体数学》中的说明。这里采用的是示性变量的方式并加以证明。
计算机可以通过模拟一个$(0,1)$均匀随机数变量$U$。给定一个值$p$,并令
$$
I=\begin{cases}
1\quad & U$I$称之为示性变量。这种变量值一般只取$0$或$1$,其中$1$用来表示某个特性发生这个概念。这里思路是构造$n$个示性变量$I_1,I_2,\cdots,I_n$。使得其中恰好$k$个为$1$。这个$k$个值位置就是我们要的子集。
现在注意这$n$个示性变量,其相当于构成一个联合分布。我们构造每个变量的筛选方式,说明每个子集是等可能选择上的。这个构造似乎也很明确,是一种递归方式的。考虑某一个元素,即$I_i$变量。其被选择进去的概率,根据前面离散随机变量可得应为$k/n$。
- 如果其被选则进入子集,则下一个元素被选择进去的概率应为$(k-1)/(n-1)$。
- 如果其没有被算则进入子集,则下一个元素被选择进去概率应为$k/(n-1$)
直观来说,这个是合理的。如果一直米有元素选择进去,则最后$k$个会被选入。建立于此构造示性变量定义
$$
I_1=\begin{cases}
1\quad & U_1< \frac{k}{n}\\
0\quad & other
\end{cases}
$$同时递归定义$I_{i+1}$为
$$
I_{i+1}=\begin{cases}
1\quad & U_{i+1}< \frac{k-(I_1+I_2+\cdots+I_i)}{n-i}\\
0\quad & other
\end{cases}
$$即第$i+1$个元素被放入$(I_{i+1}=1)$的概率。等同于子集中还需要放入的元素个数除以剩余总数目。
现在来证明这个流程等可能的筛选出所有子集大小为$k$的子集。
既然是递归定义,那么使用数学归纳法来说明。当$k=1,n=1$时,上述算法显然成立,只有$I_1$一个指标,必然选入第一个元素。
现在假定对于$k+n\le l$情况下,结论也都成立。即可以正确筛选出大小为$k$的子集。现在对$k+n=l+1$情况进行说明。类似前面组合证明,可以根据第一个元素是否在自己中分为两种情况。
此时相当于$I_1=1$。子集有$k$个元素在子集中,相当于:
$$
P\{I_1=I_{i_2}=\cdots=I_{i_k}=1,I_j=0\text{ for other }j\}=P\{I_1=1\}P\{I_{i_2}=\cdots=I_{i_k}=1,I_j=0|I_1=1\}
$$$I_1=1$的概率由算法可知为$k/n$。在给定$I_1=1$的条件下,算法针对剩余元素选取可以看作从剩下$n-1$个元素中选取大小为$k-1$的子集。由前面归纳假设知道此时$n-1+k-1=l-2
$$
P\{I_1=1\}P\{I_{i_2}=\cdots=I_{i_k}=1,I_j=0|I_1=1\}=\frac{k}{n}\frac{1}{\binom{n-1}{k-1}}=\frac{1}{\binom{n}{k}}
$$
此时相当于有
$$
P\{I_{i_1}=I_{i_2}=\cdots=I_{i_k}=1,I_j=0\text{ for other }j\}=P\{I_1=0\}P\{I_{i_1}=\cdots=I_{i_k}=1,I_j=0|I_1=0\}
$$$I_1=0$的概率由算法可知为$1-k/n$,在给定$I_1=0$的条件下,算法针对剩余元素选取可以看作从剩下$n-1$个元素中选取大小为$k$的子集。由前面归纳假设知道此时$n-1+k=l-1
$$
P\{I_1=0\}P\{I_{i_1}=\cdots=I_{i_k}=1,I_j=0|I_1=0\}=(1-\frac{k}{n})\frac{1}{\binom{n-1}{k}}=\frac{1}{\binom{n}{k}}
$$由此可得此时选取任何一个大小为$k$的子集概率为$1/\binom{n}{k}$。
独立随机变量的和
本阶主要考虑随机变量$X$和$Y$相互独立的情况下$X+Y$的概率分布。其实还是通过累积分布函数出发求算。假定$X,Y$的密度函数分别为$f_X,f_Y$那么$X+Y$的累积分布函数可以由下式得到:
$$
\begin{aligned}
F_{X+Y}(a)=P\{X+Y\le a\}&=\iint_{x+y\le a}f_X(x)f_Y(y)dxdy=\int_{-\infty}^\infty\int_{-\infty}^{a-y}f_X(x)dxf_Y(y)dy\\
&=\int_{-\infty}^\infty F_X(a-y)f_Y(y)dy
\end{aligned}
$$累积分布函数$F_{X+Y}$称为分布函数$F_X,F_Y$的卷积(convolution)。针对$a$求导即可得概率密度函数为
$$
f_{X+Y}(a)=\int_{-\infty}^\infty f_X(a-y)f_Y(y)dy
$$将对应密度函数带入上述公式,针对前一章中几个类型的连续型随机变量分别得出以下的变量和分布。
$\Gamma$随机变量
定理
如果$X$和$Y$为独立$\Gamma$随机变量,参数分别为$(s,\lambda)$和$(t,\lambda)$,那么$X+Y$也为$\Gamma$随机变量,参数为$(s+t,\lambda)$。
正态随机变量
定理
若$X_i(i=1,\cdots,n)$是$n$个相互独立的随机变量,且服从参数为$(\mu_i,\sigma_i^2)$的正态分布,则$\sum_{i=1}^n X_i$也服从正态分布,且参数为$\sum_{i=1}^n\mu_i$和$\sum_{i=1}^n\sigma_i^2$。
泊松随机变量
定理
设$X,Y$为独立泊松随机变量,参数分别为$\lambda_1$和$\lambda_2$。则$X+Y$服从参数为$\lambda_1+\lambda_2$的泊松分布。
独立二项随机变量
定理
设$X,Y$为互相独立的二项随机变量,参数分别为$(n,p)$和$(m,p)$。则$X+Y$服从参数为$(n+m,p)$的二项分布。
条件分布
前面介绍过概率中的条件分布。针对两个事件$E,F$。给定$F$的条件下$E$发生的概率定义为
$$
P(E|F)=\frac{P(EF)}{P(F)}
$$注意这里是基于事件上的概率函数,现在将其扩展到随机变量上面。
离散情况下条件分布
假设$X,Y$都是离散型随机变量。如果已知$Y=y$情况下,很自然的定义$X$的分布列如下:
$$
p_{X|Y}(x|y)=P\{X=x|Y=y\}=\frac{P\{X=x,Y=y\}}{P\{Y=y\}}=\frac{p(x,y)}{p_Y(y)}
$$类似可以定义已知$Y=y$情况下$X$的条件概率分布函数。
换言之,条件分布于普通分布的概念上是完全一样的。只是涉及的事件都变成在$Y=y$的条件下发生的事件。
如果$X,Y$独立那么:
$$
p_{X|Y}(x|y)=\frac{P\{X=x,Y=y\}}{P\{Y=y\}}=\frac{P\{X=x\}P\{Y=y\}}{P\{Y=y\}}=P\{X=x\}
$$连续情况下条件分布
如果$X,Y$为连续情况下,具有联合概率密度函数$f(x,y)$。那么$X$的条件概率密度函数定义如下:
$$
f_{X|Y}(x|y)=\frac{f(x,y)}{f_Y(y)}
$$条件概率密度函数定义可以如下理解。左边乘以$dx$有
$$
\begin{aligned}
f_{X|Y}(x|y)dx&=\frac{f(x,y)dxdy}{f_Y(f)dy}\approx \frac{P\{x\le X\le x+dx,y\le Y\le y+dy\}}{P\{y\le Y \le y+dy\}}\\
&=P\{x\le X\le x+dx|y\le Y\le y+dy\}
\end{aligned}
$$可以理解为$Y$取值于$(y,y+dy)$之间的条件下,$X$取值于$(x,x+dx)$的条件概率值。换句话说条件概率密度相当于一个极限值,在$Y$取值$y$附近邻域时,$X$的取值于$x$的概率密度。
如果$X,Y$独立,$X$的条件密度同非条件密度是一样的。
$$
f_{X|Y}(x|y)=\frac{f(x,y)}{f_Y(y)}=\frac{f_X(x)f_Y(y)}{f_Y(y)}=f_X(x)
$$随机变量函数的联合分布
本节跟连续型随机变量函数的分布对应。将其扩展到多个随机变量上的情况。
其中有很多重要结论,对于计算机中模拟某类随机变量至关重要。
假设$X_1,X_2$是联合连续的随机变量,具有联合概率密度函数$f_{X_1,X_2}$。$Y_1,Y_2$分别为$X_1,X_2$的函数。具体地说就是$Y_1=g_1(X_2,X_2),Y_2=g_2(X_1,x_2)$。现在要求出$Y_1,Y_2$的联合分布。
对$g_1,g_2$两个函数需要满足如下两个条件:
$$
y_1=g_1(x_1,x_2)\\
y_2=g_2(x_1,x_2)
$$可唯一的求解出$x_1,x_2$的表达式,即求出$x_1=h_1(y_1,y_2),x_2=h_2(y_1,y_2)$。
-
- 函数$g_1,g_2$对一切$(x_1,x_2)$有连续偏导数,并且下面的行列式对一切$x_1,x_2$有
$$
J(x_1,x_2)=
\begin{vmatrix}
\frac{\partial g_1}{\partial x_1} & \frac{\partial g_1}{\partial x_2}\\
\frac{\partial g_2}{\partial x_1} & \frac{\partial g_2}{\partial x_2}
\end{vmatrix}\ne 0
$$在这两个条件下可以证明$Y_1,Y_2$的联合密度函数为
$$
f_{Y_1,Y_2}(y_1,y_2)=f_{X_1,X_2}(x_1,x_2)\left|J(x_1,x_2)\right|^{-1}
$$证明方式还是从联合概率分布函数入手。通过高等微积分说明。证明暂且省略。
随机变量函数的联合分布有几个重要的例子。如下:
例 7b
设$(X,Y)$表示平面上的一个随机点,并假设其直角坐标$X$和$Y$是互相独立的标准正态随机变量。我们感兴趣的是随机点$(x,y)$的极坐标$R,\Theta$的联合分布。
根据描述可知$X$和$Y$是互相独立的标准正态随机变量,所以即
$$f_X(x)=\frac{1}{\sqrt{2\pi}}e^{-x^2/2},f_Y(y)=\frac{1}{\sqrt{2\pi}}e^{-y^2/2}$$所以联合分布有
$$f(x,y)=\frac{1}{2\pi}e^{-(x^2+y^2)/2}$$考虑极坐标变换$r=g_1(x,y)=\sqrt{x^2+y^2},\theta =g_2(x,y)= \arctan y/x$。根据前述联合密度函数变换需求得:
$$
\begin{aligned}
\frac{\partial g_1}{\partial x}&=\frac{x}{\sqrt{x^2+y^2}}\\
\frac{\partial g_1}{\partial y}&=\frac{y}{\sqrt{x^2+y^2}}\\
\frac{\partial g_2}{\partial x}&=\frac{1}{1+(y/x)^2}(\frac{-y}{x^2})=\frac{-y}{x^2+y^2}\\
\frac{\partial g_2}{\partial y}&=\frac{1}{1+(y/x)^2}(\frac{1}{x})=\frac{x}{x^2+y^2}
\end{aligned}
$$所以
$$
J(x,y)=\frac{x^2}{(x^2+y^2)^{3/2}}+\frac{y^2}{(x^2+y^2)^{3/2}}=\frac{1}{\sqrt{x^2+y^2}}=\frac{1}{r}
$$由此可得
$$
f_{R,\Theta}(r,\theta)=f_{X,Y}(x,y)\left|J(x,y)\right|^{-1}=\frac{1}{2\pi}re^{-r^2/2}
$$可以注意到这个公式中没有$\theta$,更可以拆分成$R,\Theta$的边缘密度函数乘积。所以$R,\Theta$是相互独立的。其中$\Theta$为$(0,2\pi)$上的均匀分布。而$R$的分布为著名的瑞利分布,密度函数为
$$f(r)=re^{-r^2/2}\quad 0这个结论表明,我们关心平面随机打靶情况时,假设射击时上下左右误差为独立的标准正态分布情况下。那么这个着点坐标对于角度来说,是均匀分布的,而距离圆心的距离为瑞利分布。这也是符合预期的。
从另一个角度来看,会发现一个坐标有相互独立的标准正态随机变量构成的随机向量,其极坐标变化的夹角不仅服从均匀分布,而且跟向量距离远点的距离大小无关。我觉得这有两个提示点。
- 根据随机变量函数的关系,这说明存在从均匀分布来模拟正态分布的一种方式。
- 暗含了函数$e^{-x^2}$跟圆之间的一种关系。
现在来考虑如何用两个独立的$(0,1)$上均匀分布来模拟正态分布。
先按照书上的流程来说明:
考虑$R^2,\Theta$的分布。此时有$d=r^2=g_1(x,y)=x^2+y^2,\theta=g_2(x,y)=\arctan(y/x)$。
有
$$
J(d,\theta)=
\begin{vmatrix}
2x & 2y \\
\frac{-y}{x^2+y^2}& \frac{x}{x^2+y^2}
\end{vmatrix}=2
$$所以有$f(d,\theta)=\frac{1}{2}e^{-d/2}\frac{1}{2\pi}$。这说明$R^2$服从参数为$1/2$的指数分布。而$\Theta$服从$(0,2\pi)$的均匀分布。
现在假设可以得到两个独立$(0,1)$上的均匀随机变量$U_1,U_2$,我们希望模拟出前面得到的$X,Y$为正态分布。即求出$X=g_1(U_1,U_2),Y=g_2(U_1,U_2)$表达式,使得$X,Y$为正态分布。
思路上我们先通过联合分布函数,模拟出$R^2,\Theta$。然后通过前面$r^2=x^2+y^2,\theta=\arctan(y/x)$,求出$x,y$的逆函数表示,那么$(X,Y)$就是符合要求的两个独立正态随机变量。可以说明$-2\ln U_1$ 具有参数为$1/2$的指数分布。对于$x>0$有
$$
P\{-2\ln U_1-x/2\}=P\{U_1>e^{-x/2}\}=1-e^{-x/2}
$$$2\pi U_2$为$(0,2\pi)$上的均匀随机变量,所以这两个函数可以产生$R^2,\Theta$。即令
$$
\begin{aligned}
R^2&=-2\ln U_1\\
\Theta&=2\pi U_2
\end{aligned}
$$即可模拟出$R^2,\Theta$。其中$R^2$为$(X,Y)$到原点距离的平方,$\Theta$为$(X,Y)$的方位角。所以得
$$
X=\sqrt{-2\ln U_1}\cos(2\pi U_2)\quad X_2=\sqrt{-2\ln U_1} \sin (2\pi U_2)
$$即是相互独立的正态标准随机变量。
其实可以从$R,\Theta$直接入手。并且用前一章节中函数分布的结论来直接求取函数表达式。这一部分内容在模拟章节中会再次表述。模拟重点就在于如何用均匀分布的随机变量模拟出想要的概率分布情况。
仍然假设可以得到两个独立$(0,1)$上的均匀随机变量$U_1,U_2$。已知随机变量$R$的密度函数为$f(r)=re^{-r^2/2}$。可求得其分布函数为$F(a)=1-e^{-r^2/2}$。由前面可知令$R=F^{-1}(U)$,即可令$R$服从所需分布。即
$$R=F^{-1}(U_1)=\sqrt{-2\ln (1-U_1)}$$同理有$\Theta = 2\pi U_2$。然后同样通过$R,\Theta$与$X,Y$联合分布求出$X,Y$表达式即可得
$$
X=\sqrt{-2\ln (1-U_1)}\cos(2\pi U_2)\quad X_2=\sqrt{-2\ln (1-U_1)} \sin (2\pi U_2)
$$可以注意到与前面结论稍有差别。其实这是因为$1-U_1$和$U_1$是相同的分布。