R/boot_ci.R

#' Draw sample with replace = T
#' @param d A vector


sampler <- function(d){
  if(length(d) == 1){
    return(d)
  }else{
    return(sample(d, replace=TRUE))
  }
}

#' Compute confidence interval
#' @param data A vector
#' @param FUN The function to be applied:
#' @param rep Number of repetition. Defaul value: 10000
#' @param median Do you want to compute a median? Default value: FALSE
#' @param dfoutput Do you want to get results in the data.frame (necessary if you use do function)? Default value: FALSE

boot_ci <- function(data, FUN, rep = 10000, median = F, dfoutput = F)
{
  res <- c()
  for (i in 1:rep) {
    d2 <- sampler(data)
    r <- FUN(d2)
    res <- c(res, r)
  }
  val <- FUN(data)
  q <- quantile(res, probs = c(0.025, 0.975), na.rm = TRUE)
  
  if (median == F) {
    result  <- list(
      min = q[1], val = val, max = q[2], se = sd(res)
    )
  } else {
    result  <- list(min = q[1], val = val, max = q[2], se = sd(res), median = median(data,na.rm = T))
  }
  
  if (dfoutput == T) {
    return(as.data.frame(result))
  } else {
    return(result)
  }
  
}
AMUFacultyOfEnglish/PERUanalytics documentation built on May 5, 2019, 11:36 a.m.