用R语言画多组ROC曲线
时间: 2023-11-21 15:05:49 浏览: 87
在R语言中,可以使用pROC包来画多组ROC曲线。下面是一个简单的例子:
首先,我们需要安装和加载pROC包:
``` r
install.packages("pROC")
library(pROC)
```
然后,我们需要准备数据。在这个例子中,我们使用UCI机器学习库中的乳腺癌数据集(Breast Cancer Wisconsin (Diagnostic) Data Set)。我们将使用数据集中的两个变量:诊断结果(M或B)和一个数值变量(radius_mean)。
``` r
# 导入数据
data("breast_cancer")
# 选择需要的变量
data <- breast_cancer[, c("diagnosis", "radius_mean")]
# 将诊断结果转换为二元变量
data$diagnosis <- ifelse(data$diagnosis == "M", 1, 0)
```
接下来,我们将数据集分成训练集和测试集,并训练一个逻辑回归模型:
``` r
# 随机分割数据集
set.seed(123)
trainIndex <- sample(nrow(data), 0.7 * nrow(data))
trainData <- data[trainIndex, ]
testData <- data[-trainIndex, ]
# 训练逻辑回归模型
model <- glm(diagnosis ~ radius_mean, data = trainData, family = binomial)
```
现在,我们可以使用pROC包中的roc函数来计算ROC曲线的各种度量标准,并使用plot函数来画ROC曲线。我们可以在同一张图上绘制多组ROC曲线,以比较不同模型的性能。在这个例子中,我们将比较逻辑回归模型在训练集和测试集上的性能:
``` r
# 计算训练集和测试集的ROC曲线
trainROC <- roc(trainData$diagnosis, model$fitted.values)
testROC <- roc(testData$diagnosis, predict(model, newdata = testData, type = "response"))
# 画ROC曲线
plot(trainROC, col = "red", main = "ROC Curves", print.thres = c(0.5),
legacy.axes = TRUE, print.auc = TRUE, print.auc.y = 0.3)
lines(testROC, col = "blue")
legend("bottomright", legend = c("Train", "Test"), lty = 1, col = c("red", "blue"))
```
这将产生一张包含训练集和测试集ROC曲线的图表,如下所示:
![ROC Curves](https://i.imgur.com/3dJjRcm.png)
在这个例子中,我们可以看到逻辑回归模型在训练集和测试集上都表现良好,但测试集上的性能稍微差一些。
阅读全文