RによるAUCの有意差の解析

この記事はこんな方におすすめ
  • Pythonで予測したモデルの評価をしたい。
  • 2つのAUCの優位差の解析をしたい。

RによるAUCの有意差の解析を行う方法を解説します。

機械学習を用いて構築された予測モデルの評価に、ROC曲線下面積(AUC)を用いることがよくあります。

2つのモデルのどちらがより精度の高い予測モデルであるかをAUCによって評価するといったことが考えられます。

つまづく事なく、AUCの有意差検定が出来るようにしたい

そこでこの記事では、『RによるAUCの有意差の解析方法』について解説します。

この記事を読めば「RによるAUCの有意差の解析を行う方法」の全てが分かります。

ROCやAUCについて知りたい方はこちら

あわせて読みたい
【超初心者向け】ROC曲線とAUCについてわかりやすく解説 機械学習で分類モデルを作成した際、モデルの精度をどのように評価すべきかは非常に重要です。 モデルを評価するための評価指標として、分類モデルの場合は正解率 (Accu...
目次

RとRStudioのインストール

まずは、準備としてRとRStudioをインストールする必要があります。

RとRstudioのインストール方法についてはこちらの記事を参考にしてみてください。

基本的に、WindowsもMacもインストール方法は同じですが、参考に両方載せておきます。

【2021年11月版】WindowsにR・RStudioをインストールする

MacにRとR Studioをインストール

インストールが完了すると、こんな画面になるのでここまで出来たら準備は完了です。

AUCの差の検定(統計)

AUCの差の検定のための統計的知識および理論については、こちらの記事を参考にしてみてください。

2つの予測モデルどっちが良いの?(AUCの差の検定)

RによるAUCの有意差の解析

それでは、いよいよ具体的にRを使ってAUCの有意差の解析を行っていきたいと思います。

pROCのパッケージをインストール

RStudioの全体像は下図のようになっています。

赤枠の中に注目して、Packagesというタブを選択します。

Packagesペインに切り替えた右下区画には、 既にインストールされているパッケージの一覧が表示されています。

拡大表示

続いて、Packagesペインのタブのすぐ下の部分をよく見てもらうと InstallUpdateという項目が並んでいるのを見つけられるはずです。

このInstallをクリックしましょう。 画面の中央に、Install Packagesというタイトルのダイアログが現れます。

このInstall Packages ダイアログの真ん中に Packages(separate multiple with space or comma)と タイトルが付けられている入力フォームがあります。

この入力フォームに、インストールしたいパッケージ名を書き込み、 下の Install と書かれているボタンを押すと、 パッケージのインストールが始まります。

今回の場合は、入力フォームにpROCと書き込んで、下の Install ボタンを押してください。 インストール作業が開始されます。

ここまで出来たらパッケージのインストール作業は終了です。

AUCの解析に必要なcsvファイルの準備

今回は、python等で機械学習を行い、正解ラベルとそれぞれの予測モデルの予測値が用意されている事を前提とします。

今回は、以下のデータセットについてAUCの差の検定を行いたいと思います。

y_trueが正解ラベル、y_pred1がモデル1の予測値、y_pred2はモデル2の予測値が入っています。

RによるAUCの差の検定

以下のRスクリプトを実行すると、AUCおよびp値を算出することができます。

library(pROC)
data <- read.csv("ROC.csv")
rocA <- roc(data$y_true, data$y_pred1)
rocB <- roc(data$y_true, data$y_pred2)
print(roc.test(rocA, rocB))

実行結果は以下のようになりました。

DeLong's test for two correlated ROC curves

data:  rocA and rocB
Z = -2.0154, p-value = 0.04387
alternative hypothesis: true difference in AUC is not equal to 0
95 percent confidence interval:
 -0.0608323055 -0.0008476493
sample estimates:
AUC of roc1 AUC of roc2 
  0.9323247   0.9631647 

予測モデルAによるAUCは0.93、BによるAUCは0.96となり、予測モデルBによるAUCの方が高い値となりました。

p値を見ると0.04387とあり、一応有意差ありという結果になりました。

また、実際には両側検定と片側検定はどちらを行うべきなのか悩ましいところもあると思います。

roc.test(rocA, rocB, alternative="greater")

上記コードを実行する事で、片側検定を行うことが出来ます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次