Estadística Descriptiva en Rstudio

Author

Zúñiga Guamán P.

Estadística Descriptiva

La estadística descriptiva es como un mapa que te ayuda a navegar por el mundo de los datos. Te permite resumir y visualizar tus datos de forma clara y concisa, para que puedas entenderlos mejor y tomar decisiones más informadas.

Con fines de lograr ejemplificar las técnicas descriptivas usaremos el siguiente conjunto de Datos

Datos de Clientes

El siguiente dataset contiene datos sobre la compra de cintas de correr por parte de 180 clientes de los cuales se obtuvo la siguiente información:

Product: Modelo de la cinta de correr

Age: Número de años del cliente

Gender: Género del cliente

Education: Educación en nº de años del cliente

MaritalStatus: Estado civil del cliente

Usage: Promedio de veces que el cliente desea utilizar la cinta cada semana

Fitness: Percepción de condición física del cliente (5 - muy en forma, 1 - muy poco en forma)

Ingresos: Ingresos del cliente

Miles: Millas previstos de trote

Product Age Gender Education MaritalStatus Usage Fitness Income Miles
TM195 18 Male 14 Single 3 4 29562 112
TM195 19 Male 15 Single 2 3 31836 75
TM195 19 Female 14 Partnered 4 3 30699 66
TM195 19 Male 12 Single 3 3 32973 85
TM195 20 Male 13 Partnered 4 2 35247 47
TM195 20 Female 14 Partnered 3 3 32973 66
TM195 21 Female 14 Partnered 3 3 35247 75
TM195 21 Male 13 Single 3 3 32973 85
TM195 21 Male 15 Single 5 4 35247 141
TM195 21 Female 15 Partnered 2 3 37521 85

Medidas de Tendencia Central

Una medida de tendencia central es un valor numérico que resume la distribución de un conjunto de datos, proporcionando información sobre el centro alrededor del cual se agrupan los datos.

  • Media: Promedio de todos los valores.
  • Mediana: Valor que divide el conjunto de datos en dos mitades iguales.
  • Moda: Valor que aparece con más frecuencia.

Si se desea obtener información sobre los Kilómetros previstos de trote(miles) de los clientes, podemos calcular sus medidas de tendencia Central:

(mean(datos$Miles)) # Media
[1] 103.1944
(median(datos$Miles)) # Mediana
[1] 94
(which.max(table(datos$Miles))) # Moda (Retorna Valor mas repetido y su posición)
85 
12 
(max(table(datos$Miles))) # Retorna La frecuencia del valor de la moda
[1] 27

Se puede interpretar que:

  • Promedio: Los clientes preveen trotar en promedio 103.19 millas.

  • _Mediana:_El 50% de los clientes prevee trotar 94 millas o menos.

  • Moda: Los clientes preveen trotar más frecuentemente 85 millas.

Medidas de dispersión

Una medida de dispersión es un valor numérico que caracteriza la variabilidad de un conjunto de datos respecto a una medida de tendencia central.

Rango: Diferencia entre el valor máximo y el mínimo. Es una medida simple, pero no muy robusta.

Varianza: Promedio de las diferencias cuadráticas entre cada valor y la media. Es una medida más sensible a los valores atípicos que el rango.

Desviación estándar: Raíz cuadrada de la varianza. Es una medida más interpretable que la varianza y tiene las mismas unidades que los datos originales.

Coeficiente de variación: Razón entre la desviación estándar y la media, expresada como un porcentaje. Es útil para comparar la dispersión de conjuntos de datos con diferentes unidades o medias.

Si es de interés conocer que tan variado es el grupo de clientes respecto a la edad

(range(datos$Age)) # Retorna el valor mínimo y máximo de los datos
[1] 18 50
(sd(datos$Age)) # Calcula la desviación estándar
[1] 6.943498
(var(datos$Age)) # Calcula la varianza
[1] 48.21217
((sd(datos$Age)/mean(datos$Age))*100) # Coeficiente de Variacion
[1] 24.11867

De las medidas de dispersión se puede interpretar que:

Rango: La diferencia de edad entre los clientes llega hasta los 32 años.

Descviación Estandar: La edad de los clientes se desvía 6.94 años de la media muestral.

Varianza: Las distancias al cuadrado entre la edad del cliente y la media muestral es de 48.21.

Coeficiente de Variación: La edad de los clientes se dispersa en un 24.11% alrededor de la media que es 28.79.

La función summary es una herramienta poderosa para obtener un resumen estadístico de un objeto de datos, como un vector, dataframe, factor o matriz. Genera información sobre medidas de tendencia central, dispersión , posición y frecuencias, si la variable es del tipo “categórica”, la información proporcionada corresponde a sus frecuencias.

summary(datos)
  Product        Age           Gender      Education       MaritalStatus
 TM195:80   Min.   :18.00   Female: 76   Min.   :12.00   Partnered:107  
 TM498:60   1st Qu.:24.00   Male  :104   1st Qu.:14.00   Single   : 73  
 TM798:40   Median :26.00                Median :16.00                  
            Mean   :28.79                Mean   :15.57                  
            3rd Qu.:33.00                3rd Qu.:16.00                  
            Max.   :50.00                Max.   :21.00                  
     Usage          Fitness          Income           Miles      
 Min.   :2.000   Min.   :1.000   Min.   : 29562   Min.   : 21.0  
 1st Qu.:3.000   1st Qu.:3.000   1st Qu.: 44059   1st Qu.: 66.0  
 Median :3.000   Median :3.000   Median : 50597   Median : 94.0  
 Mean   :3.456   Mean   :3.311   Mean   : 53720   Mean   :103.2  
 3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.: 58668   3rd Qu.:114.8  
 Max.   :7.000   Max.   :5.000   Max.   :104581   Max.   :360.0  

Visualización de Datos en Rstudio

Rstudio facilita la creación de gráficos para estadística descriptiva. Permite crear histogramas, diagramas de barras y cajas para visualizar distribuciones de frecuencia, medidas de tendencia central y dispersión mediante sus propias funciones, una alternativa es ggplot2, esta libreria ofrece mayor flexibilidad para crear gráficos más complejos permitiendo personalizar elementos del gráfico con mayor calidad en los resultados.

Gráfico de Barras

Un gráfico de barras es una representación gráfica de datos que utiliza barras rectangulares de longitud proporcional a los valores que representan. Se utiliza principalmente para comparar valores de una variable en diferentes categorías o momentos.

En el caso de la variable Product contiene informacion de el tipo de cinta que usa cada cliente, si deseamos analizar cual es el producto mas solicitado un gráfico de barras puede ser adecuado

Grafico de Barras R base

(absFreq <- data.frame(table(datos$Product))) # asigna el data frame con las frecuencias a la variable absFreq
   Var1 Freq
1 TM195   80
2 TM498   60
3 TM798   40
barplot(height = absFreq$Freq, #Altura de las barras
        names.arg = absFreq$Var1, # Etiquetas de las barras
        col = c("azure", "bisque", "darkseagreen"),  # Colores para las barras
        main = "Gráficos de Barras en R base", # Titulo del Gráfico
        xlab = "Producto", # Etiqueta en eje x
        ylab = "Fracuencias Absolutas") # Etiqueta en eje y

Gráfico de Barras ggplot

Es indispensable cargar la libreria ggplot2, si no esta insatalada ejecutar install.packages("ggplot2").

library(ggplot2)

ggplot(datos, aes(x = Product, fill = Product)) + #Define los elementos a Graficar
  geom_bar(stat = "count", color = "black", width = .7) + # Tipo de gráfico
  labs(x = "Producto", y = "Frecuencia Absoluta", title = "Gráfico de Barras en ggplot") + # Etiquetas de los ejes
  guides(fill = FALSE) + # Remover cajas informativas
  scale_fill_manual(values = c("azure", "bisque", "darkseagreen")) + # Define los colores manualmente
  theme_bw() # Tema del gráfico

De los gráficos podemos interpretar que el producto TM798 es la cinta para correr más popular con 80 clientes, seguida por TM498 con 60 clientes y finalmente la cinta TM195 es la menos popular con 40 clientes. Esta información puede ser útil para propietarios de tiendas de fitness, fabricantes y consumidores para tomar decisiones sobre stock, marketing etc.

Histogramas

En un histograma, las barras se adyacen sin espacios entre sí, mostrando la distribución de la frecuencia de los datos en diferentes intervalos. En cambio, en un gráfico de barras, las barras están separadas, lo que permite comparar valores específicos entre diferentes categorías. Se puede decir que los histogramas se realizan para variables continuas, mientras que el gráfico de barras para variables categoricas.

En el caso de la variable Income contiene informacion de el ingreso de cada cliente, si deseamos analizar cual es la situación economica de los clientes, un histograma nos puede ayudar a observar como se distribuye el ingreso, usaremos los Ingresos en escala logaritmica.

Histograma en R base

n <- nrow(datos)
hist(log(datos$Income), # Datos para Histograma en escala Logaritmica
     breaks = 1 + (3.3*log(n)), # Numero de Clases
     col = "darkseagreen", # Color de las barras
     ylab = "Frecuencias Relativas", # Etiqueta eje y
     xlab = "Ingresos", #etiqueta eje x
     main = "Histograma en R base") # Titulo del gráfico

Histograma en ggplot

ggplot(datos, aes(x = log(Income))) + # Datos para el histograma
  geom_histogram(bins = ceiling(1 + (3.3*log(n))), fill = "darkseagreen", col = "black", closed = "left") + # Histograma y características
  labs(x = "Ingresos", y = "Frecuencias Relativas", title = "Histograma en ggplot", stat) + # etiquetas del gráfico
  theme_bw() #tema del gráfico

Podemos Interpretar que el histograma muestra que la mayoría de los clientes tienen ingresos entre $ 10.5 y $11.1, con una distribución asimétrica a la derecha, lo que indica una mayor concentración de clientes en los rangos de ingresos más bajos. Esto sugiere que la mayoría de los clientes son de clase media y ofrecer cintas para correr a precios accesibles para este público objetivo.

Gráfico de Cajas (Box-Plot)

El gráfico de cajas es una herramienta visual que permite comprender la distribución de un conjunto de datos numéricos. Muestra la mediana, el rango intercuartílico, los valores máximo y mínimo y los valores atípicos.

Continuando con la variable Income, análizamos su distribución, esta vez desde otro enfoque gráfico

Gráfico de cajas(Box- Plot) R base

boxplot(x = log(datos$Income),
        col = "darkseagreen",
        horizontal = TRUE,
        ylim =c(10.2, 11.6),
        xlab = "Ingreso",
        main = "Box-Plot en R base")

Gráfico de cajas(Box- Plot) ggplot

ggplot(datos, aes(x = log(Income))) + # Datos para el gráfico
  geom_boxplot(fill = "darkseagreen") + # Gráfico boxplot
  ylim(-1,1) + # Límites en el eje y
  xlim(10.2, 11.6) +
  stat_boxplot(geom = "errorbar", width = 0.25) + # Lineas de Error
  labs(x = "Ingreso", title = "Box-Plot en ggplot") + # Etiquetas de los ejes
  theme_bw() + # Tema del Gráfico
  theme(axis.text.y = element_blank(), axis.ticks.y = element_blank()) # Elimina numeros en el eje y