1

ウェブサイトにあるような図を作成しようとしていました。ただし、より基本的な問題が発生しました。R プロット内に削除したい空白があります。これはパッケージを使用していますpROC。問題を説明する再現可能な例を含めました。

library("pROC")
plot.roc(c(1, 1, 0, 0, 1), c(3, 4, 5, 6, 7), legacy.axes=TRUE)

上記のコードは、最終的に次の画像のようになります。

plot.roc() の問題: 再現可能な例 #1 の出力

ご覧のとおり、画像には y 軸とプロットの最も左側の部分との間に多くの空白があり、プロットの右側にも同様の空白があります。この問題は、 を使用している場合にのみ発生しましたplot.roc()。エミュレートしようとしていたプロットを (Web サイトで提供されているコードを使用して) 作成しようとしても、別の画像になりました (最初の段落で説明した画像のコードは以下に含まれています)。

library(pROC)
data(aSAH)

rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100, main="Statistical comparison", percent=TRUE, col="#1c61b6")
rocobj2 <- lines.roc(aSAH$outcome, aSAH$ndka, percent=TRUE, col="#008600")
testobj <- roc.test(rocobj1, rocobj2)

text(50, 50, labels=paste("p-value =", format.pval(testobj$p.value)), adj=c(0, .5))

legend("bottomright", legend=c("S100B", "NDKA"), col=c("#1c61b6", "#008600"), lwd=2)

plot.roc() の問題: 再現可能な例 #2 の出力

まったく同じコードを使用した元の画像には空白はありません

R の設定に問題がある可能性がありますが、コードを 2 台目のコンピューターで実行しても問題は解決しませんでした。誰でも支援できますか?

4

1 に答える 1

1

回答は質問へのコメントに記載されていますが、適切な回答に書き留めておく価値があると思います。また、あなたとリンクされた例の両方が、プロットの保存に使用されるグラフィカル デバイスについて何も指定していないことに注意してください。そのため、「まったく同じコードを使用した」と言うのは少し誤解を招きます。

通常、ROC 曲線は、感度と特異性が同じスペースを占めるように、単位正方形内にプロットする必要があります。これにより、視覚化と比較が容易になります (通常、ROC 曲線は、特異性と感度のトレードオフを表示するのに役立ち、それらの 1 つにより多くのスペースを与えると、この比較をより困難にします)。

pROC パッケージは、asp=1への内部呼び出しを設定することでこれを行いますplot.window。続行するには、次の 2 つのオプションがあります。

  1. 軸を設定asp=NA(または類似) して「解放」します (ROC 曲線は単位正方形ではなく、単位長方形になるため、解釈が難しくなる可能性があることに注意してください)。

    rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100, asp = NA)
    

    asp = NAのROC曲線

  2. マージンがプロットの外側になるように、呼び出す前にグラフィカル パラメーターptyをに変更します。splot.roc

    par(pty = "s")
    rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100)
    

    par(pty =

于 2017-04-24T13:27:10.660 に答える