Autor: Álvaro Alonso Fernández
Departamento de Ciencias de la Vida
Universidad de Alcalá (España)

El análisis exploratorio es fundamental antes de comenzar cualquier análisis. Permite “ver” como son nuestros datos, posibles datos perdidos, normalidad o no, etc.


1 Nuestros datos

Vamos a realizar un análisis exploratorio de nuestros datos. Este es un trabajo previo a cualquier análisis estadísitico y nos permite ver como son nuestros datos, sus tendencias, los posibles valores perdidos, errores, etc. de nuestra base de datos.

Utilizaremos una matriz de datos sencilla con 11 variables y 20 observaciones, incluyendo variables categóricas y cuantitativas.

Autor: Álvaro Alonso Fernández

Videotutoriales con R y otros

2 Activar paquetes y obtener nuestros datos

Empezamos cargando los paquetes necesarios:

library(pastecs)
library(summarytools)
library(DataExplorer)

Ahora fijamos directorio y cargamos los datos que se encuentran en un fichero .csv:

#Fijamos directorio de trabajo
setwd(dir = "F:/R/MARKDOWN/analisisexploratorio")

#leemos el fichero de datos
datas<-read.csv("analisisexploratorio.csv", sep=";")
str(datas)
## 'data.frame':    20 obs. of  11 variables:
##  $ site  : chr  "pr1" "pr1" "pr5" "pr6" ...
##  $ pH    : num  5.6 6.5 2.3 6.5 5.6 8.9 8.9 8.6 8.4 7.5 ...
##  $ temp  : int  10 12 13 15 12 11 14 17 19 20 ...
##  $ bin   : int  0 1 1 1 1 0 0 0 0 1 ...
##  $ region: chr  "a" "a" "a" "d" ...
##  $ pais  : chr  "sp" "sp" "" "sp" ...
##  $ var1  : int  90 23 31 67 50 10 100 44 27 52 ...
##  $ var2  : int  59 57 53 53 58 57 50 55 51 57 ...
##  $ var3  : int  165 168 157 162 156 156 153 159 167 161 ...
##  $ var4  : int  0 0 2 2 2 45 5 5 89 87 ...
##  $ var5  : num  1 1 3 2.5 2.1 32 2 1 99 99 ...
head(datas)
##   site  pH temp bin region pais var1 var2 var3 var4 var5
## 1  pr1 5.6   10   0      a   sp   90   59  165    0  1.0
## 2  pr1 6.5   12   1      a   sp   23   57  168    0  1.0
## 3  pr5 2.3   13   1      a        31   53  157    2  3.0
## 4  pr6 6.5   15   1      d   sp   67   53  162    2  2.5
## 5  pr7 5.6   12   1      d   sp   50   58  156    2  2.1
## 6  pr8 8.9   11   0      d   sp   10   57  156   45 32.0

3 Análisis visual de nuestros datos

Vamos a comenzar con un análisis visual de nuestras variables.

¿Hay valores perdidos?

plot_missing(datas)

Sí, tenemos valores perdidos, en la variable temp y en la bin. Si son errores deberíamos revisar nuestros datos originales para poder corregirlo (oer ejemplo, al tomar ese dato estaba atento al móvil y no lo apunté al estadillo, ahora vienen las lamentaciones…..)

Momento en el que uno se da cuenta de los errores del estadillo original, mejor estar más atento en el campo, que luego tendremos problemas….


Un histograma y diagrama de densidades para cada una de nuestras variables cuantitativas. Podemos hacernos una primera idea de la distribución de nuestros datos.

plot_histogram(datas)

plot_density(datas)

¿Se correlacionan nuestras variables? Esto es importante a la hora por ejemplo de realizar un análisis multivariantes o a la hora de seleccionar las variables más influyentes.

plot_correlation(datas, type = 'continuous','Review.Date')
## Warning: Removed 26 rows containing missing values (geom_text).

Vemos que para las variables con valores perdidos no se ha hecho la correlación. Los colores más intensos muestran una mayor correlación entre las variables.

Para las variables categóricas utilizamos plot_bar:

plot_bar(datas)

4 Informe en html de nuestros datos

Todo lo anterior lo podemos resumir en un informe con la función create_report que nos genera un html con bastante información. Tal vez sea demasiada, pero puede ser útil en determinadas situaciones (por ejemplo una primera aproximación a un análisis de componentes principales).

Para ejecutarlo simplemente create_report (datas)

5 Análisis cuantitativo de nuestros datos

Vamos a comenzar con un análisis cuantitativo de nuestras variables. ¿Cuál es la media de cada variables? ¿su valor máximo? ¿el número de casos? etc.

tabla1<-stat.desc(datas)
tabla1
##          site          pH        temp        bin region pais         var1
## nbr.val    NA  20.0000000  18.0000000 19.0000000     NA   NA   20.0000000
## nbr.null   NA   0.0000000   0.0000000 10.0000000     NA   NA    0.0000000
## nbr.na     NA   0.0000000   2.0000000  1.0000000     NA   NA    0.0000000
## min        NA   2.3000000  10.0000000  0.0000000     NA   NA   10.0000000
## max        NA   8.9000000  20.0000000  1.0000000     NA   NA  100.0000000
## range      NA   6.6000000  10.0000000  1.0000000     NA   NA   90.0000000
## sum        NA 130.8000000 252.0000000  9.0000000     NA   NA 1003.0000000
## median     NA   6.5000000  13.5000000  0.0000000     NA   NA   46.5000000
## mean       NA   6.5400000  14.0000000  0.4736842     NA   NA   50.1500000
## SE.mean    NA   0.3610948   0.6365758  0.1176878     NA   NA    6.9020497
## CI.mean    NA   0.7557802   1.3430576  0.2472529     NA   NA   14.4461560
## var        NA   2.6077895   7.2941176  0.2631579     NA   NA  952.7657895
## std.dev    NA   1.6148652   2.7007624  0.5129892     NA   NA   30.8669044
## coef.var   NA   0.2469213   0.1929116  1.0829771     NA   NA    0.6154916
##                  var2         var3       var4       var5
## nbr.val  2.000000e+01 2.000000e+01  20.000000  20.000000
## nbr.null 0.000000e+00 0.000000e+00   2.000000   0.000000
## nbr.na   0.000000e+00 0.000000e+00   0.000000   0.000000
## min      5.000000e+01 1.510000e+02   0.000000   1.000000
## max      5.900000e+01 1.680000e+02  89.000000  99.000000
## range    9.000000e+00 1.700000e+01  89.000000  98.000000
## sum      1.082000e+03 3.198000e+03 497.000000 435.600000
## median   5.350000e+01 1.605000e+02  14.500000  12.000000
## mean     5.410000e+01 1.599000e+02  24.850000  21.780000
## SE.mean  7.287336e-01 1.121324e+00   6.215971   6.555892
## CI.mean  1.525257e+00 2.346959e+00  13.010176  13.721639
## var      1.062105e+01 2.514737e+01 772.765789 859.594316
## std.dev  3.258996e+00 5.014715e+00  27.798665  29.318839
## coef.var 6.024022e-02 3.136157e-02   1.118659   1.346136

Otra forma similar de hacer la tabla anterior:

summarytools::descr(datas)
## Non-numerical variable(s) ignored: site, region, pais
## Descriptive Statistics  
## datas  
## N: 20  
## 
##                       bin       pH    temp     var1     var2     var3     var4     var5
## ----------------- ------- -------- ------- -------- -------- -------- -------- --------
##              Mean    0.47     6.54   14.00    50.15    54.10   159.90    24.85    21.78
##           Std.Dev    0.51     1.61    2.70    30.87     3.26     5.01    27.80    29.32
##               Min    0.00     2.30   10.00    10.00    50.00   151.00     0.00     1.00
##                Q1    0.00     5.60   12.00    25.00    51.00   156.00     3.50     2.30
##            Median    0.00     6.50   13.50    46.50    53.50   160.50    14.50    12.00
##                Q3    1.00     7.50   15.00    85.00    57.00   163.00    34.50    25.50
##               Max    1.00     8.90   20.00   100.00    59.00   168.00    89.00    99.00
##               MAD    0.00     1.33    2.22    40.77     5.19     5.93    18.53    15.57
##               IQR    1.00     1.90    3.00    58.00     6.00     6.50    30.00    22.85
##                CV    1.08     0.25    0.19     0.62     0.06     0.03     1.12     1.35
##          Skewness    0.10    -0.59    0.69     0.22     0.05     0.03     1.16     1.75
##       SE.Skewness    0.52     0.51    0.54     0.51     0.51     0.51     0.51     0.51
##          Kurtosis   -2.09     0.32   -0.45    -1.50    -1.71    -1.12     0.11     1.94
##           N.Valid   19.00    20.00   18.00    20.00    20.00    20.00    20.00    20.00
##         Pct.Valid   95.00   100.00   90.00   100.00   100.00   100.00   100.00   100.00
summarytools::descr(datas, transpose = TRUE)#cambiamos orden
## Non-numerical variable(s) ignored: site, region, pais
## Descriptive Statistics  
## datas  
## N: 20  
## 
##                Mean   Std.Dev      Min       Q1   Median       Q3      Max     MAD     IQR     CV
## ---------- -------- --------- -------- -------- -------- -------- -------- ------- ------- ------
##        bin     0.47      0.51     0.00     0.00     0.00     1.00     1.00    0.00    1.00   1.08
##         pH     6.54      1.61     2.30     5.60     6.50     7.50     8.90    1.33    1.90   0.25
##       temp    14.00      2.70    10.00    12.00    13.50    15.00    20.00    2.22    3.00   0.19
##       var1    50.15     30.87    10.00    25.00    46.50    85.00   100.00   40.77   58.00   0.62
##       var2    54.10      3.26    50.00    51.00    53.50    57.00    59.00    5.19    6.00   0.06
##       var3   159.90      5.01   151.00   156.00   160.50   163.00   168.00    5.93    6.50   0.03
##       var4    24.85     27.80     0.00     3.50    14.50    34.50    89.00   18.53   30.00   1.12
##       var5    21.78     29.32     1.00     2.30    12.00    25.50    99.00   15.57   22.85   1.35
## 
## Table: Table continues below
## 
##  
## 
##              Skewness   SE.Skewness   Kurtosis   N.Valid   Pct.Valid
## ---------- ---------- ------------- ---------- --------- -----------
##        bin       0.10          0.52      -2.09     19.00       95.00
##         pH      -0.59          0.51       0.32     20.00      100.00
##       temp       0.69          0.54      -0.45     18.00       90.00
##       var1       0.22          0.51      -1.50     20.00      100.00
##       var2       0.05          0.51      -1.71     20.00      100.00
##       var3       0.03          0.51      -1.12     20.00      100.00
##       var4       1.16          0.51       0.11     20.00      100.00
##       var5       1.75          0.51       1.94     20.00      100.00
dfSummary(datas, style="multiline", split.tables = 100)
## Data Frame Summary  
## datas  
## Dimensions: 20 x 11  
## Duplicates: 0  
## 
## ------------------------------------------------------------------------------------------------------
## No   Variable      Stats / Values            Freqs (% of Valid)   Graph           Valid      Missing  
## ---- ------------- ------------------------- -------------------- --------------- ---------- ---------
## 1    site          1. pr1                    4 (20.0%)            IIII            20         0        
##      [character]   2. pr4                    6 (30.0%)            IIIIII          (100.0%)   (0.0%)   
##                    3. pr5                    2 (10.0%)            II                                  
##                    4. pr6                    2 (10.0%)            II                                  
##                    5. pr7                    2 (10.0%)            II                                  
##                    6. pr8                    2 (10.0%)            II                                  
##                    7. pr9                    2 (10.0%)            II                                  
## 
## 2    pH            Mean (sd) : 6.5 (1.6)     12 distinct values         :         20         0        
##      [numeric]     min < med < max:                                     : . . .   (100.0%)   (0.0%)   
##                    2.3 < 6.5 < 8.9                                      : : : :                       
##                    IQR (CV) : 1.9 (0.2)                                 : : : :                       
##                                                                   :   : : : : :                       
## 
## 3    temp          Mean (sd) : 14 (2.7)      10 : 1 ( 5.6%)       I               18         2        
##      [integer]     min < med < max:          11 : 1 ( 5.6%)       I               (90.0%)    (10.0%)  
##                    10 < 13.5 < 20            12 : 5 (27.8%)       IIIII                               
##                    IQR (CV) : 3 (0.2)        13 : 2 (11.1%)       II                                  
##                                              14 : 2 (11.1%)       II                                  
##                                              15 : 3 (16.7%)       III                                 
##                                              16 : 1 ( 5.6%)       I                                   
##                                              17 : 1 ( 5.6%)       I                                   
##                                              19 : 1 ( 5.6%)       I                                   
##                                              20 : 1 ( 5.6%)       I                                   
## 
## 4    bin           Min  : 0                  0 : 10 (52.6%)       IIIIIIIIII      19         1        
##      [integer]     Mean : 0.5                1 :  9 (47.4%)       IIIIIIIII       (95.0%)    (5.0%)   
##                    Max  : 1                                                                           
## 
## 5    region        1. a                      3 (15.0%)            III             20         0        
##      [character]   2. d                      3 (15.0%)            III             (100.0%)   (0.0%)   
##                    3. f                      5 (25.0%)            IIIII                               
##                    4. g                      6 (30.0%)            IIIIII                              
##                    5. h                      2 (10.0%)            II                                  
##                    6. j                      1 ( 5.0%)            I                                   
## 
## 6    pais          1. (Empty string)         3 (15.0%)            III             20         0        
##      [character]   2. fr                     4 (20.0%)            IIII            (100.0%)   (0.0%)   
##                    3. ge                     7 (35.0%)            IIIIIII                             
##                    4. sp                     6 (30.0%)            IIIIII                              
## 
## 7    var1          Mean (sd) : 50.1 (30.9)   19 distinct values           :       20         0        
##      [integer]     min < med < max:                               . : .   :       (100.0%)   (0.0%)   
##                    10 < 46.5 < 100                                : : :   :                           
##                    IQR (CV) : 58 (0.6)                            : : :   :                           
##                                                                   : : : : :                           
## 
## 8    var2          Mean (sd) : 54.1 (3.3)    50 : 4 (20.0%)       IIII            20         0        
##      [integer]     min < med < max:          51 : 2 (10.0%)       II              (100.0%)   (0.0%)   
##                    50 < 53.5 < 59            52 : 2 (10.0%)       II                                  
##                    IQR (CV) : 6 (0.1)        53 : 2 (10.0%)       II                                  
##                                              54 : 1 ( 5.0%)       I                                   
##                                              55 : 1 ( 5.0%)       I                                   
##                                              57 : 4 (20.0%)       IIII                                
##                                              58 : 3 (15.0%)       III                                 
##                                              59 : 1 ( 5.0%)       I                                   
## 
## 9    var3          Mean (sd) : 159.9 (5)     12 distinct values     : :           20         0        
##      [integer]     min < med < max:                                 : :           (100.0%)   (0.0%)   
##                    151 < 160.5 < 168                                : :                               
##                    IQR (CV) : 6.5 (0)                             : : : :                             
##                                                                   : : : :                             
## 
## 10   var4          Mean (sd) : 24.9 (27.8)   15 distinct values   :               20         0        
##      [integer]     min < med < max:                               :               (100.0%)   (0.0%)   
##                    0 < 14.5 < 89                                  :                                   
##                    IQR (CV) : 30 (1.1)                            : .                                 
##                                                                   : : . . :                           
## 
## 11   var5          Mean (sd) : 21.8 (29.3)   15 distinct values   :               20         0        
##      [numeric]     min < med < max:                               :               (100.0%)   (0.0%)   
##                    1 < 12 < 99                                    :                                   
##                    IQR (CV) : 22.9 (1.3)                          : .                                 
##                                                                   : : .   :                           
## ------------------------------------------------------------------------------------------------------

6 Resumen

Cono todo lo anterior nos podemos hacer una primera idea de como son nuestros datos y los posible errores en los mismos. También tenemos una primera idea de sus distribuciones (por medio de los histogramas) y de los valores perdidos o los posibles outliers. Sin este trabajo previo no debemos realizar un análisis estadístico, ya que desconocemos la naturaleza de nuestras variables y su posible interpretación.

7 CRÉDITOS

Álvaro Alonso Fernández

Departamento de Ciencias de la Vida

Universidad de Alcalá (España)

Ahora la vida se ve mucho mejor

Ahora la vida se ve mucho mejor