【二項分布】ロジスティック回帰について(実例つき)

GLMモデルと呼ばれる、一般化線形モデルにはポアソン分布だけではなく、色々の分布が使われます。

今回は二項分布を使った「ロジスティック回帰」について解説いたします。

GLMの復習

かんたんにGLMの復習を行います。しっかり復習したい方は、【GLM】一般化線形モデルを解説(統計モデル編)をご覧ください。

一般化線形モデルには、3つの特徴がありました。

①線形予測子

上の式で言うと、右辺にあたります。入力データXの数だけ、パラメーターをかけたものです。

②確率分布

パラメーターβが得られた時のyの分布

③リンク関数

上の式で言うと、左辺のことです。線形予測子が作る関数のことです。Yが形を変えたものと考えてもらって構いません。

確率分布がポアソン分布の時のGLMは、リンク関数はλを対数化したものになります。下のような形でした。

ロジット関数とロジスティック関数

まずは、今回扱うロジスティック回帰の特徴を説明していきます。

①確率分布:二項分布

②リンク関数:ロジットリンク関数

このようになります。注意として、カウントデータが1個のみなら①の確率分布はベルヌーイ分布になります。

二項分布(binomial distribution)

二項分布とは、独立なベルヌーイ分布をn回繰り返した時の和の分布です。

実現値が有限である点において、ポアソン分布と異なります

【例】コインを5回投げて表の出た回数をXとすると、実現値は0,1,2,3,4,5の6種類です。表が出る確率を仮にpとすると、

実現値0
実現値1

このようになっていきます。実現値0から5までの確率の和は以下のようになります。

一般化すると、二項分布の確率密度関数は以下のようになります。nは実現値です。

ロジットリンク関数(logit link function)

先ほどの二項分布と同じコインの例を挙げます。

ごちゃごちゃ説明する前に、コードをみてください。

z<-seq(-6,6,0.1)
#線形予測子/右辺

logit<-function(z) z
#ロジット関数の定義
#リンク関数/左辺

plot(z,logit(z))
#作図
ロジット関数

seq(a,b,c)というのは、最小値aで最大値bまでをc刻みで代入するものです。

上の式がロジット関数です。右辺は線形予測子、左辺はオッズを対数化したものです。コインの例で言うと、下のようになります。

対数オッズと、オッズの関係はこのようになります。上側の右辺がよくみる線形予測子の形です。

しかし、出力結果が、「オッズを対数化したもの」だと目的に沿わない場合もあります。

ちゃんと、「コインがi回表になる確率を知りたい!」と言う場合には、ロジット関数をロジスティック関数にする必要があります。

ロジスティック関数(logistic function)

ロジット関数の逆関数が、ロジスティック関数です。

ロジスティック関数は以下のような形になります。

線形予測子Ziに−1がかかりました。eの-線形予測子乗に1を足したものが分母となっています。

Rで書いてみましょう。

logistic <- function(z) 1 /(1+exp(-z))
#ロジスティック関数の定義


plot(z,logistic(z))
#作図

ロジスティック関数

ロジット関数と比べて、滑らかになりました。「コインが表になる確率」が上のように推移することがわかりました。

オッズ比に関して詳しく知りたい方は、【ベイズ因子】オッズ比を実例を通して紹介をご覧ください。

【実践】健康寿命と喫煙、肺の大きさ

ロジット関数の意味が大体理解できたと思うので、Rで実例を扱ってみます。

story

2055年に亡くなった方の健康寿命を2040年時点から遡ってみました。
中でも、喫煙経験があった25人と25人の計50人を調査し、肺の大きさも測ります。

N:2040年から2055年までの年数。当然全員15年。
y:2040年から測った健康寿命。15以下。
x:腎臓の長さ
s:喫煙因子/喫煙してるかしてないかの二択。

N:15
y:10
x:10.43
s:N
例:2050年までは健康に生きれたが2055年に亡くなった。肺の横の長さは10.43cm。喫煙経験はない人。
health<-read.csv("health.csv")
#データの読み込み

health$y
#健康寿命を表示

健康寿命をとりあえず出力してみました。平均すると2040年から7年くらいですね。

以下は簡単にグラフ化したものです。白の方が喫煙経験なしなので、ある程度健康寿命が伸びそうな傾向が見えます。

では分析を行います。

glm(cbind(y,N-y)~x+s,data=health,family=binomial)

ばらつきの確率分布は、family=binomialで二項分布を使います。

応答変数に関しては、cbind(y,N-y)となっていますが、これはcbind(健康に生きれた年数、残りの健康に生きれなかった年数)を表しています。

推定値としては、以上のようになります。

何が言えるのか?

上の例で言うと、腎臓の大きさによる推定パラメータが0.17039でした。

つまり、個体iの腎臓の大きさが「1単位」増大すると、健康寿命のオッズは、

exp(0.17039)倍になることがわかります。

電卓で簡単に計算できますが、1.185767倍でした。腎臓が大きい人は、ちょっと健康寿命が大きい傾向にあることがわかりました。

*二項分布を使ったGLMで使われるリンク関数は、ロジットリンク関数だけでなく、プロビット関数など別の関数もあります。ロジスティック回帰の場合には、リンク関数は、ロジット関数を使うというだけの話です。

FOLLOW ME !

PAGE TOP