R/data_supp_outliers.R

Defines functions supp_outliers

Documented in supp_outliers

#' Suppression des outliers
#'
#' @param data le jeu de données
#' @param custom_cutoff permet de spécifier un cutoff arbitraire
#' @param graph pour représenter les points (TRUE ou FALSE)
#' @return dataframe ou plot : le jeu de données sans
#'         les outliers ou la représentation graphique
#'
#' @export
#'
#' @examples
#' supp_outliers(data_ind_5y, graph = TRUE)

supp_outliers <- function(data, custom_cutoff = NULL, graph = FALSE) {
  data_num <- data_numeric_only(data)
  data_num <- data_num[, -which(names(data_num) %in% c("IDNUM", "MILEX"))]
  # 0n garde uniquement les variables avec suffisamment de variabilité
  t <- sapply(data_num, function(c) {
    tt <- table(c)
    max(tt) / length(tt) * 100
  })
  data_num <- data_num[, names(data_num) %in% names(which(t < 50))]
  # On se base sur la distance de Mahalanobis
  outliers <- mvoutlier::sign1(as.matrix(data_num))
  cut_off <- custom_cutoff
  if (is.null(cut_off)) {
    q3 <- quantile(outliers$x.dist, .75)
    q1 <- quantile(outliers$x.dist, .25)
    cut_off <- q3 + 3 * (q3 - q1)
  }
  data_no_outliers <- data[which(outliers$x.dist <= cut_off), ]
  # plot outliers
  if (graph == TRUE) {
    plot(outliers$x.dist)
    return(abline(a = cut_off, b = 0, col = "red"))
  }
  return(data_no_outliers)
}
cottinlola/modeleVariablesAP documentation built on April 30, 2022, 7:42 a.m.