Análisis de ventas y comportamiento de clientes por tienda

El presente análisis se basa en 100 observaciones de tiendas, donde se analizan variables clave como ventas, clientes frecuentes y productos vendidos para evaluar el desempeño comercial.

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
datos <- read.csv("datos_negocios_var_5_ventas.csv")
head(datos)
##     Tienda Monto_Ventas Clientes_Frecuentes Productos_Vendidos
## 1 Tienda A     10880.85                   0                346
## 2 Tienda B     48635.34                   1                159
## 3 Tienda C     33066.81                   0                102
## 4 Tienda A     41198.95                   0                299
## 5 Tienda A     47513.59                   0                311
## 6 Tienda A     26147.79                   0                327

Resumen estadístico de las variables numéricas

summary(datos)
##     Tienda           Monto_Ventas   Clientes_Frecuentes Productos_Vendidos
##  Length:100         Min.   :10294   Min.   :0.00        Min.   : 61.0     
##  Class :character   1st Qu.:19853   1st Qu.:0.00        1st Qu.:140.5     
##  Mode  :character   Median :30921   Median :0.00        Median :239.0     
##                     Mean   :31160   Mean   :0.45        Mean   :254.4     
##                     3rd Qu.:42604   3rd Qu.:1.00        3rd Qu.:353.5     
##                     Max.   :49187   Max.   :1.00        Max.   :486.0

El resumen estadístico muestra que el promedio de ventas es de 31.160, con una mediana cercana (30.921), lo que indica una distribución relativamente equilibrada. Las ventas presentan variabilidad, con valores entre 10.294 y 49.187, concentrándose la mayoría entre 19.853 y 42.604. En cuanto a los productos vendidos, el promedio es de 254, mientras que los clientes frecuentes representan aproximadamente el 45% de los casos.

library(ggplot2)
ggplot(datos, aes(x = Tienda, y = Monto_Ventas, fill = Tienda)) +
  geom_boxplot() +
  labs(title = "Distribución de Ventas por Tienda",
       x = "Tienda",
       y = "Monto de Ventas") +
  scale_fill_manual(values = c("gray70", "red", "navy")) +
  theme_minimal()

El gráfico muestra que la Tienda B tiene, en general, mayores ventas, ya que su mediana está por encima de las otras. También se observa que todas las tiendas presentan variabilidad en sus ventas, aunque la Tienda A y B tienen una dispersión más amplia, mientras que la Tienda C es un poco más estable.

clientes_frecuentes_tienda <- datos %>%
  group_by(Tienda) %>%
  summarise(Porcentaje_Clientes_Frecuentes = mean(Clientes_Frecuentes) * 100)

print(clientes_frecuentes_tienda)
## # A tibble: 3 × 2
##   Tienda   Porcentaje_Clientes_Frecuentes
##   <chr>                             <dbl>
## 1 Tienda A                           35.3
## 2 Tienda B                           41.9
## 3 Tienda C                           57.1

En la Tienda A, el 35,3% de los clientes son frecuentes; en la Tienda B, el 41,9%; y en la Tienda C, el 57,1%.

Estos resultados muestran diferencias en la proporción de clientes frecuentes entre las tiendas. La Tienda C destaca con el mayor porcentaje, lo que indica una mayor fidelización, mientras que la Tienda A presenta la menor proporción.

ggplot(datos, aes(x = Tienda, fill = as.factor(Clientes_Frecuentes))) +
  geom_bar(position = "dodge") +
  labs(title = "Número de Clientes Frecuentes por Tienda",
       x = "Tienda",
       y = "Frecuencia",
       fill = "Clientes Frecuentes") +
  scale_fill_manual(values = c("gray70", "red"), labels = c("No", "Sí")) +
  theme_minimal()

El gráfico muestra la cantidad de clientes frecuentes y no frecuentes en cada tienda. Se nota que la Tienda C tiene una mayor proporción de clientes frecuentes, mientras que la Tienda A presenta una menor participación. Esto sugiere que hay diferencias en el nivel de fidelización entre las tiendas, destacándose la Tienda C en este aspecto.

ggplot(datos, aes(x = as.factor(Clientes_Frecuentes), y = Monto_Ventas, fill = as.factor(Clientes_Frecuentes))) +
  geom_boxplot() +
  labs(title = "Distribución de Ventas según Clientes Frecuentes",
       x = "Clientes Frecuentes",
       y = "Monto de Ventas") +
  scale_x_discrete(labels = c("0" = "No", "1" = "Sí")) +
  scale_fill_manual(values = c("gray70", "red")) +
  theme_minimal()

El gráfico muestra la distribución de las ventas según si hay clientes frecuentes o no. Se observa que las ventas son ligeramente mayores cuando no hay clientes frecuentes, ya que la mediana es más alta en este grupo. Además, ambos grupos presentan dispersión en los datos, aunque el grupo sin clientes frecuentes muestra una variabilidad un poco mayor.

ggplot(datos, aes(x = Monto_Ventas)) +
  geom_histogram(binwidth = 5000, fill = "mistyrose", color = "red", alpha = 0.8) +
  geom_density(aes(y = ..density.. * 5000), color = "red", size = 1.2) +
  labs(title = "Distribución del Monto de Ventas",
       x = "Monto de Ventas",
       y = "Frecuencia") +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

El histograma muestra la distribución del monto de ventas, donde se observa que los valores se concentran principalmente entre 20.000 y 50.000, con mayor frecuencia en los rangos medios. Además, se aprecia una ligera asimetría hacia la derecha, indicando la presencia de algunos valores más altos.

Intervalo de confianza para la media

Calcular un intervalo de confianza al 95% para la media poblacional del monto de ventas en la Tienda

A) Interpretar el intervalo obtenido y evaluar si es posible hacer inferencias sobre el total de tiendas.

Datos Muestra:

n = 34 observaciones (Tienda A)

Media muestral (X̄): Calculada con los datos de Monto_Ventas

Desviación estándar muestral (s): Calculada con los datos

Nivel de confianza: 95%

datos_A <- filter(datos, Tienda == "Tienda A")
datos_A
##      Tienda Monto_Ventas Clientes_Frecuentes Productos_Vendidos
## 1  Tienda A     10880.85                   0                346
## 2  Tienda A     41198.95                   0                299
## 3  Tienda A     47513.59                   0                311
## 4  Tienda A     26147.79                   0                327
## 5  Tienda A     24155.31                   1                 64
## 6  Tienda A     16133.34                   0                366
## 7  Tienda A     18763.77                   0                 61
## 8  Tienda A     43279.21                   0                353
## 9  Tienda A     14904.12                   0                 77
## 10 Tienda A     37367.08                   0                161
## 11 Tienda A     28611.05                   1                231
## 12 Tienda A     39354.82                   0                131
## 13 Tienda A     20148.63                   0                113
## 14 Tienda A     14192.41                   1                340
## 15 Tienda A     17129.96                   1                433
## 16 Tienda A     22210.74                   1                171
## 17 Tienda A     49186.75                   1                371
## 18 Tienda A     28336.33                   0                231
## 19 Tienda A     48778.75                   0                197
## 20 Tienda A     22483.54                   1                351
## 21 Tienda A     38014.97                   0                469
## 22 Tienda A     10338.27                   0                 61
## 23 Tienda A     32668.66                   0                440
## 24 Tienda A     47577.75                   0                241
## 25 Tienda A     44212.61                   0                106
## 26 Tienda A     29720.19                   1                359
## 27 Tienda A     42301.12                   1                179
## 28 Tienda A     27314.32                   1                419
## 29 Tienda A     18261.19                   1                486
## 30 Tienda A     48262.09                   1                221
## 31 Tienda A     43798.95                   0                 91
## 32 Tienda A     43047.44                   0                 93
## 33 Tienda A     14852.71                   0                342
## 34 Tienda A     18965.83                   0                 97
media_ingresos_A <- mean(datos_A$Monto_Ventas)  
sd_ingresos_A <- sd(datos_A$Monto_Ventas)  
n_A <- nrow(datos_A)  

error_media_A <- qt(0.975, df = n_A - 1) * sd_ingresos_A / sqrt(n_A)  

IC_media_A <- c(media_ingresos_A - error_media_A, media_ingresos_A + error_media_A)

cat("Media de ventas:", media_ingresos_A, "\n")
## Media de ventas: 30297.44
cat("Intervalo de confianza para la media poblacional del monto de ventas en la Tienda A:", IC_media_A, "\n")
## Intervalo de confianza para la media poblacional del monto de ventas en la Tienda A: 25844.8 34750.08

El intervalo muestra que el promedio de ventas de la Tienda A se encuentra dentro de un rango entre 25.844,8 y 34.750,08, reflejando la variabilidad de los datos. Esto indica que las ventas no son fijas, pero se mantienen dentro de un nivel relativamente estable, lo que permite tener una estimación confiable del comportamiento general.

Prueba de Hipótesis para la Media del Monto de Ventas en la Tienda A

La empresa desea verificar si el promedio del monto de ventas realizado en la Tienda A es igual a 30.000 unidades monetarias. Para ello, se toma una muestra correspondiente a esta tienda y se realiza una prueba de hipótesis para la media poblacional de las ventas.

Hipótesis:

H0: μ = 30000

H1: μ ≠ 30000

Datos de la muestra

n = 34 observaciones

X̄ = Media calculada con los datos de Monto_Ventas

s = Desviación estándar calculada con los datos

Nivel de significancia: 5%

library(dplyr)

# Filtrar datos de la Tienda A
datos_A <- filter(datos, Tienda == "Tienda A")

datos_A
##      Tienda Monto_Ventas Clientes_Frecuentes Productos_Vendidos
## 1  Tienda A     10880.85                   0                346
## 2  Tienda A     41198.95                   0                299
## 3  Tienda A     47513.59                   0                311
## 4  Tienda A     26147.79                   0                327
## 5  Tienda A     24155.31                   1                 64
## 6  Tienda A     16133.34                   0                366
## 7  Tienda A     18763.77                   0                 61
## 8  Tienda A     43279.21                   0                353
## 9  Tienda A     14904.12                   0                 77
## 10 Tienda A     37367.08                   0                161
## 11 Tienda A     28611.05                   1                231
## 12 Tienda A     39354.82                   0                131
## 13 Tienda A     20148.63                   0                113
## 14 Tienda A     14192.41                   1                340
## 15 Tienda A     17129.96                   1                433
## 16 Tienda A     22210.74                   1                171
## 17 Tienda A     49186.75                   1                371
## 18 Tienda A     28336.33                   0                231
## 19 Tienda A     48778.75                   0                197
## 20 Tienda A     22483.54                   1                351
## 21 Tienda A     38014.97                   0                469
## 22 Tienda A     10338.27                   0                 61
## 23 Tienda A     32668.66                   0                440
## 24 Tienda A     47577.75                   0                241
## 25 Tienda A     44212.61                   0                106
## 26 Tienda A     29720.19                   1                359
## 27 Tienda A     42301.12                   1                179
## 28 Tienda A     27314.32                   1                419
## 29 Tienda A     18261.19                   1                486
## 30 Tienda A     48262.09                   1                221
## 31 Tienda A     43798.95                   0                 91
## 32 Tienda A     43047.44                   0                 93
## 33 Tienda A     14852.71                   0                342
## 34 Tienda A     18965.83                   0                 97
# Cálculos básicos
media_ingresos_A <- mean(datos_A$Monto_Ventas)  
sd_ingresos_A <- sd(datos_A$Monto_Ventas)  
n_A <- nrow(datos_A)

# Mostrar resultados
cat("Media de ventas:", media_ingresos_A, "\n")
## Media de ventas: 30297.44
cat("Desviación estándar:", sd_ingresos_A, "\n")
## Desviación estándar: 12761.33
cat("Tamaño de muestra:", n_A, "\n")
## Tamaño de muestra: 34
# Prueba de hipótesis
prueba_hipotesis <- t.test(datos_A$Monto_Ventas, mu = 30000)

prueba_hipotesis
## 
##  One Sample t-test
## 
## data:  datos_A$Monto_Ventas
## t = 0.13591, df = 33, p-value = 0.8927
## alternative hypothesis: true mean is not equal to 30000
## 95 percent confidence interval:
##  25844.80 34750.08
## sample estimates:
## mean of x 
##  30297.44

Interpretación

La prueba de hipótesis realizada muestra que la media de ventas de la Tienda A fue de 30.297,44, un valor muy cercano al promedio planteado de 30.000 unidades monetarias. Además, el valor p obtenido fue de 0,8927, siendo mayor al nivel de significancia de 0,05. Esto indica que no existen diferencias significativas entre la media observada y la propuesta en la hipótesis nula. Asimismo, el intervalo de confianza entre 25.844,80 y 34.750,08 incluye el valor de 30.000, reforzando la idea de que este valor es consistente con el comportamiento de las ventas analizadas. Por lo tanto, no se rechaza la hipótesis nula y se concluye que el promedio de ventas de la Tienda A puede considerarse estadísticamente igual a 30.000 unidades monetarias.

Conclusión General del Análisis Estadístico

Durante el desarrollo del taller se analizaron diferentes aspectos relacionados con las ventas de las tiendas, utilizando herramientas estadísticas que permitieron interpretar y comprender mejor el comportamiento de los datos. Por medio de gráficos y medidas descriptivas se identificaron diferencias en las ventas, en la cantidad de productos vendidos y en la presencia de clientes frecuentes entre las tiendas. Asimismo, el uso del intervalo de confianza permitió estimar un rango probable para la media de ventas de la Tienda A, mientras que la prueba de hipótesis ayudó a evaluar si el promedio de ventas se mantenía cercano al valor planteado inicialmente. Los resultados obtenidos muestran que las ventas presentan un comportamiento relativamente estable, y demuestran cómo la estadística puede ser una herramienta útil para analizar información, realizar inferencias y apoyar la toma de decisiones dentro de un contexto comercial.