library(MedicalRiskPredictionModels) prepareExamples()
# Chunk1 B <- 200 ivftrain.small <- ivftrain[sample(1:NROW(ivftrain),size=50)] result <- foreach(s=1:B,.combine="rbind")%dopar%{ set.seed(s) # function rnorm generates normal noise ivftrain.small[,newMarker:=rnorm(NROW(ivftrain.small))] ivftest[,newMarker:=rnorm(NROW(ivftest))] fit1 <- glm(ohss~ant.foll+age,data=ivftrain.small,family="binomial") fit2 <- glm(ohss~ant.foll+age+newMarker,data=ivftrain.small,family="binomial") x <- Score(list("Conventional model"=fit1,"Random marker"=fit2), data=ivftest, se.fit=0, formula=ohss~1) library(Hmisc) # provides IDI and NRI p1 <- predictRisk(fit1,newdata=ivftest) p2 <- predictRisk(fit2,newdata=ivftest) y <- improveProb(p1,p2,ivftest$ohss) data.table(NRI=100*y$nri, IDI=100*y$idi, delta.AUC=100*x$AUC$contrasts$delta.AUC, delta.Brier=-100*x$Brier$contrasts$delta.Brier[3]) } boxplot(result,names=c("NRI", "IDI", expression(paste(Delta,"AUC")), expression(paste(Delta,"Brier")))) abline(h=0,col=2)
# Chunk2 library(PredictABEL) # provides the re-classification table OHSSprevalence <- mean(ivftrain$OHSS=="Yes") # conventional model fit1 <- glm(OHSS~ant.foll+age,data=ivftrain,family="binomial") # exaggerated model fit2 <- function(risk,prevalence){ new.risk <- risk # set risk to 100% when risk is above prevalence new.risk[risk>prevalence] <- 1 # set risk to 0% when risk is below prevalence new.risk[risk<=prevalence] <- 0 new.risk } # apply models to test set p1 <- predictRisk(fit1,newdata=ivftest) p2 <- fit2(p1,OHSSprevalence) reclassification(data=ivftest, cOutcome=10, p1, p2, cutoff=c(0,.25,.5,.75,1))
# Chunk3 x <- Score(list("Conventional model"=p1,"Exaggerated model"=p2), data=ivftest, se.fit=0, null.model=FALSE, formula=ohss~1) summary(x)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.