在R中计算条件概率的方法指南

663 阅读2分钟

鉴于事件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

我们可以用这种基本方法来计算我们想从表中得到的任何条件概率。

其他资源

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

总概率法
如何寻找概率分布的平均值
如何寻找概率分布的标准差