欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python算密度函數(shù) python計算概率密度

如何用Python實現(xiàn)“estimate the means and variances”

數(shù)據(jù)要擬合正態(tài)分布,實際上就是計算樣本的均值和偽方差,用這兩個數(shù)據(jù)直接帶入正態(tài)分布的概率密度函數(shù)。

岱山網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,岱山網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為岱山上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的岱山做網(wǎng)站的公司定做!

所以代碼是很好寫的。

import numpy as np

from scipy.stats import norm

import matplotlib.pyplot as plt

m = np.mean(data)

s = np.std(data)

plt.plot(norm.pdf(data, m, s))

如何用python求出某已知正態(tài)分布的概率密度

算出平均值和標準差μ、σ,代入正態(tài)分布密度函數(shù)表達式:

f(x) = exp{-(x-μ)2/2σ2}/[√(2π)σ]

給定x值,即可算出f值。

如何根據(jù)概率密度函數(shù)生成隨機數(shù)

如何根據(jù)概率密度函數(shù)生成隨機數(shù)

我這里并不是要講“偽隨機”、“真隨機”這樣的問題,而是關(guān)于如何生成服從某個概率分布的隨機數(shù)(或者說 sample)的問題。比如,你想要從一個服從正態(tài)分布的隨機變量得到 100 個樣本,那么肯定抽到接近其均值的樣本的概率要大許多,從而導致抽到的樣本很多是集中在那附近的。當然,要解決這個問題,我們通常都假設(shè)我們已經(jīng)有了一個 生成 0 到 1 之間均勻分布的隨機數(shù)的工具,就好像 random.org 給我們的結(jié)果那樣,事實上許多時候我們也并不太關(guān)心它們是真隨機數(shù)還是偽隨機數(shù),看起來差不多就行了。 :p

現(xiàn)在再回到我們的問題,看起來似乎是很簡單的,按照概率分布的話,只要在概率密度大的地方多抽一些樣本不就行了嗎?可是具體要怎么做呢?要真動起手 來,似乎有不是那么直觀了。實際上,這個問題曾經(jīng)也是困擾了我很久,最近又被人問起,那我們不妨在這里一起來總結(jié)一下。為了避免一下子就陷入抽象的公式推 導,那就還是從一個簡單的具體例子出發(fā)好了,假設(shè)我們要抽樣的概率分布其概率密度函數(shù)為 p(x) = \frac{1}{9}x^2 ,并且被限制在區(qū)間 [0, 3] 上,如右上圖所示。

好了,假設(shè)現(xiàn)在我們要抽 100 個服從這個分布的隨機數(shù),直觀上來講,抽出來的接近 3 的數(shù)字肯定要比接近 0 的數(shù)字要多。那究竟要怎樣抽才能得到這樣的結(jié)果呢?由于我們實際上是不能控制最原始的隨機數(shù)生成過程的,我們只能得到一組均勻分布的隨機數(shù),而這組隨機數(shù) 的生成過程對于我們完全是透明的,所以,我們能做的只有把這組均勻分布的隨機數(shù)做一些變換讓他符合我們的需求。找到下手的點了,可是究竟要怎樣變換呢?有 一個變換相信大家都是很熟悉的,假設(shè)我們有一組 [0,1] 之間的均勻分布的隨機數(shù) X_0 ,那么令 X_1=3X_0 的話,X_1 就是一組在 [0,3] 之間均勻分布的隨機數(shù)了,不難想象,X_1 等于某個數(shù) x^* 的概率就是 X_0 等于 x^*/3 的概率(“等于某個數(shù)的概率”這種說法對于連續(xù)型隨機變量來說其實是不合適的,不過大概可以理解所表達的意思啦)。似乎有一種可以“逆轉(zhuǎn)回去”的感覺了。

于是讓我們來考慮更一般的變換。首先,我們知道 X_1 的概率密度函數(shù)是 f(x) = 1/3, x\in[0,3] ,假設(shè)現(xiàn)在我們令 Y = \phi (X_1) ,不妨先假定 \phi(\cdot) 是嚴格單調(diào)遞增的函數(shù),這樣我們可以求其逆函數(shù) \phi^{-1}(\cdot) (也是嚴格單調(diào)遞增的)。現(xiàn)在來看變換后的隨機變量 Y 會服從一個什么樣的分布呢?

這里需要小心,因為這里都是連續(xù)型的隨機變量,并不像離散型隨機變量那樣可以說成“等于某個值的概率”,因此我們需要轉(zhuǎn)換為概率分布函數(shù)來處理,也就是求一個積分啦:

\displaystyle F(x) = P(X \leq x) = \int_{-\infty}^x f(t)dt

那么 X_1 的概率分布函數(shù)為 F(x) = \frac{1}{3}x 。很顯然 Y 小于或等于某個特定的值 y^* 這件事情是等價于 X_1=\phi^{-1}(Y)\leq\phi^{-1}(y^*) 這件事情的。換句話說,P(Y\leq y^*) 等于 P(X_1 \leq \phi^{-1}(y^*)) 。于是,Y 的概率分布函數(shù)就可以得到了:

\displaystyle G(y) = P(Y \leq y) = P(X_1 \leq \phi^{-1}(y)) = F(\phi^{-1}(y))

再求導我們就能得到 Y 的概率密度函數(shù):

\displaystyle g(y) = \frac{dG(y)}{dy} = f(\phi^{-1}(y))\fracko0mukk{dy}\phi^{-1}(y)

這樣一來,我們就得到了對于一個隨機變量進行一個映射 \phi(\cdot) 之后得到的隨即變量的分布,那么,回到我們剛才的問題,我們想讓這個結(jié)果分布就是我們所求的,然后再反推得 \phi(\cdot) 即可:

\displaystyle \frac{1}{9}y^2 = g(y) = f(\phi^{-1}(y))\fracgq0e0y0{dy}\phi^{-1}(y) = \frac{1}{3}\frace00i0yg{dy}\phi^{-1}(y)

經(jīng)過簡單的化簡就可以得到 \phi^{-1}(y) = \frac{1}{9} y^3 ,亦即 \phi(x) = (9x)^{1/3} 。也就是說,把得到的隨機數(shù) X_1 帶入到到函數(shù) \phi(\cdot) 中所得到的結(jié)果,就是符合我們預(yù)期要求的隨機數(shù)啦! :D 讓我們來驗證一下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

#!/usr/bin/python import numpy as np import matplotlib.pyplot as plot N = 10000 X0 = np.random.rand(N) X1 = 3*X0 Y = np.power(9*X1, 1.0/3) t = np.arange(0.0, 3.0, 0.01) y = t*t/9 plot.plot(t, y, 'r-', linewidth=1) plot.hist(Y, bins=50, normed=1, facecolor='green', alpha=0.75)plot.show()

這就沒錯啦,目的達成啦!讓我們來總結(jié)一下。問題是這樣的,我們有一個服從均勻分布的隨機變量 X ,它的概率密度函數(shù)為一個常數(shù) f(x)=C ,如果是 [0,1] 上的分布,那么常數(shù) C 就直接等于 1 了。現(xiàn)在我們要得到一個隨機變量 Y 使其概率密度函數(shù)為 g(y) ,做法就是構(gòu)造出一個函數(shù) \phi(\cdot) 滿足(在這里加上了絕對值符號,這是因為 \phi(\cdot) 如果不是遞增而是遞減的話,推導的過程中有一處就需要反過來)

\displaystyle g(y) = f(\phi^{-1}(y))\left|\frac0au0u0k{dy}\phi^{-1}(y)\right| = C\left|\fracmuuaeci{dy}\phi^{-1}(y)\right|

反推過來就是,對目標 y 的概率密度函數(shù)求一個積分(其實就是得到它的概率分布函數(shù) CDF ,如果一開始就拿到的是 CDF 當然更好),然后求其反函數(shù)就可以得到需要的變換 \phi(\cdot) 了。實際上,這種方法有一個聽起來稍微專業(yè)一點的名字:Inverse Transform Sampling Method 。不過,雖然看起來很簡單,但是實際操作起來卻比較困難,因為對于許多函數(shù)來說,求逆是比較困難的,求積分就更困難了,如果寫不出解析解,不得已只能用數(shù) 值方法來逼近的話,計算效率就很讓人擔心了。可事實上也是如此,就連我們最常見的一維標準正態(tài)分布,也很難用這樣的方法來抽樣,因為它的概率密度函數(shù)

\displaystyle g(y) = \frac{1}{\sqrt{2\pi}}e^{-\frac{1}{2}y^2}

的不定積分沒有一個解析形式。這可真是一點也不好玩,費了這么大勁,結(jié)果好像什么都干不了。看來這個看似簡單的問題似乎還是比較復雜的,不過也不要灰心,至少對于高斯分布來說,我們還有一個叫做 Box Muller 的方法可以專門來做這個事情。因為高斯分布比較奇怪,雖然一維的時候概率分布函數(shù)無法寫出解析式,但是二維的情況卻可以通過一些技巧得出一個解析式來。

首先我們來考慮一個二維的且兩個維度相互獨立的高斯分布,它的概率密度函數(shù)為

\displaystyle f(x,y) = \frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}\cdot\frac{1}{\sqrt{2\pi}}e^{-\frac{y^2}{2}} = \frac{1}{2\pi}e^{-\frac{x^2+y^2}{2}}

這個分布是關(guān)于原點對稱的,如果考慮使用極坐標 (\theta,r) (其中 \theta\in[0,2\pi), r\in[0,\infty) )的話,我們有 x = r\cos\theta,y=r\sin\theta 這樣的變換。這樣,概率密度函數(shù)是寫成:

\displaystyle f(\theta,r) = \frac{1}{2\pi}e^{-\frac{r^2}{2}}

注意到在給定 r 的情況下其概率密度是不依賴于 \theta 的,也就是說對于 \theta 來說是一個均勻分布,這和我們所了解的標準正態(tài)分布也是符合的:在一個圓上的點的概率是相等的。確定了 \theta 的分布,讓我們再來看 r,用類似于前面的方法:

\displaystyle \begin{aligned} P(rR) = \int_0^{2\pi}\int_0^R\frac{1}{2\pi}e^{\frac{r^2}{2}}rdrd\theta \ = \int_0^Re^{-\frac{r^2}{2}}rdr \ = 1-e^{-\frac{R^2}{2}} \end{aligned}

根據(jù)前面得出的結(jié)論,我現(xiàn)在得到了 r 的概率分布函數(shù),是不是只要求一下逆就可以得到一個 \phi(\cdot) 了?亦即 \phi(t) = \sqrt{-2\log (1-t)} 。

現(xiàn)在只要把這一些線索串起來,假設(shè)我們有兩個相互獨立的平均分布在 [0,1] 上的隨機變量 T_1 和 T_2 ,那么 2\pi T_1 就可以得到 \theta 了,而 \phi(T_2) = \sqrt{-2\log(1-T_2)} 就得到 r 了(實際上,由于 T_2 和 1-T_2 實際上是相同的分布,所以通常直接寫為 \sqrt{-2\log T_2})。再把極坐標換回笛卡爾坐標:

\displaystyle \begin{aligned} x = r\cos\theta = \sqrt{-2\log T_2}\cdot \cos(2\pi T_1) \ y = r\sin\theta = \sqrt{-2\log T_2}\cdot \sin(2\pi T_1) \end{aligned}

這樣我們就能得到一個二維的正態(tài)分布的抽樣了。可以直觀地驗證一下,二維不太好畫,就畫成 heatmap 了,看著比較熱的區(qū)域就是概率比較大的,程序如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

#!/usr/bin/python import numpy as np import matplotlib.pyplot as plot N = 50000 T1 = np.random.rand(N) T2 = np.random.rand(N) r = np.sqrt(-2*np.log(T2)) theta = 2*np.pi*T1 X = r*np.cos(theta) Y = r*np.sin(theta) heatmap, xedges, yedges = np.histogram2d(X, Y, bins=80) extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] plot.imshow(heatmap, extent=extent) plot.show()

畫出來的圖像這個樣子:

不太好看,但是大概的形狀是可以看出來的。其實有了二維的高斯分布,再注意到兩個維度在我們這里是相互獨立的,那么直接取其中任意一個維度,就是一個一維高斯分布了。如下:

如果 X\sim N(0,1) 即服從標準正態(tài)分布的話,則有 \sigma X+\mu \sim N(\mu, \sigma^2) ,也就是說,有了標準正態(tài)分布,其他所有的正態(tài)分布的抽樣也都可以完成了。這下總算有點心滿意足了。不過別急,還有最后一個問題:多元高斯分布。一般最常 用不就是二元嗎?二元不是我們一開始就推出來了嗎?推出來了確實沒錯,不過我們考慮的是最簡單的情形,當然同樣可以通過 \sigma X+\mu 這樣的方式來處理每一個維度,不過高維的情形還有一個需要考慮的就是各個維度之間的相關(guān)性——我們之前處理的都是兩個維度相互獨立的情況。對于一般的多維正態(tài)分布 X\sim N(\mathbf{\mu}, \Sigma) ,如果各個維度之間是相互獨立的,就對應(yīng)于協(xié)方差矩陣 \Sigma 是一個對角陣,但是如果 \Sigma 在非對角線的地方存在非零元素的話,就說明對應(yīng)的兩個維度之間存在相關(guān)性。

這個問題還是比較好解決的,高斯分布有這樣的性質(zhì):類似于一維的情況,對于多維正態(tài)分布 X\sim N(\mathbf{\mu}, \Sigma),那么新的隨機變量 X_1=\mathbf{\mu}_1 + LX 將會滿足

\displaystyle X_1 \sim N(\mathbf{\mu}_1+L\mu, L\Sigma L^T)

所以,對于一個給定的高斯分布 N(\mathbf{\mu}, \Sigma) 來說,只要先生成一個對應(yīng)維度的標準正態(tài)分布 X\sim N(0, I) ,然后令 X_1 = \mu+LX 即可,其中 L 是對 \Sigma 進行 Cholesky Decomposition 的結(jié)果,即 \Sigma = LL^T 。

結(jié)束之前讓我們來看看 matlab 畫個 3D 圖來改善一下心情:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

N = 50000; T1 = rand(1, N); T2 = rand(1, N); r = sqrt(-2*log(T2)); theta = 2*pi*T1; X =[r.*cos(theta); r.*sin(theta)]; mu = [1; 2]; Sigma = [5 2; 2 1]; L = chol(Sigma); X1 = repmat(mu,1, N) + L*X; nbin = 30; hist3(X1', [nbin nbin]); set(gcf, 'renderer', 'opengl'); set(get(gca,'child'), 'FaceColor', 'interp', 'CDataMode', 'auto'); [z c] = hist3(X1', [nbin nbin]); [x y] =meshgrid(c{1}, c{2}); figure; surfc(x,y,-z);

下面兩幅圖,哪幅好看一些(注意坐標比例不一樣,所以看不出形狀和旋轉(zhuǎn)了)?似乎都不太好看,不過感覺還是比前面的 heatmap 要好一點啦!

然后,到這里為止,我們算是把高斯分布弄清楚了,不過這只是給一個介紹性的東西,里面的數(shù)學推導也并不嚴格,而 Box Muller 也并不是最高效的高斯采樣的算法,不過,就算我們不打算再深入討論高斯采樣,采樣這個問題本身也還有許多不盡人意的地方,我們推導出來的結(jié)論可以說只能用 于一小部分簡單的分布,連高斯分布都要通過 trick 來解決,另一些本身連概率密度函數(shù)都寫不出來或者有各種奇怪數(shù)學特性的分布就更難處理了。所以本文的標題里也說了,這是上篇,如果什么時候有機會抽出時間 來寫下篇的話,我將會介紹一些更加通用和強大的方法,諸如 Rejection Sampling 、Gibbs Sampling 以及 Markov Chain Monte Carlo (MCMC) 等方法。如果你比較感興趣,可以先自行 Google 一下解饞! :D

如何在Python中實現(xiàn)這五類強大的概率分布

概率分布有兩種類型:離散(discrete)概率分布和連續(xù)(continuous)概率分布。

離散概率分布也稱為概率質(zhì)量函數(shù)(probability mass function)。離散概率分布的例子有伯努利分布(Bernoulli distribution)、二項分布(binomial distribution)、泊松分布(Poisson distribution)和幾何分布(geometric distribution)等。

連續(xù)概率分布也稱為概率密度函數(shù)(probability density function),它們是具有連續(xù)取值(例如一條實線上的值)的函數(shù)。正態(tài)分布(normal distribution)、指數(shù)分布(exponential distribution)和β分布(beta distribution)等都屬于連續(xù)概率分布。

若想了解更多關(guān)于離散和連續(xù)隨機變量的知識,你可以觀看可汗學院關(guān)于概率分布的視頻。

統(tǒng)計學入門級:常見概率分布+python繪制分布圖

如果隨機變量X的所有取值都可以逐個列舉出來,則稱X為離散型隨機變量。相應(yīng)的概率分布有二項分布,泊松分布。

如果隨機變量X的所有取值無法逐個列舉出來,而是取數(shù)軸上某一區(qū)間內(nèi)的任一點,則稱X為連續(xù)型隨機變量。相應(yīng)的概率分布有正態(tài)分布,均勻分布,指數(shù)分布,伽馬分布,偏態(tài)分布,卡方分布,beta分布等。(真多分布,好恐怖~~)

在離散型隨機變量X的一切可能值中,各可能值與其對應(yīng)概率的乘積之和稱為該隨機變量X的期望值,記作E(X) 。比如有隨機變量,取值依次為:2,2,2,4,5。求其平均值:(2+2+2+4+5)/5 = 3。

期望值也就是該隨機變量總體的均值。 推導過程如下:

= (2+2+2+4+5)/5

= 1/5 2 3 + 4/5 + 5/5

= 3/5 2 + 1/5 4 + 1/5 5

= 0.6 2 + 0.2 4 + 0.2 5

= 60% 2 + 20% 4 + 20%*5

= 1.2 + 0.8 + 1

= 3

倒數(shù)第三步可以解釋為值為2的數(shù)字出現(xiàn)的概率為60%,4的概率為20%,5的概率為20%。 所以E(X) = 60% 2 + 20% 4 + 20%*5 = μ = 3。

0-1分布(兩點分布),它的隨機變量的取值為1或0。即離散型隨機變量X的概率分布為:P{X=0} = 1-p, P{X=1} = p,即:

則稱隨機變量X服從參數(shù)為p的0-1分布,記作X~B(1,p)。

在生活中有很多例子服從兩點分布,比如投資是否中標,新生嬰兒是男孩還是女孩,檢查產(chǎn)品是否合格等等。

大家非常熟悉的拋硬幣試驗對應(yīng)的分布就是二項分布。拋硬幣試驗要么出現(xiàn)正面,要么就是反面,只包含這兩個結(jié)果。出現(xiàn)正面的次數(shù)是一個隨機變量,這種隨機變量所服從的概率分布通常稱為 二項分布 。

像拋硬幣這類試驗所具有的共同性質(zhì)總結(jié)如下:(以拋硬幣為例)

通常稱具有上述特征的n次重復獨立試驗為n重伯努利試驗。簡稱伯努利試驗或伯努利試驗概型。特別地,當試驗次數(shù)為1時,二項分布服從0-1分布(兩點分布)。

舉個栗子:拋3次均勻的硬幣,求結(jié)果出現(xiàn)有2個正面的概率 。

已知p = 0.5 (出現(xiàn)正面的概率) ,n = 3 ,k = 2

所以拋3次均勻的硬幣,求結(jié)果出現(xiàn)有2個正面的概率為3/8。

二項分布的期望值和方差 分別為:

泊松分布是用來描述在一 指定時間范圍內(nèi)或在指定的面積或體積之內(nèi)某一事件出現(xiàn)的次數(shù)的分布 。生活中服從泊松分布的例子比如有每天房產(chǎn)中介接待的客戶數(shù),某微博每月出現(xiàn)服務(wù)器癱瘓的次數(shù)等等。 泊松分布的公式為 :

其中 λ 為給定的時間間隔內(nèi)事件的平均數(shù),λ = np。e為一個數(shù)學常數(shù),一個無限不循環(huán)小數(shù),其值約為2.71828。

泊松分布的期望值和方差 分別為:

使用Python繪制泊松分布的概率分布圖:

因為連續(xù)型隨機變量可以取某一區(qū)間或整個實數(shù)軸上的任意一個值,所以通常用一個函數(shù)f(x)來表示連續(xù)型隨機變量,而f(x)就稱為 概率密度函數(shù) 。

概率密度函數(shù)f(x)具有如下性質(zhì) :

需要注意的是,f(x)不是一個概率,即f(x) ≠ P(X = x) 。在連續(xù)分布的情況下,隨機變量X在a與b之間的概率可以寫成:

正態(tài)分布(或高斯分布)是連續(xù)型隨機變量的最重要也是最常見的分布,比如學生的考試成績就呈現(xiàn)出正態(tài)分布的特征,大部分成績集中在某個范圍(比如60-80分),很小一部分往兩端傾斜(比如50分以下和90多分以上)。還有人的身高等等。

正態(tài)分布的定義 :

如果隨機變量X的概率密度為( -∞x+∞):

則稱X服從正態(tài)分布,記作X~N(μ,σ2)。其中-∞μ+∞,σ0, μ為隨機變量X的均值,σ為隨機變量X的標準差。 正態(tài)分布的分布函數(shù)

正態(tài)分布的圖形特點 :

使用Python繪制正態(tài)分布的概率分布圖:

正態(tài)分布有一個3σ準則,即數(shù)值分布在(μ-σ,μ+σ)中的概率為0.6827,分布在(μ-2σ,μ+2σ)中的概率為0.9545,分布在(μ-3σ,μ+3σ)中的概率為0.9973,也就是說大部分數(shù)值是分布在(μ-3σ,μ+3σ)區(qū)間內(nèi),超出這個范圍的可能性很小很小,僅占不到0.3%,屬于極個別的小概率事件,所以3σ準則可以用來檢測異常值。

當μ=0,σ=1時,有

此時的正態(tài)分布N(0,1) 稱為標準正態(tài)分布。因為μ,σ都是確定的取值,所以其對應(yīng)的概率密度曲線是一條 形態(tài)固定 的曲線。

對標準正態(tài)分布,通常用φ(x)表示概率密度函數(shù),用Φ(x)表示分布函數(shù):

假設(shè)有一次物理考試特別難,滿分100分,全班只有大概20個人及格。與此同時語文考試很簡單,全班絕大部分都考了90分以上。小明的物理和語文分別考了60分和80分,他回家后告訴家長,這時家長能僅僅從兩科科目的分值直接判斷出這次小明的語文成績要比物理好很多嗎?如果不能,應(yīng)該如何判斷呢?此時Z-score就派上用場了。 Z-Score的計算定義 :

即 將隨機變量X先減去總體樣本均值,再除以總體樣本標準差就得到標準分數(shù)啦。如果X低于平均值,則Z為負數(shù),反之為正數(shù) 。通過計算標準分數(shù),可以將任何一個一般的正態(tài)分布轉(zhuǎn)化為標準正態(tài)分布。

小明家長從老師那得知物理的全班平均成績?yōu)?0分,標準差為10,而語文的平均成績?yōu)?2分,標準差為4。分別計算兩科成績的標準分數(shù):

物理:標準分數(shù) = (60-40)/10 = 2

語文:標準分數(shù) = (85-95)/4 = -2.5

從計算結(jié)果來看,說明這次考試小明的物理成績在全部同學中算是考得很不錯的,而語文考得很差。

指數(shù)分布可能容易和前面的泊松分布混淆,泊松分布強調(diào)的是某段時間內(nèi)隨機事件發(fā)生的次數(shù)的概率分布,而指數(shù)分布說的是 隨機事件發(fā)生的時間間隔 的概率分布。比如一班地鐵進站的間隔時間。如果隨機變量X的概率密度為:

則稱X服從指數(shù)分布,其中的參數(shù)λ0。 對應(yīng)的分布函數(shù) 為:

均勻分布的期望值和方差 分別為:

使用Python繪制指數(shù)分布的概率分布圖:

均勻分布有兩種,分為 離散型均勻分布和連續(xù)型均勻分布 。其中離散型均勻分布最常見的例子就是拋擲骰子啦。拋擲骰子出現(xiàn)的點數(shù)就是一個離散型隨機變量,點數(shù)可能有1,2,3,4,5,6。每個數(shù)出現(xiàn)的概率都是1/6。

設(shè)連續(xù)型隨機變量X具有概率密度函數(shù):

則稱X服從區(qū)間(a,b)上的均勻分布。X在等長度的子區(qū)間內(nèi)取值的概率相同。對應(yīng)的分布函數(shù)為:

f(x)和F(x)的圖形分別如下圖所示:

均勻分布的期望值和方差 分別為:

如何使用python做統(tǒng)計分析

Shape Parameters

形態(tài)參數(shù)

While a general continuous random variable can be shifted and scaled

with the loc and scale parameters, some distributions require additional

shape parameters. For instance, the gamma distribution, with density

γ(x,a)=λ(λx)a?1Γ(a)e?λx,

requires the shape parameter a. Observe that setting λ can be obtained by setting the scale keyword to 1/λ.

雖然一個一般的連續(xù)隨機變量可以被位移和伸縮通過loc和scale參數(shù),但一些分布還需要額外的形態(tài)參數(shù)。作為例子,看到這個伽馬分布,這是它的密度函數(shù)

γ(x,a)=λ(λx)a?1Γ(a)e?λx,

要求一個形態(tài)參數(shù)a。注意到λ的設(shè)置可以通過設(shè)置scale關(guān)鍵字為1/λ進行。

Let’s check the number and name of the shape parameters of the gamma

distribution. (We know from the above that this should be 1.)

讓我們檢查伽馬分布的形態(tài)參數(shù)的名字的數(shù)量。(我們知道從上面知道其應(yīng)該為1)

from scipy.stats import gamma

gamma.numargs

1

gamma.shapes

'a'

Now we set the value of the shape variable to 1 to obtain the

exponential distribution, so that we compare easily whether we get the

results we expect.

現(xiàn)在我們設(shè)置形態(tài)變量的值為1以變成指數(shù)分布。所以我們可以容易的比較是否得到了我們所期望的結(jié)果。

gamma(1, scale=2.).stats(moments="mv")

(array(2.0), array(4.0))

Notice that we can also specify shape parameters as keywords:

注意我們也可以以關(guān)鍵字的方式指定形態(tài)參數(shù):

gamma(a=1, scale=2.).stats(moments="mv")

(array(2.0), array(4.0))

Freezing a Distribution

凍結(jié)分布

Passing the loc and scale keywords time and again can become quite

bothersome. The concept of freezing a RV is used to solve such problems.

不斷地傳遞loc與scale關(guān)鍵字最終會讓人厭煩。而凍結(jié)RV的概念被用來解決這個問題。

rv = gamma(1, scale=2.)

By using rv we no longer have to include the scale or the shape

parameters anymore. Thus, distributions can be used in one of two ways,

either by passing all distribution parameters to each method call (such

as we did earlier) or by freezing the parameters for the instance of the

distribution. Let us check this:

通過使用rv我們不用再更多的包含scale與形態(tài)參數(shù)在任何情況下。顯然,分布可以被多種方式使用,我們可以通過傳遞所有分布參數(shù)給對方法的每次調(diào)用(像我們之前做的那樣)或者可以對一個分布對象凍結(jié)參數(shù)。讓我們看看是怎么回事:

rv.mean(), rv.std()

(2.0, 2.0)

This is indeed what we should get.

這正是我們應(yīng)該得到的。

Broadcasting

廣播

The basic methods pdf and so on satisfy the usual numpy broadcasting

rules. For example, we can calculate the critical values for the upper

tail of the t distribution for different probabilites and degrees of

freedom.

像pdf這樣的簡單方法滿足numpy的廣播規(guī)則。作為例子,我們可以計算t分布的右尾分布的臨界值對于不同的概率值以及自由度。

stats.t.isf([0.1, 0.05, 0.01], [[10], [11]])

array([[ 1.37218364, 1.81246112, 2.76376946],

[ 1.36343032, 1.79588482, 2.71807918]])

Here, the first row are the critical values for 10 degrees of freedom

and the second row for 11 degrees of freedom (d.o.f.). Thus, the

broadcasting rules give the same result of calling isf twice:

這里,第一行是以10自由度的臨界值,而第二行是以11為自由度的臨界值。所以,廣播規(guī)則與下面調(diào)用了兩次isf產(chǎn)生的結(jié)果相同。

stats.t.isf([0.1, 0.05, 0.01], 10)

array([ 1.37218364, 1.81246112, 2.76376946])

stats.t.isf([0.1, 0.05, 0.01], 11)

array([ 1.36343032, 1.79588482, 2.71807918])

If the array with probabilities, i.e, [0.1, 0.05, 0.01] and the array of

degrees of freedom i.e., [10, 11, 12], have the same array shape, then

element wise matching is used. As an example, we can obtain the 10% tail

for 10 d.o.f., the 5% tail for 11 d.o.f. and the 1% tail for 12 d.o.f.

by calling

但是如果概率數(shù)組,如[0.1,0.05,0.01]與自由度數(shù)組,如[10,11,12]具有相同的數(shù)組形態(tài),則元素對應(yīng)捕捉被作用,我們可以分別得到10%,5%,1%尾的臨界值對于10,11,12的自由度。

stats.t.isf([0.1, 0.05, 0.01], [10, 11, 12])

array([ 1.37218364, 1.79588482, 2.68099799])

Specific Points for Discrete Distributions

離散分布的特殊之處

Discrete distribution have mostly the same basic methods as the

continuous distributions. However pdf is replaced the probability mass

function pmf, no estimation methods, such as fit, are available, and

scale is not a valid keyword parameter. The location parameter, keyword

loc can still be used to shift the distribution.

離散分布的簡單方法大多數(shù)與連續(xù)分布很類似。當然像pdf被更換為密度函數(shù)pmf,沒有估計方法,像fit是可用的。而scale不是一個合法的關(guān)鍵字參數(shù)。Location參數(shù),關(guān)鍵字loc則仍然可以使用用于位移。

The computation of the cdf requires some extra attention. In the case of

continuous distribution the cumulative distribution function is in most

standard cases strictly monotonic increasing in the bounds (a,b) and

has therefore a unique inverse. The cdf of a discrete distribution,

however, is a step function, hence the inverse cdf, i.e., the percent

point function, requires a different definition:

ppf(q) = min{x : cdf(x) = q, x integer}

Cdf的計算要求一些額外的關(guān)注。在連續(xù)分布的情況下,累積分布函數(shù)在大多數(shù)標準情況下是嚴格遞增的,所以有唯一的逆。而cdf在離散分布,無論如何,是階躍函數(shù),所以cdf的逆,分位點函數(shù),要求一個不同的定義:

ppf(q) = min{x : cdf(x) = q, x integer}

For further info, see the docs here.

為了更多信息可以看這里。

We can look at the hypergeometric distribution as an example

from scipy.stats import hypergeom

[M, n, N] = [20, 7, 12]

我們可以看這個超幾何分布的例子

from scipy.stats import hypergeom

[M, n, N] = [20, 7, 12]

If we use the cdf at some integer points and then evaluate the ppf at

those cdf values, we get the initial integers back, for example

如果我們使用在一些整數(shù)點使用cdf,它們的cdf值再作用ppf會回到開始的值。

x = np.arange(4)*2

x

array([0, 2, 4, 6])

prb = hypergeom.cdf(x, M, n, N)

prb

array([ 0.0001031991744066, 0.0521155830753351, 0.6083591331269301,

0.9897832817337386])

hypergeom.ppf(prb, M, n, N)

array([ 0., 2., 4., 6.])

If we use values that are not at the kinks of the cdf step function, we get the next higher integer back:

如果我們使用的值不是cdf的函數(shù)值,則我們得到一個更高的值。

hypergeom.ppf(prb + 1e-8, M, n, N)

array([ 1., 3., 5., 7.])

hypergeom.ppf(prb - 1e-8, M, n, N)

array([ 0., 2., 4., 6.])

新聞名稱:python算密度函數(shù) python計算概率密度
網(wǎng)站地址:http://www.chinadenli.net/article20/doocgco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈網(wǎng)站改版網(wǎng)站維護關(guān)鍵詞優(yōu)化App開發(fā)網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營