数理统计与数据分析第三版习题 第3章 第36-40题

题目36

证明:利用拒绝方法生成的随机变量所必须需要的迭代次数是几何随机变量,并估计出几何频率函数的参数。证明:为了保证较少的迭代次数选择的M(x)M(x)必须接近出f(x)f(x).

解题思路

参考本题中提到的
假设每次迭代生成的数据值能够被接受的概率为λ\lambda,则需要k次迭代生成一个值的概率是:k-1次被拒绝第k次被接受,这是典型的几何分布参数为λ\lambda
P(k)=(1λ)k1λP(k)=(1-\lambda)^{k-1}\lambda
几何分布的期望值为1λ\frac{1}{\lambda},即λ\lambda越大k越小

估计参数:根据书中公式P(accept)=1abM(x)dxP(accept)=\frac{1}{\int_a^bM(x)dx}

要让P(accept)P(accept)最大则需要M(x)M(x)越小,根据前提M(x)>f(x)M(x)>f(x)并且M(x)越小则M(x)越接近f(x)f(x)

题目37

1x1-1\leq x\leq 1f(x)=6x2(1x)2f(x)=6x^2(1-x)^2.
a.说明利用拒绝方法由该密度函数生成随机变量的一个算法,采集试验中有多大比例接受所采取的步骤?
b.编写一个计算机程序实现这个算法.

解题思路

a.首先绘制出本函数曲线
在这里插入图片描述
经计算在x=-1时函数达到最大值24
选择一个平均分布随机变量 m(x)=11(1)=12m(x)=\frac{1}{1-(-1)}=\frac{1}{2}
M(x)=qm(x)M(x)=qm(x).设置q=48q=48.这样M(x)M(x)为最贴近目标函数并且大于目标函数的平均分布

根据全概率公式 fY(y)=fYX(yx)f(x)dxf_Y(y)=\int_{-\infty}^{\infty}f_{Y|X}(y|x)f(x)dx,套用在本题时Y是离散的分别是接受、拒绝.X是连续的在[-1,1]有定义
P()=11f(x)M(x)m(x)dx=11f(x)qm(x)m(x)dx=1q11f(x)dxf(x)q=148325=215 \begin{aligned} P(接受)&=\int_{-1}^{1}\frac{f(x)}{M(x)}m(x)dx\\ &=\int_{-1}^{1}\frac{f(x)}{qm(x)}m(x)dx\\ &=\frac{1}{q}\int_{-1}^{1}f(x)dx\\ 将本题中的f(x)与q代入\\ &=\frac1{48}*\frac{32}{5}\\ &=\frac2{15} \end{aligned}

b.编写一个计算机程序实现这个算法.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RandomGen
{
    class Program
    {
        static int n = 100000; //生成随机变量的个数
        static int i_total = 0; //统计生成的总数

        static Random r = new Random();

        static void Main(string[] args)
        {

            int temp = 0;

            while (temp < n)
            {

               Console.WriteLine(GenerateSRD());

                temp++;
            }

            Console.WriteLine("共生成{0}次,成功{1}次", i_total, n);

            Console.Read();
        }


        /// <summary>
        /// 生成一个随机变量
        /// </summary>
        static double GenerateSRD()
        {

        L1: double u1 = r.Next(-10000, 10000) / 10000.0000;
            double u2 = r.NextDouble();

            i_total++;

            if (u2  < f(u1)/M(u1))
            {
                return u1;
            }
          goto L1; //重新执行


        }

        static double M(double x)
        {
            return 24;
        }

        static double f(double x)
        {
           double rt = 6 * Math.Pow(x, 2) * Math.Pow(1 - x, 2);
            return rt;
        }
    }

经过多次测试,程序接受次数与总生成次数之比为1:7.5即215\frac2{15}

题目38

1x1-1\leq x\leq 11α1-1\leq \alpha \leq 1f(x)=1αx2f(x)=\frac{1-\alpha x}{2}.
a.说明利用拒绝方法由该密度函数生成随机变量的一个算法,
b.编写一个计算机程序实现这个算法.

解题思路

a.说明利用拒绝方法由该密度函数生成随机变量的一个算法,
1.1x1-1\leq x\leq 11α1-1\leq \alpha \leq 1 区间内求f(x)f(x)的最大值

α&gt;0,f(x)\alpha&gt;0,f(x)最大值是1+α2\frac{1+\alpha}2
α&lt;0,f(x)\alpha&lt;0,f(x)最大值是1α2\frac{1-\alpha}2

找到一个均匀分布函数 m(x)=12,M(x)=1+α2m(x)=\frac12,M(x)=\frac{1+|\alpha|}2

再按标准的拒绝方法进行随机变量的生成。

b.编写一个计算机程序实现这个算法.
略,这个代码比上一题代码多一个参数即可

题目39

证明:如下生成离散型随机变量的方法是可行的(D.R.Fredkin).具体地,假设XX以概率为p0,p1,p2,...012...p_0,p_1,p_2,...分别取值0,1,2,...UU是均匀随机变量,如果U&lt;p0U&lt;p_0,返回X=0X=0,,否则,用Up0U-p_0代替UU; 如果新生成的UU小于p1p_1,返回X=1X=1,否则,从UU中减去p1p_1;然后新生成的UUp2p_2比较,等等。

解题思路

这是逆变化法,

XX的累计分布函数是FX(x)F_X(x),则U=FX(x)U=F_X(x)服务区间(0,1)上的均匀分布。(参见本书中的命题2.3.3)
根据本书中的命题2.3.4 令UU是[0,1]上的均匀分布,X=F1(U),X=F^{-1}(U),那么XX的cdf是F
P(Xx)=P(F1(U)x)=P(UF(x))=F(x)P(X\leq x)=P(F^{-1}(U)\leq x)=P(U\leq F(x))=F(x)

所以根据上述证明,本题方法生成的随机变量的累计分布函数就是F(X)F(X)

题目40

假定XXYY是离散的随机变量,具有函数概率质量函数pXY(x,y)p_{XY}(x,y)证明:如下步骤可以生成随机变量XpXY(xy)X\sim p_{X|Y}(x|y)
a.生成XpX(x)X\sim p_X(x).
b.以概率p(yX)p(y|X)授受XX.
c.如果接受XX,迭代终止,返回XX,否则,重新回到步骤a.

解题思路

根据题意,需要求P(X=x|接受)即是生成随机变量的质量函数
P(X=x)=P(X=x)P()=P(X=x)P(X=x)P()P()=PY(y)=xpYX(yx)pX(x)=p(yX)p(x)pY(y)=pXY(x,y)pY(y)=pXY(xy) \begin{aligned} P(X=x|接受)&amp;=\frac{P(X=x且接受)}{P(接受)}\\ &amp;=\frac{P(授受|X=x)P(X=x)}{P(接受)}\\ 利用全概率公式求得\\ P(接受)=P_Y(y)=\sum_{x}p_{Y|X}(y|x)p_X(x) \\ &amp;=\frac{p(y|X)p(x)}{p_Y(y)}\\ &amp;=\frac{p_{XY}(x,y)}{p_Y(y)}\\ &amp;=p_{X|Y}(x|y) \end{aligned}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章