电竞比分网-中国电竞赛事及体育赛事平台

分享

泊松分布以及在什么情況下使用它

 taotao_2016 2021-01-17

一個(gè)故事:你已經(jīng)做了10年的自由職業(yè)者了。到目前為止,你的平均年收入約為8萬(wàn)美元。今年,你覺(jué)得自己陷入了困境,決定要達(dá)到6位數(shù)。要做到這一點(diǎn),你需要先計(jì)算這一令人興奮的成就發(fā)生的概率,但你不知道怎么做。

在世界上有許多場(chǎng)景,其中存在某個(gè)隨機(jī)事件的已知概率,企業(yè)希望發(fā)現(xiàn)該事件在未來(lái)發(fā)生的概率大于或小于這個(gè)概率。例如,已經(jīng)知道自己平均銷(xiāo)售額的零售商所有者會(huì)試圖猜測(cè)他們?cè)诤谏瞧谖寤螂p十一等特殊日子能多賺多少錢(qián)。這將幫助他們儲(chǔ)存更多的產(chǎn)品,并相應(yīng)地管理他們的員工。

在這篇文章中,我們將討論用于模擬上述情況的泊松分布背后的理論,如何理解和使用它的公式,以及如何使用Python代碼來(lái)模擬它。

離散型概率分布

這篇文章假設(shè)你對(duì)概率有一個(gè)基本的了解。在我們開(kāi)始真正的文章之前,我們將建立一些對(duì)離散概率分布的理解。

首先,讓我們定義離散的含義。在描述統(tǒng)計(jì)學(xué)中,離散數(shù)據(jù)是通過(guò)計(jì)數(shù)記錄或收集的任何數(shù)據(jù),即整數(shù)。例如考試分?jǐn)?shù)、停車(chē)場(chǎng)里的汽車(chē)數(shù)量、醫(yī)院里的分娩數(shù)量等。

然后,有一些隨機(jī)實(shí)驗(yàn)會(huì)產(chǎn)生離散的結(jié)果。例如,拋硬幣有兩種結(jié)果:正面和反面(1和0),擲骰子有6種離散結(jié)果,以此類(lèi)推。如果用一個(gè)隨機(jī)變量X來(lái)存儲(chǔ)離散實(shí)驗(yàn)的可能結(jié)果,那么它將具有離散概率分布。

概率分布記錄了隨機(jī)實(shí)驗(yàn)的所有可能結(jié)果。

作為一個(gè)簡(jiǎn)單的例子,讓我們來(lái)構(gòu)建一次拋硬幣的分布:

泊松分布以及在什么情況下使用它

這很容易。如果我們想以編程的方式記錄這個(gè)分布,它應(yīng)該是Python列表或Numpy數(shù)組的形式:

泊松分布以及在什么情況下使用它

然而,你可以想象,對(duì)于有許多可能結(jié)果的大型實(shí)驗(yàn),用這種方法建立分布并找到概率是不可能的。值得慶幸的是,每個(gè)概率分布都有自己的公式來(lái)計(jì)算任何結(jié)果的概率。對(duì)于離散概率分布,這些函數(shù)稱(chēng)為概率質(zhì)量函數(shù)(PMF)。

泊松分布

我們將通過(guò)一個(gè)案例來(lái)開(kāi)始理解泊松分布。假如你真的很喜歡在醫(yī)院里看新生兒。根據(jù)你的觀察和報(bào)告,你知道醫(yī)院平均每小時(shí)出生6個(gè)新生兒。

你發(fā)現(xiàn)你明天要出差,所以在去機(jī)場(chǎng)之前,你想最后一次去醫(yī)院。因?yàn)槟阋x開(kāi)好幾個(gè)月,你想看到盡可能多的新生兒,所以你想知道在起飛前一小時(shí)是否有機(jī)會(huì)見(jiàn)到10個(gè)或更多的嬰兒。

如果我們把觀察新生兒作為一個(gè)隨機(jī)實(shí)驗(yàn),結(jié)果將遵循經(jīng)典的泊松分布。原因是它滿(mǎn)足泊松分布的所有條件:

有一個(gè)已知的事件速率:平均每小時(shí)有6個(gè)新生兒

事件是獨(dú)立發(fā)生的:1嬰兒的出生并不影響下一個(gè)嬰兒的出生時(shí)間

已知的出生率隨時(shí)間是不變的:平均每小時(shí)嬰兒的數(shù)量不隨時(shí)間變化

兩件事不會(huì)在同一時(shí)刻發(fā)生(每個(gè)結(jié)果都是離散的)

泊松分布具有許多重要的業(yè)務(wù)含義。企業(yè)通常使用他來(lái)預(yù)測(cè)某一天的銷(xiāo)售額或客戶(hù)數(shù)量,因?yàn)樗麄冎烂刻斓钠骄鶅r(jià)格。做出這樣的預(yù)測(cè)有助于企業(yè)在生產(chǎn)、調(diào)度或人員配備方面做出更好的決策。例如,庫(kù)存過(guò)多意味著銷(xiāo)售活動(dòng)減少,或者沒(méi)有足夠的商品意味著失去商機(jī)。

簡(jiǎn)而言之,泊松分布有助于發(fā)現(xiàn)事件在固定時(shí)間間隔內(nèi)發(fā)生的概率大于或小于已經(jīng)記錄的速率(通常表示為λ(lambda))。

其概率質(zhì)量函數(shù)為:

泊松分布以及在什么情況下使用它

這個(gè)公式的字母含義如下:

1. k是成功的次數(shù)(期望發(fā)生的次數(shù))

1. λ是給定的速率

1. e為歐拉數(shù),e = 2.71828…

1. k !是k的階乘嗎

使用這個(gè)公式,我們可以求出看到10個(gè)新生兒知道平均出生率為6的概率:

泊松分布以及在什么情況下使用它

不幸的是,只有大約4%的幾率能看到10個(gè)孩子。

我們不會(huì)詳細(xì)講解這個(gè)公式是如何推導(dǎo)出來(lái)的,但如果你感興趣,請(qǐng)觀看可汗學(xué)院的視頻。

還有一些要點(diǎn)你必須記住。即使有一個(gè)已知的速率,它只是一個(gè)平均值,所以事件的時(shí)間可能是完全隨機(jī)的。例如,你可以觀察兩個(gè)背靠背出生的嬰兒,或者你可能會(huì)為下一個(gè)嬰兒等待半個(gè)小時(shí)。

而且,在實(shí)踐中,λ的速率可能不總是恒定的。這甚至適用于我們的新生兒實(shí)驗(yàn)。即使這個(gè)條件不成立,我們?nèi)匀豢梢哉J(rèn)為分布是泊松分布,因?yàn)椴此煞植甲銐蚪咏?,可以模擬情況的行為。

模擬泊松分布

利用numpy從泊松分布中模擬或抽取樣本非常容易。我們首先導(dǎo)入它,并使用它的隨機(jī)模塊進(jìn)行模擬:

import numpy as np

從泊松分布中提取樣本,我們只需要速率參數(shù)λ。我們把它插入np,隨機(jī)的。泊松函數(shù),并指定樣本個(gè)數(shù):

poisson = np.random.poisson(lam=10, size=10000)

這里,我們模擬了一個(gè)速率為10的分布,有10k個(gè)數(shù)據(jù)點(diǎn)。為了看到這個(gè)分布,我們將繪制其PMF的結(jié)果。雖然我們可以手工完成,但已經(jīng)有一個(gè)非常好的包叫empiricaldist,由艾倫·b·唐尼(Allen B. Downey)撰寫(xiě),他是《ThinkPython》(ThinkPython)和《ThinkStats》(ThinkStats)等著名著作的作者。我們將安裝并導(dǎo)入其Pmf函數(shù)到我們的環(huán)境中:

from empiricaldist import Pmf # pip install empiricaldist

Pmf有一個(gè)名為from_seq的函數(shù),它接受任何分布并計(jì)算Pmf:

poisson = np.random.poisson(lam=10, size=10000)pmf_poisson = Pmf.from_seq(poisson)pmf_poisson
泊松分布以及在什么情況下使用它

回想一下,PMF顯示了每個(gè)唯一結(jié)果的概率,所以在上面的結(jié)果中,結(jié)果被作為指數(shù)和概率下的概率給出。讓我們使用matplotlib來(lái)繪制它:

# Create figure and axes objectsfig, ax = plt.subplots(figsize=(20, 10))# Plot the PMFax.plot(pmf_poisson, marker='.') # label each data point with a dot# Labellingax.set(title='Probability Mass Function of Poisson Distribution', ylabel='P (X = x)', xlabel='Number of events')plt.show();
泊松分布以及在什么情況下使用它

正如預(yù)期的那樣,最高的概率是均值(速率參數(shù),λ)。

現(xiàn)在,讓我們假設(shè)我們忘記了泊松分布的PMF公式。如果我們做觀察新生兒的實(shí)驗(yàn),我們?nèi)绾吻蟪隹吹?0個(gè)新生兒而比率為6的概率呢?

首先,我們用給定的速率作為參數(shù)來(lái)模擬完美泊松分布。同時(shí),為了獲得更好的精度,我們會(huì)繪制大量的樣本:

child_births = np.random.poisson(lam=6, size=1000000)

我們對(duì)一個(gè)速率為6,長(zhǎng)度為100萬(wàn)的分布進(jìn)行抽樣。接下來(lái),我們看看他們中有多少人有10個(gè)孩子:

births_10 = np.sum(child_births == 10)>>> births_1041114

所以,我們?cè)?1114個(gè)試驗(yàn)中觀察了10個(gè)嬰兒(每個(gè)小時(shí)可以考慮有一個(gè)試驗(yàn))。然后,我們用這個(gè)數(shù)除以樣本總數(shù):

>>> births_10 / 1e60.041114

如果您回想一下,使用PMF公式,結(jié)果是0.0413,我們可以看到我們手工編寫(xiě)的解決方案非常接近。

結(jié)論

關(guān)于泊松分布仍有許多值得探討的地方。我們討論了這個(gè)詞的基本用法及其在商業(yè)世界中的含義。泊松分布還有一些有趣的地方比如它和二項(xiàng)分布的關(guān)系。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多