R语言 如何计算条件概率

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不是一个不可能的事件。

下图描述了维恩图的表示方法

如何在R语言中计算条件概率?

例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")

输出

如何在R语言中计算条件概率?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程