
書記が数学やるだけ#209 最尤推定から最小二乗法へ
最小二乗法は,最尤推定の特別なケースであることを示す。
問題
今回は正規分布について。
説明
前回同様,確率密度関数から考える。
パラメータはμとσの2つがあり,それぞれについて考えていく。
尤度関数は,図のように多変量で示される。最尤推定は,その山の頂上(最大値)を求めることに相当する。
次に,誤差が正規分布である線形回帰モデルについて考える。パラメータはaとbの2つがある。
これについて尤度関数を計算していくと,最小二乗法の式にたどり着く。つまり,誤差が正規分布である線形回帰モデルの最尤推定量は,線形回帰モデルの最小二乗法による正規方程式の解と一致する。
ちなみに,最尤推定では誤差が正規分布でないモデルも考えることができる(一般化線形モデル;GLM)。これには線形回帰のほか,ポアソン回帰やロジスティック回帰などが含まれる。
解答
一見面倒に見えるが,対数をとると一気に見通しがよくなる。
「誤差が正規分布である線形回帰モデルの最尤推定量は,線形回帰モデルの最小二乗法による正規方程式の解と一致する」ことを示す。
(3)について,コードを以下に示す。途中までは#206と同じ。
#必要なライブラリ
from sklearn import datasets
import numpy as np
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
import seaborn as sns#irisデータセット
dataset = datasets.load_iris()
target_names = dataset.target_names
targets = dataset.target
feature_names = dataset.feature_names
features = dataset.data
df = DataFrame(features, columns = feature_names)
df['target'] = target_names[targets]
df.head()#散布図
X = df[["sepal length (cm)"]]
y = df[["petal length (cm)"]]
plt.scatter(X, y)今回は「statsmodels」を使って回帰分析を行う。
import statsmodels.api as sm
X = sm.add_constant(X)
model = sm.OLS(y, X)
result = model.fit()
result.summary()とりあえず見るべきポイント(一部は後日扱う):
R-squared,Adj. R-squared:決定係数,後者は自由度による調整を施したもの,回帰のあてはまり具合の指標
F-statistic,Prob (F-statistic):F検定の結果,回帰に意味があるかの指標
Log-Likelihood:対数尤度,大きい方があてはまりが良い
AIC:赤池情報量規準,モデルの単純さを加味した基準,小さい方がモデルとして優れている
BIC:ベイズ情報量規準,小さい方がモデルとして優れている
coef:回帰係数,今回なら「y=0.4349+2.0531x」と予測されている
t,P>|t|;回帰係数のt検定,回帰係数が0でないか(意味があるか)の指標,[0.025 0.975]は区間推定
本記事のもくじはこちら:











