Estadística Descriptiva y Análisis Exploratorio de Datos

Joshua Kunst

Estadística Descriptiva y Análisis Exploratorio de Datos

Programa

Objetivos

Escuchar lo que los datos nos hablan

Estadística Descriptiva y AED

Estadística Descriptiva y AED

Es un conjunto de técnicas cuya finalidad es entregar un entendimiento básico de los datos y de las relaciones entre las variables.

  1. ¿Como se distribuyen los datos (concentración/variablidad)?
  2. ¿Existen sesgo en los datos recogidos?
  3. ¿Existen relaciones entre las variables?
  4. ¿Existen datos atípicos?

En general no existen pasos a seguir pues depende mucho de la naturaleza/estructura los datos

worflow

Tipos de Datos/Variables

Medidas de tendencia Central y Dispersión

Medidas de tendencia Central y Dispersión

Son indicadores (generalmente un número) obtenidos de los datos que resumen información y nos hablan de alguna característica de la distribución de la variable.

Medidas de tendencia Central

Nos señalan el valor en torno al cual se concentran los datos. Los mas usado son:

Medidas de tendencia Central en R

datos <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

# media (promedio)
mean(datos)
## [1] 5.5
# mediana 
median(datos)
## [1] 5.5

Medidas de tendencia Central en R (2)

datos <- c(0 ,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100)

# media (promedio)
mean(datos)
## [1] 12.91667
# mediana 
median(datos)
## [1] 5.5

Medidas de tendencia Central

Lo sucedido anteriormente se conoce como a la sensibilidad que posee la media en presencia de datos extremos.

La mediana se dice que es robusta en presencia de outliers.

Medidas de tendencia Dispersión

Son valores que nos describen la dispersión de los datos. Es decir, que tan concentrados están. Los mas usados son:

Medidas de tendencia Dispersión en R

datos1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
datos2 <- c(0, 1, 1, 1, 1, 10, 10, 10, 10, 11)

mean(datos1)
## [1] 5.5
mean(datos2)
## [1] 5.5
median(datos1)
## [1] 5.5
median(datos2)
## [1] 5.5

Medidas de tendencia Dispersión en R (2)

datos1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
datos2 <- c(0, 1, 1, 1, 1, 10, 10, 10, 10, 11)

sd(datos1)
## [1] 3.02765
sd(datos2)
## [1] 4.972145
max(datos1) - min(datos1)
## [1] 9
max(datos2) - min(datos2)
## [1] 11

Bonus: Medida de Asociación

Para variables continuas se puede obtener la correlación que indica el grado de asociación lineal entre dos variables

Bonus: Medidas de Asociación R

v1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
v2 <- c(5, 7, 8, 10, 13, 15, 14, 18, 19, 20)
v3 <- c(10, -10, 5, -4, 15, -13, 0, 1, 3, -4)

cor(v1, v2)
## [1] 0.9874543
cor(v1, v3)
## [1] -0.1521236

Visualización

Visualización

Se refiere a la representación gráfica de los datos codificando la información o atributos como: posición, tamaño, formas, colores

viz

Ejemplo Anscombe’s Quartet

x1 x2 x3 x4 y1 y2 y3 y4
10 10 10 8 8.04 9.14 7.46 6.58
8 8 8 8 6.95 8.14 6.77 5.76
13 13 13 8 7.58 8.74 12.74 7.71
9 9 9 8 8.81 8.77 7.11 8.84
11 11 11 8 8.33 9.26 7.81 8.47
14 14 14 8 9.96 8.10 8.84 7.04
6 6 6 8 7.24 6.13 6.08 5.25
4 4 4 19 4.26 3.10 5.39 12.50
12 12 12 8 10.84 9.13 8.15 5.56
7 7 7 8 4.82 7.26 6.42 7.91
5 5 5 8 5.68 4.74 5.73 6.89

Ejemplo Anscombe’s Quartet

Ejemplo Anscombe’s Quartet

data(anscombe)
summary(anscombe)
##        x1             x2             x3             x4    
##  Min.   : 4.0   Min.   : 4.0   Min.   : 4.0   Min.   : 8  
##  1st Qu.: 6.5   1st Qu.: 6.5   1st Qu.: 6.5   1st Qu.: 8  
##  Median : 9.0   Median : 9.0   Median : 9.0   Median : 8  
##  Mean   : 9.0   Mean   : 9.0   Mean   : 9.0   Mean   : 9  
##  3rd Qu.:11.5   3rd Qu.:11.5   3rd Qu.:11.5   3rd Qu.: 8  
##  Max.   :14.0   Max.   :14.0   Max.   :14.0   Max.   :19  
##        y1               y2              y3              y4        
##  Min.   : 4.260   Min.   :3.100   Min.   : 5.39   Min.   : 5.250  
##  1st Qu.: 6.315   1st Qu.:6.695   1st Qu.: 6.25   1st Qu.: 6.170  
##  Median : 7.580   Median :8.140   Median : 7.11   Median : 7.040  
##  Mean   : 7.501   Mean   :7.501   Mean   : 7.50   Mean   : 7.501  
##  3rd Qu.: 8.570   3rd Qu.:8.950   3rd Qu.: 7.98   3rd Qu.: 8.190  
##  Max.   :10.840   Max.   :9.260   Max.   :12.74   Max.   :12.500

Ejemplo Anscombe’s Quartet

var(anscombe$x1)
## [1] 11
var(anscombe$x2)
## [1] 11
var(anscombe$y2)
## [1] 4.127629
var(anscombe$y4)
## [1] 4.123249

Ejemplo Anscombe’s Quartet

cor(anscombe$x1, anscombe$y1)
## [1] 0.8164205
cor(anscombe$x2, anscombe$y2)
## [1] 0.8162365
cor(anscombe$x3, anscombe$y3)
## [1] 0.8162867
cor(anscombe$x4, anscombe$y4)
## [1] 0.8165214

Catálogo de Visualizaciones Populares

Catálogo de Visualizaciones Populares

Mostraremos visualizaciones que usualmente destancan en el procedimiento exploratorio por ser de fácil lectura y así obtener un aprendizaje rápido de los datos.

Para los siguiente gráficos utilzaremos una tabla que describe el consumo y características de ciertos vehículos provenientes de http://fueleconomy.gov.

Catálogo de Visualizaciones Populares

library(ggplot2)
mpg
## Source: local data frame [100 x 12]
## 
##    manufacturer      model displ  year   cyl      trans   drv   cty   hwy
##           <chr>      <chr> <dbl> <int> <int>      <chr> <chr> <int> <int>
## 1          audi         a4   1.8  1999     4   auto(l5)     f    18    29
## 2          audi         a4   1.8  1999     4 manual(m5)     f    21    29
## 3          audi         a4   2.0  2008     4 manual(m6)     f    20    31
## 4          audi         a4   2.0  2008     4   auto(av)     f    21    30
## 5          audi         a4   2.8  1999     6   auto(l5)     f    16    26
## 6          audi         a4   2.8  1999     6 manual(m5)     f    18    26
## 7          audi         a4   3.1  2008     6   auto(av)     f    18    27
## 8          audi a4 quattro   1.8  1999     4   auto(l5)     4    16    25
## 9          audi a4 quattro   2.0  2008     4   auto(s6)     4    19    27
## 10         audi a4 quattro   2.8  1999     6   auto(l5)     4    15    25
## ..          ...        ...   ...   ...   ...        ...   ...   ...   ...
## Variables not shown: fl <chr>, class <chr>, trans2 <chr>.

Barras

Gráfico para variables cualitativas o cuantitativas discretas con pocas categorías, representando en barra la cantidad de casos por categoría. Facilita.

Barras R

clases <- mpg$class

freq <- table(clases)

freq
## clases
##    compact    midsize      other     pickup subcompact        suv 
##         18         14         13         10         17         28
barplot(freq)

Pie

Similar al de barras. Muy popular pero altamente NO recomendado.

Pie R

marca <- mpg$manufacturer

freq <- table(marca)

freq
## marca
##       audi  chevrolet      dodge       ford      honda    hyundai 
##         14         15         18         14          7          5 
##       jeep land rover     nissan    pontiac     subaru     toyota 
##          1          3          7          2          4          5 
## volkswagen 
##          5
pie(freq)

Barras vs Pies

Comparemos, discutamos.

viz

Histograma

Representación para variables continuas en forma de barras donde cada barra muestra la cantidad de obseraciones que caen en cada intervalo definido por la misma (barra).

Histrograma R

millasgalon <- mpg$cty

summary(millasgalon)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    9.00   14.00   16.00   16.91   19.00   35.00
hist(millasgalon)

Boxplot

Gráfico que muestra la posición de los máximos, mínimos, y cuartiles de la variable:

Boxplot R

millasgalon <- mpg$cty

boxplot(millasgalon, horizontal = TRUE)

Boxplot R (2)

millasgalon <- mpg$cty

clases <- mpg$class

boxplot(millasgalon ~ clases, horizontal = TRUE)

Scatter

Diagrama de puntos relacionando dos variables continuas en un plano.

https://bl.ocks.org/nbremer/raw/eb0d1fd4118b731d069e2ff98dfadc47/

Scatter R

millasgalon <- mpg$cty

cilindrada <- mpg$displ

plot(millasgalon, cilindrada)

Treemaps

Diagrama que permite visualizar una característca (media, minimo, suma) de una variable continua en jerarquías (dos o más variables categóricas).

Permite utilizar color para agregar otra información

Treemaps R

library(treemap)

treemap(mpg, c("class", "model"), vSize = "cyl", fun.aggregate = "mean")

Parcoord

Permite visualizar data multidimensional. Cada línea representa una observación. cada observacion a través de cada variable

Su principal característica es visualizar data multidimensional.

http://bl.ocks.org/syntagmatic/raw/3150059/

Parcoord R

library(MASS)

# seleccionamos columnas con numers
mpgnum <- mpg[, c(3, 5, 8, 9) ]

head(mpgnum, 3)
## Source: local data frame [3 x 4]
## 
##   displ   cyl   cty   hwy
##   <dbl> <int> <int> <int>
## 1   1.8     4    18    29
## 2   1.8     4    21    29
## 3   2.0     4    20    31
parcoord(mpgnum, var.label = TRUE)
# existen mejores implementaciones

Manipulación de Datos en R

Manipulación de Datos en R

El Data wrangling se refiere a los pasos necesarios para obtener datos ordenados/bien definidos a partir de datos brutos.

Acciones

Las funciones más utilizadas corresponde a las siguientes accciones:

Filtrar Filas

filter permite selccionar subconjuto de filas. Primer argumento son los datos, seguido por expressiones para filtras

library(dplyr)
filter(mpg, manufacturer == "ford")
## Source: local data frame [14 x 12]
## 
##    manufacturer           model displ  year   cyl      trans   drv   cty
##           <chr>           <chr> <dbl> <int> <int>      <chr> <chr> <int>
## 1          ford  expedition 2wd   4.6  1999     8   auto(l4)     r    11
## 2          ford  expedition 2wd   5.4  1999     8   auto(l4)     r    11
## 3          ford  expedition 2wd   5.4  2008     8   auto(l6)     r    12
## 4          ford    explorer 4wd   4.0  1999     6   auto(l5)     4    14
## 5          ford    explorer 4wd   4.0  1999     6 manual(m5)     4    15
## 6          ford    explorer 4wd   4.0  2008     6   auto(l5)     4    13
## 7          ford    explorer 4wd   4.6  2008     8   auto(l6)     4    13
## 8          ford    explorer 4wd   5.0  1999     8   auto(l4)     4    13
## 9          ford f150 pickup 4wd   4.2  1999     6   auto(l4)     4    14
## 10         ford f150 pickup 4wd   5.4  2008     8   auto(l4)     4    13
## 11         ford         mustang   3.8  1999     6 manual(m5)     r    18
## 12         ford         mustang   4.0  2008     6 manual(m5)     r    17
## 13         ford         mustang   4.6  1999     8   auto(l4)     r    15
## 14         ford         mustang   5.4  2008     8 manual(m6)     r    14
## Variables not shown: hwy <int>, fl <chr>, class <chr>, trans2 <chr>.

Filtrar Filas

Podemos poner más de un criterio:

filter(mpg, year > 2000, drv == "r")
## Source: local data frame [9 x 12]
## 
##   manufacturer              model displ  year   cyl      trans   drv   cty
##          <chr>              <chr> <dbl> <int> <int>      <chr> <chr> <int>
## 1    chevrolet c1500 suburban 2wd   5.3  2008     8   auto(l4)     r    14
## 2    chevrolet c1500 suburban 2wd   5.3  2008     8   auto(l4)     r    11
## 3    chevrolet c1500 suburban 2wd   6.0  2008     8   auto(l4)     r    12
## 4    chevrolet           corvette   6.2  2008     8 manual(m6)     r    16
## 5    chevrolet           corvette   6.2  2008     8   auto(s6)     r    15
## 6    chevrolet           corvette   7.0  2008     8 manual(m6)     r    15
## 7         ford     expedition 2wd   5.4  2008     8   auto(l6)     r    12
## 8         ford            mustang   4.0  2008     6 manual(m5)     r    17
## 9         ford            mustang   5.4  2008     8 manual(m6)     r    14
## Variables not shown: hwy <int>, fl <chr>, class <chr>, trans2 <chr>.

Ordenar

arrange permite ordenar las filas de acuerdo a columnas

arrange(mpg, displ)
## Source: local data frame [100 x 12]
## 
##    manufacturer      model displ  year   cyl      trans   drv   cty   hwy
##           <chr>      <chr> <dbl> <int> <int>      <chr> <chr> <int> <int>
## 1         honda      civic   1.6  1999     4 manual(m5)     f    28    33
## 2         honda      civic   1.6  1999     4   auto(l4)     f    24    32
## 3         honda      civic   1.6  1999     4 manual(m5)     f    25    32
## 4         honda      civic   1.6  1999     4 manual(m5)     f    23    29
## 5          audi         a4   1.8  1999     4   auto(l5)     f    18    29
## 6          audi         a4   1.8  1999     4 manual(m5)     f    21    29
## 7          audi a4 quattro   1.8  1999     4   auto(l5)     4    16    25
## 8         honda      civic   1.8  2008     4 manual(m5)     f    26    34
## 9         honda      civic   1.8  2008     4   auto(l5)     f    25    36
## 10        honda      civic   1.8  2008     4   auto(l5)     f    24    36
## ..          ...        ...   ...   ...   ...        ...   ...   ...   ...
## Variables not shown: fl <chr>, class <chr>, trans2 <chr>.

Selccionar Columnas

select ayuda a seleccionar determinadas columnas de un data frame

library(dplyr)
select(mpg, year, class, fl)
## Source: local data frame [100 x 3]
## 
##     year   class    fl
##    <int>   <chr> <chr>
## 1   1999 compact     p
## 2   1999 compact     p
## 3   2008 compact     p
## 4   2008 compact     p
## 5   1999 compact     p
## 6   1999 compact     p
## 7   2008 compact     p
## 8   1999 compact     p
## 9   2008 compact     p
## 10  1999 compact     p
## ..   ...     ...   ...

Transformar Nuevas Columnas

mutate permite trasnformar/combiar columas en otras nuevas

mpg2 <- select(mpg, cty, hwy)

mutate(mpg2, comb = cty + hwy)
## Source: local data frame [100 x 3]
## 
##      cty   hwy  comb
##    <int> <int> <int>
## 1     18    29    47
## 2     21    29    50
## 3     20    31    51
## 4     21    30    51
## 5     16    26    42
## 6     18    26    44
## 7     18    27    45
## 8     16    25    41
## 9     19    27    46
## 10    15    25    40
## ..   ...   ...   ...

Transformar Nuevas Columnas

Podemos crear más de una columna a la vez

mutate(mpg2,
       comb = cty + hwy,
       cty2 = 2*cty)
## Source: local data frame [100 x 4]
## 
##      cty   hwy  comb  cty2
##    <int> <int> <int> <dbl>
## 1     18    29    47    36
## 2     21    29    50    42
## 3     20    31    51    40
## 4     21    30    51    42
## 5     16    26    42    32
## 6     18    26    44    36
## 7     18    27    45    36
## 8     16    25    41    32
## 9     19    27    46    38
## 10    15    25    40    30
## ..   ...   ...   ...   ...

Resumir Información

summarise se utiliza junto con group_by

mpgg <- group_by(mpg, class)
summarise(mpgg, meancty = mean(cty))
## Source: local data frame [6 x 2]
## 
##        class  meancty
##        <chr>    <dbl>
## 1    compact 19.61111
## 2    midsize 18.71429
## 3      other 15.61538
## 4     pickup 12.90000
## 5 subcompact 22.11765
## 6        suv 13.14286

Resumir Información 2

summarise se utiliza junto con group_by

summarise(mpgg, meancty = mean(cty), n = n())
## Source: local data frame [6 x 3]
## 
##        class  meancty     n
##        <chr>    <dbl> <int>
## 1    compact 19.61111    18
## 2    midsize 18.71429    14
## 3      other 15.61538    13
## 4     pickup 12.90000    10
## 5 subcompact 22.11765    17
## 6        suv 13.14286    28

Joins

left_join y sus similares ayudan a juntar dos data frames a través de una llave

library(nycflights13)
data("flights")
data("airlines")

head(flights)
## Source: local data frame [6 x 19]
## 
##    year month   day dep_time sched_dep_time dep_delay arr_time
##   <int> <int> <int>    <int>          <int>     <dbl>    <int>
## 1  2013     1     1      517            515         2      830
## 2  2013     1     1      533            529         4      850
## 3  2013     1     1      542            540         2      923
## 4  2013     1     1      544            545        -1     1004
## 5  2013     1     1      554            600        -6      812
## 6  2013     1     1      554            558        -4      740
## Variables not shown: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
##   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
##   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <time>.
head(airlines)
## Source: local data frame [6 x 2]
## 
##   carrier                     name
##     <chr>                    <chr>
## 1      9E        Endeavor Air Inc.
## 2      AA   American Airlines Inc.
## 3      AS     Alaska Airlines Inc.
## 4      B6          JetBlue Airways
## 5      DL     Delta Air Lines Inc.
## 6      EV ExpressJet Airlines Inc.

Joins

f1 <- select(flights, year, month, day, carrier)
head(f1)
## Source: local data frame [6 x 4]
## 
##    year month   day carrier
##   <int> <int> <int>   <chr>
## 1  2013     1     1      UA
## 2  2013     1     1      UA
## 3  2013     1     1      AA
## 4  2013     1     1      B6
## 5  2013     1     1      DL
## 6  2013     1     1      UA
left_join(f1, airlines, by = "carrier")
## Source: local data frame [336,776 x 5]
## 
##     year month   day carrier                     name
##    <int> <int> <int>   <chr>                    <chr>
## 1   2013     1     1      UA    United Air Lines Inc.
## 2   2013     1     1      UA    United Air Lines Inc.
## 3   2013     1     1      AA   American Airlines Inc.
## 4   2013     1     1      B6          JetBlue Airways
## 5   2013     1     1      DL     Delta Air Lines Inc.
## 6   2013     1     1      UA    United Air Lines Inc.
## 7   2013     1     1      B6          JetBlue Airways
## 8   2013     1     1      EV ExpressJet Airlines Inc.
## 9   2013     1     1      B6          JetBlue Airways
## 10  2013     1     1      AA   American Airlines Inc.
## ..   ...   ...   ...     ...                      ...

A aplicar lo aprendido con flights

flights

install.packages("nycflights13")
library(nycflights13)
data(package = "nycflights13")

airlines Airline names. airports Airport metadata flights Flights data planes Plane metadata. weather Hourly weather data