最尤法 2018/05/16

最尤法を用いて, 身長から男女を推定する.


最尤法は条件の違う2つの条件付き確率を尤度と呼んで比較する. 条件がことなるときに確率を比べてることは無意味であるが, 最尤法では男性, 女性をパラメータとして考える. 確率分布の尤度比較の場合, 離散的であり, 微分とか必要なし.

以下はPythonで書かれたコードである。男子の平均身長を171.66 cm、男子の身長分布の標準偏差を5.6とする。女子の平均身長を158.32 cm、女子の身長分布の標準偏差を5.52として計算した。

#! /usr/bin/python3
## -*- coding: utf-8 -*-
## 最尤法を用いて、身長で男女を推定する。

import numpy as np

def p(x, m, s):
    return(np.exp(-(x-m)*(x-m)/(2*s*s))/np.sqrt(2*s*s*3.141592))

def manorwoman(x):
    pman=p(x, 171.66, 5.6)
    pwoman=p(x, 158.32, 5.52)
    if pman < pwoman:
        print("woman")
    else:
        print("man")

manorwoman(170)
manorwoman(165)
manorwoman(160)