數理統計與數據分析第三版習題 第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}

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