我一直致力于获得一个引导置信区间周围产生的梯度增强机器学习算法的AUCs,并有一个连续的结果。下面是需要重复至少200次的代码:
我知道在SAS中,我可以使用一个宏来运行这段代码200次,创建200个数据集,提取200个AUC的I可以合并,但我不知道如何在R中循环这个。
#calling required packages
library("WVPlots")
source('functions.R')
require(gbm)
#generating some data
main<-matrix(
replicate(52,rnorm(1132)),
ncol=52,
nrow=1132,
dimnames = list(
1:1132,
1:52)
)
colnames(main)[1] <- "PctControl"
#creating resampled dataset BS[1] (so my aim is to repeat this for BS[1:200]
BS1=matrix(
rep(as.numeric(NA)),
nrow=1000,
ncol= ncol(main),
dimnames= list(1:1000, colnames(main))
)
BS1[1:1000,]<-as.matrix (main[sample(nrow(main),size=1000,replace=TRUE),])
BS1<-BS1[order(BS1[,1]),]
Survival <- as.numeric (BS1[,1])
NormedSurvival<- as.numeric( ppoints(Survival) )
BS1<-cbind (NormedSurvival, BS1)
BS1<-as.data.frame(BS1[,-2])
#fitting the GBM model
scwrpxy.fit.gbm = gbm(NormedSurvival~.,
data=BS1,
n.trees = 50, verbose = T, shrinkage = 0.005,
bag.fraction = 0.25, # subsampling fraction, 0.5 is probably best
train.fraction = 0.3,
interaction.depth = 3, n.minobsinnode = 10, distribution = "gaussian",
cv.folds = 3)
summary(scwrpxy.fit.gbm)
#Calculating AUC
predictedGBM<-as.numeric(predict.gbm (scwrpxy.fit.gbm,
n.trees = 500,
shrinkage = 0.005,
interaction.depth=3,
bag.fraction=0.5,
train.fraction=0.3,
cv.folds = 5,
distribution="gaussian"))
observedGBM<-as.numeric(BS1$NormedSurvival)
TestTox<-as.data.frame(cbind(observedGBM,predictedGBM))
ROCPlot(TestTox,'predictedGBM','observedGBM','gbm model')
gbmAUC = as.numeric(pROC::auc(TestTox$observedGBM,TestTox$predictedGBM))
print(gbmAUC)发布于 2016-10-09 11:22:51
在SAS中,需要PROC APPEND或DATA步骤来追加数据集。在R中,同样的事情需要rbind()。所以做些类似的事情:
if !exists(baseAUC)
baseAUC <- gbmAUC
else
baseAUC <- rbind(baseAUC,gbmAUC)https://stackoverflow.com/questions/39941378
复制相似问题