Está en la página 1de 57

Anlisis Exploratorio de Datos

Carlos Ignacio Patio (cpatinof@gmail.com)

Agosto 21, 2015

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Agenda

Limpieza de datos
Mtodos para la descripcin de datos
Deteccin de outliers
Llenando missing values
PCA
Librera dplyr

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Limpieza de datos

Reglas para la obtencin de un conjunto de datos limpio


Datos brutos: Datos no procesados, usualmente obtenidos de una
fuente primaria (en algunos casos secundaria)
Datos procesados:
Cada variable medida debe estar en una columna
Cada observacin debe estar en una fila
Debe existir una tabla para cada tipo de variable
Si existen mltiples tablas, stas deben estar ligadas por una
columna comn

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Mtodos para la descripcin de datos

Existen dos formas de describir conjuntos de datos: el mtodo


grfico y el mtodo numrico.
Todo conjunto de datos contiene tendencias (como por ejemplo
dnde se concentra la mayor cantidad de puntos), variabilidad,
mximos, mnimos y tambin datos que pueden parecer atpicos.
El objetivo de esta sesin es mostrar las diferentes formas que
existen para describir datos empleando ya sea grficos o medidas
numricas.

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Datos cualitativos (un ejemplo)


Accidentes de trnsito en Hato Corozal, Casanare (2013). 50
observaciones (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 Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Tipo de accidente

En este ejemplo, la variable que nos interesa es el tipo de


accidente
En este caso, dicha columna cuenta con 10 categorias o Clases
(atropello, cada, choque, etc)
Podemos resumir (describir) dicha columna de manera
numrica en dos formas
Frecuencia de clase: nmero de observaciones que presenta
cada clase
Frecuencia relativa de clase: frecuencia de clase dividida por el
total de observaciones en el conjunto de datos

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Frecuencia de clase (tipo de accidente)


tipo_accidente

Freq.Clase

Atropello

Caida

19

Choque

Choque Mortal

Cierre Vehiculo

Falla Humana

Falla Mecanica

Perdida de
Control
Salida Via

4
1

Volcamiento

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Frecuencia relativa de clase (tipo de accidente)


tipo_accidente

Freq.Clase

Freq.Rel

Atropello

0.08

Caida

19

0.38

Choque

0.16

Choque Mortal

0.02

Cierre Vehiculo

0.1

Falla Humana

0.1

Falla Mecanica

0.04

Perdida de
Control
Salida Via

0.08

0.02

Volcamiento

0.02

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Porcentaje de clase (tipo de accidente)


tipo_accidente

Freq.Clase

Freq.Rel

Porcentaje

Atropello

0.08

Caida

19

0.38

38

Choque

0.16

16

Choque Mortal

0.02

Cierre Vehiculo

0.1

10

Falla Humana

0.1

10

Falla Mecanica

0.04

Perdida de
Control
Salida Via

0.08

0.02

Volcamiento

0.02

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Datos cuantitativos: mtodos grficos

Los mtodos grficos son muy tiles para describir la forma que
presenta un conjunto de datos
El histograma es la herramienta ms empleada en el anlisis
exploratorio de datos
Cualquier paquete estadstico u hoja de clculo permite generar
este tipo de grficos

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Histograma
Histograma MPG. Datos Vehculos

30

Count

20

10

0
10

20

30

MPG

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

40

Histograma comparando diferentes clases


El siguiente grfico reporta las frecuencias de consumo segn la
variable cualitativa que mide la traccin del vehculo:
Histograma MPG. Datos Vehculos
30

20

drv

Count

4
f
r
10

0
10

20

30

40

MPG

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Medidas numricas de tendencia central

Tendencia Central es la tendencia de los datos a aglomerarse, o


centrarse alrededor de ciertos valores numricos
Variabilidad es la dispersin de los datos
1000

count

750

500

250

0
0

10

15

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

20

Media muestral

La media de un conjunto de datos es la suma de sus valores dividida


por el nmero de valores que contiene el conjunto de datos.
La media muestral est definida por la frmula:
Pn

x =

Carlos Ignacio Patio (cpatinof@gmail.com)

i=1 xi

Anlisis 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 siguientes
pasos:
1
2

Ordene los datos de menor a mayor


Si el nmero de datos es impar, la mediana es el nmero de la
mitad
Si el nmero de datos es par, la mediana es la media de los dos
valores de la mitad

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Moda

La moda es el valor o medicin que ocurre en un conjunto de datos


con mayor frecuencia

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Sesgo

Decimos que un conjunto de datos est sesgado si una de las colas


de la distribucin contiene ms observaciones extremas que la otra
cola.
Si mediana < media, los datos estn sesgados hacia la derecha.
Si mediana > media, los datos estn sesgados hacia la izquierda.
Si mediana = media, se dice que la distribucin es simtrica.

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis 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+125
,
6

o 55.

Y la mediana resulta de ordenar los datos de menor a mayor, y


ubicar el valor de la mitad. En este caso, el nmero de
observaciones es par, por lo que la mediana es la media de los dos
puntos intermedios, o 30.
Note que el conjunto anterior presenta dos modas (bimodal): 10 y
125.
La mediana es menor que la media, por lo que se observa un sesgo a
la derecha.

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Graficamente

2.0

count

1.5

1.0

0.5

0.0
0

50

100

Median : 30.00 and Mean : 55.00

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Otro ejemplo

Usando nuevamente los datos ejemplo de vehculos, revisamos las


medidas de tendencia central para el consumo de combustible,
comparando vehculos con traccin trasera y delantera.

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Resultados

6
4
2
0

Frequency

20 40 60

Histograma Consumo
Traccin trasera

Frequency

Histograma Consumo
Traccin delantera

15 20 25 30 35 40 45

14 16 18 20 22 24 26

MPG

MPG

Min.

1st Qu.

17

26

Min.

1st Qu.

15

17

Median Mean
28

28.16

Median Mean
21

Carlos Ignacio Patio (cpatinof@gmail.com)

21

3rd Qu.

Max.

29

44

3rd Qu.

Max.

24

26

Anlisis Exploratorio de Datos

Medidas numricas de variabilidad

El rango es igual a la resta entre el mximo valor y el mnimo valor.


Para nuestro ejemplo inicial, el rango es igual a 125-10, o 115.
Esta es la medida ms simple de variabilidad. Rangos elevados
sealan una amplia dispersin de los datos presentes en el conjunto
analizado.

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

El rango es poco sensible

50
40
30

Frequency

10

20

20
15
10

Frequency

25

60

Histograma Escenario 2

30

Histograma Escenario 1

10

10

20

30

Utilidad

10

10

20

30

Utilidad

Tanto el rango como la media y la mediana en ambos casos es igual.


Sin embargo, la primera distribucin presenta una mayor dispersin.

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Una medida de variabilidad ms sensible

La varianza muestral de un conjunto de n medidas es igual a la


suma de las desviaciones al cuadrado, dividida por (n 1).
Esta medida captura la desviacin de cada punto frente a la media
de todo el conjunto de datos.
s2 =

Pn

x )2
n1

i=1 (xi

Y la desviacin estndar
se define como la raiz cuadrada de la
varianza muestral: s = s 2 .

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Verifiquemos la sensibilidad de s con nuestro ejemplo


anterior

Para el escenario 1, observamos una desviacin estndar igual a


12.7128345, mientras que para el escenario 2 se tiene una desviacin
estndar de 8.4087497.
El escenario 1 presenta una mayor variabilidad (o riesgo), mientras
que el escenario 2, presenta utilidades ms concentradas alrededor
de la tendencia central.

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Visualizacin: ejemplo aplicado en R

# Usamos datos mpg includos en el paquete ggplot2


summary(mpg[,1:3]) # slo primeras 3 cols
manufacturer
dodge
:37
toyota
:34
volkswagen:27
ford
:25
chevrolet :19
audi
:18
(Other)
:74

model
caravan 2wd
: 11
ram 1500 pickup 4wd: 10
civic
: 9
dakota pickup 4wd : 9
jetta
: 9
mustang
: 9
(Other)
:177

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

displ
Min.
:1.600
1st Qu.:2.400
Median :3.300
Mean
:3.472
3rd Qu.:4.600
Max.
:7.000

Sistemas grficos en R

Base: Sistema base en R, donde los elementos se agregan con


lneas de cdigo
Lattice: Sistema posterior al Base, con mayor funcionalidad
(paneles)
ggplot: Sistema bsado en gramtica de grficos, mucho ms
funcional

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Histogramas (Base)

# Sistema Base
hist(mpg$hwy, prob=T, col="lightblue")

0.04
0.02
0.00

Density

0.06

Histogram of mpg$hwy

10

15

20

25

30

35

mpg$hwy

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

40

45

Revisando normalidad (Base)

# Sistema Base
library(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 Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Revisando normalidad (Base)


QQ Plot de MPG

30
20

25

mpg$hwy

0.03
0.02

15

0.01
0.00

Density

0.04

35

0.05

40

0.06

45

0.07

Histograma de MPG en Carretera

10

15

20

25

30

35

40

45

norm quantiles

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Outliers: deteccin via Box-plots (Base)

# Sistema Base
boxplot(mpg$hwy, ylab="MPG - Carretera")
rug(jitter(mpg$hwy), side=2)
abline(h = mean(mpg$hwy, na.rm=T), lty=2)

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

30
25
20
15

MPG Carretera

35

40

45

Outliers: deteccin via Box-plots (Base)

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Inspeccin de outliers

# Graficamente
plot(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 Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

30
25
20
15

mpg$hwy

35

40

45

Inspeccin de outliers

50

100

Carlos Ignacio Patio (cpatinof@gmail.com)

150

Anlisis Exploratorio de Datos

200

Box-plots condicionados (Lattice)

# Box-plots condicionados en sistema lattice


library(lattice)
bwplot(drv~hwy, data=mpg,
ylab="Traccin", xlab="MPG en Carretera")

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Box-plots condicionados (Lattice)

Traccin

20

30

MPG en Carretera

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

40

Box-plots con ggplot

#
g
g
g
g
g

Sistema ggplot
<- ggplot(mpg, aes(drv, hwy))
<- g + geom_boxplot()
<- g + labs(title="Box-Plots Consumo. Datos Vehculos")
<- g + labs(y="MPG", x="Traccin")

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Box-plots con ggplot


BoxPlots Consumo. Datos Vehculos

40

MPG

30

20

Traccin

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Paneles con ggplot

#
g
g
g
g
g
g

Sistema ggplot
<- ggplot(mpg, aes(drv, hwy))
<- g + geom_boxplot(aes(fill=drv))
<- g + facet_grid(.~year)
<- g + labs(title="Box-Plots Consumo. Datos Vehculos")
<- g + labs(y="MPG", x="Traccin")

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Paneles con ggplot


BoxPlots Consumo. Datos Vehculos
1999

2008

40

drv

30

MPG

4
f
r

20

Traccin

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Missing Values

Origen
Tratamiento
Imputacin (valor ms frecuente)
Imputacin (correlaciones)
Imputacin (casos similares, intro a KNN)

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Remocin de NAs

# Funcin 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 un
NA
algae2 <- na.omit(algae)

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Remocin de NAs

De manera alternativa, se puede emplear la funcin


manyNAs(), includa en el paquete DMwR
Esta funcin recibe dos argumentos, el primero correspondiente
al dataframe
El segundo, correspondiente al porcentaje de columnas con NA
algae3 <- algae[-manyNAs(algae,0.2),]

El comando anterior remueve filas donde en ms del 20% de


las columnas existen valores NA

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Imputacin

Ceros
Medias, medianas, o clase ms frecuente
A partir de modelos lineales (correlaciones)
Casos similares

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Imputacin con valores ms frecuentes

El registro 48 en el dataframe algae contiene un NA para la


columna mxPH. Dada la normalidad de esta variable, es posible
emplear la media como medida de imputacin
algae[48, "mxPH"] <- mean(algae$mxPH, na.rm=T)

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Explotando correlaciones entre columnas


symnum(cor(algae[,4:18],use="complete.obs"))
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

mP mO
mxPH 1
mnO2
1
Cl
NO3
NH4
oPO4
.
PO4
.
Chla .
a1
a2
.
a3
a4
.
a5
a6

Cl NO NH o P Ch a1 a2 a3 a4 a5 a6 a7
1
.
.

1
,

1
* 1
. .
. .

Carlos Ignacio Patio (cpatinof@gmail.com)

1
.

1
.

Anlisis Exploratorio de Datos

Se puede imputar con modelos lineales

algae <- algae[-manyNAs(algae), ]


fit <- lm(PO4~oPO4, data=algae)
fit$coef
## (Intercept)
##
42.897046

oPO4
1.293061

Podemos entonces imputar NAs en PO4 usando la formula


PO4 = 42.89 + 1.29 oPO4

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Imputacin a partir de KNN

KNN: K-Nearest Neighbors (vecinos ms cercanos)


El paquete DMwR contiene la funcin knnImputation(), la
cual emplea una distancia Euclideana para encontrar los k
vecinos ms cercanos
algae4 <- knnImputation(algae, k=10)

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Principal Component Analysis (para reduccin de la


dimensionalidad)

Gran conjunto de datos con columnas altamente


correlacionadas
Componentes principales permite resumir (summarize) este
conjunto con un nmero menor de columnas representativas
que explican la mayora de la variabilidad del set original
PCA, procedimiento no supervisado
Aplicacin en visualizacin
Cuntos graficos necesitaremos para revisar relaciones entre p
predictores?
p(p 1)/2 (ejemplo, si p = 10 necesitamos 45 plots!)
Objetivo: buscar una representacin de baja dimensionalidad

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

De manera formal
Primer componente
Zi = 11 X1 + 21 X2 + ... + p1 Xp
Combinacin lineal (normalizada) de los predictores, con la varianza
ms alta
Segundo componente
Z2 = 12 X1 + 22 X2 + ... + p2 Xp
Combinacin lineal (normalizada) de los predictores, con la varianza
ms alta, entre todas las combinaciones lineales que estn no
correlacionadas con el primer componente

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

Librera dplyr

Provee funciones simples que permiten manipular data frames


de manera sencilla
Los verbos
filter
arrange
select
distinct
mutate
group_by
summarize

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

filter()

Equivalente a la funcin 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 h
## 1
audi
a4
1.8 1999
4
auto(l5)
f 18
## 2
audi
a4
1.8 1999
4 manual(m5)
f 21
## 3
audi
a4
2.0 2008
4 manual(m6)
f 20

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

arrange()

Reordena segn columna seleccionada


mpg.filter <- arrange(mpg.filter, desc(displ, year))
head(mpg.filter, n=3)
##
manufacturer model displ year cyl
trans drv cty
## 1
nissan altima
2.5 2008
4
auto(av)
f 23
## 2
nissan altima
2.5 2008
4 manual(m6)
f 23
## 3
chevrolet malibu
2.4 1999
4
auto(l4)
f 19

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

select()

Seleccion columna(s) de inters


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 Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

distinct()
Posibles valores de una columna (en combinacin 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 Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

mutate()

Crea nuevas columnas

mpg.new <- mutate(mpg, disp2 = displ*1000, mpg.prom = (cty+


head(mpg.new, n=2)
##
##
##
##
##
##

manufacturer model displ year cyl


trans drv cty h
audi
a4
1.8 1999
4
auto(l5)
f 18
audi
a4
1.8 1999
4 manual(m5)
f 21
disp2 mpg.prom
1 1800
23.5
2 1800
25.0
1
2

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis 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]


1
2
3
4

cyl
4
5
6
8

hwy.avg
28.80247
28.75000
22.82278
17.62857

cty.avg
21.01235
20.50000
16.21519
12.57143

Carlos Ignacio Patio (cpatinof@gmail.com)

Anlisis Exploratorio de Datos

También podría gustarte