inst/india_blackboost.R

library("mboost")
library("party")

load("india.Rdata")

##############
# Blackboost #
##############

quantiles <- c(0.05, 0.1, 0.5)
inds <- paste("w", 1:50, sep="")

features <- names(india)[c(11:16, 19:33)]
fmtree <- paste(features, collapse = " + ")
fmtree <- as.formula(paste("stunting", fmtree, sep=" ~ "))
 
for(i in 1:length(inds))
  {
  indiafit <- india[india[,inds[i]]<3,]
  indiapred <- india[india[,inds[i]]==3,]
  wfit <- as.numeric(indiafit[,inds[i]]==1)

  for(j in 1:length(quantiles))
    {
    it <- 1000
    inc <- 1000
    maxit <- 50000
    bc <- boost_control(mstop = it, nu=0.25, trace = TRUE, risk = "oob")
    tc <- ctree_control(maxdepth = 5, savesplitstats = FALSE)
  
    model <- blackboost(fmtree, 
                        data = indiafit, 
                        control = bc,
                        tree_controls = tc,
                        weights = wfit,
                        family = QuantReg(tau = quantiles[j])
                        )

    risk <- model$risk()                    
    while( ((risk[it-inc+1] - risk[it])>=0.05) &
            (it<=maxit) ) 
      {
      it <- it + inc
      model[it]
      risk <- model$risk()                    
      }
  
    pred <- predict(model[which.min(risk)], newdata=indiapred)
    save(pred, file=paste("trees/model",i,"_",quantiles[j],".Rdata",sep=""))
    }
  }

Try the mboost package in your browser

Any scripts or data that you put into this service are public.

mboost documentation built on May 2, 2019, 6:10 p.m.