Task1:隨機事件與隨機變量

框架思維導圖

思維導圖

一、基本概念

樣本空間:隨機試驗的所有可能結果組成的集合,Ω\Omega

隨機事件:樣本空間Ω中滿足一定條件的子集,用大寫字母A,B,C...A,B,C...表示
(隨機事件在隨機試驗中可能出現也可能不出現)

隨機變量(Random Variable):取值不確定的量
eg:擲骰子,擲出的點數記爲X,可能取1,2…6;
X的取值不確定,X就是隨機變量

結果(Outcome):隨機變量的觀測值(具體的數)
eg:擲出的點數是1,1就是一次結果,1,2,3,4,5,6都是結果,
且擲骰子只有這六種結果

事件(Event):隨機變量+結果 結合的整體爲事件
eg:擲出點數爲1(X=1),就是事件

互斥事件(Mutually exclusive events):兩個事件不可同時發生

完備事件(Exhaustive events):包含所有結果的事件.

概率:隨機事件出現的可能性(likelihood)大小

二、概率基礎

1、古典概型

概念:
① 樣本空間中只有有限個樣本點

② 每個樣本點出現是等可能的

③ 每次試驗有且僅有一個樣本點發生

P(A)=mn=AP(A)=\frac{m} {n}=\frac{事件A包含的基本事件數} {基本事件總數}

案例1:

​ 假設有 kk 個不同顏色的球,每個球以同樣的概率 1/l1/l 落到 ll 個格子 (l>=k)(l>=k) 的每個中,且每個格子可容納任意多個球。問,分別求出如下兩個事件 AABB 的概率。

AA :指定的 kk 個格子中各有一個球;
BB :存在 kk 個格子,其中各有一個球。

我們思考一下,由於每個球可以平均地落入 ll 個格子中的任一個,並且每一個格子中可落入任意多個球,所以 kk 個球落入 ll 個格子中的分佈情況相當於從 ll 個格子中選取 kk 個的可重複排列,故樣本空間共有 lkl^k 種等可能的基本結果。

​ 所以,事件 AA 所含基本結果數應是 kk 個球在指定的 ll 個格子中的全排列數,即 k!k!,那麼有

P(A)=k!lkP(A) = \frac{k!} {l^k}

​ 爲了算出事件 BB 所含的基本事件數,我們可以分兩步進行:
1)因爲 ll 個格子可以是任意選取的,故可先從 ll 個格子中任意選出 kk 個出來,那麼選法共有 ClkC^k_l 種。
2)對於每種選定的 kk 個格子,依上述各有一個球的推理,則有 k!k!個基本結果,故B含有 ClkkC^k_l*k! 個基本結果。那麼有

P(B)=Clkklk=llklk!P(B) = \frac {C^k_lk!} {l^k} = \frac {l!} {l^k(l-k)!}

生日問題:求 kk 個同班同學沒有兩人生日相同的概率。

​ 如果把這 kk 個同學看作上例中的 kk 個球,而把一年365天看作格子,
l=365l=365 ,則上述的 P(B)P(B)就是所要求的概率。

k=40k=40 時,利用上面的公式,則 P(B)=0.109P(B) =0.109
即:40個同學中至少兩個人同一天過生日的概率是:
P(B)=10.109=0.891P(\overline {B}) = 1 - 0.109 =0.891

Python實現

#採用函數的遞歸的方法定義階乘函數:
def factorial(n):
    if n == 0:
        return 1;
    else:
        return (n*factorial(n-1)) 
        
#也可以直接導包
from math import factorial
l_fac = factorial(365);          #l的階乘
l_k_fac = factorial(365-40)      #l-k的階乘
l_k_exp = 365**40                #l的k次方

P_B =  l_fac /(l_k_fac * l_k_exp)     #P(B)
print("事件B的概率爲:",P_B)
print("40個同學中至少兩個人同一天過生日的概率是:",1 - P_B)

2、條件概率

定義
AABB 是兩個事件,且P(B)>0P(B)>0,稱 P(BA)=P(AB)P(A)P(B|A)=\frac{P(AB)}{P(A)}
在事件 AA 發生的條件下,事件 BB 發生的概率。

在這裏插入圖片描述
乘法法則(Multiplication rule):
P(AB)=P(AB)=P(BA)P(A)=P(AB)P(B)P(AB)=P(A∩B)=P(B|A)P(A)=P(A|B)P(B)
AABB互斥(mutually exclusive)時:
P(AB)=P(AB)=P(BA)=0P(AB)=P(A|B)=P(B|A)=0

加法法則(Addition rule):
P(AorB)=P(AB)=P(A)+P(B)P(AB)P(AorB)=P(A∪B)=P(A)+P(B)-P(AB)
AABB互斥(mutually exclusive)時:
P(AorB)=P(A)+P(B)P(AorB)=P(A)+P(B)

兩個重要結論——充要條件

互爲充要條件:ABP(AB)=0A、B互斥 \Longleftrightarrow P(AB)=0
互爲充要條件:ABP(AB)=P(A)P(B)A、B獨立 \Longleftrightarrow P(AB)=P(A)*P(B)

互斥一定不獨立

3、全概率公式

AP(A)A 自顧自發生的無條件概率P(A)

P(A)=P(AS1)P(S1)+P(AS2)P(S2)+...+P(ASn)P(Sn)P(A)=P(A|S1)*P(S1)+P(A|S2)*P(S2)+...+P(A|Sn)*P(Sn)

其中:S1,S2,...SnΩ{S1,S2,...Sn}完備\Omega,且兩兩互斥

推導過程
在這裏插入圖片描述
如上圖:P(S1)+P(S2)=P(Ω)=1,P(S1S2)=0P(S1)+P(S2)=P(\Omega)=1,P(S1S2)=0
即:S1,S2{S1,S2}完備且互斥

P(A)=P()+P()P(A)=P(淺綠)+P(淺藍)

P()=P(AS1)=P(A)P(S1A)P(淺綠)=P(AS1)=P(A)*P(S1|A)
P()=P(AS1)=P(S1)P(AS1)P(淺綠)=P(AS1)=P(S1)*P(A|S1)
因爲要求 P(A)P(A)P(A)P(A) 未知,所以選擇③式

同理:P()=P(AS2)=P(S2)P(AS2)P(淺藍)=P(AS2)=P(S2)*P(A|S2)

把③、④式帶入①式得:
P(A)=P()+P()P(A)=P(淺綠)+P(淺藍)
=P(AS1)+P(AS2)=P(AS1)+P(AS2)
=P(S1)P(AS1)+P(S2)P(AS2)=P(S1)*P(A|S1)+P(S2)*P(A|S2)

推廣到 nn 個事件,即把 Ω\Omega 切分成 nnSS 事件得:
P(A)=P(AS1)P(S1)+P(AS2)P(S2)+...+P(ASn)P(Sn)P(A)=P(A|S1)*P(S1)+P(A|S2)*P(S2)+...+P(A|Sn)*P(Sn)

4、貝葉斯公式——BayesFormulaBaye's Formula

P(AB)=P(BA)P(B)P(A)P(A|B)= \frac {P(B|A)}{P(B)}*P(A)
(B),A調針對新獲得的信息(B),對A發生的概率進行調整
B:P(BA)P(B)調B:信息,\frac {P(B|A)}{P(B)}:信息調整因子

推導過程:

+BayesFormula乘法法則+全概率公式 \Longrightarrow Baye's Formula

P(AB)=P(A)P(BA)P(AB)=P(A)*P(B|A)

P(AB)=P(B)P(AB)P(AB)=P(B)*P(A|B)

由②得:
P(AB)=P(AB)P(B)P(A|B)=\frac{P(AB)}{P(B)}
代入①得: =P(A)P(BA)P(B)=\frac{P(A)*P(B|A)}{P(B)}

P(AB)=P(A)P(BA)P(B)\Longrightarrow P(A|B)=P(A)*\frac{P(B|A)}{P(B)}

B:P(BA)P(B)調B:信息,\frac {P(B|A)}{P(B)}:信息調整因子

其中
P(B)=P(BS1)P(S1)+P(BS2)P(S2)+...+P(BSn)P(Sn)P(B)=P(B|S1)*P(S1)+P(B|S2)*P(S2)+...+P(B|Sn)*P(Sn)

樹狀圖計算——BayesFormulaBaye's Formula 簡單運用

在這裏插入圖片描述
假設:
B(/)A()P(AB)=?B(條件/信息):摸眉毛;A(事件):好牌\Longrightarrow 求:P(A|B)=?

P(AB)=ABP(B)=+=0.50.90.50.9+0.50.05=0.95P(A|B)=\frac{AB}{P(B)}=\frac{①}{①+③}=\frac{0.5*0.9}{0.5*0.9+0.5*0.05}=0.95

三、隨機變量及其分佈特徵

0、隨機變量分類

連續型隨機變量和離散性隨機變量

1、期望Expected Value(μ/E(X))

數學期望E(X) 又稱爲均值(加權平均,概率爲權重),
代表了隨機變量取值的平均值

E(X)=ΣXiP(xi)=X1P(x1)+X2P(x2)+...+XnP(xn)E(X)=\Sigma Xi *P(xi)=X1*P(x1)+X2*P(x2)+...+Xn*P(xn)

2、方差Variance(總體σ2/s2σ^2/樣本s^2

σ2=ΣPi(XiEX)2σ^2=\Sigma Pi*(Xi-EX)^2

=E(Y)=E[(XEX)2]=E(Y)=E[(X-EX)^2]

=E[(XEX)(XEX)]=E[(X-EX)(X-EX)]

本質上是求Y=(XEX)2Y=(X-EX)^2的期望

推廣爲兩個事件E[(XEX)(YEY)]E[(X-EX)(Y-EY)]就是求協方差COV(X,Y)COV(X,Y)

所以自己和自己的協方差就是方差即COV(X,X)=σ2(X)COV(X,X)=σ^2(X)

3、協方差Covariance(COV)

COV(X,X)=E[(XEX)(XEX)]=σ2(X)COV(X,X)=E[(X-EX)(X-EX)]=σ^2(X)

COV(X,Y)=E[(XEX)(YEY)]COV(X,Y)=E[(X-EX)(Y-EY)]

實際計算:——聯合概率分佈表

B1=0.40B1=0.40 B2=0.20B2=0.20 B3=0.00B3=0.00
A1=0.20A1=0.20 0.15 0 0
A2=0.15A2=0.15 0 0.60 0
A3=0.04A3=0.04 0 0 0.25

E(B)=0.150.4+0.60.20+0.250=0.18E(B)=0.15*0.4+0.6*0.20+0.25*0=0.18

E(A)=0.150.2+0.60.15+0.250.04=0.13E(A)=0.15*0.2+0.6*0.15+0.25*0.04=0.13


COV(A,B)=E[(AE(A)(BE(B)]COV(A,B)=E[(A-E(A)(B-E(B)]

=ΣP[AE(A)][BE(B)]=\Sigma P*[A-E(A)]*[B-E(B)]

=0.15(0.200.13)(0.400.18)+0.60(0.150.13)(0.200.18)+0.25(0.040.13)(0.000.18)=0.15*(0.20-0.13)*(0.40-0.18)+0.60*(0.15-0.13)*(0.20-0.18)+0.25*(0.04-0.13)*(0.00-0.18)

=0.0066=0.0066

4、相關係數correlation(ρ)

相關係數=協方差除以標準差的積
ρXY=COV(X,Y)σ2Xσ2Y==COV(X,Y)σXσY\rho XY=\frac{COV(X,Y)}{\sqrt{\sigma^2 X \sigma^2 Y}}==\frac{COV(X,Y)}{\sigma X \sigma Y}

python實現

#導入包
import pandas as pd
import numpy as np

#構造單個隨機變量
random_X=pd.DataFrame({"P(X)":[0.2,0.3,0.1,0.2,0.1,0.1]},index=list(range(1,7))).T
random_X


#定義期望、方差計算函數
#期望
def cpt_EX(X,P_X):
    return sum([x*p for x,p in list(zip(X,P_X))])

#方差
def cpt_Var(X,P_X):
    
    #list轉化爲array 進行廣播運算,list直接廣播這裏沒問題,下面計算協方差好像有問題
    return cpt_EX((np.array(X)-cpt_EX(X,P_X))**2,P_X)

X=random_X.columns
P_X=random_X.loc['P(X)'].tolist()
print("隨機變量 X 的期望是:%s"%cpt_EX(X,P_X))
print("隨機變量 X 的方差是:%s"%cpt_Var(X,P_X))


#構造聯合概率分分步表
joint_prob=pd.DataFrame([[0.15,0,0],[0,0.60,0],[0,0,0.25],],
                        index=["X1=0.20","X2=0.15","X3=0.04"],
                        columns=["Y1=0.40","Y2=0.20","Y3=0.00"])
joint_prob
#取對角線
P_xy=np.diagonal(joint_prob, offset=0, axis1=0, axis2=1).tolist()
X=[float(value[3:]) for value in joint_prob.index]
Y=[float(value[3:]) for value in joint_prob.columns]

#定義協方差、相關係數計算函數
#協方差
def cpt_Cov(X,Y,P_xy):
    return sum([p*x_Ex*y_Ey for p,x_Ex,y_Ey in list(zip(P_xy,(np.array(X)-cpt_EX(X,P_xy)),(np.array(Y)-cpt_EX(X,P_xy))))])

#相關係數
def cpt_corr(X,Y,P_xy):
    return cpt_Cov(X,Y,P_xy)/(cpt_Var(X,P_xy)*cpt_Var(Y,P_xy))**(1/2) if (cpt_Var(X,P_xy) !=0)&(cpt_Var(Y,P_xy)!=0) else 0

print(" 隨機變量 X 的期望是:%s \n"%cpt_EX(X,P_xy),
      "隨機變量 Y 的期望是:%s \n"%cpt_EX(Y,P_xy),
      "隨機變量 X,Y 的協方差是:%s \n"% cpt_Cov(X,Y,P_xy),
      "隨機變量 X,Y 的相關係數是:%.3f \n"%cpt_corr(X,Y,P_xy))

#驗證自己與自己的協方差等於方差
X=random_X.columns
P_X=random_X.loc['P(X)'].tolist()
print("  隨機變量 X 的方差是:%s \n"%cpt_Var(X,P_X),
      " 隨機變量 X 的協方差是:%s \n"%cpt_Cov(X,X,P_X),)

代碼運行樣例
在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

參看資料
Datawhale開源-概率統計
numpy 取出對角線元素、計算對角線元素和 np.diagonal

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