Think Bayes Note 3: M&M 豆问题

您所在的位置:网站首页 mm巧克力豆咋读 Think Bayes Note 3: M&M 豆问题

Think Bayes Note 3: M&M 豆问题

2024-07-12 01:04| 来源: 网络整理| 查看: 265

Think Bayes Note 3: M&M 豆问题

Author: nex3z 2018-07-26

Math

Bayes, Python

Contents

1. 问题描述2. 推导求解3. 代码求解 1. 问题描述

  M&M 豆是一种混合各种颜色的巧克力豆,生产厂商会不时地调整各种颜色的巧克力豆之间的比例。1995 年之前,一袋 M&M 豆的颜色比例为:30% 褐色,20% 黄色,10% 绿色,10% 橙色,10% 黄褐色。1995 年推出了蓝色巧克力豆,此时一袋 M&M 豆的颜色比例变为:24% 蓝色,20% 绿色,16% 橙色,14% 黄色,13% 红色,13% 褐色。

  假设有 1994 年和 1996 年的 M&M 豆各一袋,但不知道那一袋是哪一年的。现在从两袋中各取一个巧克力豆,发现一个是黄色,一个是绿色,求黄色豆子来自 1994 年袋子的概率。

2. 推导求解

  记取出黄色豆子的袋子为袋 1,另一个袋子为袋 2,假设 $H_A$ 为袋 1 是 1994 年的,袋 2 是 1996 年的;假设 $H_B$ 为袋 1 是 1996 年的,袋 2 是 1994 年的。记 D 为从两袋中各取一个巧克力豆,得到黄色和绿色豆子各一个。

  可以认为 $H_A$ 和 $H_B$ 等可能,即:

\begin{equation} P(H_A) = P(H_B) = 0.5 \tag{1} \end{equation}

  根据问题描述可知,从 1994 年袋子中取出黄色豆子的概率为 20%,取出绿色豆子的概率为 10%;从 1995 年袋子中取出黄色豆子的概率为 14%,取出绿色豆子的概率为 20%。由此可知,如果 $H_A$ 成立,则黄色豆子来自袋 1,绿色豆子来自袋 2,其概率为 $20% \times 20% = 0.04$;同理,如果 $H_B$ 成立,则黄色豆子来自袋 2,绿色豆子来自袋 1,其概率为 $14% \times 10% = 0.014$,即:

\begin{equation} P(D|H_A) = 0.04 \tag{2} \end{equation}

\begin{equation} P(D|H_B) = 0.014 \tag{3} \end{equation}

  由全概率公式,可得 D 发生的概率为:

\begin{equation} P(D) = P(H_A)P(D|H_A) + P(H_B)P(D|H_B) = 0.5 \times 0.04 + 0.5 \times 0.014 = 0.027 \tag{4} \end{equation}

  由贝叶斯公式,得黄色豆子来自 1994 年袋子的概率,即 $P(H_A|D)$ 为:

\begin{equation} P(H_A|D) = \frac{P(H_A)P(D|H_A)}{P(D)} = \frac{0.5 \times 0.04}{0.027} = \frac{20}{27} \approx 0.7407 \end{equation}

3. 代码求解

  定义 MM 类如下:

class MM(Suite): mix_94 = {'brown': 30, 'yellow': 20, 'red': 20, 'green': 10, 'orange': 10, 'tan': 10, 'blue': 0} mix_96 = {'blue': 24, 'green': 20, 'orange': 16, 'yellow': 14, 'red': 13, 'brown': 13, 'tan': 0} hypo_a = {'Bag 1': mix_94, 'Bag 2': mix_96} hypo_b = {'Bag 1': mix_96, 'Bag 2': mix_94} hypotheses = {'A': hypo_a, 'B': hypo_b} def likelihood(self, data, hypo): bag, color = data mix = self.hypotheses[hypo][bag] like = mix[color] return like

其中 mix_94 和 mix_96 保存了两袋豆子中的颜色比例,hypo_a 和 hypo_b 分别对应 $H_A$ 和 $H_B$。 likelihood() 方法的 data 参数为取出豆子的袋子和豆子颜色组成的元组,如 ('Bag 1', 'yellow') 表示从袋 1 中取出了黄色豆子;hypo 参数为假设,即 A 或 B。

  MM 的使用方法为:

mm = MM('AB') mm.update(('Bag 1', 'yellow')) mm.update(('Bag 2', 'green')) mm.print()

输出为:

prob value A 0.740741 B 0.259259

← Previous post

Next post →



【本文地址】


今日新闻


    推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3