Este es un markdown para realizar un análisis exploratorio de datos de la base de datos Carseats del paquete ISLR. Se trabajará principalmente con el paquete dlookr pues permite realizar análisis automatizado.

La información de esta base de datos se enmarca en el estudio de un sector del mercado y cuenta con las siguientes variables:

Sales: Ventas unitarias (en miles) en cada ubicación CompPrice: Precio cobrado por el competidor en cada ubicación Income: Nivel de ingresos de la comunidad (en miles de dólares) Advertising: Presupuesto de publicidad local de la empresa en cada ubicación (en miles de dólares) Population: Tamaño de la población en la región (en miles) Price: Precio que la empresa cobra por las sillas de coche en cada emplazamiento ShelveLoc: Factor con niveles Malo, Bueno y Medio que indica la calidad de la ubicación de las estanterías para las sillas de coche en cada centro Age: Edad media de la población local Education: Nivel educativo en cada ubicación Urban: Un factor con niveles No y Sí para indicar si la tienda está en una ubicación urbana o rural US: Un factor con niveles No y Sí para indicar si la tienda está en EE.UU. o no

  1. Abriendo el paquete ISLR, analizando la estructura de la base de datos Carseats.
library(ISLR)
str(Carseats)
## 'data.frame':    400 obs. of  11 variables:
##  $ Sales      : num  9.5 11.22 10.06 7.4 4.15 ...
##  $ CompPrice  : num  138 111 113 117 141 124 115 136 132 132 ...
##  $ Income     : num  73 48 35 100 64 113 105 81 110 113 ...
##  $ Advertising: num  11 16 10 4 3 13 0 15 0 0 ...
##  $ Population : num  276 260 269 466 340 501 45 425 108 131 ...
##  $ Price      : num  120 83 80 97 128 72 108 120 124 124 ...
##  $ ShelveLoc  : Factor w/ 3 levels "Bad","Good","Medium": 1 2 3 3 1 1 3 2 3 3 ...
##  $ Age        : num  42 65 59 55 38 78 71 67 76 76 ...
##  $ Education  : num  17 10 12 14 13 16 15 10 10 17 ...
##  $ Urban      : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 1 2 2 1 1 ...
##  $ US         : Factor w/ 2 levels "No","Yes": 2 2 2 2 1 2 1 2 1 2 ...
  1. Asignando la base de datos Carseats, abriendo el paquete dlookr, describimos la bases de datos carseats.
carseats <- ISLR::Carseats
library(dlookr)
## Warning in !is.null(rmarkdown::metadata$output) && rmarkdown::metadata$output
## %in% : 'length(x) = 4 > 1' in coercion to 'logical(1)'
## 
## Attaching package: 'dlookr'
## The following object is masked from 'package:base':
## 
##     transform
describe(carseats)
  1. Describiendo las variables Sales, CompPrice, Income
describe(carseats, Sales, CompPrice, Income)
  1. Describiendo las variables desde Sales hasta Income
describe(carseats, Sales:Income)
  1. Describiendo las variables de la bases de datos, menos las que están comprendidas entre Sales e Income.
describe(carseats, -(Sales:Income))
  1. Abriendo el paquete dplyr.
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
  1. Describiendo las variables numéricas.
carseats %>%
  describe() %>%
  select(described_variables, skewness, mean, p25, p50, p75) %>% 
  filter(!is.na(skewness)) %>% 
  arrange(desc(abs(skewness)))
  1. Describiendo las variables Sales e Income para los dos grupos de la variable US.
carseats %>%
  group_by(US) %>% 
  describe(Sales, Income) 
  1. Describiendo las variables Sales e Income para los grupos de las variables US y Urban.
carseats %>%
  group_by(US, Urban) %>% 
  describe(Sales, Income) 
  1. El paquete dlookr tiene varios comandos para requerir el análisis descriptivo.
univar_numeric(carseats)
## $statistics
## # A tibble: 8 × 10
##   described_variables     n    na   mean     sd se_mean    IQR skewness kurtosis
##   <chr>               <int> <int>  <dbl>  <dbl>   <dbl>  <dbl>    <dbl>    <dbl>
## 1 Sales                 400     0   7.50   2.82   0.141   3.93   0.186   -0.0809
## 2 CompPrice             400     0 125.    15.3    0.767  20     -0.0428   0.0417
## 3 Income                400     0  68.7   28.0    1.40   48.2    0.0494  -1.09  
## 4 Advertising           400     0   6.64   6.65   0.333  12      0.640   -0.545 
## 5 Population            400     0 265.   147.     7.37  260.    -0.0512  -1.20  
## 6 Price                 400     0 116.    23.7    1.18   31     -0.125    0.452 
## 7 Age                   400     0  53.3   16.2    0.810  26.2   -0.0772  -1.13  
## 8 Education             400     0  13.9    2.62   0.131   4      0.0440  -1.30  
## # ℹ 1 more variable: median <dbl>
  1. Ahora analicemos las variables categóricas de nuestra base de datos. Solo tenemos 3.
diagnose_category(carseats, ShelveLoc, Urban, US)

12.Otra manera de analizar la información cualitativa es esta.

univar_category(carseats, ShelveLoc, Urban, US)
## $ShelveLoc
##   ShelveLoc   n   rate
## 1       Bad  96 0.2400
## 2      Good  85 0.2125
## 3    Medium 219 0.5475
## 
## $Urban
##   Urban   n  rate
## 1    No 118 0.295
## 2   Yes 282 0.705
## 
## $US
##    US   n  rate
## 1  No 142 0.355
## 2 Yes 258 0.645
  1. Esta sería la manera más simple, pero como veremos no se coloca la información en una tabla.
univar_category(carseats)
## $ShelveLoc
##   ShelveLoc   n   rate
## 1       Bad  96 0.2400
## 2      Good  85 0.2125
## 3    Medium 219 0.5475
## 
## $Urban
##   Urban   n  rate
## 1    No 118 0.295
## 2   Yes 282 0.705
## 
## $US
##    US   n  rate
## 1  No 142 0.355
## 2 Yes 258 0.645
  1. Por ello vamos a usar un paquete que nos permite leer en tablas, tanto las variables categóricas como numéricas. Su nombre es skmir.
library(skimr)
  1. Ponemos a prueba el paquete con su comando skim, el cual de manera sencilla nos permite obtener diferentes medidas para las variables categóricas y numéricas.
#skim(carseats)
  1. Muchas veces dentro del análisis explotorio nos interesará verificar si nuestra variable se asemeja a una normal en la población. Aunque esto ya es estadística inferencial univariada, un tema que vamos a desarrollar en mayor detalle en otro rmd. Aquí analizaremos la normalidad de las variables de carseats. Solo con las variables numéricas.
normality(carseats)
  1. Analizando la normalidad solo de las variables Sales, CompPrice e Income.
normality(carseats, Sales, CompPrice, Income)

18.Analizando la normalidad de las variables que van desde Sales hasta Income. Mismo resultado que el código anterior.

normality(carseats, Sales:Income)
  1. Verificando la normalidad de las variables numéricas que no son desde Sales hasta Income.
normality(carseats, -(Sales:Income))
  1. Ordenando las variables según el nivel de significancia que han obtenido
carseats %>%
  normality() %>%
  filter(p_value <= 0.01) %>% 
  arrange(abs(p_value))

21.Verificando la normalidad en los grupos de las variables ShelveLoc y US.

carseats %>%
  group_by(ShelveLoc, US) %>%
  normality(Income) %>% 
  arrange(desc(p_value))
  1. Se genera el logaritmo de Income para ver cómo se comporta el análisis de la normalidad.
carseats %>%
  mutate(log_income = log(Income)) %>%
  group_by(ShelveLoc, US) %>%
  normality(log_income) %>%
  filter(p_value > 0.05)
  1. Se genera gráficos para analizar la normalidad de dos variables.
plot_normality(carseats, Sales, CompPrice)

Aprovecharemos el dlookr para realizar un poco de análisis de datos bivariado. Como se puede observar este paquete es bastante completo.

  1. Generando coeficientes de correlación.
correlate(carseats)
  1. Haciendo un correlograma.
plot_correlate(carseats)
## Warning: 'plot_correlate' is deprecated.
## Use 'plot.correlate' instead.
## See help("Deprecated")

  1. Creando un reporte donde podamos integrar estadísticos y gráficos. Se debe instalar el paquete prettydoc. Los resultados saldrán en tu navegador.
#carseats %>%
#  eda_report(target = Sales, output_format = "html", output_file = "EDA_carseats.html")
  1. Creando un reporte en web sobre la base de datos. ¡Mira cómo te salen los resultados en tu navegador!
#eda_paged_report(carseats, output_format = "html")

tinytex::install_tinytex()