0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ベイズ統計学 貰ったチョコは本命チョコ??

Posted at

ベイズの定理を使ってバレンタインに貰ったチョコは本命かどうかの確率を出します。

まず今分かっている情報を整理します。

バレンタインチョコを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()
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?