ロジスティック回帰:標準誤差が異常に大きい場合の対処

graph and line chart printed paper R
Photo by Lukas on Pexels.com

手元のデータでRのglm関数を使ってロジスティック回帰分析をしていたところ、以下のようなエラーが出た。

Warning message:
glm.fit: 数値的に 0 か 1 である確率が生じました

summary関数で結果を表示することはできるのだが、切片やいくつかの変数の標準誤差が異常に大きい。数千もの値になっている。これは何か問題があると思って調べたところ、完全分離(complete separation)が起きている場合にこのような計算結果が表示されることが分かった。完全分離とは、「独立変数と従属変数のクロス表において度数がゼロのセルが存在する」(林他 2017, p.225)ことを指す。このような場合、「対数オッズがプラスまたはマイナス無限大になってしまい、反復計算の過程で最終的な解に収束していかない」(林他 2017, p.225)ことが知られている。林他(2017)によると、偏回帰係数や標準誤差が異常に大きな値になっている場合に完全分離が生じている可能性が高いという。実際、手元のデータでクロス集計をしてみたところ、完全分離が生じていることを確認できた。どうも、小標本でめったに起きない事象を扱っている場合に、このような完全分離が起きやすくなるようだ。

このような場合の対処方法として、精確ロジスティック回帰(exact logistic regression)とFirthの方法によるバイアスを修正したロジスティック回帰(Firth’s bias-reduced logistic regression; 以下、Firthの方法)が提案されている。それぞれの詳しい内容については、以下の記事が参考になる。

Rであれば、精確ロジスティック回帰はelrmパッケージのelrm関数で実行でき、Firthの方法はlogistfパッケージのlogistf関数を使えば実行できる。精確ロジスティック回帰は下準備が面倒なので、今回はlogistf関数を使って分析を実行することにした。logistf関数を使ったFirthの方法は、help関数で調べてみると簡単に実行できることがわかる。help関数で使い方を調べた時に表示される内容と同じものが書かれているwebサイトを以下に示す。

logistfパッケージは、Heinz氏が作成したものである。この方は、Firthの方法を適用し完全分離の問題を解決する方法を提案したHeinze and Schemper (2001, 2002)の著者の一人である。アヤシイ人が作ったパッケージではないし、安心して使っていいだろう。

会計学研究での利用についてだが、Firthの方法を使った論文としては、Wen et al. (2017) がある。中国の学生が公認会計士と企業内の会計担当者のどちらを選ぶかというキャリア選択をする際に、どのような要因がその選択に影響を与えるかを定量的に分析した論文である。この論文では、いわゆるロバストネス・チェックのような形でFirthの方法で分析した結果が示されている(p. 136)。彼らは偏回帰係数、標準誤差、χ二乗値、p値を示しており、モデル全体の有意性の検定として尤度比検定の結果を掲載している。多重共線性関係の指標としては、トレランスおよびVIFを示している。論文でFirthの方法を活用する場合には、彼らの報告の仕方を参考にするとよいだろう。

実際に手元のデータを使ってFirthの方法を実行してみたところ、問題は解決された。統計学に詳しい人にとって、このような対処法は当たり前に知っていることなのだろうが、私のように統計学に明るくない人が同じ問題に引っかかることもあるだろう。なのでブログに書いて共有しておく。

コメント

タイトルとURLをコピーしました