class: center, middle, titular background-size: contain <img style="border-radius: 50%;" src="img/masapp.jpg" width="250px"/> # Capítulo 3: Estadística descriptiva ## **CAPACITACIÓN** #### LINDA CABRERA ORELLANA<br>FERNANDA JURADO MANTILLA #### Noviembre, 2022 --- # Contenido del Capítulo 3 - Bases de Estadística - Estadística Descriptiva Univariada * Medidas de tendencia central * Medidas de posición * Medidas de dispersión * Frecuencias * Distribución de frecuencias - Estadística Descriptiva Multivariada * Tablas de contingencia * Gráfico de interacción * Coeficiente de correlación de Pearson * Matriz de correlación --- ## Paquetes a utilizar *
`library(tidyverse)` *
`library(readr)` *
`library(dplyr)` *
`library(ggplot2)` *
`library(magrittr)` *
`library(modeest)` *
`library(fdth)` *
`library(GGally)` --- class: middle, center, inverse
# Bases de Estadística --- background-color: var(--azul-claro) class: middle, center, inverse <img style="border-radius: 50%;" src="https://openseauserdata.com/files/8a93e86385d6b61dc04ba0b34e393246.jpg" width="350px"/> > "No entiendes realmente algo a menos que seas capaz de explicarlo." > <footer>ALBERT EINSTEIN</footer> --- ## Análisis estadístico de datos <br> > "La estadística estudia los métodos científicos para recoger, organizar, resumir y analizar datos así como para obtener conclusiones válidas y tomar decisiones razonables basadas en tal análisis." > <footer>Murray y Spiegel</footer> <br> .pull-left[ **Estadística descriptiva o deductiva** Conjunto de técnicas que se utilizan con el objetivo de resumir, representar y explicar los datos concretos de los que disponemos. ] .pull-right[ **Estadística inferencial o inductiva** Conjunto de técnicas que se utilizan con el objetivo de deducir (inferir), a partir de los datos, información significativa sobre el total de la población o de las poblaciones de interés. ] --- ## Estadística Descriptiva Según el número de variables que atiende el análisis podemos dividir la Estadística descriptiva en Univariada y Multivariada. **Estadística Descriptiva Univariada:** incluye todas las técnicas que hacen referencia a la descripción de una sola variable. **Estadística Descriptiva Multivariada:** incluye todas las técnicas que hacen referencia a la descripción de dos o más variables. --- class: middle, center, inverse
# Estadística Descriptiva Univariada --- ## Medidas de Tendencia Central Una medida de tendencia central es un valor que indica el centro de un conjunto de elementos para describir características de centralidad. | Estadístico | ¿Qué calcula? | Función en R | |:----------------------|:---------------------|----------------------:| | Media aritmética | El promedio de los datos. La suma de los elementos dividida por el número de elementos | `mean(x, na.rm=TRUE)` | | Media acotada | El promedio de los datos removiendo un porcentaje de valores extremos | `mean(x, na.rm= TRUE, trim=value)` | | Mediana | Punto medio de los valores ordenados de menor a mayor o de mayor a menor representando el 50% de los datos | `median(x, na.rm= TRUE)` | | Moda | Valor que aparece con mayor frecuencia | `mlv(x)` | --- ## Medidas de Tendencia Central Calcular las medidas de Tendencia central para la data de `ventas` de la columna del `Total de Ventas`: ```r ## Media aritmética mean(ventas$TOTAL_VENTAS, na.rm = TRUE) ## [1] 2728614 ``` ```r ## Media acotada mean(ventas$TOTAL_VENTAS, na.rm = TRUE, trim=0.01) ## [1] 730742.7 ``` ```r ## Mediana median(ventas$TOTAL_VENTAS, na.rm = TRUE) ## [1] 12639.9 ``` --- ## Medidas de Tendencia Central Calcular las medidas de Tendencia central para la data de `ventas` de la columna del `Total de Ventas`: ```r ## Cargar paquete library(modeest) ## Registered S3 method overwritten by 'rmutil': ## method from ## print.response httr ## Moda mlv(ventas$TOTAL_VENTAS) ## [1] 2130.266 ``` --- ## Medidas de Posición Una medida de posición es el valor que permite dividir el conjunto de datos en partes porcentuales iguales y se usan para clasificar una observación dentro de una población o muestra. | Estadístico | ¿Qué calcula? | Función en R | |:----------------------|:---------------------|----------------------:| | Mínimo | El valor menor de todo el conjunto de datos | `min(x, na.rm=TRUE)` | | Máximo | El valor mayor de todo el conjunto de datos | `max(x, na.rm= TRUE)` | | Cuartiles | Dividen al conjunto de observaciones en **4** partes iguales | `quantile(x , probs = 0.75)` | | Deciles | Dividen al conjunto de observaciones en **10** partes iguales | `quantile(x , probs = 0.3)` | | Centiles | Dividen al conjunto de observaciones en **100** partes iguales | `quantile(x, probs = 0.72)` | --- ## Medidas de Posición Entendiendo las medidas de posición: <img src="img/posicion.png" width="100%" style="display: block; margin: auto;" /> --- ## Medidas de Posición Calcular las medidas de Posición para la data de `ventas` de la columna del `Total de Ventas`: ```r ## Mínimo min(ventas$TOTAL_VENTAS, na.rm = TRUE) ## [1] 0 ``` ```r ## Máximo max(ventas$TOTAL_VENTAS, na.rm = TRUE) ## [1] 1940601690 ``` ```r ## Cuartiles quantile(ventas$TOTAL_VENTAS, probs = c(0.25, 0.50, 0.75)) ## 25% 50% 75% ## 390.0 12639.9 145504.5 ``` --- ## Medidas de Posición Calcular las medidas de Posición para la data de `ventas` de la columna del `Total de Ventas`: ```r ## para valores muy grandes options(scipen=3) ## Deciles quantile(ventas$TOTAL_VENTAS, probs = seq(from = 0.1, to = 1, by = 0.1)) ## 10% 20% 30% 40% 50% ## 0.00 10.80 1035.00 4325.87 12639.90 ## 60% 70% 80% 90% 100% ## 32250.67 85341.63 264297.07 1349457.88 1940601689.88 ``` ```r ## Centil 22% y 67% quantile(ventas$TOTAL_VENTAS, probs = c(0.22, 0.67)) ## 22% 67% ## 108.55 63226.62 ``` --- ## Medidas de Dispersión Según la definición de la media, ésta no facilita información de cómo están situados todos los casos respecto de ella, pueden coincidir todos con la media y entonces no sería una variable, sería una constante, pueden estar próximos a la media y entonces ésta se consideraría representativa o pueden estar muy alejados. Con las **medidas de dispersión** se obtiene información de cómo están situados los casos respecto a un estadístico de tendencia central, normalmente, la _media_. <br> | Estadístico | ¿Qué calcula? | Función en R | |:----------------------|:---------------------|----------------------:| | Varianza | Mide la distancia de todos los casos respecto a la media aritmética | `var(x, na.rm=TRUE)` | | Desviación Estándar | Raíz cuadrada de la varianza | `sd(x, na.rm= TRUE)` | | Rango Intercuartil | Distancia entre el cuartil **1** y **3** | `IQR(x , na.rm=TRUE)` | | Rango | Diferencia entre máximo y mínimo valor | `diff(range(x , na.rm=TRUE))` | --- ## Medidas de Dispersión Calcular las medidas de Dispersión para la data de `ventas` de la columna del `Total de Ventas`: ```r ## Varianza var(ventas$TOTAL_VENTAS, na.rm = TRUE) ## [1] 1.322621e+15 ``` ```r ## Desviación Estándar sd(ventas$TOTAL_VENTAS, na.rm = TRUE) ## [1] 36367852 ``` ```r ## Rango Intercuartil IQR(ventas$TOTAL_VENTAS, na.rm = TRUE) ## [1] 145114.5 ``` ```r ## Rango diff(range(ventas$TOTAL_VENTAS, na.rm = TRUE)) ## [1] 1940601690 ``` --- ## Frecuencias Para obtener las frecuencias simples de una variable (cuantitativa o cualitativa) puede utilizarse la función `table()` en caso de frecuencias absolutas y `prop.table()` para las relativas. Es importante mencionar que la función `prop.table()` no se ejecuta en forma directa sobre la variable, sino sobre una tabla de frecuencias absolutas creada previamente mediante la función `table()`. ```r ## Frecuencias absolutas de observaciones por provincia table(ventas$provincia) ## Frecuencias relativas de observaciones por provincia round(prop.table(table(ventas$provincia)),2) ``` --- ## Distribución de frecuencias Para distribuciones de variables continuas puede utilizarse la función `fdt()` de la librería `fdth`. Los argumentos principales son: * `x` el conjunto de datos, * `k` el número de clases o intervalos, * `star` el límite inferior de la primera clase o intervalo de la distribución, * `end` el límite superior de la última clase o intervalo de la distribución, * `h` es el ancho del intervalo de la distribución. * `breaks` método utilizado para determinar el número de clases. Estos métodos son Sturges, Scott o FD, * `right` define los intervalos de clase abiertos en el límite superior (por defecto: right = FALSE). --- ## Distribución de frecuencias Entendiendo las distribuciones de frecuencias: <img src="img/frec.png" width="70%" style="display: block; margin: auto;" /> --- ## Distribución de frecuencias Obtenga la distribucíon de transacciones de `ventas` según las ventas totales que inicie en `\(0\)`, finalice en `\(1800000000\)` y el ancho de cada intervalo sea `\(150000000\)`. ```r library(fdth) ``` ```r dist <- fdt(ventas$TOTAL_VENTAS, start = 0, end = 1800000000, h = 150000000) dist ## Class limits f rf rf(%) cf cf(%) ## [0,150000000) 36171 1 99.72 36171 99.72 ## [150000000,300000000) 52 0 0.14 36223 99.87 ## [300000000,450000000) 15 0 0.04 36238 99.91 ## [450000000,600000000) 6 0 0.02 36244 99.93 ## [600000000,750000000) 5 0 0.01 36249 99.94 ## [750000000,900000000) 9 0 0.02 36258 99.96 ## [900000000,1050000000) 2 0 0.01 36260 99.97 ## [1050000000,1200000000) 3 0 0.01 36263 99.98 ## [1200000000,1350000000) 1 0 0.00 36264 99.98 ## [1350000000,1500000000) 0 0 0.00 36264 99.98 ## [1500000000,1650000000) 0 0 0.00 36264 99.98 ## [1650000000,1800000000) 1 0 0.00 36265 99.98 ``` --- ## Distribución de frecuencias Luego de eliminar outliers. Obtenga la distribucíon de transacciones de `ventas` según las ventas totales que tenga 4 intervalos de clase. ```r dist <- fdt(ventas$TOTAL_VENTAS, k=4) dist ## Class limits f rf rf(%) cf cf(%) ## [0,221595695.52) 33382 1 99.81 33382 99.81 ## [221595695.52,443191391.04) 42 0 0.13 33424 99.94 ## [443191391.04,664787086.559) 8 0 0.02 33432 99.96 ## [664787086.559,886382782.079) 13 0 0.04 33445 100.00 ``` --- class: middle, center, inverse
# Estadística Descriptiva Multivariada --- ## Tablas de Contingencia Es una tabulación cruzada que muestra la distribución de frecuencia de dos variables categóricas de interés (mide la ocurrencia). Entendiendo las tablas de contingencia: <img src="img/contingencia.png" width="100%" style="display: block; margin: auto;" /> --- ## Tablas de Contingencia Haremos una pre-selección de los datos para ejemplificar una tabla de contingencia, limitando a las provincias de Pichincha, Guayas y Azuay. ```r ## Pre-selección de datos tablacont <- ventas %>% filter(provincia=="PICHINCHA" | provincia=="GUAYAS" | provincia== "AZUAY") ``` Construimos la tabla de contingencia con `table()`. ```r ## Tabla de contingencia - Provincia table(tablacont$provincia, tablacont$mes) ## ## Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic ## AZUAY 231 231 227 222 222 246 224 218 217 0 0 0 ## GUAYAS 439 441 440 435 434 459 430 419 412 0 0 0 ## PICHINCHA 157 154 152 153 154 159 152 149 149 0 0 0 ``` --- ## Tablas de Contingencia Construimos la tabla de contingencia con `table()` y agregamos los márgenes con `addmargins()`. ```r ## Tabla de contingencia – Con los márgenes tb_tablacont <- table(tablacont$provincia, tablacont$mes) tb_tablacont ## ## Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic ## AZUAY 231 231 227 222 222 246 224 218 217 0 0 0 ## GUAYAS 439 441 440 435 434 459 430 419 412 0 0 0 ## PICHINCHA 157 154 152 153 154 159 152 149 149 0 0 0 addmargins(tb_tablacont) ## ## Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic Sum ## AZUAY 231 231 227 222 222 246 224 218 217 0 0 0 2038 ## GUAYAS 439 441 440 435 434 459 430 419 412 0 0 0 3909 ## PICHINCHA 157 154 152 153 154 159 152 149 149 0 0 0 1379 ## Sum 827 826 819 810 810 864 806 786 778 0 0 0 7326 ``` --- ## Tablas de Contingencia Construimos la tabla de contingencia con porcentajes con `prop.table()` y agregamos los márgenes con `addmargins()`. ```r ## Tabla de contingencia - Porcentajes tb_tablacont_rel <- prop.table(tb_tablacont) round(addmargins(tb_tablacont_rel)*100,2) ## ## Ene Feb Mar Abr May Jun Jul Ago Sep ## AZUAY 3.15 3.15 3.10 3.03 3.03 3.36 3.06 2.98 2.96 ## GUAYAS 5.99 6.02 6.01 5.94 5.92 6.27 5.87 5.72 5.62 ## PICHINCHA 2.14 2.10 2.07 2.09 2.10 2.17 2.07 2.03 2.03 ## Sum 11.29 11.27 11.18 11.06 11.06 11.79 11.00 10.73 10.62 ## ## Oct Nov Dic Sum ## AZUAY 0.00 0.00 0.00 27.82 ## GUAYAS 0.00 0.00 0.00 53.36 ## PICHINCHA 0.00 0.00 0.00 18.82 ## Sum 0.00 0.00 0.00 100.00 ``` --- ## Gráfico de interacción .panelset[ .panel[.panel-name[¿Qué es?] Permite relacionar dos variables cualitativas y una cuantitativa. Los **gráficos de interacción** sirven para comparar las medias en el modelo. Un gráfico de interacción es un gráfico de líneas en el que cada punto indica la media estimada de una variable pudiéndose observar cómo se relacionan con dos variables cualitativas. ] .panel[.panel-name[Código] ```r ## Pre-selecciono mi data ventas graf_int <- ventas %>% filter(sector=="ACTIVIDADES FINANCIERAS Y DE SEGUROS." | sector=="INDUSTRIAS MANUFACTURERAS." | sector=="COMERCIO AL POR MAYOR Y AL POR MENOR; REPARACIÓN DE VEHÍCULOS AUTOMOTORES Y MOTOCICLETAS.") ``` ```r ## Gráfico de interacción with(graf_int, interaction.plot(mes, sector, TOTAL_VENTAS)) ``` ] .panel[.panel-name[Gráfico de interacción] ![](3_estadistica_descriptiva_files/figure-html/gi3-1.png)<!-- --> ]] --- ## Gráfico de interacción .panelset[ .panel[.panel-name[Código] ```r ## Modifico la leyenda graf_int <- graf_int %>% mutate(sector2 = case_when(sector=="ACTIVIDADES FINANCIERAS Y DE SEGUROS." ~ "Act. Financieras y Seguros", sector=="INDUSTRIAS MANUFACTURERAS." ~ "Ind. Manufactureras", sector=="COMERCIO AL POR MAYOR Y AL POR MENOR; REPARACIÓN DE VEHÍCULOS AUTOMOTORES Y MOTOCICLETAS." ~ "Comercio al por mayor y menor")) ``` ```r ## Gráfico de interacción with(graf_int, interaction.plot(mes, sector2, TOTAL_VENTAS, xlab = "2022", ylab = "Promedio de ventas tarifa 12%", trace.label = "Sector económico", col = c("tomato3", "violetred", "turquoise"), lwd = 3, legend = T), legend(xjust = 1, yjust = 1) ) ``` ] .panel[.panel-name[Gráfico de interacción] ![](3_estadistica_descriptiva_files/figure-html/gi6-1.png)<!-- --> ]] --- ## Coeficiente de Correlación de Pearson El coeficiente de correlación de Pearson es un índice que puede utilizarse para medir el grado de relación de dos variables siempre y cuando ambas sean cuantitativas y continuas. El valor del índice de correlación denotado por `\(r_{xy}\)` varía en el intervalo `\([-1,1]\)`. El signo indica el sentido de la relación: - Si `\(r=1\)`, existe una correlación positiva perfecta. El índice indica una dependencia total entre las dos variables denominada relación directa: cuando una de ellas aumenta, la otra también lo hace en proporción constante. - Si `\(0<r<1\)` entonces existe una correlación positiva. - Si `\(r=0\)` entonces no existe relación lineal pero esto no necesariamente implica que las variables son independientes: pueden existir todavía relaciones no lineales entre las dos variables. - Si `\(-1<r<0\)`, existe una correlación negativa. - Si `\(r=-1\)`, existe una correlación negativa perfecta. El índice indica una dependencia total entre las dos variables llamada relación opuesta: cuando una de ellas aumenta, la otra cambia su signo en proporción constante. --- ## Coeficiente de Correlación de Pearson <br> <img src="img/pearson.png" width="100%" style="display: block; margin: auto;" /> --- ## Coeficiente de Correlación de Pearson Calculamos la correlación entre dos variables numéricas continuas con `cor()`. ```r ## Coeficiente de Correlacion cor(ventas$TOTAL_VENTAS, ventas$TOTAL_COMPRAS) ## [1] 0.8157537 ``` Se puede ver que existe una alta correlación positiva entre lo reportado por concepto de ventas y las compras, ojo, **esto no implica que mayores ventas causa mayores compras**. --- ## Coeficiente de Correlación de Pearson .panelset[ .panel[.panel-name[Código] Gráfico de dispersión para explorar relación entre variables cuantitativa ```r ## Explorar variables ggplot(ventas, aes(TOTAL_VENTAS, TOTAL_COMPRAS)) + geom_point() ``` ] .panel[.panel-name[Gráfico de dispersión] ![](3_estadistica_descriptiva_files/figure-html/cp4-1.png)<!-- --> ]] --- ## Matriz de Correlación Matriz que resume la correlación de varias variables. <img src="img/matriz.png" width="80%" style="display: block; margin: auto;" /> --- ## Matriz de Correlación Genero la matriz de correlación seleccionando solo las variables numéricas y aplicando `cor()`. ```r ## Matriz que resume la correlación de varias variables numéricas ## Deselecciono Total de ventas, Total de Compras y Compras RISE matrix_cor <- ventas %>% select(-TOTAL_VENTAS, -TOTAL_COMPRAS, -COMPRAS_RISE) %>% select_if(is.numeric) %>% cor() ## Genero la matriz de correlación round(matrix_cor, 2) ## VN_tar12 VN_tar0 EXPORTACIONES CN_tar12 CN_tar0 IMPORTACIONES ## VN_tar12 1.00 0.24 0.14 0.21 0.23 0.26 ## VN_tar0 0.24 1.00 0.46 0.81 0.93 0.79 ## EXPORTACIONES 0.14 0.46 1.00 0.48 0.57 0.38 ## CN_tar12 0.21 0.81 0.48 1.00 0.80 0.89 ## CN_tar0 0.23 0.93 0.57 0.80 1.00 0.76 ## IMPORTACIONES 0.26 0.79 0.38 0.89 0.76 1.00 ``` --- ## Matriz de Correlación .panelset[ .panel[.panel-name[Mapa de calor] .pull-left[ ```r ## Mapa de Calor heatmap(matrix_cor, col = gray(seq(1, 0, length = 16))) ``` ] .pull-right[ ![](3_estadistica_descriptiva_files/figure-html/mc4-1.png)<!-- --> ] ] .panel[.panel-name[Gráfica de correlación] .pull-left[ ```r # Activar paquete GGally library(GGally) ## Registered S3 method overwritten by 'GGally': ## method from ## +.gg ggplot2 # Pre-selección de data, solo variables numericas correl <- ventas %>% select(-TOTAL_VENTAS, -TOTAL_COMPRAS, -COMPRAS_RISE) ``` ```r # Sólo columnas numéricas ggscatmat(correl) ``` ] .pull-right[ ![](3_estadistica_descriptiva_files/figure-html/mc7-1.png)<!-- --> ] ] ] --- class: middle, center, inverse <br> <br> # Estadística descriptiva ## **CAPÍTULO 3** <br> <br> .center[ ### [@MasappEC
](https://www.facebook.com/MasappEC/) ### [@Masappdata
](https://twitter.com/Masappdata) ] .pull-right[ Para dudas y preguntas:
Linda Cabrera O. (+34 924 609 588)
Fernanda Jurado M. (+593 99 432 3324) ]