博客專欄

        EEPW首頁 > 博客 > 原創 | 一文讀懂泊松分布,指數分布和伽馬分布

        原創 | 一文讀懂泊松分布,指數分布和伽馬分布

        發布人:數據派THU 時間:2021-01-21 來源:工程師 發布文章

        在開始之前,我們需要預習一下二項分布。

        還是丟硬幣的例子,丟某塊特制的硬幣,假設正面向上的概率是P,則擲出圖片次,有K次向上的概率P是多少?

        將硬幣正面朝上的次數記為隨機變量X,則有

        24.png

        這種分布就是二項分布。容易證明,二項分布的數學期望 E(X)=np

        泊松分布

        我們回到泊松分布。先來看一個生活場景。

        宋朝慶歷年間,劉姥姥由于生活壓力,不得不根據祖傳秘方發明總結并始創了一種名叫十二香的調料,并開始在市場上叫賣。劉姥姥在街上賣了半年,由于本小利薄,味道贊絕,一直供不應求,但由于制作周期長,原料準備流程復雜,而且保存時間較短,一直無法提高產量。

        這一天,劉姥姥終于決定要弄清楚她每天剛制作的調料究竟是如何被火速買光的,以便提高進貨量來增加銷量。

        劉姥姥首先買了絕對充足的原料,熬夜制作了足份的十二香。賣了一周,每天開張五個時辰,結果沒賣光剩下的調料全部變質了只能丟掉,心疼的她難受了小半天。不過她總算是記錄下了寶貴的數據:這七天內每天調料的銷售情況。

        23.png

        劉姥姥看著這用浪費的調料換來的寶貴數據,想了想,打算以后每天都按照日出貨平均數:即10份來進原材料,制作,保存。

        劉姥姥的兒子劉大耳不同意。他認為:如果按照10份準備,那七天里有四天都不夠賣的,這可能會使王縣令的老婆買不到調料,將來一定會鬧事。

        劉大耳說:我們應該保證有90%以上的把握準備最少的調料每日的份數,使來咱這購買十二香的客人需求全都滿足。我們可以如此如此,這般這般……

        于是劉姥姥就聽從了大耳兒的建議,從此之后,生意更加興隆,至于王縣令后來入伙加盟,生意不斷做大,后來更是推陳出新創立了十三香舉世聞名,當然這都是后話了。

        那么當時劉大耳的方案是什么呢?接下來將一一道來。

        劉姥姥每天賣五個時辰,也就是600分鐘,如果每分鐘最多只能賣出一份調料,且在這一分鐘賣出調料的概率是P,那么這一天賣出10份調料的概率可以通過二項分布計算:

        22.png

        但是王縣令家里人丁興旺,他老婆有時候會一次買幾十份調料,那每分鐘可能就賣出去不止一份調料。于是劉大耳將分割六個時辰的時間間隔進一步縮小,分割成圖片,再利用極限的思想:

        21.png

        再抽象一些,那么在某天能賣出圖片份調料的概率應該是:

        20.png

        那么P如何計算呢?還記得二項分布的期望嗎:假設

        19.png

        而我們可以使用當圖片比較小的時候計算平均值得到的17.png來近似18.png

        另外,需要注意的是,在如上假設下,當n越來越大時,p值也會越來越小。

        我們來進一步計算一下這個概率:

        16.png

        而容易看出:

        QQ截圖20210121125100.png

        因此我們得到:

        QQ截圖20210121125122.png

        至此,我們就得到了教科書中泊松分布的概率密度函數!

        劉大耳用圖片近似替代這里的圖片。于是我們可以利用python中的scipy庫快速畫出劉姥姥每天賣出圖片份十二香的概率密度曲線和累計分布函數。

        import numpy as np

        from scipy import stats

        from matplotlib import pyplot as plt

        mu = 10

        x = np.arange(0,101,1) 

        plist = stats.poisson.pmf(x,mu) 

        clist = stats.poisson.cdf(x,mu)

        plt.plot(x,plist,label='poisson distribution pmf') # 

        plt.plot(x,cdflist,label='poisson distribution cdf') 

        plt.xlim((-1,15))

        plt.grid() 

        plt.legend() 

        plt.title(r'Poisson Distribution $\mu$:10') 

        plt.show()

        如圖1。近似從圖中得出:每天準備14份十二香,就有超過90%的把握不讓顧客乘興而來空手而去。

        15.png

        從上面的例子可以看出,泊松分布可以近似模擬一個離散事件在連續時間內發生的次數的概率分布。真實世界中有很多場景都和泊松分布有關,比如某網站在某段時間內的點擊率;客服中心在某段時間內接到電話的次數;醫院在某段時間內接生的嬰兒;放射性元素在某段時間內衰變的粒子個數……

        事實上我們通過上面的推導過程也能看出:當p很小(或n很大)時的二項分布就近似等于泊松分布,此時我們也可以用泊松分布來快速近似計算起來更麻煩的二項分布。不信的話我們把代碼和圖撂在這,請看圖2。

        import numpy as np 

        from scipy import stats 

        from matplotlib import pyplot as plt

        mu = 10 

        x = np.arange(0,101,1) 

        plist = stats.poisson.pmf(x,mu)

        blist1 = stats.binom.pmf(x,20,0.5) 

        blist2 = stats.binom.pmf(x,40,0.25) 

        blist3 = stats.binom.pmf(x,100,0.1)

        plt.plot(x,plist,label=r'poisson $/mu:10$',color='k') 

        plt.plot(x,blist1,'-.',label=r'binomial $n:20, p:0.5$',alpha=0.5) 

        plt.plot(x,blist2,'-.',label=r'binomial $n:40, p:0.25$',alpha=0.5) 

        plt.plot(x,blist3,'-.',label=r'binomial $n:100, p:0.1$',alpha=0.5)

        plt.xlim((-1,20)) 

        plt.title(r'Poisson and Binomial Distribution') 

        plt.grid() 

        plt.legend() 

        plt.show()

        14.png

        指數分布

        我們繼續劉姥姥的故事。

        話說這劉姥姥還有個孫子劉小笨,隨著劉姥姥和劉大耳的買賣日益紅火,劉小笨的伙食也越來越好,飽暖思學術,開始成天開始研究算術。劉小笨天天看劉姥姥賣調料,發現賣出一份調料所需要的時間間隔符合某種分布。經過思考,他決定把這種分布稱為指數分布。

        經過后人對劉小笨的著作進行解讀,我們發現了他的思考過程。

        這里我們先考慮簡單的量,比如賣出一份調料所需要的時間大于1個時辰(2個小時,120分鐘)的概率,其實和1個時辰內一份調料也沒有賣出的概率,之和為1。

        另外,假設每個時辰平均賣出的調料數為9.png(根據劉姥姥的記錄,我們知道這個數近似為2)。記隨機變量Y為兩次賣出調料之間的時間間隔。根據之前劉大耳的假設,立刻有:

        13.png

        至此,劉小笨可以估算任意時刻他姥姥賣出一份調料的概率。比如,任何1個時辰內,會有調料賣出的概率是:

        QQ截圖20210121125343.png

        而在接下來的30分鐘到60分鐘內,會有調料賣出的概率是:

        12.png

        事實上,到這里我們已經得到了圖片的累計分布函數了:

        11.png

        對其求導就可以得到其概率密度函數:

        QQ截圖20210121125432.png

        至此,我們就得到了劉姥姥連續兩次賣出調料的時間間隔圖片的概率密度函數,隨機變量就符合指數分布,其中的圖片指的是每個時辰平均賣出調料的份數(這里是2) 。

        指數分布的圖像我們可以畫出來,如圖3。

        import numpy as np 

        from scipy import stats 

        from matplotlib import pyplot as plt

        x = np.arange(0,10,0.1) 

        elist1 = stats.expon.pdf(x,scale=1/2) 

        elist2 = stats.expon.pdf(x,scale=1/3) 

        elist3 = stats.expon.pdf(x,scale=1/5)

        plt.plot(x,elist1,label=r'$\lambda:2$') 

        plt.plot(x,elist2,label=r'$\lambda:3$') 

        plt.plot(x,elist3,label=r'$\lambda:5$') 

        plt.xlim((0,3)) 

        plt.grid() 

        plt.legend() 

        plt.title(r'Exponential Distribution PDF') 

        plt.show()

        10.png

        可以從圖中看出,當每個時辰賣出更多的調料份數時,更小的連續兩次賣出調料時間間隔發生的概率更高,這很合理。

        用一句話來概括,每天賣出的調料份數服從的是泊松分布,而賣出兩份調料的時間間隔服從指數分布,它們的期望分別代表了平均每天賣出的調料份數和每份調料賣出的平均時間間隔。真實世界中同樣有很多場景也和指數分布有關,比如某網站被訪問的時間間隔;客服中心連續接到電話中間的休息時間間隔;電子產品的壽命(出現故障的時間間隔即正常使用壽命)……

        伽馬分布

        我們緊接上面的故事展開后續。

        話說劉姥姥去世之后,劉小笨和王縣令合作開店。這個時候生意更好了,王縣令粗略統計了一下,發現平均每個時辰能賣出100份調料。他于是問劉小笨:昨天剛做好的那300份調料都賣光的時間滿足什么概率分布?劉小笨沉吟片刻,感覺這種分布和之前的泊松分布指數分布都不一樣,于是他把這種分布稱作:伽馬分布。

        劉小笨后來的手札記錄了他當時的思考過程。

        假設每份調料賣出都是相互獨立的,而單位時間賣出調料份數均值為9.png。則在這里,從開張到賣出到當日第X份調料所需要的時間隨機變量Tx(t)就是我們應該關注的量。我們假設該隨機變量分布的概率密度函數為7.png。進一步的,我們根據概率密度函數定義有:

        8.png

        而我們同樣可以使用處理泊松分布時的方法,將t均分為k份,計算當k趨近于無窮大時的7.png。需要注意的是,t時間后,我們應該賣出了第x份,也就是說,在將t這一時間段分為k份后,前k-1份中我們肯定已經賣出了x-1份調料。假設每一小份時間段內我們賣出調料的概率為p,那么這么問題又退化成了二項分布相關的問題。

        6.png

        根據期望的定義,我們有5.png, 將4.png帶入上式。

        3.png

        至此,我們得到了伽馬分布的概率密度函數。更一般,當我們允許X為小數時,可以對階乘做適當的解析延拓,也就是伽馬函數了。

        2.png

        別看這式子如此復雜,實際上伽馬分布就是要解決計算從此時到后X次隨機事件都發生,需要等多長時間的問題。

        顯然,當x=1時,退化為了指數分布,即要解決的問題退化為了計算下一次發生該隨機事件的時間間隔問題。

        我們來看看伽馬分布密度函數的函數圖像。

        import numpy as np 

        from scipy import stats 

        from matplotlib import pyplot as plt

        x = np.arange(0,10,0.1)

        glist1 = stats.gamma.pdf(x,1) 

        glist2 = stats.gamma.pdf(x,2) 

        glist3 = stats.gamma.pdf(x,3)

        plt.plot(x,glist1,label=r'$x:1$') 

        plt.plot(x,glist2,label=r'$x:2$') 

        plt.plot(x,glist3,label=r'$x:3$') 

        plt.grid() 

        plt.legend() 

        plt.title(r'Gamma Distribution PDF: $\lambda:1$') 

        plt.show()

        1.png

        至此,我們講解完了泊松分布,指數分布和伽馬分布。

        總結一下,泊松分布解決的是離散事件發生在連續的時間內的次數概率分布的問題;指數分布解決的是獨立離散事件發生一次所需連續時間長度分布的問題;伽馬分布解決的是多次離散事件發生所需連續時間長度分布的問題。其中,指數分布是伽馬分布的特例。

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞:

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 龙胜| 会东县| 体育| 鲁甸县| 眉山市| 重庆市| 合川市| 德清县| 正宁县| 鄄城县| 阿瓦提县| 嘉黎县| 延寿县| 屯昌县| 安图县| 巫山县| 奎屯市| 邵武市| 会东县| 天全县| 林周县| 师宗县| 周至县| 云南省| 镇康县| 陆川县| 瑞丽市| 康定县| 潢川县| 宁海县| 游戏| 彰化县| 沐川县| 莱芜市| 三河市| 贵阳市| 全椒县| 永川市| 文水县| 元阳县| 包头市|