1 Estadística Conceptos básicos

Diagrama 1

El anterior diagrama muestra las dos grandes áreas de la estadística clásica

  • La estadística descriptiva: Se refiere a todas las herramientas de recolección, procesamiento, visualización, análisis y presentación de un conjunto de datos sin generalizar o ir mas allá que ese conjunto de datos.Por ejemplo, en un departamento de recursos humanos que se analiza la totalidad de la rotación de personal.Los resultados concluídos solamente son válidos para esa empresa en un espacio y tiempo dados y especificados.

  • La estadística inferencial: Su contraparte, la estadística inferencial, puede generalizar a través de una muestra de los datos ( obtenida con procedimientos rigurosos) a un “universo” o “población” de mayor tamaño a la cuál representa.Siguiendo el mismo ejemplo, una empresa de recursos humanos, puede tomar una muestra de empresas para analizar la situación de la rotación en empresas de zona Franca.Esta población también debe ser definida en tiempo y espacio para poder conocer el alcance del análisis.

Diagrama 2

Diagrama 3

A su vez, cuando se realiza cualesquiera de estos dos tipos de estadística, un fin último es poder agregar los datos recolectados en medidas resumen de dos tipos:

  • Medidas de Tendencia Central: Estas medidas tienen el objetivo de conocer los valores centrales en los cuáles los datos tienden a concentrarse, usualmente representados por el valor promedio o media, la mediana, la moda y los percentiles.

  • Medidas de Variabilidad: La variabilidad o varianza es una de las razones de ser de la estadística.Ya que cuando se realizan mediciones, por la característica de todos los fenómenos de la naturaleza, existen variaciones en las observaciones.Siguiendo el ejemplo de la rotación, no existe la posibilidad de encontrar dos empresas iguales en cuanto al tiempo que todos los empleados estuvieron en dichas empresas.Para conocer que tanta variabilidad ocurre en un fenómeno, se mide la varianza y la desviación estándar.

Vamos a conocer más a detalle estas medidas más adelante.

2 Paquetes estadísticos básicos

En R, existen miles de paquetes que pueden ser instalados desde el repositorio CRAN.Estos paquetes amplian la funcionalidad básica del lenguaje, agregando funciones específicas de miles de campos científicos, tecnológicos, académicos o de negocios.

[En este link] https://support.rstudio.com/hc/en-us/articles/201057987-Quick-list-of-useful-R-packages se presenta un listado curado de paquetes básicos para el análisis estadístico que serán (o podrían ser) utilizados a lo largo del curso.

Vamos a instalar unos cuantos:

# Instala 3 paquetes para manipulación de datos, visualización de datos y análisis exploratorio, respectivamente.
install.packages('dplyr');install.packages('ggplot'); install.packages('dlookr')

Posterior a instalarlos, debemos cargarlos en el ambiente con la función library(<nombrePaquete>) :

library(dplyr)

No obstante, a continuación una forma mas eficiente y elegante de realizar este proceso, en el que se chequea si el paquete esta instalado o no; si el paquete no esta instalado se instala y carga y si el paquete ya esta instalado solo se carga:

##Primero se crea un objeto con los paquetes que se desean instalar/cargar

paquetes<- c("ggplot2","lubridate")

##Aplica un ciclo iterativo para comprobar el estado de cada paquete e instalar si corresponde

 for (i in paquetes){
   if (i %in% installed.packages()[,"Package"] == FALSE){
     install.packages(i,repos="http://cran.rstudio.com/");
   }
 }

#Carga los paquetes sin generar mensajes o warnings

sapply(paquetes,library,character.only=TRUE,quietly=T)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:dplyr':
## 
##     intersect, setdiff, union
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
## $ggplot2
##  [1] "ggplot2"    "dplyr"      "kableExtra" "stats"      "graphics"  
##  [6] "grDevices"  "utils"      "datasets"   "methods"    "base"      
## 
## $lubridate
##  [1] "lubridate"  "ggplot2"    "dplyr"      "kableExtra" "stats"     
##  [6] "graphics"   "grDevices"  "utils"      "datasets"   "methods"   
## [11] "base"

3 Carga de archivos

Para proceder con la práctica de los contenidos meramente estadísticos ya previamente repasados, vamos a ver un procedimiento para cargar un archivo .csv

Si un archivo de texto esta separado por “,” o “;”, usualmente se lee como un archivo de extensión .csv.Para esto se utiliza la función read.csv.

En este primer caso lo vamos a hacer desde un archivo local.Para esto, primero debemos “setear” el directorio de trabajo o donde se encuentra el archivo, para poder leerlo.

Puede obtener los datos actualizados al día de hoy, corriendo el siguiente script de R

# Set wd

# Se debe poner un string con el path en donde se encuentra el archivo

wd <- "/cloud/project/Clase1"



# Esta instrucción indica que el string wd con el path sea el nuevo Working Directory

setwd(wd)

# Crea un nuevo objeto en R, leyendo el archivo .csv ubicado en el WD.
df <- read.csv("covidCantones.csv",sep = ",")

#Visualizar los datos(20 primeros registros)

head(df,20)
##     X Province              Canton Date.first.confirmed Confirmed Active Deaths
## 1   1 San José            San José       March 15, 2020     14243   4099    206
## 2   2 San José              Escazú       March 15, 2020      1321    144     21
## 3   3 San José        Desamparados       March 15, 2020      5715   3539     84
## 4   4 San José            Puriscal       March 27, 2020       405    104      6
## 5   5 San José             Tarrazú       March 27, 2020        25      8      0
## 6   6 San José              Aserrí       March 22, 2020      1083    636      6
## 7   7 San José                Mora       March 27, 2020       496    129      8
## 8   8 San José          Goicoechea       March 18, 2020      2587    953     41
## 9   9 San José           Santa Ana       March 15, 2020      1341    347     13
## 10 10 San José          Alajuelita       March 28, 2020      3694   2231     43
## 11 11 San José Vázquez de Coronado       March 20, 2020      1168    389     15
## 12 12 San José              Acosta        June 17, 2020       457    183      2
## 13 13 San José               Tibás       March 15, 2020      1877   1045     37
## 14 14 San José             Moravia       March 18, 2020       802    239     11
## 15 15 San José       Montes de Oca       March 20, 2020       816    354     10
## 16 16 San José          Turrubares       March 28, 2020        45     19      0
## 17 17 San José                Dota      August 12, 2020         9      2      0
## 18 18 San José          Curridabat       March 17, 2020      1942    736     28
## 19 19 San José       Pérez Zeledón       March 15, 2020       283    177      1
## 20 20 San José  León Cortés Castro        July 10, 2020        41      6      0
##    Recovered
## 1       9938
## 2       1156
## 3       2092
## 4        295
## 5         17
## 6        441
## 7        359
## 8       1593
## 9        981
## 10      1420
## 11       764
## 12       272
## 13       795
## 14       552
## 15       452
## 16        26
## 17         7
## 18      1178
## 19       105
## 20        35

Para mas detalle en como cargar archivos en R, se puede referir a este [link].https://rpubs.com/Felipe1986/Clase4

4 Obtención de muestras aleatorias

Entrando en calor, vamos a proceder a utilizar algunos de los paquetes ya mencionados, para practicar los conceptos estadísticos estudiados.Para empezar, utilizaremos la sintaxis del paquete ´dplyr´ para obtener una muestra.Recordemos que este paquete:

  • es muy potente para la manipulación de datos, contando con una gran cantidad de funciones de diversa índole
  • y una sintaxis fácil de leer
  • y que cuenta con la característica de que se asemeja a SQL.
library(dplyr)

dfMuestra <- df %>%  # >%> se puede leer como " y entonces lo siguiente es..."
  sample_n(size = 10)

dfMuestra
##     X   Province        Canton Date.first.confirmed Confirmed Active Deaths
## 1  37    Cartago       Cartago       March 17, 2020      1206    549     12
## 2  41    Cartago     Turrialba        April 7, 2020       224     86      4
## 3  62 Guanacaste       Tilarán       March 26, 2020        67     17      1
## 4  76 Puntarenas      Garabito       March 25, 2020       317    170      6
## 5  48    Heredia Santa Bárbara       March 18, 2020       539    279      0
## 6  29   Alajuela       Orotina       March 25, 2020       166     54      1
## 7  46    Heredia         Barva       March 15, 2020       731    285      9
## 8  71 Puntarenas        Quepos         May 10, 2020       284    110      6
## 9  24   Alajuela     San Mateo         June 2, 2020        22     11      0
## 10 19   San José Pérez Zeledón       March 15, 2020       283    177      1
##    Recovered
## 1        645
## 2        134
## 3         49
## 4        141
## 5        260
## 6        111
## 7        437
## 8        168
## 9         11
## 10       105

Si queremos visualizar las tablas de una manera más estetica, podemos utilizar el paquete ´kabbleExtra´ para tablas:

kable(head(dfMuestra,10)) %>%
  kable_styling(bootstrap_options = c("striped", "hover"))%>%
   scroll_box(width = "900px", height = "500px")
X Province Canton Date.first.confirmed Confirmed Active Deaths Recovered
37 Cartago Cartago March 17, 2020 1206 549 12 645
41 Cartago Turrialba April 7, 2020 224 86 4 134
62 Guanacaste Tilarán March 26, 2020 67 17 1 49
76 Puntarenas Garabito March 25, 2020 317 170 6 141
48 Heredia Santa Bárbara March 18, 2020 539 279 0 260
29 Alajuela Orotina March 25, 2020 166 54 1 111
46 Heredia Barva March 15, 2020 731 285 9 437
71 Puntarenas Quepos May 10, 2020 284 110 6 168
24 Alajuela San Mateo June 2, 2020 22 11 0 11
19 San José Pérez Zeledón March 15, 2020 283 177 1 105

5 Medidas de tendencia central

Como ya se mencionó anteriormente, existen varias medidas de tendencia central.La siguiente imagen ilustra algunas de ellas:

Diagrama 4

  • Media: Es el valor promedio de los datos.Se obtiene sumando todos los datos y dividiendolo entre la cantidad de registros.A continuación vamos a obtener la media del conjunto de datos de COVID de cantones que cargamos previamente
# Cálculo manual

#Media de casos recuperados

MediaA <-sum(df$Recovered,na.rm = TRUE) / nrow(df)

#Mediante función

MediaB<- mean(df$Recovered,na.rm = TRUE) # na.rm = TRUE esta instrucci[on es para que no tome en cuenta los valores nulos del dataset.

MediaA;MediaB
## [1] 484.4024
## [1] 484.4024
  • Mediana: La mediana es el valor que se encuentra exactamente en el 50% de los datos.Es decir, 50% de las observaciones son menores a ese valor y 50% son mayores a ese valor.

-Percentiles: Para generalizar la mediana, el percentil, es el valor en donde se encuentra el n% de los datos.Donde n es un número que va del 1 al 99.Por ejemplo, el percentil 10, indica que un 10% de las observaciones son menores a ese valor y un 90% son mayores a ese valor.

#Mediana de casos

MedianaCasos <-median(x = df$Recovered,na.rm = TRUE) 

MedianaCasos
## [1] 191
# Percentiles

Percentil90<-  quantile(x = df$Recovered,probs =  .9,na.rm = TRUE) 

Percentil90
##    90% 
## 1138.5

De esta manera, el 50% de los cantones tienen menos de 191 y el otro 50% tienen mas de 191.

Por otro parte, el 90% de los cantones tienen menos de 1138.5 y solo un 10% tiene más de 1138.5

Para resumir los percentiles, se utilizan algunos terminos convenientes:

Percentil Nùmero Descripción
Decil 1-10 Divide los datos en 10 grupos.
Cuartil Q1-Q2-Q3 Cuartill 1 (Percentil 25), Cuartil 2 (Percentil 50), Cuartil 3 (Percentil 75)
Quintil Q1-Q2-Q3-Q4 Quintil 1 (Percentil 20),Quintil 2 (Percentil 40), Quintil 3 (Percentil 60), Quintil 4 (Percentil 80)

Este es un ejemplo gráfico de como se dividen los cuartiles:

Diagrama 4

Ahora, vamos a calcular los quintiles:

#Quintiles

quintiles90<-  quantile(x = df$Deaths,probs = c(.2,.4,.6,.8),na.rm = TRUE) 

quintiles90
##  20%  40%  60%  80% 
##  1.0  3.0  6.0 11.8