私はここで R の完全な初心者であり、この質問の洗練されたレベルに対応しています。
R の ROCR パッケージを使用して、ROC 曲線のプロット データを生成しています。次に、ggplot2 を使用してプロットを描画します。このようなもの:
library(ggplot2)
library(ROCR)
inputFile <- read.csv("path/to/file", header=FALSE, sep=" ", colClasses=c('numeric','numeric'), col.names=c('score','label'))
predictions <- prediction(inputFile$score, inputFile$label)
auc <- performance(predictions, measure="auc")@y.values[[1]]
rocData <- performance(predictions, "tpr","fpr")
rocDataFrame <- data.frame(x=rocData@x.values[[1]],y=rocData@y.values[[1]])
rocr.plot <- ggplot(data=rd, aes(x=x, y=y)) + geom_path(size=1)
rocr.plot <- rocr.plot + geom_text(aes(x=1, y= 0, hjust=1, vjust=0, label=paste(sep = "", "AUC = ",round(auc,4))),colour="black",size=4)
これは、単一の ROC 曲線を描くのに適しています。ただし、私がやりたいことは、ディレクトリ全体に相当する入力ファイル (分類子テスト結果ごとに 1 つのファイル) を読み取り、AUC スコアを各プロットに出力しながら、すべての ROC 曲線の ggplot2 多面プロットを作成することです。
これを達成するための「適切な」Rスタイルのアプローチとは何かを理解したいと思います。1つのループでディレクトリ内のすべてのファイルを調べて、それぞれに個別のデータフレームを作成し、別のループで複数のプロットを作成し、ggplo2でこれらすべてのプロットを同じファイルに出力することで、何かを一緒にハックできると確信しています。水面。ただし、それではggplot2の組み込みのファセットを使用できません。これは正しいアプローチだと思います。ただし、ファセットを使用するためにデータを適切な形にする方法はわかりません。すべてのデータ フレームを 1 つのデータ フレームにマージし、マージされた各チャンクに名前 (ファイル名など) を付けてファセット処理する必要がありますか? もしそうなら、これを実現するためのライブラリまたは推奨される方法はありますか?
あなたの提案は大歓迎です。私はまだ R のベスト プラクティスに頭を悩ませているので、慣れ親しんだ通常の宣言型プログラミング言語のように見えるコードを作成するために何かをハックするのではなく、専門家のアドバイスを得たいと考えています。
編集:私が最も明確でないことは、ggplot2 の組み込みのファセット機能を使用する場合、生成される各プロットにカスタム文字列 (AUC スコア) を出力できるかどうかです。