Torre de Babel

Cómo realizar análisis exploratorio de datos con R

by Francisco Charte.

En este tutorial vamos a trabajar con uno de los conjuntos de datos de ejemplo que incorpora R: iris. En él se facilita información de distintas familias de lirios (flores). Veamos cómo explorar ese conjunto de datos para obtener una visión general de su contenido.

Estructura del conjunto de datos

str(iris)  # Resumen de la estructura
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
ncol(iris) # Cantidad de columnas
## [1] 5
nrow(iris) # Cantidad de filas
## [1] 150
colnames(iris) # Nombres de las columnas
## [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width" 
## [5] "Species"
head(iris) # Ver algunas filas del inicio del conjunto de datos
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
tail(iris) # Ver algunas filas del final del conjunto de datos
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 145          6.7         3.3          5.7         2.5 virginica
## 146          6.7         3.0          5.2         2.3 virginica
## 147          6.3         2.5          5.0         1.9 virginica
## 148          6.5         3.0          5.2         2.0 virginica
## 149          6.2         3.4          5.4         2.3 virginica
## 150          5.9         3.0          5.1         1.8 virginica
iris$Sepal.Width # Ver todos los valores de una de las columnas
##   [1] 3.5 3.0 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 3.7 3.4 3.0 3.0 4.0 4.4 3.9
##  [18] 3.5 3.8 3.8 3.4 3.7 3.6 3.3 3.4 3.0 3.4 3.5 3.4 3.2 3.1 3.4 4.1 4.2
##  [35] 3.1 3.2 3.5 3.6 3.0 3.4 3.5 2.3 3.2 3.5 3.8 3.0 3.8 3.2 3.7 3.3 3.2
##  [52] 3.2 3.1 2.3 2.8 2.8 3.3 2.4 2.9 2.7 2.0 3.0 2.2 2.9 2.9 3.1 3.0 2.7
##  [69] 2.2 2.5 3.2 2.8 2.5 2.8 2.9 3.0 2.8 3.0 2.9 2.6 2.4 2.4 2.7 2.7 3.0
##  [86] 3.4 3.1 2.3 3.0 2.5 2.6 3.0 2.6 2.3 2.7 3.0 2.9 2.9 2.5 2.8 3.3 2.7
## [103] 3.0 2.9 3.0 3.0 2.5 2.9 2.5 3.6 3.2 2.7 3.0 2.5 2.8 3.2 3.0 3.8 2.6
## [120] 2.2 3.2 2.8 2.8 2.7 3.3 3.2 2.8 3.0 2.8 3.0 2.8 3.8 2.8 2.8 2.6 3.0
## [137] 3.4 3.1 3.0 3.1 3.1 3.1 2.7 3.2 3.3 3.0 2.5 3.0 3.4 3.0

Obtención de estadísticos básicos

min(iris$Sepal.Width) # Valor mínimo de Sepal.Width
## [1] 2
max(iris$Sepal.Width) # Valor máximo de de Sepal.Width
## [1] 4.4
mean(iris$Sepal.Width) # Media de Sepal.Width
## [1] 3.057333
median(iris$Sepal.Width) # Mediana de Sepal.Width
## [1] 3
var(iris$Sepal.Width) # Varianza de Sepal.Width
## [1] 0.1899794
sd(iris$Sepal.Width) # Desviación de Sepal.Width
## [1] 0.4358663

Estadística descriptiva de todo el conjunto de datos

summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  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  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 

Cálculo del coeficiente de correlación

cor(iris$Petal.Length, iris$Petal.Width) # Pearson entre Petal.Length y Petal.Width
## [1] 0.9628654

Tabla de contingencia de dos variables

table(iris$Petal.Width, iris$Species)
##      
##       setosa versicolor virginica
##   0.1      5          0         0
##   0.2     29          0         0
##   0.3      7          0         0
##   0.4      7          0         0
##   0.5      1          0         0
##   0.6      1          0         0
##   1        0          7         0
##   1.1      0          3         0
##   1.2      0          5         0
##   1.3      0         13         0
##   1.4      0          7         1
##   1.5      0         10         2
##   1.6      0          3         1
##   1.7      0          1         1
##   1.8      0          1        11
##   1.9      0          0         5
##   2        0          0         6
##   2.1      0          0         6
##   2.2      0          0         3
##   2.3      0          0         8
##   2.4      0          0         3
##   2.5      0          0         3