在Python中计算条件概率的方法

509 阅读2分钟

鉴于事件B已经发生,事件A发生的条件概率计算如下:

p(a|b) = p(a∩b) / p(b)

其中。

P(A∩B) = 事件A 和事件B 同时发生的概率。

P(B) = 事件B发生的概率。

下面的例子显示了如何使用这个公式在 Python 中计算条件概率。

例子:在 Python 中计算条件概率

假设我们向300个人发出调查,问他们最喜欢哪种运动:棒球、篮球、足球或足球。

我们可以在Python中创建以下表格来保存调查的结果:

import pandas as pd
import numpy as np

#create pandas DataFrame with raw data
df = pd.DataFrame({'gender': np.repeat(np.array(['Male', 'Female']), 150),
                   'sport': np.repeat(np.array(['Baseball', 'Basketball', 'Football',
                                                'Soccer', 'Baseball', 'Basketball',
                                                'Football', 'Soccer']), 
                                    (34, 40, 58, 18, 34, 52, 20, 44))})

#produce contingency table to summarize raw data
survey_data = pd.crosstab(index=df['gender'], columns=df['sport'], margins=True)

#view contingency table
survey_data

sport	Baseball	Basketball	Football	Soccer	 All
gender					
Female	      34	        52	      20	    44	 150
Male	      34	        40	      58	    18	 150
All	      68	        92	      78	    62	 300

相关的如何使用pd.crosstab()在Python中创建权变表

我们可以使用下面的语法从表中提取数值:

#extract value in second row and first column 
survey_data.iloc[1, 0]

[1] 34

我们可以使用下面的语法来计算一个人是男性的概率,鉴于他们更喜欢棒球作为他们最喜欢的运动:

#calculate probability of being male, given that individual prefers baseball
survey_data.iloc[1, 0] / survey_data.iloc[2, 0]

0.5

而我们可以使用下面的语法来计算一个人喜欢篮球作为他们最喜欢的运动的概率,因为他们是女性:

#calculate probability of preferring basketball, given that individual is female
survey_data.iloc[0, 1] / survey_data.iloc[0, 4]

0.3466666666666667

我们可以用这种基本方法从或然率表中计算出我们想要的任何条件概率:

其他资源

以下教程提供了有关处理概率的额外信息:

总概率法
如何寻找概率分布的平均值
如何寻找概率分布的标准差 The postHow to Calculate Conditional Probability in Pythonappeared first onStatology.