2022年11月22日火曜日

Rを使ってROC曲線を求める方法

 



 ROC曲線を求めるとき、普段使用しているHADには備わっていないため、spssを使用していました。












 spssが嫌いなわけではありませんが、高額なこと、使える場所が限られてしまうことから、やや抵抗感がありました。














 そこで今回、Rを使ったROC曲線を求める方法を探していたところ、統計ERさんのブログでとてもわかりやすく説明されているのを発見しました。















 ただし、この通りに進めてみましたが、dat機能でvariablesが上手く分けられませんでした。もちろん、私の知識の問題がありますが、別の方法で解決できましたので、紹介させて頂きます。現在使用しているRは、「version 4.2.2」です。











 「Book1」のcvsファイルをデータとして使用しています。このデータは、BellCurveさんからダウンロートできます。BellCurveさんのファイル名は「ROC-curve-sample-data」です。







このデータのHeadingには、

検査項目:testA 

疾患の有無:disease (疾患無しを0、疾患有りを1)

と適当に英語で記載しました。









 現在のRversion 4.2.2機能では、日本語で記載すると上手く読み込めなくなる?ためです。






まず、パッケージをインストールします。

install.packages("Epi") 


library(Epi)


dat = read.csv("Book1.csv", na.strings="") →ここが統計ERさんと異なるところ

統計ERさんの場合→dat <- read.table("ROC-curve-sample-data.txt")


str(dat)



ROC(test=dat$testA, stat=dat$disease, plot="ROC")  #testAが検査の点数で、diseaseが真の分類



ROC(test=dat$testA, stat=dat$disease, plot="sp")



 すると、下記のような図がプロットされます。














 BellCurveさんと同じ結果が得られてますね。



















 このEpi パッケージの ROC() 関数の魅力は、AUC面積の算出はもちろんのこと、カットオフ値まで同時に判定してくれるところです。
































 spssの場合、Youden Indexなどを求めないと、明確なカットオフ値を得ることができません。そして統計、Rの素人である私にも使いやすい。
















 
 その他Rで用いる便利な方法があるか、今後も探していきたいと思います。


※Rのパッケージを論文に引用する必要がある場合、




今回のEpiを用いたとき、




citation("Epi")関数を使います。すると、下記の通り表示されます。

To cite Epi in publications use:

  Bendix Carstensen, Martyn Plummer, Esa Laara, Michael Hills (2022). Epi: A Package for Statistical Analysis in Epidemiology. R
  package version 2.47. URL https://CRAN.R-project.org/package=Epi

If you use Lexis objects/diagrams, please also cite:

  Martyn Plummer, Bendix Carstensen (2011). Lexis: An R Class for Epidemiological Studies with Long-Term Follow-Up. Journal of
  Statistical Software, 38(5), 1-12. URL https://www.jstatsoft.org/v38/i05/.

For use of Lexis objects in multi-state models, please also cite:

  Bendix Carstensen, Martyn Plummer (2011). Using Lexis Objects for Multi-State Models in R. Journal of Statistical Software,
  38(6), 1-18. URL https://www.jstatsoft.org/v38/i06/.

To see these entries in BibTeX format, use 'print(<citation>, bibtex=TRUE)', 'toBibtex(.)', or set
'options(citation.bibtex.max=999)'.


0 件のコメント:

コメントを投稿