R语言 如何计算条件概率
在这篇文章中,我们将讨论如何在R编程语言中计算条件概率。
一个事件发生的概率以另一个事件的发生为条件(即,一个事件的发生取决于另一个事件的条件),被称为条件概率。简单地说,它意味着如果A和B是两个事件,那么以事件A的发生为条件的事件B发生的概率由P(B|A)给出。换句话说,这也是在事件A已经发生的情况下事件B的条件概率。
同样地,以事件A的发生为条件的事件B的发生概率由P(A|B)给出,它也代表了在事件B已经发生的情况下事件A的条件概率。
条件概率的公式可以表示为
P(A|B) = P(A∩B) / P(A)
这只有在P(A)≠0时才有效,即当事件A不是一个不可能的事件。
类似地。
P(B|A) = P(A∩B) / P(B)
这只有在P(B)≠0时才有效,即当事件B不是一个不可能的事件。
下图描述了维恩图的表示方法
例1: 条件概率的计算
从一包50张神奇宝贝的卡片中,随机抽出一张卡片。这50张牌有5组相等的红、蓝、绿、黄、黑牌,每组有2只水型神奇宝贝,其中一只水型的实力很强,另一只实力中等。
考虑到A是抽到高强度水型神奇宝贝卡的事件,B是抽到红卡的事件,在已经抽到红卡的情况下,抽到高强度水型神奇宝贝卡的概率是多少?
解决步骤
第1步. 抽到红牌的概率(事件B)。
P(B)=10/50(因为一包50张神奇宝贝卡中有10张红卡。)
第2步: 抽到一张高强度的水型神奇宝贝卡的概率(事件A
P(A)=5/50(因为在一包50张牌中有5张高强度的水型神奇宝贝牌。)
第3步: P( AՈ B) = 1/50 ( 因为在一包50张牌中有一张红色的高强度水型神奇宝贝牌)
第4步: 由于事件B已经发生,因此有10个穷举的情况,而不是像之前的50个。在这10张红色神奇宝贝卡片中,有一张高强度的水型神奇宝贝卡片。
Hence, P(A|B) = P( A Ո B) / P(B) = (1/50) / (10/50) = 1/10.
这是在B已经发生的情况下A的条件概率。
类似地。
P(B|A) = P( A Ո B) / P(A) = (1/50) / (5/50) = 1 / 5
因为在已经从50张卡包中抽出的高强度水型神奇宝贝卡中只能有1张红色的高强度水型神奇宝贝卡。
例2: 条件概率的计算
一个店主有一份15名顾客的名单。他观察到他们购买商品的某些模式,如下表所示。
顾客 | 花费的钱 | 频率 |
---|---|---|
1 | 高 | 较少 |
2 | 低 | 更多 |
3 | 高 | 更多 |
4 | 高 | 较低 |
5 | 低 | 较低 |
6 | 低 | 更多 |
7 | 高 | 更多 |
8 | 低 | 较低 |
9 | 低 | 较低 |
10 | 高 | 更多 |
11 | 低 | 更多 |
12 | 低 | 较低 |
13 | 高 | 较低 |
14 | 高 | 更多 |
15 | 高 | 较少 |
根据上述表格,他有兴趣找出
- 在客户购买频率较低的情况下,客户高消费的概率是多少?
- 如果客户购买的频率较高,他们花费较少的概率是多少?
- 在客户购买频率较低的情况下,客户花费较少的概率是多少?
- 如果客户购买的频率较高,那么他们消费高的概率是多少?
解决步骤
1.P(高消费|低频率)
P(低频)=8/15(根据表格,15次中有8次是低频)
P(高消费 Ո低频率) = 4/15 (从表中看,15次中有4次是高消费和低频率的组合)
P(高消费 | 低频率) = P(高消费 Ո 低频率)/ P(低频率) = (4/15)/( 8/15) = 0.5
2.P(低消费|多频率)
P(更多频率)=7/15(从表中看,15次中有7次频率较低)
P(低消费 Ո高频率) = 3/15 (从表中看,15次中有3次是低消费和高频率的组合)
P(低消费 | 高频率) = P(低消费 Ո 高频率)/ P(高频率) = (3/15)/( 7/15) = 0.4285714
类似地。
3.P(低消费 | 少频率) = 0.5
4.P(高消费 | 更多频率) = 0.5714286
为了完成这项工作,首先安装软件包 “prob “和 “tidyverse “并创建一个数据框。以表格形式表示数据框,以表示每个组合。现在,计算数据框中独特组合的频率,在输出中描述为 “n”。计算每一行的单个概率,在输出中以 “probs “表示。根据手头的问题计算出最终的条件概率。
以下是用于计算的R代码
# Library for calculation of conditional probability
library(prob)
library(tidyverse)
Money_Spent < - c("High", "Low", "High", "High",
"Low", "Low", "High", "Low",
"Low", "High", "Low", "Low",
"High", "High", "High")
Frequency < - c("Less", "More", "More", "Less",
"Less", "More", "More", "Less",
"Less", "More", "More", "Less",
"Less", "More", "Less")
Customer < - c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15)
# Customer Data Frame
Customer_Data < - as.data.frame(cbind(Customer, Money_Spent, Frequency))
Customer_Data % >%
count(Money_Spent, Frequency, sort=T)
# Creating two-way table from data frame
Customer_Data_Table < - addmargins(table("Money_Spent"=Customer_DataMoney_Spent,
"Frequency"=Customer_DataFrequency))
# view table
Customer_Data_Table
Customer_Data < - probspace(Customer_Data)
Customer_Data
# Probability of the customer spending high
# given that they are purchasing less often
Prob(Customer_Data, event=Money_Spent == "High", given=Frequency == "Less")
# Probability of the customer spending less
# given that they are purchasing more often
Prob(Customer_Data, event=Money_Spent == "Low", given=Frequency == "More")
# Probability of the customer spending less
# given that they are purchasing less often
Prob(Customer_Data, event=Money_Spent == "Low", given=Frequency == "Less")
# Probability of the customer spending high
# given that they are purchasing more often
Prob(Customer_Data, event=Money_Spent == "High", given=Frequency == "More")
输出 。