En este artículo, discutiremos cómo eliminar valores atípicos de varias columnas en el lenguaje de programación R.
Para eliminar los valores atípicos de un marco de datos, utilizamos el método de rango intercuartílico (IQR). Este método utiliza los valores del primer y tercer cuantil para determinar si una observación es un valor atípico o no. Si una observación es 1,5 veces el rango intercuartílico mayor que el tercer cuartil o 1,5 veces el rango intercuartílico menor que el primer cuartil, se considera un valor atípico.
Eliminar valores atípicos de varias columnas en R
Para encontrar un valor atípico en el lenguaje R, usamos la siguiente función, donde primero calculamos el primer y tercer cuantil de la observación usando la función quantile(). Luego calculamos su diferencia como rango intercuartílico. Entonces, si una observación es 1,5 veces el rango intercuartílico mayor que el tercer cuartil o 1,5 veces el rango intercuartílico menor que el primer cuartil, devuelve verdadero.
Sintaxis:
detectar_valores atípicos <- función(x) {
Cuantil1 <- cuantil(x, probs=.25)
Cuantil3 <- cuantil(x, probs=.75)
IQR = Cuantil3-Cuantil1
x > Q3 + (iqr*1,5) | x < Q1 – (iqr*1.5) }
Luego, una vez que se identifica el valor atípico, lo eliminamos probándolo con la función anterior.
Ejemplo 1:
Aquí hay un ejemplo, donde eliminamos los valores atípicos de tres columnas del marco de datos.
R
# create sample data frame sample_data < - data.frame(x=c(1, 2, 3, 4, 3, 2, 3, 4, 4, 5, 0), y=c(4, 3, 5, 7, 8, 5, 9, 7, 6, 5, 0), z=c(1, 3, 2, 9, 8, 7, 0, 8, 7, 2, 3)) print("Display original dataframe") print(sample_data) # create detect outlier function detect_outlier < - function(x) { # calculate first quantile Quantile1 < - quantile(x, probs=.25) # calculate third quantile Quantile3 < - quantile(x, probs=.75) # calculate inter quartile range IQR = Quantile3-Quantile1 # return true or false x > Quantile3 + (IQR*1.5) | x < Quantile1 - (IQR*1.5) } # create remove outlier function remove_outlier < - function(dataframe, columns=names(dataframe)) { # for loop to traverse in columns vector for (col in columns) { # remove observation if it satisfies outlier function dataframe < - dataframe[!detect_outlier(dataframe[[col]]), ] } # return dataframe print("Remove outliers") print(dataframe) } remove_outlier(sample_data, c('x', 'y', 'z'))
Producción:
Ejemplo 2:
Aquí hay un ejemplo, donde eliminamos los valores atípicos de cuatro columnas del marco de datos.
R
# create sample data frame sample_data < - data.frame(x=c(-1, 2, 3, 4, 3, 2, 3, 4, 4, 5, 10), y=c(-4, 3, 5, 7, 8, 5, 9, 7, 6, 5, 10), z=c(-1, 3, 2, 9, 8, 7, 0, 8, 7, 2, 13), w=c(10, 0, 1, 0, 1, 0, 1, 0, 2, 2, 10)) print("Display original dataframe") print(sample_data) # create detect outlier function detect_outlier < - function(x) { # calculate first quantile Quantile1 < - quantile(x, probs=.25) # calculate third quantile Quantile3 < - quantile(x, probs=.75) # calculate inter quartile range IQR = Quantile3-Quantile1 # return true or false x > Quantile3 + (IQR*1.5) | x < Quantile1 - (IQR*1.5) } # create remove outlier function remove_outlier < - function(dataframe, columns=names(dataframe)) { # for loop to traverse in columns vector for (col in columns) { # remove observation if it satisfies outlier function dataframe < - dataframe[!detect_outlier(dataframe[[col]]), ] } # return dataframe print("Remove outliers") print(dataframe) } remove_outlier(sample_data, c('x', 'y', 'z', 'w'))
Producción:
Publicación traducida automáticamente
Artículo escrito por mishrapriyank17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA