ベイズの定理を使ってバレンタインに貰ったチョコは本命かどうかの確率を出します。
まず今分かっている情報を整理します。
バレンタインチョコをA子さんにもらっている。
A子さんが私を好きな確率は70%である
A子さんが私を好きでない確率は30%である
尤度 好きだからチョコを渡した0.65
尤度 好きだだけどチョコを渡さない0.35
尤度 好きではないがチョコを渡した0.5
尤度 好きではないのでチョコを渡さなかった0.5
2番と3番は事前確率といい自分の主観できめる
4,5,6,7は尤度といいます。
深く考えずバレンタインの尤度はこの数値で決まっていると思ってください。
ここから計算式にしていきます
尤度 好きだからチョコを渡した 0.7 * 0.65 = 0.455
尤度 好きだだけどチョコを渡さない 0.7 * 0.35 = 0.245
尤度 好きではないがチョコを渡した 0.3 * 0.5 = 0.15
尤度 好きではないのでチョコを渡さなかった 0.3 * 0.5 = 0.15
今回はチョコをもらっているので1,3で計算します。
式は 0.455 / (0.455 + 0.15) = 0.752 *100
事後確率が約75%になりました。これが事前確率と尤度とベイズの定理を使った事後確率の計算方法です。
pythonで簡単なguiアプリを作ったので公開します。
import tkinter
def click_btn():
input_num = int(entry.get())
input_num = input_num / 100
b = 1 - input_num
##定数尤度##
# 本命だからチョコをあげた
c = 0.65
# 本命でないなのにチョコをあげた
d = 0.5
# 本命にチョコをあげなかった
e = 0.35
# 本命にじゃないのでチョコをあげなかった
f = 0.5
x = input_num * c
y = input_num * c + b * d
aaa = x / y * 100
aaa = (round(aaa,2))#round関数で少数第二位に丸める
print(x)
print(y)
print("Aさんは貴方の事を" + str(aaa) + "%の確率で好きです。")
button["text"] = "Aさんは貴方の事を" + str(aaa) + "%の確率で好きです"
root = tkinter.Tk()
root.title("バレンタインにもらったチョコレートは本命?")
root.geometry("400x200")
entry = tkinter.Entry(width=3)
entry.place(x=20, y=20)
button = tkinter.Button(text="A子さんは貴方の事を何%の確率で本命とおもいますか?",
command=click_btn)
button.place(x=20, y=100)
root.mainloop()