is_outlier <- function(x) { Q1 <- quantile(x, 0.25, na.rm = TRUE) Q3 <- quantile(x, 0.75, na.rm = TRUE) IQR <- Q3 - Q1 x < (Q1 - 1.5 * IQR) | x > (Q3 + 1.5 * IQR) } numeric_vars <- setdiff( names(data)[sapply(data, is.numeric)], "Y_sector_return_logistic" ) outlier_matrix <- sapply(data[, numeric_vars], is_outlier) data_clean <- data[!apply(outlier_matrix, 1, any), ] boxplot(data[, numeric_vars], las = 2, main = "Boxplots of Numeric Variables")