为了可重复性,我有以下代码,使用R中的TitanicSurvival数据集(重复10次交叉验证3次)。
此外,我对论坛来说是新手,对R来说还是新手,因此,如果我违反了任何论坛指南,我会提前道歉。如果有记录,我将纠正所有错误。
library(caret)
library(pROC)
df <- TitanicSurvival
df2 <- na.omit(df)
#Multiple regression model on df2:
titanic <- glm(survived~ sex + age,family=binomial,data = df2)
roc(df2$survived,titanic$fitted.values) # AUC = 0.7735
pred <- ifelse(predict(titanic,df2,type="response")>0.5,1,0)
actual <- titanic$y
conf_mat <- table(pred,actual)
sensitivity(conf_mat) # 0.8449111
specificity(conf_mat) # 0.6838407
#Now,using 10-fold cross validation repeated 3 times,on the same df2 data set:
ctrl <- trainControl(method="repeatedcv",repeats = 3,number = 10,classprobs = TRUE,summaryFunction = twoClassSummary,savePredictions = T)
model <- train(survived ~ sex + age,data = df2,trControl=ctrl,method="glm",preProc = c("center","scale"),metric="ROC")
# Model ROC(AUC): 0.7738766,Sens: 0.8449321,Spec: 0.6840347
现在,我的问题是:
- 如何计算交叉验证模型中的AUC / Sens / Spec值?考虑到10倍CV创建了多个训练和测试集,我试图理解此输出。
- 交叉验证模型中的AUC / Sens / Spec值与“ titanic”模型中显示的值有何不同?
- 在医学文献中,一些研究使用k倍交叉验证执行了多元回归,而没有外部验证集。在此特定研究中,当他们撰写“模型准确区分HCC的存在时,在派生和验证队列中,c统计量分别为0.84(95%CI 0.81-0.86)和0.83(95%CI 0.80-0.85)(图1)” “, 这是什么意思?由于k-fold CV创建了多个训练集和测试集,因此如何得出这些各自的值? source
很长的问题,很抱歉,但是我一直在进行大量搜索,但仍然不清楚。
谢谢!