第2章 事後分布とベイズの定理

2017/10/2

放送大学「心理統計法(‘17)」第2章 事後分布とベイズの定理

Python3のスクリプト

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from os.path import basename, dirname

if __name__ == '__main__':
    #図2.2 恩赦される確率の事後分布
    np.random.seed(1234) #乱数の種
    nod = 10000 #乱数の数
    BdAa = np.random.rand(nod) #f(Bd|Aa)の確率分布 
    #print(BdAa)
    AaBd = BdAa / (BdAa + 1) #事後分布
    #print(AaBd)
    mean = np.mean(AaBd) #EAP推定値
    print("EAP推定値 : %6.3f" % mean)
    median = np.median(AaBd) #MED推定値
    print("MED推定値 : %6.3f" % median)
    #事後分布、MAP推定値=0.5

    plt.hist(AaBd,normed=True)
    #plt.show()
    plt.savefig("%s/%s1.png" % (dirname(__file__), basename(__file__)), dpi=70)
    plt.clf()

    #第2章演習問題 1
    a = (0.15 * 0.5)/((0.15 * 0.5)+(0.02 * (1-0.5)))
    b = (0.22 *  0.8823529)/((0.22 *  0.8823529)+(0.01 * (1- 0.8823529)))
    c = (0.25 *  0.9939759)/((0.25 *  0.9939759)+(0.01 * (1- 0.9939759)))

    print(a, b, c)

実行の結果

実行の結果

EAP推定値 :  0.307
MED推定値 :  0.335
0.8823529411764707 0.9939759012392944 0.9997576343665803