ロジスティック回帰のリンク関数と逆関数|統計検定の解法を理解する #8

f:id:lib-arts:20210428234109p:plain

統計検定の問題を問題を解くだけでなく、本質的な理解も同時に行えるようにしようという意図のシリーズです。#7では偏相関係数について大まかに取り扱いました。

#8ではロジスティック回帰のリンク関数について確認しようと思います。

Amazon.co.jp: 【Kindle限定改訂版】Python実装を通して学ぶ、統計モデリング入門 eBook: LiberalArts, yoichi_t: Kindleストア

ロジスティック回帰の最尤法からの導出については上記でも取り扱いましたので、詳しく気になる方は上記もご確認いただければと思います。

https://www.toukei-kentei.jp/wp-content/uploads/201906grade1semi.pdf
この記事では上記の問題と関連させながらロジスティック回帰のリンク関数のロジット関数とその逆関数のロジスティック関数について確認を行います。

1. 問題の確認と解法
2. ロジット関数とロジスティック関数
3. まとめ


1. 問題の確認と解法
1節では問題の解法について確認します。

https://www.toukei-kentei.jp/wp-content/uploads/201906grade1semi.pdf

上記の問10の問題について確認します。設問[1]〜[4]があり、以下それぞれについて確認します。

[1]

・Answer
ロジスティック回帰を用いたと設問文にあるため、確率変数Y_iはベルヌーイ分布にしたがい、確率のパラメータを0 \leq \pi_i \leq 1、試行回数をnに設定した二項分布をBin(n,\pi_i)とすると、ベルヌーイ分布は二項分布の試行が1回の場合に相当するので、構造式はBin(1,\pi_i)のように決定できる。

・解説
ベルヌーイ分布は試行が1回の二項分布に一致することは抑えておきましょう。また、確率変数のY_ii=1,2,...,23に対して01の値しか取らず、それぞれ独立であることは抑えておきましょう。 

[2]

・Answer
ロジスティック回帰はロジット関数\displaystyle logit(p) = \log{\left( \frac{p}{1-p} \right)} = \log(p)-\log(1-p)をリンク関数に用いる。
したがって、\displaystyle \log{\frac{\pi_i}{1-\pi_i}} = \alpha+\beta x_iが答えとなる。

・解説
ロジット関数とロジスティック関数が回答候補にあり、少しややこしい印象を受けましたので、間違わないように2節では詳しく取り扱いたいと思います。

[3]

・Answer
推定値は\alpha=15.0429, \beta=-0.2322なので、\alpha+\beta x = -0.2322x + 15.0429とできる。またこの際、\pi=0.5のため、\displaystyle \log{\frac{\pi}{1-\pi}} = \log{\frac{0.5}{0.5}} = 0である。
よって-0.2322x + 15.0429 = 0を満たすxを求めればよく、\displaystyle x = \frac{15.0429}{0.2322} = 64.78...となる。

・解説
\displaystyle \log{\frac{\pi}{1-\pi}}0になり、計算が容易になることからこれが正しいだろうというのがある程度確認できるように出題が行われていると思います。この手の問題は必要以上に計算の負荷が生じないように調整されていることが多いので、その点は抑えておくと良いと思います(たまに例外もあるので注意が必要です)。

[4]

・Answer
\displaystyle \log{\frac{\pi}{1-\pi}} = \alpha+\beta x\piについて整理すると、\displaystyle \pi = \frac{exp(\alpha+\beta x)}{1+exp(\alpha+\beta x)}のようにできる。
\alpha=15.0429, \beta=-0.2322, x=31を代入し計算すると、\displaystyle \pi = \frac{exp(7.8447)}{1+exp(7.8447)}となる。この値に一番近いのが"5"の0.9996となる。

・解説
\displaystyle \pi = \frac{exp(\alpha+\beta x)}{1+exp(\alpha+\beta x)}で導出した関数をロジスティック関数と呼び、これは[2]で取り扱ったロジット関数の逆関数です。この二つがややこしいと思いますので、2節では簡単にグラフを確認したいと思います。

 

2. ロジット関数とロジスティック関数
2節では1節で取り扱ったロジット関数とロジスティック関数について確認します。それぞれ数式を用いると下記のように表現できます。

\displaystyle logit(p) = \log{\left( \frac{p}{1-p} \right)} = \log(p)-\log(1-p) (ロジット関数)
\displaystyle logistic(\alpha) = \frac{1}{exp(-\alpha)+1} = \frac{exp(\alpha)}{1+exp(\alpha)} (ロジスティック関数)

このとき、pの定義域が0 \leq p \leq 1logistic(\alpha)の値域が0 \leq logistic(\alpha) \leq 1のように表せることは抑えておくと良いと思います。

数式のイメージは大体つかめたと思いますので、次にPythonを用いたグラフの描画について行います。

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

p = np.arange(0.01, 1., 0.01)
logit = np.log(p/(1-p))

plt.plot(p,logit)
plt.show()

f:id:lib-arts:20210510203714p:plain

上記がロジット関数の描画です。
次にロジスティック関数の描画も行います。

alpha = np.arange(-5., 5.1, 0.1)
logistic = np.exp(alpha)/(1+np.exp(alpha))

plt.plot(alpha,logistic)
plt.show()

f:id:lib-arts:20210510203737p:plain

ロジット関数とロジスティック関数を見比べると、ロジット関数が定義域に制限があり、ロジスティック関数が値域に制限があることが確認できるかと思います。これによってロジット関数がリンク関数で説明変数の値を計算する際などに主に用い、ロジスティック関数はリンク関数の逆関数で従属変数の値を計算する際に主に用いることが理解できるかと思います。


3. まとめ
#8ではロジスティック回帰のリンク関数のロジット関数とその逆関数のロジスティック関数について取り扱いました。
#9では最尤法と同様にパラメータ推定について取り扱うモーメント法について取り扱います。