Analytics 1 1IND48
Docente: Jonatán Rojas
Tema: Preprocesamiento de Datos
Ingeniería Industrial
Agenda
3.0 Preliminares
3.1 Análisis de Datos faltantes
3.1.1 Imputación univariable
3.1.2 Imputación multivariable
3.2 Análisis de Outliers
3.2.1 Definición de outlier univariable y multivariable
3.2.2 Algoritmos de detección de outliers
Aspectos Preeliminares
R.A. Fisher (1922) sostiene que la
estadística basa su estudio en tres
aspectos fundamentales:
1. El estudio de las poblaciones,
2. El estudio de la variabilidad y
3. El estudio de los métodos para la
reducción de datos.
El pensamiento de Fisher
Hay tres revoluciones en la inferencia estadística paramétrica debidas a
Laplace (1774), Gauss y Laplace entre 1809-1812 y Fisher (1922)
respectivamente.
Bayes (1701 – 1761)
Price (1764 – 1765) Laplace (1749 – 1827)
• Probabilidad Inversa. 1774. Memorias sobre la probabilidad de las
• Principio de la razón causas de los eventos.
insuficiente. 1812. Théorie analytique des probabilités.
Gauss (1777 – 1855)
1809. Teoría del movimiento
de los cuerpos celestes.
(1830 – 1890). Período de consolidación y clarificación de trabajos de Laplace y Gauss y de
la extensión de las aplicaciones de las ciencias naturales a las ciencias sociales y biológicas.
Poisson, Bravais, Bienaymé, Cauchy, Chebyshev, Thiele, Quetelet, Galton, Edgeworth.
Fisher (1890 – 1962)
1922. On the mathematical foundations of theorical
Fuente: SERGIO YÁÑEZ CANAL (2000). LA statistics. Philos. Trans. [Link]- London A222
ESTADÍSTICA UNA CIENCIA DEL SIGLO XX. R.A.
FISHER, EL GENIO. Revista Colombiana de Estadística
A finales del siglo XVIII ya se predijo la existencia
de un planeta en esa vecindad; los astrónomos lo
buscaron y lo encontraron, pero por casualidad.
Gauss utilizó el análisis matemático para averiguar qué camino tomaría el cuerpo
celeste a continuación. El método que Gauss inventó para encontrar la ruta Ceres es
una de las herramientas más importantes en toda la ciencia porque nos permite
convertir una gran cantidad de observaciones desordenadas en algo significativo.
El pensamiento de Fisher
“...este objetivo se logra construyendo una población infinita hipotética, de
quien los datos reales constituyen una muestra escogida al azar. La
distribución de esta población hipotética es especificada relativamente por
pocos parámetros, los cuales son suficientes para describirla
exhaustivamente con respecto a todas las características en discusión.
Cualquier información dada por la muestra, que será utilizada en estimar los
valores de estos parámetros, es información relevante…”
Se debe tener una buena calidad de los datos
para obtener buenos resultados.
El pensamiento de Fisher
Los problemas que se plantean en la reducción de los datos pueden ser
convenientemente divididos en tres tipos:
Los problemas de la especificación: Estos surgen en la elección de la forma
matemática de la población.
Los problemas de estimación: Estos implican la elección de los métodos de cálculo
de una muestra derivados de la estadística, o como los llamaremos estadísticas, que
están diseñados para estimar los valores de los parámetros de la población hipotética.
Los problemas de distribución: Estos incluyen las discusiones sobre la distribución
de los datos estadísticos obtenidos de muestras, o en general cualquier función de las
cantidades cuya distribución es conocida.
Limpieza de datos y su importancia en el
modelamiento
• Limpieza de datos
• Transformación de datos
• Descripción de los datos
• Selección de características
• Extracción de características
¿De dónde son los datos?
Ingeniería Industrial
Agenda
3.0 Preliminares
3.1 Análisis de Datos faltantes
3.1.1 Imputación univariable
3.1.2 Imputación multivariable
3.2 Análisis de Outliers
3.2.1 Definición de outlier univariable y multivariable
3.2.2 Algoritmos de detección de outliers
Datos faltantes
¿Qué son los datos faltantes?
• La falta de respuesta total o parcial, es una
situación recurrente con la cual, tarde o temprano, el
análisis estadístico se verá enfrentado.
• "..la ausencia de información y la presencia de datos
aberrantes son un mal endémico en las ciencias
sociales y el análisis económico"(Juster and Smith, 1998,
JASA).
• Un ejemplo típico de lo anterior es preguntar a las
personas sobre su ingreso, generalmente, una gran
parte de las personas a las cuales se les hace esta
pregunta se rehúsan a contestarla.
Datos Faltantes
Los datos no siempre están disponibles.
La falta de valores se puede deber a:
inconsistencia con otros datos no ingresados
Mal funcionamiento de
datos registrados y por debido a
equipos.
lo tanto eliminados. equivocaciones.
algunos datos pudieron
no considerarse
No se registró historial
importantes al
o cambios en los datos.
momento de ingresar
datos.
Se hace necesario estimar esto valores faltantes
Datos Faltantes
¿Algunos ejemplos en encuestas
Para Cochran, 1977, Sampling Techniques la falta de respuesta en
las encuestas de hogares se presenta por:
1. Cobertura: no se pudo ubicar algunas de las unidades
seleccionadas debido a problemas de acceso.
2. Localización: cuando no fue posible localizar a ningún
miembro del hogar durante la visita a la vivienda
seleccionada.
3. Informarte inadecuado: cuando la persona entrevistada
no está en posibilidad de proporcionar la información que se
le demanda.
4. Rechazo: cuando los hogares seleccionados se niegan a
participar en la encuesta.
Datos Faltantes
Impacto de los valores faltantes:
• 1% datos faltantes –trivial
• 1-5% -manejable
• 5-15% -requiere métodos sofisticados
• Mas del 15% -interpretación perjudicial
Existen los siguientes mecanismos
• MCAR
• MAR
• NMAR
¿Cómo desaparece la información? práctica A:
La computadora de la práctica fue atacada por un
Presión arterial virus informático que ingiere datos y borra los
registros al azar.
media por práctica
Como MCAR:
En este caso, los datos faltan completamente al azar
resultado, los (MCAR). Si los datos están allí o no, no depende de
Practica A datos ninguna de las mediciones observadas (presión
Hay algo extraño en 120/80 desaparecen arterial o edad) o no observadas.
el barrio ... en las tres
prácticas.
práctica B:
Hay tres médicos de Para que sus resultados sean más interesantes, el
De las 100 médico de cabecera en esta práctica ha medido el
cabecera en su personas que doble de personas mayores de 60 años que la
vecindario cuyos datos se han práctica A.
de los pacientes están medido en
MAR:
utilizando para su cada Aquí, los datos faltan al azar (MAR). La edad del
Practica B
investigación. Se le pide 135/90
práctica, solo paciente influye en la posibilidad de que se registre la
tiene medición. Sin embargo, cuando se dividen en 2
al medico que registre la grupos de edad (mayores / menores de 60 años), los
información datos son MCAR en cada grupo.
edad y la presión arterial de 30
de cada uno de los 100 personas. práctica C:
pacientes, pero está Este médico de cabecera es un hombre ocupado
surgiendo un patrón ¿Qué ha con una sala de espera llena. Para ahorrar
estado tiempo, solo toma nota de la presión arterial para
extraño ¿qué está pacientes con lecturas de 140 o más.
pasando en
pasando?
Practica C las prácticas MNAR:
Este caso es un ejemplo de datos que faltan no al
160/110 de los azar (MNAR). La ausencia (si se observan los datos)
médicos? depende de la presión sanguínea en sí misma. Los
resultados que obtenemos son sesgados.
Datos Faltantes
Mecanismos de datos faltantes (MCAR)
▪ Valores faltantes completamente al azar (MCAR):
La probabilidad que una instancia tenga un valor faltante para un
atributo es la misma para todas las instancias. Es decir, esta probabilidad
no depende ni de los valores observados ni de los valores faltantes. La
mayoría de los valores faltantes no son MCAR.
Por ejemplo, supongamos que peso y edad son variables de interés en
un estudio. Si la probabilidad que una persona brinde información
acerca de su peso es la misma para todas las personas sin tomar en
cuenta su peso y edad, entonces los valores faltantes en el atributo peso
son considerados como MCAR.
Datos Faltantes
Mecanismos de datos faltantes (MAR)
▪ Valores faltantes al azar (MAR):
La probabilidad que una instancia tenga un valor faltante en un atributo
depende de los valores observados, como por ejemplo la clase a la cual
pertenece la instancia, pero no depende de los valores faltantes.
Si se hace un test de aptitud a unos alumnos y a los que superan una nota
de corte establecida se les hace otro más difícil mientras que a los demás
no, por tanto éstos tienen datos perdidos para la segunda variable y se
debe a las observaciones de la primera.
Datos Faltantes
Mecanismos de datos faltantes (NMAR)
▪ Valores faltantes no al azar o no ignorables (NMAR):
La probabilidad de que una instancia tenga un valor faltante en
un atributo depende de los valores faltantes en el conjunto de
datos. Ocurre cuando las personas entrevistadas no quieren
revelar algo muy personal acerca de ellas. El patrón de valores
faltantes no es aleatorio. Este tipo de valores faltantes es el
mas difícil de tratar y es el que ocurre mas frecuentemente.
Datos Faltantes
Mecanismos de datos faltantes (MCAR)
• Para conjuntos de datos con un bajo porcentaje de valores faltantes el
mecanismo se puede considerar MCAR.
• Para conjuntos de datos con un alto porcentaje de valores faltantes el
mecanismo se puede considerar NMAR.
• Para conjuntos de datos con valores faltantes simulados el mecanismo se
puede considerar MAR.
Datos Faltantes
Tratamiento de los datos faltantes
Eliminación de casos. Ignorar la fila que contiene datos
faltantes. Usualmente es aplicado cuando el valor que falta es el
de la clase (asumiendo que se esta haciendo clasificación). No es
efectiva cuando el porcentaje de valores faltantes por atributo
varía considerablemente.
Estimación de parámetros, donde los procedimientos de
Máxima Verosimilitud que usan variantes del algoritmo EM
(Expectation - Maximization) pueden manejar la estimación de
parámetros en presencia de valores faltantes.
Técnicas de Imputación, donde los valores faltantes son
reemplazados con valores estimados basados en la información
disponible en el conjunto de datos.
Datos Faltantes
Realmente difícil. Se puede observar claramente
que muchas personas dejaron de responder
preguntas en forma sistemática. Si aplicamos la
función de R para eliminar casos faltantes,
corremos el riesgo de quedarnos sin
observaciones. Vamos a seleccionar variables
que tengan menos del 25% de los valores
faltantes.
[Link]
¿Por qué el preprocesamiento de datos?
¡Los datos reales son notoriamente sucios!
Es el mayor desafío en muchos proyectos de minería de datos.
• Incompletos
Ocupación = “”
• Ruidosos
Salario = "-100"
• Inconsistentes
Edad = "42" vs. Cumpleaños = "01/09/1985"
• Redundantes
Demasiados datos o demasiadas funciones para el análisis
analítico
• Otros
Tipos de datos
Conjuntos de datos desequilibrados
Datos faltantes
Los datos no siempre están disponibles.
• Uno o más atributos de una muestra pueden tener valores vacíos.
• Muchos algoritmos de minería de datos no pueden manejar valores
perdidos directamente.
• Puede causar problemas significativos.
Posibles razones
• Mal funcionamiento del equipo.
• Datos no proporcionados.
• No aplicable (N / A)
diferentes tipos
• Falta completamente al azar
• Falta condicional al azar
• No falta al azar
¿Cómo manejar los datos faltantes?
Ignorar
• Eliminar muestras / atributos con valores faltantes.
• La forma más fácil y directa.
• Trabajar bien con bajas tasas de desaparecidos.
Rellene los valores faltantes manualmente
• Recolectar los datos.
• conocimiento del dominio
• Tedioso / Inasible
Completa los valores que faltan automáticamente
• Una constante global.
• La media o mediana.
• Valores más probables.
Más arte que ciencia
Datos faltantes: un ejemplo
Y
P(Y|X)
M_Y
M_Y
M_Y
X
Funciones: 01
Head (tabla, N)
Facilita la visibilidad de las primeras N filas 09
hist(Tabla$variables)
Genera un histograma de las variables que se
de la base de datos indicado después de la elijan.
coma. Por default muestra solo las 6
primeras. plot(Tabla$variable1, Tabla$variable2)
Datos a tener en consideración 10 Permite hacer un comparativo entre las dos
Tail (tabla, N) variables seleccionadas para la medición.
02
Facilita la visibilidad de las últimas N filas de gather(Tabla, mykey, myval, -col)
Las observaciones la base de datos indicado después de la
11 Cuando se quieren juntar dos columnas, se
se encuentran en las coma. Por default muestra solo las 6 últimas.
puede evitar tomar alguna otra variable con el
filas de un data-set. Dim (tabla) argumento –[variable no deseada]
03
Indica las dimensiones de una base de datos: Spread(Tabla, variable a dividir, valor)
(N°Filas, N°Columnas). 12 Permite separar los valores de una columna en
columnas independientes, ya que pueden ser
Names (tabla) consideradas variables que han sido
04
Las variables se Indica los nombres de columnas (variables). almacenadas tanto en filas como en columnas.
encuentran en las str(Tabla)
columnas de un Separate(tabla, variable a dividir , c(“c2”;”c3”),
05 Brinda un resumen de los tipos de datos de 13 sep=“/”)
data-set. las variables de la base de datos. Permite separar el valor de una columna en
Summary(Tabla) varias columnas. A menos que le indique lo
06
Brinda un resumen de la base de datos. contrario, intentará separar cualquier carácter
Se debe tener un que no sea una letra o un número. También se
glimpse(Tabla) puede indicar un separador específico
tipo de unidad de 07
Se debe descargar previamente el paquete utilizando el argumento sep=“caracter”.
observación por dplyr con el comando Library(dplyr), esta
tabla. Unite(tabla, variable dividida, c2, c3, sep=“/”)
función es parecida a str(), la única
14 Opuesto a separate(). Toma varias columnas y las
diferencia es que también te da los primeros
datos de cada variable. coloca juntas. Por default, el contenido agrupado
será separado por guiones bajos en la nueva
class( Tabla$c1) columna, pero ello puede modificarse con el
08 Indica el tipo de dato de cada objeto. argumento sep=“caracter”.
En estadística, los valores faltantes son Algo que nunca se debe hacer en R es usar un
importantes y R los entiende e incluye una valor numérico real como −999 para indicar los
constante especial para un valor faltante: NA. Este datos faltantes. En lugar de esto, tan pronto
no es un objeto de carácter ("NA") sino una como cargue dichos datos en R, reemplace esos
constante por derecho propio. Es útil en varios valores con NA.
contextos.
Ejemplos: Ejemplos:
[Link] <- c(17, 15, NA, NA) 17 15 NA NA [Link] <- c(17, 15, -999, -999) 17 15 -999 -999
mean([Link]) NA mean([Link]) -491.5
mean([Link], [Link]=TRUE) 16 [Link][[Link] < -900] <- NA 17 15 NA NA
MISSING mean([Link]([Link]))
[Link]([Link])
16
FALSE FALSE TRUE TRUE
mean([Link], [Link]=TRUE) 16
VALUES [Link][] 17 15
MISSING VALUES:
Escenario:
Se desea realizar un estudio sobre la biblioteca de la
universidad. La información más relevante que necesitaría
conocer para empezar el análisis es: ¿cuántos libros vencidos
tiene cada estudiante?
Con esto usted luego podrá proponer acciones de mejora.
MCAR MAR MNAR
Teoría: Teoría: Teoría:
Si la probabilidad de que falte es la Si la probabilidad de que falte es la Si ni MCAR ni MAR se cumplen,
misma para todos los casos, se dice misma solo dentro de los grupos hablamos de falta no al azar (MNAR).
que los datos faltan completamente al definidos por los datos observados,
azar (MCAR). entonces los datos faltan al azar MCAR MAR MNAR
(MAR).
Solución-Escenario: Solución-Escenario: Solución-Escenario:
Le dan acceso a la BD y se encuentra Realiza un censo y pregunta a la Realiza un censo y pregunta a la
con información faltante. Sin embargo, comunidad universitaria cuántos comunidad universitaria cuántos
le comentan que las máquinas de libros debe. El 90% de los alumnos de libros debe. Usted se da cuenta que a
devolución automática no registran la letras responden la encuesta, mientras más libros debe una persona, menos
devolución en un 2% de los casos. que los de ciencias responden el 70%. probable es que responda la encuesta.
MISSING VALUES:
No existe un único método de imputación que funcione en
¿Qué podemos hacer?
todos los casos. El modelo de imputación de elección
• Ignorar los datos depende de qué información auxiliar está disponible y de
si existen restricciones de edición (multivariadas) en los
• Completar datos manualmente a juicio de experto
datos a imputar.
• Imputar los datos automáticamente
Método de la imputación de la media Método de la imputación por regresión lineal Método de la imputación por kNN
library([Link]) data(iris) library(VIM)
library(Hmisc) iris$[Link][1:10] <- NA data(iris)
x <- 1:5 model <- lm([Link] ~ [Link] + n <- nrow(iris)
[Link], data = iris) for (i in 1:ncol(iris)) {iris[sample(1:n,
x[2] <- NA
I <- [Link](iris$[Link]) 10, replace = FALSE), i] <- NA}
x <- impute(x, mean)
iris$[Link][I] <- predict(model, newdata iris2 <- kNN(iris)
x = iris[I, ])
[Link](x)
σ𝒌 𝒘𝒊𝒋𝒌 𝒅𝒌 (𝒊, 𝒋)
ෝ𝒊 = 𝒙
𝒙 ഥ 𝟎 + 𝜷
ෝ𝒊 = 𝜷
𝒙 𝟏 𝒚𝟏,𝒊 + ⋯ + 𝜷
𝒌 𝒚𝒌,𝒊 𝒅𝒈 (𝒊, 𝒋) =
σ𝒌 𝒘𝒊𝒋𝒌
Datos faltantes
Cohen (1996) propuso añadir más variabilidad a los valores imputados mediante
el método de la media usando la variabilidad de los datos muestrales. Asumiendo
un diseño muestral general, el método de Cohen consiste en imputar la mitad de
los valores faltantes con los valores:
y la otra mitad de 𝑛+𝑟−1
𝑛+𝑟−1 valores faltantes con los 𝑦ത − 𝜎ො𝑟
𝑦ത + 𝜎ො𝑟 𝑟−1
𝑟−1 valores
Donde: 2 1 2
𝜎ො𝑟 = 𝑑𝑖 𝑦𝑖 − 𝑦ത𝑟
σ𝑖∈𝑆𝑟 𝑑𝑖
𝑖∈𝑆𝑟
El método NNI (acrónimo de Nearest Neighbor Imputation) es utilizado en
numerosas encuestas llevadas a cabo por el Instituto de Estadística de Canadá y
algunas agencias nacionales de Estados Unidos. Este método utiliza el criterio del
valor más próximo asociado a una variable auxiliar para proporcionar los valores
imputados o donantes.
Función para separar las muestras con datos faltantes
## en la siguiente función debe ingresar 3 vectores con la misma dimensión
## solo en el vector Y deben existir datos faltantes, en vector x debe estar
## completo y vector probabilidad podemos colocar probabilidades uniformes
[Link] <- function(vector_y, vector_x, probabilidad)
{
posicion_faltante <- [Link](vector_y)
posicion_disponibles <- ! posicion_faltante
y_disponible <- vector_y [posicion_disponibles]
x_disponible <- vector_x [posicion_disponibles]
probabilidad_disponible <- probabilidad [posicion_disponibles]
x_faltante <- vector_x [posicion_faltante]
m <- length(x_faltante)
list(y_disponible = y_disponible, x_disponible = x_disponible, probabilidad_disponible =
probabilidad_disponible, m=m, x_faltante = x_faltante, posicion_faltante =
posicion_faltante)
}
Fuente: Muñoz Rosas, Juan Francisco & Álvarez Verdejo, Encarnación (2009). Métodos de imputación para el tratamiento de datos
faltantes: aplicación mediante R/Splus
Método para imputar datos faltantes – obtención del valor imputado
[Link] <- function(y_disponible, x_disponible, x_faltante, m)
{
[Link] <- c( )
for (j in 1:m)
{
diferencias <- abs(x_faltante [j] - x_disponible)
minima_diferencia <- min(diferencias)
posición_del_minimo <- minima_diferencia == diferencias
DONANTES <- y_disponible [posición_del_minimo]
Num.T <- sum(posición_del_minimo)
if (Num.T==1) [Link] <- c([Link], DONANTES)
else [Link] <- c([Link], sample(DONANTES,1))
}
[Link]
}
El uso de la imputación puede provocar problemas serios de subestimación de la
verdadera varianza cuando la proporción de datos faltantes es apreciable
Función para reportar el vector completo
[Link] <- function(vector_y, DONANTES, posicion_faltante)
{
vector_y [posicion_faltante] <- DONANTES
[Link](vector_x,vector_y)
}
Ejemplo del uso de las funciones anteriores
## Introducimos los datos muestrales de ambas variables, incluyendo los datos
faltantes:
vector_y <- c(7152, NA, 6752, NA, 4762, 3821, NA, 5562, 6567, 5286)
vector_x <- c(563, 211, 425, 443, 185, 97, 705, 198, 375, 160)
## Introducimos las probabilidades de inclusión:
cantidad <- length(vector_x)
probabilidad <- rep(1/cantidad,cantidad)
## Separamos la muestra s n y obtenemos el resto de información necesaria:
SALIDA <- [Link](vector_y, vector_x, probabilidad)
## Aplicamos el método NNI para obtener los donantes:
[Link] <- [Link](SALIDA$ y_disponible, SALIDA$ x_disponible,
SALIDA$x_faltante, SALIDA$m)
## Reemplazamos los datos faltantes por los donantes obtenidos:
[Link](vector_y, [Link], SALIDA$ posicion_faltante)
Datos faltantes multivariado
data("iris")
summary(iris)
[Link] [Link] [Link] [Link] Species
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 setosa :50
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 versicolor:50
Median :5.800 Median :3.000 Median :4.350 Median :1.300 virginica :50
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
library(missForest)
[Link] <- prodNA(iris, noNA = 0.1)
Datos faltantes multivariado
summary([Link])
[Link] [Link] [Link] [Link] Species
Min. :4.30 Min. :2.000 Min. :1.000 Min. :0.100 setosa :44
1st Qu.:5.10 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 versicolor:47
Median :5.80 Median :3.000 Median :4.350 Median :1.300 virginica :42
Mean :5.85 Mean :3.056 Mean :3.786 Mean :1.188 NA's :17
3rd Qu.:6.40 3rd Qu.:3.400 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.90 Max. :4.400 Max. :6.900 Max. :2.500
NA's :15 NA's :15 NA's :12 NA's :16
[Link] <- subset([Link], select = -c(Species))
summary([Link])
[Link] [Link] [Link] [Link]
Min. :4.30 Min. :2.000 Min. :1.000 Min. :0.100
1st Qu.:5.10 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
Median :5.80 Median :3.000 Median :4.200 Median :1.300
Mean :5.85 Mean :3.043 Mean :3.759 Mean :1.205
3rd Qu.:6.40 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.90 Max. :4.400 Max. :6.900 Max. :2.500
NA's :15 NA's :8 NA's :19 NA's :18
Datos faltantes multivariado
library(mice)
[Link]([Link])
library(VIM)
mice_plot <- aggr([Link], col=c('navyblue','yellow'),
numbers=TRUE, sortVars=TRUE,
labels=names([Link]), [Link]=.7,
gap=3, ylab=c("Missing data","Pattern"))
imputed_Data <- mice([Link], m=5, maxit = 50, method = 'pmm',
seed = 500)
summary(imputed_Data)
Datos faltantes multivariado
imputed_Data <- mice([Link], m=5, maxit = 50, method = 'pmm', seed = 500)
summary(imputed_Data)
[Link] [Link] [Link] [Link]
[Link] 0 1 1 1
[Link] 1 0 1 1
[Link] 1 1 0 1
[Link] 1 1 1 0
imputed_Data$imp$[Link]
completeData <- complete(imputed_Data,2)
summary(completeData)
[Link] [Link] [Link] [Link]
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.525 1st Qu.:0.300
Median :5.800 Median :3.000 Median :4.400 Median :1.300
Mean :5.828 Mean :3.067 Mean :3.750 Mean :1.193
3rd Qu.:6.400 3rd Qu.:3.400 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
Ingeniería Industrial
Agenda
3.0 Preliminares
3.1 Análisis de Datos faltantes
3.1.1 Imputación univariable
3.1.2 Imputación multivariable
3.2 Análisis de Outliers
3.2.1 Definición de outlier univariable y multivariable
3.2.2 Algoritmos de detección de outliers
outlier
Outliers
Y
Outliers
Creo que Cuy escucha
el ritmo de una
𝑦 =𝑥+1 manera diferente.
X
Outliers
¡Fuera
mentiroso!
Tu teoría es errónea
Outlier (detección de valores atípicos) se refiere al problema de
Outliers encontrar patrones en datos que no se ajustan al
comportamiento esperado. Estos patrones no conformes a
menudo se conocen como anomalías, valores atípicos,
observaciones discordantes, excepciones, aberraciones,
sorpresas, peculiaridades o contaminantes en diferentes dominios
de aplicación.
Fuente: [Link]
Outliers
¿Alguna vez te sientes
Anomalía vs outlier como si estuvieras en el
lugar equivocado?
Valores Outliers
Outliers Univariados
• Considerar outliers valores que:
Donde k es 2 o 3 si consideramos
normalidad.
Considerando el Boxplot (Tukey, 1977), se
considera outlier valores que caen fuera
de este intervalo
OUTLIERS
Un Outlier es una observación que se desvía
tanto de otras observaciones como para
despertar sospechas que fue generada por
un mecanismo diferente. - D.M. Hawkins
¿Cómo identificar
outliers?
x <- c(1:10, 20,
30)
boxplot(x)
[Link](x)$
out
Factor local atípico
𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎𝑘 𝐴, 𝐵 = 𝑚𝑎𝑥 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎𝑘 𝐵 , 𝑑(𝐴, 𝐵) 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎𝑘 (𝑂)
1 𝑝2 𝑝1
𝑙𝑟𝑑 𝐴 = 𝑂
σ𝐵∈𝑁𝑘 (𝐴) 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎𝑘 (𝐴, 𝐵)
𝑁𝑘 (𝐴)
𝑝3
𝑙𝑟𝑑(𝐵) σ𝐵∈𝑁𝑘(𝐴) 𝑙𝑟𝑑(𝐵) 𝑝4
σ𝐵∈𝑁𝑘 (𝐴)
𝑙𝑟𝑑(𝐴) 𝑁𝑘 (𝐴)
𝐿𝑂𝐹𝑘 𝐴 = = 𝑘=3
𝑁𝑘 (𝐴) 𝑙𝑟𝑑(𝐴)
Factor local atípico
Valores Outliers
Outliers Multivariados
• Consideremos un conjunto de datos D con p variables y n
instancias. Supongamos que también conocemos las clases
a las cuales pertenecen cada una de las instancias.
• El objetivo es determinar todas las instancias que parecen
ser no usuales, éstas serán los outliers multivariados.
• Uno podría pensar que los outliers multivariados pueden ser
detectados basados en los outliers univariados en cada una
de las variables, pero esto NO ES CIERTO. Una instancia
puede tener valores que son outliers en varias variables,
pero la instancia como TODO podría no ser un outlier
multivariado.
Valores Outliers
Outliers Multivariados
Valores Outliers
Métodos para detectar Outliers Multivariados
Valores Outliers
Efectos en la eliminación de outliers
• Efecto de enmascaramiento
Ocurre cuando después de eliminar un outlier, otra instancia se
puede volver outlier.
• Efecto de cubrimiento
Ocurre cuando después de eliminar un outlier, otro outlier se
vuelve una “buena” observación.
Para lidiar con estos efectos se recomienda el estimador robusto de
la distancia de Mahalanobis. Existen dos propuestas:
Estimador de elipsoide de volumen mínimo (MVE)
Estimador de determinante de covarianza mínima(MCD)
Outlier univariado
[Link](3500)
x <- rnorm(150)
summary(x)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-2.661639 -0.634008 -0.036463 -0.007768 0.586340 2.661576
[Link](x)$out
[1] -2.661639 2.661576 -2.504350
boxplot(x)
Outlier univariado
y <- rnorm(150)
data1 <- [Link](x, y)
rm(x, y)
head(data1)
x y
1 -0.1118417 0.6719760
2 0.6161965 2.1215583
3 -0.9121508 -0.8913701
4 -0.1780477 1.7351633
5 0.2356615 0.2112404
6 0.7768954 -0.7428103
attach(data1)
a <- which(x %in% [Link](x)$out)
a
[1] 88 121 140
Outlier univariado
b <- which(y %in% [Link](y)$out)
b
[1] 17
detach(data1)
## Outlier interceptando las posiciones los outlier del vector x y el vector y
inter <- intersect(a,b)
inter
integer(0)
plot(data1)
points(data1[inter, ], col="red", pch="+", cex=2.5)
Outlier univariado
## Outlier uniendo las posiciones del outlier del vector x y el vector y
uni <- union(a,b)
uni
[1] 88 121 140 17
plot(data1)
points(data1[uni, ], col= “green”, pch="+", cex=2.5)
Outlier multiivariado
library(DMwR)
iris2 <- iris[,1:4]
[Link] <- lofactor(iris2, k=5)
plot(density([Link]))
# pick top 5 as outliers
outliers <- order([Link], decreasing=T)[1:5]
# who are outliers
print(outliers)
print(iris2[outliers,])
n <- nrow(iris2)
labels <- 1:n
labels[-outliers] <- "."
biplot(prcomp(iris2), cex=.8, xlabs=labels)
pch <- rep(".", n)
pch[outliers] <- "+"
col <- rep("black", n)
col[outliers] <- "red"
pairs(iris2, pch=pch, col=col)
Muchas gracias por tu |atención