Date post: | 12-Apr-2016 |
Category: |
Documents |
Upload: | cesar-leon-quillas |
View: | 8 times |
Download: | 2 times |
Análisis Exploratorio de Datos
Carlos Ignacio Patiño ([email protected])
Agosto 21, 2015
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Agenda
Limpieza de datosMétodos para la descripción de datosDetección de outliersLlenando missing valuesPCALibrería dplyr
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Limpieza de datos
Reglas para la obtención de un conjunto de datos “limpio”
Datos brutos: Datos no procesados, usualmente obtenidos de unafuente primaria (en algunos casos secundaria)
Datos procesados:
Cada variable medida debe estar en una columnaCada observación debe estar en una filaDebe existir una tabla para cada tipo de variableSi existen múltiples tablas, éstas deben estar ligadas por unacolumna común
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Métodos para la descripción de datos
Existen dos formas de describir conjuntos de datos: el métodográfico y el método numérico.
Todo conjunto de datos contiene tendencias (como por ejemplodónde se concentra la mayor cantidad de puntos), variabilidad,máximos, mínimos y también datos que pueden parecer atípicos.
El objetivo de esta sesión es mostrar las diferentes formas queexisten para describir datos empleando ya sea gráficos o medidasnuméricas.
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Datos cualitativos (un ejemplo)
Accidentes de tránsito en Hato Corozal, Casanare (2013). 50observaciones (aqui se reportan las 6 primeras)
fecha_accidente tipo_accidente lesiones
03/01/2013 Caida Si
05/01/2013 Volcamiento No
21/01/2013 Atropello Si
03/02/2013 Caida Si
08/02/2013 Caida Si
09/02/2013 Choque Si
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Tipo de accidente
En este ejemplo, la variable que nos interesa es el tipo deaccidenteEn este caso, dicha columna cuenta con 10 categorias o Clases(atropello, caída, choque, etc)Podemos resumir (describir) dicha columna de maneranumérica en dos formasFrecuencia de clase: número de observaciones que presentacada claseFrecuencia relativa de clase: frecuencia de clase dividida por eltotal de observaciones en el conjunto de datos
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Frecuencia de clase (tipo de accidente)
tipo_accidente Freq.Clase
Atropello 4
Caida 19
Choque 8
Choque Mortal 1
Cierre Vehiculo 5
Falla Humana 5
Falla Mecanica 2
Perdida deControl
4
Salida Via 1
Volcamiento 1
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Frecuencia relativa de clase (tipo de accidente)
tipo_accidente Freq.Clase Freq.Rel
Atropello 4 0.08
Caida 19 0.38
Choque 8 0.16
Choque Mortal 1 0.02
Cierre Vehiculo 5 0.1
Falla Humana 5 0.1
Falla Mecanica 2 0.04
Perdida deControl
4 0.08
Salida Via 1 0.02
Volcamiento 1 0.02
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Porcentaje de clase (tipo de accidente)
tipo_accidente Freq.Clase Freq.Rel Porcentaje
Atropello 4 0.08 8
Caida 19 0.38 38
Choque 8 0.16 16
Choque Mortal 1 0.02 2
Cierre Vehiculo 5 0.1 10
Falla Humana 5 0.1 10
Falla Mecanica 2 0.04 4
Perdida deControl
4 0.08 8
Salida Via 1 0.02 2
Volcamiento 1 0.02 2
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Datos cuantitativos: métodos gráficos
Los métodos gráficos son muy útiles para describir la forma quepresenta un conjunto de datosEl histograma es la herramienta más empleada en el análisisexploratorio de datosCualquier paquete estadístico u hoja de cálculo permite generareste tipo de gráficos
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Histograma
0
10
20
30
10 20 30 40MPG
Cou
nt
Histograma MPG. Datos Vehículos
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Histograma comparando diferentes clases
El siguiente gráfico reporta las frecuencias de consumo según lavariable cualitativa que mide la tracción del vehículo:
0
10
20
30
10 20 30 40MPG
Cou
nt
drv
4
f
r
Histograma MPG. Datos Vehículos
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Medidas numéricas de tendencia central
Tendencia Central es la tendencia de los datos a aglomerarse, ocentrarse alrededor de ciertos valores numéricos
Variabilidad es la dispersión de los datos
0
250
500
750
1000
0 5 10 15 20x
coun
t
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Media muestral
La media de un conjunto de datos es la suma de sus valores divididapor el número de valores que contiene el conjunto de datos.
La media muestral está definida por la fórmula:
x̄ =
∑ni=1 xin
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Mediana
La mediana de un conjunto de datos es el valor ubicado en la mitad(de los datos ordenados de menor a mayor, o mayor a menor).
Para calcular la mediana muestral se deben seguir los siguientespasos:
1 Ordene los datos de menor a mayor2 Si el número de datos es impar, la mediana es el número de la
mitad3 Si el número de datos es par, la mediana es la media de los dos
valores de la mitad
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Moda
La moda es el valor o medición que ocurre en un conjunto de datoscon mayor frecuencia
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Sesgo
Decimos que un conjunto de datos está sesgado si una de las colasde la distribución contiene más observaciones extremas que la otracola.
Si mediana < media, los datos están sesgados hacia la derecha.
Si mediana > media, los datos están sesgados hacia la izquierda.
Si mediana = media, se dice que la distribución es simétrica.
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Ejemplo de medidas de tendencia central
Si tenemos el siguiente conjunto de datos:
[10, 10, 25, 35, 125, 125]
La media muestral es igual a: 10+10+25+35+125+1256 , o 55.
Y la mediana resulta de ordenar los datos de menor a mayor, yubicar el valor de la mitad. En este caso, el número deobservaciones es par, por lo que la mediana es la media de los dospuntos intermedios, o 30.
Note que el conjunto anterior presenta dos modas (bimodal): 10 y125.
La mediana es menor que la media, por lo que se observa un sesgo ala derecha.
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Graficamente
0.0
0.5
1.0
1.5
2.0
0 50 100x
coun
t
Median : 30.00 and Mean : 55.00
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Otro ejemplo
Usando nuevamente los datos ejemplo de vehículos, revisamos lasmedidas de tendencia central para el consumo de combustible,comparando vehículos con tracción trasera y delantera.
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
ResultadosHistograma Consumo
Tracción delantera
MPG
Fre
quen
cy
15 20 25 30 35 40 45
020
4060
Histograma ConsumoTracción trasera
MPG
Fre
quen
cy
14 16 18 20 22 24 26
02
46
Min. 1st Qu. Median Mean 3rd Qu. Max.
17 26 28 28.16 29 44
Min. 1st Qu. Median Mean 3rd Qu. Max.
15 17 21 21 24 26Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Medidas numéricas de variabilidad
El rango es igual a la resta entre el máximo valor y el mínimo valor.
Para nuestro ejemplo inicial, el rango es igual a 125-10, o 115.
Esta es la medida más simple de variabilidad. Rangos elevadosseñalan una amplia dispersión de los datos presentes en el conjuntoanalizado.
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
El rango es poco sensible
Histograma Escenario 1
Utilidad
Fre
quen
cy
−10 0 10 20 30
05
1015
2025
30
Histograma Escenario 2
Utilidad
Fre
quen
cy
−10 0 10 20 30
010
2030
4050
60Tanto el rango como la media y la mediana en ambos casos es igual.Sin embargo, la primera distribución presenta una mayor dispersión.
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Una medida de variabilidad más sensible
La varianza muestral de un conjunto de n medidas es igual a lasuma de las desviaciones al cuadrado, dividida por (n − 1).
Esta medida captura la desviación de cada punto frente a la mediade todo el conjunto de datos.
s2 =
∑ni=1(xi − x̄)2
n − 1
Y la desviación estándar se define como la raiz cuadrada de lavarianza muestral: s =
√s2.
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Verifiquemos la sensibilidad de s con nuestro ejemploanterior
Para el escenario 1, observamos una desviación estándar igual a12.7128345, mientras que para el escenario 2 se tiene una desviaciónestándar de 8.4087497.
El escenario 1 presenta una mayor variabilidad (o riesgo), mientrasque el escenario 2, presenta utilidades más concentradas alrededorde la tendencia central.
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Visualización: ejemplo aplicado en R
# Usamos datos mpg incluídos en el paquete ggplot2summary(mpg[,1:3]) # sólo primeras 3 cols
manufacturer model displdodge :37 caravan 2wd : 11 Min. :1.600toyota :34 ram 1500 pickup 4wd: 10 1st Qu.:2.400volkswagen:27 civic : 9 Median :3.300ford :25 dakota pickup 4wd : 9 Mean :3.472chevrolet :19 jetta : 9 3rd Qu.:4.600audi :18 mustang : 9 Max. :7.000(Other) :74 (Other) :177
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Sistemas gráficos en R
Base: Sistema base en R, donde los elementos se agregan conlíneas de códigoLattice: Sistema posterior al Base, con mayor funcionalidad(paneles)ggplot: Sistema básado en gramática de gráficos, mucho másfuncional
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Histogramas (Base)
# Sistema Basehist(mpg$hwy, prob=T, col="lightblue")
Histogram of mpg$hwy
mpg$hwy
Den
sity
10 15 20 25 30 35 40 45
0.00
0.02
0.04
0.06
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Revisando normalidad (Base)
# Sistema Baselibrary(car)par(mfrow=c(1,2))hist(mpg$hwy, prob=T, xlab="",
main="Histograma de MPG en Carretera")lines(density(mpg$hwy, na.rm=T))rug(jitter(mpg$hwy))qqPlot(mpg$hwy, main="QQ Plot de MPG")par(mfrow=c(1,2))
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Revisando normalidad (Base)
Histograma de MPG en CarreteraD
ensi
ty
10 15 20 25 30 35 40 45
0.00
0.01
0.02
0.03
0.04
0.05
0.06
0.07
−3 −2 −1 0 1 2 3
1520
2530
3540
45
QQ Plot de MPG
norm quantiles
mpg
$hw
y
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Outliers: detección via Box-plots (Base)
# Sistema Baseboxplot(mpg$hwy, ylab="MPG - Carretera")rug(jitter(mpg$hwy), side=2)abline(h = mean(mpg$hwy, na.rm=T), lty=2)
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Outliers: detección via Box-plots (Base)
1520
2530
3540
45
MP
G −
Car
rete
ra
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Inspección de outliers
# Graficamenteplot(mpg$hwy, xlab="")abline(h = mean(mpg$hwy, na.rm=T), lty=1)abline(h = mean(mpg$hwy, na.rm=T) + sd(mpg$hwy, na.rm=T),
lty=2)abline(h = median(mpg$hwy, na.rm=T), lty=3)
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Inspección de outliers
0 50 100 150 200
1520
2530
3540
45
mpg
$hw
y
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Box-plots condicionados (Lattice)
# Box-plots condicionados en sistema latticelibrary(lattice)bwplot(drv~hwy, data=mpg,
ylab="Tracción", xlab="MPG en Carretera")
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Box-plots condicionados (Lattice)
MPG en Carretera
Trac
ción
4
f
r
20 30 40
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Box-plots con ggplot
# Sistema ggplotg <- ggplot(mpg, aes(drv, hwy))g <- g + geom_boxplot()g <- g + labs(title="Box-Plots Consumo. Datos Vehículos")g <- g + labs(y="MPG", x="Tracción")g
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Box-plots con ggplot
20
30
40
4 f rTracción
MP
G
Box−Plots Consumo. Datos Vehículos
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Paneles con ggplot
# Sistema ggplotg <- ggplot(mpg, aes(drv, hwy))g <- g + geom_boxplot(aes(fill=drv))g <- g + facet_grid(.~year)g <- g + labs(title="Box-Plots Consumo. Datos Vehículos")g <- g + labs(y="MPG", x="Tracción")g
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Paneles con ggplot
1999 2008
20
30
40
4 f r 4 f rTracción
MP
G
drv
4
f
r
Box−Plots Consumo. Datos Vehículos
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Missing Values
OrigenTratamientoImputación (valor más frecuente)Imputación (correlaciones)Imputación (casos similares, intro a KNN)
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Remoción de NAs
# Función complete.cases()library(DMwR); data(algae)nrow(algae[!complete.cases(algae),])
## [1] 16
16 de los 200 registros en el dataset algae contienen al menos unNA
algae2 <- na.omit(algae)
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Remoción de NAs
De manera alternativa, se puede emplear la funciónmanyNAs(), incluída en el paquete DMwREsta función recibe dos argumentos, el primero correspondienteal dataframeEl segundo, correspondiente al porcentaje de columnas con NA
algae3 <- algae[-manyNAs(algae,0.2),]
El comando anterior remueve filas donde en más del 20% delas columnas existen valores NA
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Imputación
CerosMedias, medianas, o clase más frecuenteA partir de modelos lineales (correlaciones)Casos similares
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Imputación con valores más frecuentes
El registro 48 en el dataframe algae contiene un NA para lacolumna mxPH. Dada la normalidad de esta variable, es posibleemplear la media como medida de imputación
algae[48, "mxPH"] <- mean(algae$mxPH, na.rm=T)
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Explotando correlaciones entre columnas
symnum(cor(algae[,4:18],use="complete.obs"))
## mP mO Cl NO NH o P Ch a1 a2 a3 a4 a5 a6 a7## mxPH 1## mnO2 1## Cl 1## NO3 1## NH4 , 1## oPO4 . . 1## PO4 . . * 1## Chla . 1## a1 . . . 1## a2 . . 1## a3 1## a4 . . . 1## a5 1## a6 . . . 1## a7 1## attr(,"legend")## [1] 0 ' ' 0.3 '.' 0.6 ',' 0.8 '+' 0.9 '*' 0.95 'B' 1
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Se puede imputar con modelos lineales
algae <- algae[-manyNAs(algae), ]fit <- lm(PO4~oPO4, data=algae)fit$coef
## (Intercept) oPO4## 42.897046 1.293061
Podemos entonces imputar NAs en PO4 usando la formulaPO4 = 42.89 + 1.29 ∗ oPO4
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Imputación a partir de KNN
KNN: K-Nearest Neighbors (vecinos más cercanos)El paquete DMwR contiene la función knnImputation(), lacual emplea una distancia Euclideana para encontrar los kvecinos más cercanos
algae4 <- knnImputation(algae, k=10)
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Principal Component Analysis (para reducción de ladimensionalidad)
Gran conjunto de datos con columnas altamentecorrelacionadasComponentes principales permite “resumir” (summarize) esteconjunto con un número menor de columnas representativasque explican la mayoría de la variabilidad del set originalPCA, procedimiento no supervisadoAplicación en visualización¿Cuántos graficos necesitaremos para revisar relaciones entre ppredictores?p(p − 1)/2 (ejemplo, si p = 10 necesitamos 45 plots!)Objetivo: buscar una representación de baja dimensionalidad
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
De manera formal
Primer componente
Zi = Φ11X1 + Φ21X2 + ... + Φp1Xp
Combinación lineal (normalizada) de los predictores, con la varianzamás alta
Segundo componente
Z2 = Φ12X1 + Φ22X2 + ... + Φp2Xp
Combinación lineal (normalizada) de los predictores, con la varianzamás alta, entre todas las combinaciones lineales que están nocorrelacionadas con el primer componente
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
Librería dplyr
Provee funciones simples que permiten manipular data framesde manera sencilla
Los verbos
filterarrangeselectdistinctmutategroup_bysummarize
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
filter()
Equivalente a la función base subset()
data(mpg); library(dplyr)mpg.filter <- filter(mpg, cyl==4, drv=="f")head(mpg.filter, n=3)
## manufacturer model displ year cyl trans drv cty hwy fl class## 1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact## 2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact## 3 audi a4 2.0 2008 4 manual(m6) f 20 31 p compact
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
arrange()
Reordena según columna seleccionada
mpg.filter <- arrange(mpg.filter, desc(displ, year))head(mpg.filter, n=3)
## manufacturer model displ year cyl trans drv cty hwy fl class## 1 nissan altima 2.5 2008 4 auto(av) f 23 31 r midsize## 2 nissan altima 2.5 2008 4 manual(m6) f 23 32 r midsize## 3 chevrolet malibu 2.4 1999 4 auto(l4) f 19 27 r midsize
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
select()
Seleccion columna(s) de interés
mpg.filter <- select(mpg.filter, displ, cty, hwy)head(mpg.filter, n=3)
## displ cty hwy## 1 2.5 23 31## 2 2.5 23 32## 3 2.4 19 27
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
distinct()
Posibles valores de una columna (en combinación con select())
distinct(select(mpg, trans))
## trans## 1 auto(l5)## 2 manual(m5)## 3 manual(m6)## 4 auto(av)## 5 auto(s6)## 6 auto(l4)## 7 auto(l3)## 8 auto(l6)## 9 auto(s5)## 10 auto(s4)
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
mutate()
Crea nuevas columnas
mpg.new <- mutate(mpg, disp2 = displ*1000, mpg.prom = (cty+hwy)/2)head(mpg.new, n=2)
## manufacturer model displ year cyl trans drv cty hwy fl class## 1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact## 2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact## disp2 mpg.prom## 1 1800 23.5## 2 1800 25.0
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos
group_by() y summarize()
Agrupar y resumir datos
mpg.grouped <- group_by(mpg, cyl)mpg.summ <- summarize(mpg.grouped, hwy.avg = mean(hwy),
cty.avg = mean(cty))mpg.summ
## Source: local data frame [4 x 3]#### cyl hwy.avg cty.avg## 1 4 28.80247 21.01235## 2 5 28.75000 20.50000## 3 6 22.82278 16.21519## 4 8 17.62857 12.57143
Carlos Ignacio Patiño ([email protected]) Análisis Exploratorio de Datos