Logistic回帰後のROC曲線とAUCを求める

統計

このブログでは、統計解析ソフトStataのプログラミングのTipsや便利コマンドを紹介しています.

Facebook groupでは、ちょっとした疑問や気づいたことなどを共有して貰うフォーラムになっています. ブログと合わせて個人の学習に役立てて貰えれば幸いです.

さて、今回はROC(Receiver operating characteristic)曲線とAUC(Area under curve)を求める方法を概説します.よく使われる統計手法ですのでぜひ押さえておきたいところだと思います.

この解析はLogistic regressionが元になっており、アウトカムが0/1のとき、単一の要因(またはいくつかの要因の組み合わせで導き出されたスコア)がいくつのときどのくらい正しく疾患ありの人を「あり」と分類できるか、あるいは疾患のない人を「なし」と分類できるか、どのポイントで区切れば効率よく分類できるか、ということを探索するために用います.

1.ロジスティック回帰後に”lroc”

logistic outcome exposure1 exposure2...
lroc

これが最も基本的なコードになります.単純にROC曲線を作成し、信頼区間抜きでAUCが算出できます.信頼区間を付けたければ、”roctab”コマンドを使用しますが、多変量解析後の場合には一つの変数にまとめる「線形予測スコア」を作る必要があります.このとき”predict”コマンドを利用し、xbオプションを使うとよいです.

2.多変量解析後の解析”predict”でひとまとめにする

logistic outcome exposure1 exposure2
predict newvar1, xb
logistic outcome exposure1 exposure2 exposure3
predict newvar2, xb

このようにして変数をまとめることでモデル同士を比較したりするのに役立ちます.

3.信頼区間と様々な値に対する感度特異度

logistic outcome exposure1 exposure2...
predict newvar, xb
roctab outcome newvar, graph sum

これでグラフはもちろん、95%信頼区間付きのAUCを算出できます.では、変数の組み合わせで作られた「スコア」がそれぞれの値のポイントにおいて、どんな感度・特異度を持っているのかといったことを知りたい場合には、roctabにdetailオプションをつけることで一覧で確認できます.

logistic outcome exposure1 exposure2...
predict newvar, xb
roctab outcome newvar, detail

このようにすることで各ポイントにおける感度特異度を出すことができます.そしてさらにそれを用いて差異的なポイントを表から探すことができます.

User作成のコマンドの”cutpt”を使うことでYouden法によるoptimal pointを求めることができます.これにroctabのオプション”addplot”をうまく組み合わせることで最適点をグラフ中に埋め込むことができます.

logistic outcome exposure1 exposure2...
predict newvar, xb
cutpt outcome newvar, noadjust    
roctab outcome newvar, graph addplot(scatteri `e(sens)' `=1 - e(spec)', mcolor(red)) legend(label(3 "Cutpoint"))

なお、この”cutpt”ですが、最適点を選ぶためのオプションが3つ用意されています.liu、youden、nearestです.lieがデフォルトで設定されていますが、Youdenやnearestを選択することも可能です.

4.モデル同士の比較

複数のモデルを比較したいときには、

  • モデル自体の分類性能(AUC)
  • モデルによる予測のよさ(AICやBIC)

といった指標を以って比較します.AICやBICについては説明すると大変なので別項を設けることにして、簡単に言えば“estat ic”をロジスティック回帰の直後に実施してAICやBICの小さいモデルを選択する、というものです.

AUCの比較を行って検定まで行うことを目指すのであれば、”roccomp”を用いましょう.

logistic outcome exposure1 exposure2
predict newvar1, xb
logistic outcome exposure1 exposure2 exposure3
predict newvar2, xb
roccomp outcome newvar1 newvar2

これなら信頼区間付きのAUCがいずれのモデルでも算出できますし、2つ以上のモデルを比較することもできます.また、グラフオプションをつければ複数のROC曲線を重ねて描くことができます.

5.まとめ

ROC曲線、曲線下面積の算出や比較を行うためのコマンドを紹介してまいりました.かなり基本的な解析ではありますが、頻出ですのでマスターしておくとよいと思います.

コメント

  1. […] さて、今回はROC(Receiver operating characteristic)曲線とAUC(Area under curve)を求める方法については以前概説しました. […]

  2. […] モデルの判別力(discrimination)といえば、ロジスティック回帰分析を行った後にReceiver Operating Characteristic (ROC) curveを描いて曲線下面積(Area Under Curve, AUC)を求める、というのが一般的なイメージだと思います.これはStataで簡単に行うことができます.これについては別の記事①、記事②を参照してください. […]

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