从Python中的频率计算条件概率

时间:2015-01-06 17:35:06

标签: python probability probability-theory

我正在尝试计算P(A=a|B=b,C=c)的条件概率,其中a['high', 'medium', 'low']中的元素,b是['0-20', '20-40', '40-60', '60-80', '80-inf']中的元素,而c['male', 'female']中的元素。

我有一个字典,其频率如下:

{('high', '0-20', 'female'): 11,
 ('high', '0-20', 'male'): 43,
 ('high', '20-40', 'female'): 10,
 ('high', '20-40', 'male'): 17,
 ('high', '40-60', 'female'): 11,
 ('high', '40-60', 'male'): 10,
 ('high', '60-80', 'female'): 2,
 ('high', '60-80', 'male'): 1,
 ('high', '80-inf', 'female'): 0,
 ('high', '80-inf', 'male'): 0,
 ('low', '0-20', 'female'): 130,
 ('low', '0-20', 'male'): 159,
 ('low', '20-40', 'female'): 186,
 ('low', '20-40', 'male'): 297,
 ('low', '40-60', 'female'): 71,
 ('low', '40-60', 'male'): 144,
 ('low', '60-80', 'female'): 35,
 ('low', '60-80', 'male'): 53,
 ('low', '80-inf', 'female'): 1,
 ('low', '80-inf', 'male'): 2,
 ('medium', '0-20', 'female'): 90,
 ('medium', '0-20', 'male'): 194,
 ('medium', '20-40', 'female'): 72,
 ('medium', '20-40', 'male'): 116,
 ('medium', '40-60', 'female'): 46,
 ('medium', '40-60', 'male'): 49,
 ('medium', '60-80', 'female'): 12,
 ('medium', '60-80', 'male'): 22,
 ('medium', '80-inf', 'female'): 1,
 ('medium', '80-inf', 'male'): 2}

我想要的是一本看起来像的字典:

{('high', '0-20', 'female'): P(A='high'| B='0-20', C='female'),
 etc...,
}

1 个答案:

答案 0 :(得分:0)

所以,如果我正确地理解你的评论,那么你遇到麻烦的是当有两个或更多条件时计算条件概率的概念"而不是单一的条件。

自从我上次参加概率/统计课程以来已经有一段时间了,但我认为你需要做的就是把它分解成单独的问题。从数据中,您可以轻松计算出P(B=b)P(C=c)。您接下来需要的是B=bC=c的联合概率,您也应该能够直接从数据中获取 - 例如P(high, 0-20)只是匹配两个条件除以总计数的所有点的总和。如果你称之为联合概率P(X),则从条件概率的定义来计算P(A = a | X)= P(A =a∩X)/ P(X)应该相当简单。

最好重新发布此信息或将其迁移到Math SE网站,以获得确认和/或更好的答案......