本文目錄一覽:
- 1、python沒有直接生成服從泊松分布隨機數的函數嗎?像r語言中rpois(n, lambda)直接就有結果的這種。
- 2、統計學入門級:常見概率分布+python繪製分布圖
- 3、如何在Python中實現這五類強大的概率分布
- 4、python沒有直接生成服從泊松分布隨機數的函數嗎
python沒有直接生成服從泊松分布隨機數的函數嗎?像r語言中rpois(n, lambda)直接就有結果的這種。
一般地,如果你已知一個連續隨機變量X的cdf F_X(x)(=P(X
一般地,如果你已知一個連續隨機變量X的cdf F_X(x)(=P(X
統計學入門級:常見概率分布+python繪製分布圖
如果隨機變量X的所有取值都可以逐個列舉出來,則稱X為離散型隨機變量。相應的概率分布有二項分布,泊松分布。
如果隨機變量X的所有取值無法逐個列舉出來,而是取數軸上某一區間內的任一點,則稱X為連續型隨機變量。相應的概率分布有正態分布,均勻分布,指數分布,伽馬分布,偏態分布,卡方分布,beta分布等。(真多分布,好恐怖~~)
在離散型隨機變量X的一切可能值中,各可能值與其對應概率的乘積之和稱為該隨機變量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
倒數第三步可以解釋為值為2的數字出現的概率為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服從參數為p的0-1分布,記作X~B(1,p)。
在生活中有很多例子服從兩點分布,比如投資是否中標,新生嬰兒是男孩還是女孩,檢查產品是否合格等等。
大家非常熟悉的拋硬幣試驗對應的分布就是二項分布。拋硬幣試驗要麼出現正面,要麼就是反面,只包含這兩個結果。出現正面的次數是一個隨機變量,這種隨機變量所服從的概率分布通常稱為 二項分布 。
像拋硬幣這類試驗所具有的共同性質總結如下:(以拋硬幣為例)
通常稱具有上述特徵的n次重複獨立試驗為n重伯努利試驗。簡稱伯努利試驗或伯努利試驗概型。特別地,當試驗次數為1時,二項分布服從0-1分布(兩點分布)。
舉個栗子:拋3次均勻的硬幣,求結果出現有2個正面的概率 。
已知p = 0.5 (出現正面的概率) ,n = 3 ,k = 2
所以拋3次均勻的硬幣,求結果出現有2個正面的概率為3/8。
二項分布的期望值和方差 分別為:
泊松分布是用來描述在一 指定時間範圍內或在指定的面積或體積之內某一事件出現的次數的分布 。生活中服從泊松分布的例子比如有每天房產中介接待的客戶數,某微博每月出現服務器癱瘓的次數等等。 泊松分布的公式為 :
其中 λ 為給定的時間間隔內事件的平均數,λ = np。e為一個數學常數,一個無限不循環小數,其值約為2.71828。
泊松分布的期望值和方差 分別為:
使用Python繪製泊松分布的概率分布圖:
因為連續型隨機變量可以取某一區間或整個實數軸上的任意一個值,所以通常用一個函數f(x)來表示連續型隨機變量,而f(x)就稱為 概率密度函數 。
概率密度函數f(x)具有如下性質 :
需要注意的是,f(x)不是一個概率,即f(x) ≠ P(X = x) 。在連續分布的情況下,隨機變量X在a與b之間的概率可以寫成:
正態分布(或高斯分布)是連續型隨機變量的最重要也是最常見的分布,比如學生的考試成績就呈現出正態分布的特徵,大部分成績集中在某個範圍(比如60-80分),很小一部分往兩端傾斜(比如50分以下和90多分以上)。還有人的身高等等。
正態分布的定義 :
如果隨機變量X的概率密度為( -∞x+∞):
則稱X服從正態分布,記作X~N(μ,σ²)。其中-∞μ+∞,σ0, μ為隨機變量X的均值,σ為隨機變量X的標準差。 正態分布的分布函數
正態分布的圖形特點 :
使用Python繪製正態分布的概率分布圖:
正態分布有一個3σ準則,即數值分布在(μ-σ,μ+σ)中的概率為0.6827,分布在(μ-2σ,μ+2σ)中的概率為0.9545,分布在(μ-3σ,μ+3σ)中的概率為0.9973,也就是說大部分數值是分布在(μ-3σ,μ+3σ)區間內,超出這個範圍的可能性很小很小,僅占不到0.3%,屬於極個別的小概率事件,所以3σ準則可以用來檢測異常值。
當μ=0,σ=1時,有
此時的正態分布N(0,1) 稱為標準正態分布。因為μ,σ都是確定的取值,所以其對應的概率密度曲線是一條 形態固定 的曲線。
對標準正態分布,通常用φ(x)表示概率密度函數,用Φ(x)表示分布函數:
假設有一次物理考試特別難,滿分100分,全班只有大概20個人及格。與此同時語文考試很簡單,全班絕大部分都考了90分以上。小明的物理和語文分別考了60分和80分,他回家後告訴家長,這時家長能僅僅從兩科科目的分值直接判斷出這次小明的語文成績要比物理好很多嗎?如果不能,應該如何判斷呢?此時Z-score就派上用場了。 Z-Score的計算定義 :
即 將隨機變量X先減去總體樣本均值,再除以總體樣本標準差就得到標準分數啦。如果X低於平均值,則Z為負數,反之為正數 。通過計算標準分數,可以將任何一個一般的正態分布轉化為標準正態分布。
小明家長從老師那得知物理的全班平均成績為40分,標準差為10,而語文的平均成績為92分,標準差為4。分別計算兩科成績的標準分數:
物理:標準分數 = (60-40)/10 = 2
語文:標準分數 = (85-95)/4 = -2.5
從計算結果來看,說明這次考試小明的物理成績在全部同學中算是考得很不錯的,而語文考得很差。
指數分布可能容易和前面的泊松分布混淆,泊松分布強調的是某段時間內隨機事件發生的次數的概率分布,而指數分布說的是 隨機事件發生的時間間隔 的概率分布。比如一班地鐵進站的間隔時間。如果隨機變量X的概率密度為:
則稱X服從指數分布,其中的參數λ0。 對應的分布函數 為:
均勻分布的期望值和方差 分別為:
使用Python繪製指數分布的概率分布圖:
均勻分布有兩種,分為 離散型均勻分布和連續型均勻分布 。其中離散型均勻分布最常見的例子就是拋擲骰子啦。拋擲骰子出現的點數就是一個離散型隨機變量,點數可能有1,2,3,4,5,6。每個數出現的概率都是1/6。
設連續型隨機變量X具有概率密度函數:
則稱X服從區間(a,b)上的均勻分布。X在等長度的子區間內取值的概率相同。對應的分布函數為:
f(x)和F(x)的圖形分別如下圖所示:
均勻分布的期望值和方差 分別為:
如何在Python中實現這五類強大的概率分布
R編程語言已經成為統計分析中的事實標準。但在這篇文章中,我將告訴你在Python中實現統計學概念會是如此容易。我要使用Python實現一些離散和連續的概率分布。雖然我不會討論這些分布的數學細節,但我會以鏈接的方式給你一些學習這些統計學概念的好資料。在討論這些概率分布之前,我想簡單說說什麼是隨機變量(random variable)。隨機變量是對一次試驗結果的量化。
舉個例子,一個表示拋硬幣結果的隨機變量可以表示成
Python
1
2
X = {1 如果正面朝上,
2 如果反面朝上}
隨機變量是一個變量,它取值於一組可能的值(離散或連續的),並服從某種隨機性。隨機變量的每個可能取值的都與一個概率相關聯。隨機變量的所有可能取值和與之相關聯的概率就被稱為概率分布(probability distributrion)。
我鼓勵大家仔細研究一下scipy.stats模塊。
概率分布有兩種類型:離散(discrete)概率分布和連續(continuous)概率分布。
離散概率分布也稱為概率質量函數(probability mass function)。離散概率分布的例子有伯努利分布(Bernoulli distribution)、二項分布(binomial distribution)、泊松分布(Poisson distribution)和幾何分布(geometric distribution)等。
連續概率分布也稱為概率密度函數(probability density function),它們是具有連續取值(例如一條實線上的值)的函數。正態分布(normal distribution)、指數分布(exponential distribution)和β分布(beta distribution)等都屬於連續概率分布。
若想了解更多關於離散和連續隨機變量的知識,你可以觀看可汗學院關於概率分布的視頻。
python沒有直接生成服從泊松分布隨機數的函數嗎
首先是泊松分布,這是一個離散型的隨機變量分布,比較好弄,此外例如考察一些到達事件的概率時,通常服從泊松分布,因此該分布相當實用。在開始編寫之前,先感謝知乎一位大神的科普知識,假設有一個服從均勻分布的隨機變量,u~U[0,1],F(x)為隨機變量x的累計分布函數,那麼F-1(u)的變量服從F分布,即F的逆函數是服從F的隨機變量。代碼如下:
[java] view plain copy print?
span style=”white-space:pre” /spanprivate static int getPossionVariable(double lamda) {
int x = 0;
double y = Math.random(), cdf = getPossionProbability(x, lamda);
while (cdf y) {
x++;
cdf += getPossionProbability(x, lamda);
}
return x;
}
private static double getPossionProbability(int k, double lamda) {
double c = Math.exp(-lamda), sum = 1;
for (int i = 1; i = k; i++) {
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/303859.html