鉴于事件B已经发生,事件A发生的条件概率计算如下:
p(a|b) = p(a∩b) / p(b)
其中:
P(A∩B) = 事件A 和事件B 同时发生的概率。
P(B) = 事件B发生的概率。
下面的例子说明了如何在R语言中使用这个公式来计算条件概率。
例1:使用数值计算条件概率
假设我们向300人发出调查问卷,询问他们最喜欢哪种运动:棒球、篮球、足球或足球。
假设我们知道一个人是男性并且喜欢棒球作为他们最喜欢的运动的概率是0.113。
假设我们还知道,任何个人喜欢棒球作为他们最喜欢的运动的概率是0.226。
鉴于一个人喜欢棒球,我们可以计算出他们是男性的概率为:
- P(Male|Prefers Baseball) = P(Male∩Prefers Baseball) / P(Prefers Baseball)
- P(Male|Prefers Baseball) = 0.113 / 0.226
- P(男性|偏好棒球)= 0.5
鉴于一个人喜欢棒球,他们是男性的概率是0.5。
下面是我们如何在R中计算这个概率:
#define probability of being male and preferring baseball
p_male_baseball <- 0.113
#define probability of preferring baseball
p_baseball <- 0.226
#calculate probability of being male, given that individual prefers baseball
p_male_baseball / p_baseball
[1] 0.5
例2:使用表格计算条件概率
假设我们向300人发出调查问卷,询问他们最喜欢哪种运动:棒球、篮球、足球或足球。
我们可以在R语言中创建以下表格来保存调查的结果:
#create data frame to hold survey responses
df <- data.frame(gender=rep(c('Male', 'Female'), each=150),
sport=rep(c('Baseball', 'Basketball', 'Football', 'Soccer',
'Baseball', 'Basketball', 'Football', 'Soccer'),
times=c(34, 40, 58, 18, 34, 52, 20, 44)))
#create two-way table from data frame
survey_data <- addmargins(table(df$gender, df$sport))
#view table
survey_data
Baseball Basketball Football Soccer Sum
Female 34 52 20 44 150
Male 34 40 58 18 150
Sum 68 92 78 62 300
我们可以使用下面的语法从表中提取数值:
#extract value in second row and first column
survey_data[2, 1]
[1] 34
我们可以使用下面的语法来计算一个人是男性的概率,因为他们喜欢棒球作为他们最喜欢的运动:
#calculate probability of being male, given that individual prefers baseball
survey_data[1, 1] / survey_data[3, 1]
[1] 0.5
而我们可以使用下面的语法来计算一个人喜欢篮球作为他们最喜欢的运动的概率,因为他们是女性:
#calculate probability of preferring basketball, given that individual is female
survey_data[1, 2] / survey_data[1, 5]
[1] 0.3466667
我们可以用这种基本方法来计算我们想从表中得到的任何条件概率。
其他资源
以下教程提供了有关处理概率的额外信息: