R/forest.R

# FORESTS -----------------------------------------------------------------

#' Difft by Random Forest
#' 
#' An abstract reference class to compute twin via random forests
#'  
#' \code{VT.forest} extends \code{VT.difft}
#' 
#' @field ... see fields of \code{\link{VT.difft}}
#'   
#' @include difft.R predict.R
#'   
#' @name VT.forest
#' 
#' @seealso \code{\link{VT.difft}}, \code{\link{VT.forest.one}}, \code{\link{VT.forest.double}}
#'   
#' @import methods
#' 
#' @rdname VT.forest-abstract
VT.forest <- setRefClass(
  Class = "VT.forest",
  
  contains = "VT.difft",
  
  methods = list(  
    run = function(){
      "Compute twin1 and twin2 estimation. Switch treatment if necessary."
      .self$computeTwin1()
      
      if(inherits(.self, "VT.forest.one")) .self$vt.object$switchTreatment() #if one forest
      
      .self$computeTwin2()
      
      if(inherits(.self, "VT.forest.one")) .self$vt.object$switchTreatment() #if one forest
      
      .self$computeDifft()
      
      .self$vt.object$computeDelta() # To see later
      
      return(invisible(.self))
    },
    
    checkModel = function(model){
      "Checking model class: Must be : train, RandomForest, randomForest"
      if(!(inherits(model, "train") | inherits(model, "RandomForest") | inherits(model, "randomForest"))){
        stop("Model is not recognized. Must be : train, RandomForest, randomForest")
      }
    },
    
    getFullData = function(){
      "Return twin1, twin2 and difft in column"
      if(length(.self$twin1) != nrow(.self$vt.object$data)) stop("Twin1 must have same length as data")
      if(length(.self$twin2) != nrow(.self$vt.object$data)) stop("Twin2 must have same length as data")
      
      if(length(.self$difft) != nrow(.self$vt.object$data)) stop("Difft must have same length as data")
      
      tmp <- cbind(.self$vt.object$data, .self$twin1, .self$twin2, .self$difft)
      
      colnames(tmp) <- c(colnames(.self$vt.object$data), "twin1", "twin2", "difft")
      
      return(tmp)
    }
  )
)

Try the aVirtualTwins package in your browser

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

aVirtualTwins documentation built on May 2, 2019, 4:04 p.m.