1 Introducción

Este documento R Markdown presenta un análisis descriptivo de la cadena de suministro de la empresa de procesamiento y comercialización de leche empacada, con el objetivo de explorar patrones, identificar clientes inactivos y evaluar la eficiencia logística. El análisis se basa en 10 visualizaciones específicas utilizando la librería ggplot2.

2 Carga y Preparación de Datos

La base de datos se carga utilizando read.csv2 debido a que utiliza el punto y coma (;) como separador de campos y la coma (,) como separador decimal, lo cual es común en configuraciones regionales europeas o latinoamericanas.

# Cargar la base de datos
data_raw <- read.csv2("C:/Users/ghhg5/OneDrive/Escritorio/basededatos2.csv", 
                      header = TRUE, 
                      sep = ";", 
                      dec = ",",
                      stringsAsFactors = TRUE)

# Renombrar columnas para facilitar el manejo (sin tildes ni espacios)
data <- data_raw %>%
  rename(
    centro_distribucion = centro_de_distribucion,
    distrito = distrito_del_cliente,
    volumen_pedidos = volumen_pedidos,
    valor_pedidos = valor_pedidos,
    frecuencia_pedidos = frecuencia_pedidos_al_mes,
    costo_entrega = costo_entrega,
    tiempo_entrega = tiempo_promedio_de_entrega,
    nivel_servicio = nivel_de_servicio,
    categoria = categoria_mas_solicitada,
    satisfaccion = satisfaccion_del_cliente
  ) %>%
  # Convertir 'centro_distribucion' a factor
  mutate(centro_distribucion = as.factor(centro_distribucion))

# Estructura de los datos limpios
# str(data)

3 Análisis de Visualización de Datos

A continuación, se presentan las 10 visualizaciones requeridas para responder a las preguntas de negocio.

3.1 1. ¿Existe relación entre valor de pedido y costo de entrega?

Indicador: Correlación entre variables numéricas. Gráfica: Dispersión con línea de tendencia (geom_point + geom_smooth). Variables: valor_pedidos, costo_entrega.

ggplot(data, aes(x = valor_pedidos, y = costo_entrega)) +
  geom_point(alpha = 0.6, color = "#0072B2") +
  geom_smooth(method = "lm", se = TRUE, color = "#D55E00") +
  labs(
    title = "Relación entre Valor del Pedido y Costo de Entrega",
    x = "Valor del Pedido (en miles de unidades monetarias)",
    y = "Costo de Entrega (en unidades monetarias)",
    caption = "Línea de tendencia (método LM) y su intervalo de confianza al 95%."
  ) +
  theme_minimal()

3.2 2. ¿Cómo varía el volumen de pedidos según el distrito?

Indicador: Distribución del volumen de pedidos. Gráfica: Gráfico de cajas (boxplot). Variables: distrito, volumen_pedidos.

ggplot(data, aes(x = distrito, y = volumen_pedidos, fill = distrito)) +
  geom_boxplot(alpha = 0.7) +
  geom_jitter(width = 0.2, alpha = 0.3, size = 0.5) +
  labs(
    title = "Distribución del Volumen de Pedidos por Distrito",
    x = "Distrito del Cliente",
    y = "Volumen de Pedidos (Unidades)",
    fill = "Distrito"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

3.3 3. ¿Se observan diferencias en nivel de servicio entre clientes activos e inactivos?

Indicador: Comparación del nivel de servicio por estatus. Gráfica: Gráfico de violín. Variables: estatus, nivel_servicio.

ggplot(data, aes(x = estatus, y = nivel_servicio, fill = estatus)) +
  geom_violin(trim = FALSE, alpha = 0.7) +
  geom_boxplot(width = 0.1, fill = "white") +
  labs(
    title = "Comparación del Nivel de Servicio entre Clientes Activos e Inactivos",
    x = "Estatus del Cliente",
    y = "Nivel de Servicio (%)",
    fill = "Estatus"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

3.4 4. ¿Qué centro de distribución incurre en mayores costos de entrega?

Indicador: Distribución del costo de entrega por centro. Gráfica: Gráfico de cajas (boxplot). Variables: centro_distribucion, costo_entrega.

ggplot(data, aes(x = centro_distribucion, y = costo_entrega, fill = centro_distribucion)) +
  geom_boxplot(alpha = 0.7) +
  labs(
    title = "Distribución del Costo de Entrega por Centro de Distribución",
    x = "Centro de Distribución",
    y = "Costo de Entrega (en unidades monetarias)",
    fill = "Centro"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

3.5 5. ¿Existe relación entre satisfacción y nivel de servicio?

Indicador: Asociación entre nivel de servicio y satisfacción. Gráfica: Dispersión con línea de tendencia. Variables: satisfaccion, nivel_servicio.

ggplot(data, aes(x = satisfaccion, y = nivel_servicio)) +
  geom_point(alpha = 0.6, color = "#CC79A7") +
  geom_smooth(method = "lm", se = TRUE, color = "#009E73") +
  labs(
    title = "Relación entre Satisfacción del Cliente y Nivel de Servicio",
    x = "Satisfacción del Cliente (Escala 1-10)",
    y = "Nivel de Servicio (%)",
    caption = "Línea de tendencia (método LM) y su intervalo de confianza al 95%."
  ) +
  theme_minimal()

3.6 6. ¿Cómo cambia la frecuencia de pedidos según el estatus?

Indicador: Comparación de frecuencia promedio de pedidos. Gráfica: Gráfico de cajas (boxplot). Variables: estatus, frecuencia_pedidos.

ggplot(data, aes(x = estatus, y = frecuencia_pedidos, fill = estatus)) +
  geom_boxplot(alpha = 0.7) +
  labs(
    title = "Distribución de la Frecuencia de Pedidos por Estatus del Cliente",
    x = "Estatus del Cliente",
    y = "Frecuencia de Pedidos al Mes",
    fill = "Estatus"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

3.7 7. ¿Cómo se comporta el costo de entrega frente al tiempo promedio?

Indicador: Correlación entre costo y tiempo de entrega. Gráfica: Dispersión con línea de tendencia. Variables: tiempo_entrega, costo_entrega.

ggplot(data, aes(x = tiempo_entrega, y = costo_entrega)) +
  geom_point(alpha = 0.6, color = "#F0E442") +
  geom_smooth(method = "lm", se = TRUE, color = "#0072B2") +
  labs(
    title = "Relación entre Tiempo Promedio de Entrega y Costo de Entrega",
    x = "Tiempo Promedio de Entrega (Días)",
    y = "Costo de Entrega (en unidades monetarias)",
    caption = "Línea de tendencia (método LM) y su intervalo de confianza al 95%."
  ) +
  theme_minimal()

3.8 8. ¿Qué relación existe entre valor del pedido y satisfacción?

Indicador: Asociación entre valor del pedido y nivel de satisfacción. Gráfica: Dispersión con línea de tendencia. Variables: valor_pedidos, satisfaccion.

ggplot(data, aes(x = valor_pedidos, y = satisfaccion)) +
  geom_point(alpha = 0.6, color = "#56B4E9") +
  geom_smooth(method = "lm", se = TRUE, color = "#E69F00") +
  labs(
    title = "Relación entre Valor del Pedido y Satisfacción del Cliente",
    x = "Valor del Pedido (en miles de unidades monetarias)",
    y = "Satisfacción del Cliente (Escala 1-10)",
    caption = "Línea de tendencia (método LM) y su intervalo de confianza al 95%."
  ) +
  theme_minimal()

3.9 9. ¿Cómo se distribuye el nivel de servicio combinando distrito y estatus?

Indicador: Distribución del nivel de servicio por grupo. Gráfica: Gráfico de cajas agrupado (boxplot con fill). Variables: distrito, estatus, nivel_servicio.

ggplot(data, aes(x = distrito, y = nivel_servicio, fill = estatus)) +
  geom_boxplot(position = position_dodge(width = 0.8), alpha = 0.7) +
  labs(
    title = "Distribución del Nivel de Servicio por Distrito y Estatus del Cliente",
    x = "Distrito del Cliente",
    y = "Nivel de Servicio (%)",
    fill = "Estatus"
  ) +
  theme_minimal()

3.10 10. ¿Cómo se comporta el valor del pedido por categoría y distrito?

Indicador: Comparación del valor de pedido entre categorías y distritos. Gráfica: Gráfico de cajas (boxplot por categoría con color por distrito). Variables: categoria, distrito, valor_pedidos.

ggplot(data, aes(x = categoria, y = valor_pedidos, fill = distrito)) +
  geom_boxplot(position = position_dodge(width = 0.8), alpha = 0.7) +
  labs(
    title = "Distribución del Valor del Pedido por Categoría y Distrito",
    x = "Categoría de Producto más Solicitada",
    y = "Valor del Pedido (en miles de unidades monetarias)",
    fill = "Distrito"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

4 Conclusión al Problema de Decisión

Problema Empresarial: La empresa enfrenta desafíos en segmentación de clientes, gestión logística (costos y tiempos de entrega) y retención de clientes inactivos.

Decisión Involucrada: Fundamentar decisiones en el análisis visual para explorar patrones de demanda, identificar inactivos y analizar la eficiencia logística.

Conclusión (Basada en las Visualizaciones):

  1. Segmentación y Retención de Clientes (Preguntas 3, 6, 9):
    • El Nivel de Servicio (Pregunta 3) parece ser marginalmente más bajo para los clientes Inactivos en comparación con los Activos, aunque la diferencia no es drástica y la dispersión es alta en ambos grupos. Esto sugiere que el nivel de servicio por sí solo podría no ser el único factor de inactividad.
    • La Frecuencia de Pedidos (Pregunta 6) es notablemente más baja para los clientes Inactivos, lo cual es esperable, pero el análisis visual de la distribución (boxplot) puede ayudar a establecer umbrales para la reactivación.
    • Al combinar Distrito y Estatus (Pregunta 9), se puede observar que el nivel de servicio varía por distrito, lo que permite enfocar las estrategias de retención y mejora del servicio en distritos específicos donde los clientes inactivos tienen un nivel de servicio particularmente bajo.
  2. Eficiencia Logística (Preguntas 1, 4, 7):
    • La relación entre Valor del Pedido y Costo de Entrega (Pregunta 1) y Tiempo Promedio de Entrega y Costo de Entrega (Pregunta 7) muestra una correlación positiva (aunque no necesariamente fuerte) en ambos casos. Esto indica que los pedidos de mayor valor y los que tardan más en entregarse tienden a tener un costo de entrega más alto. Esto es clave para rediseñar rutas: se debe buscar optimizar las rutas que incurren en alto costo y alto tiempo.
    • El Centro de Distribución (Pregunta 4) que incurre en mayores costos de entrega (mediana y dispersión) puede ser identificado visualmente, permitiendo a la gerencia enfocar los esfuerzos de optimización de costos en ese centro específico.
  3. Patrones de Demanda y Satisfacción (Preguntas 2, 5, 8, 10):
    • La Satisfacción del Cliente (Pregunta 5 y 8) no parece tener una correlación lineal fuerte ni con el Nivel de Servicio ni con el Valor del Pedido, lo que sugiere que la satisfacción puede estar influenciada por otros factores no logísticos.
    • El análisis de Volumen de Pedidos por Distrito (Pregunta 2) y Valor del Pedido por Categoría y Distrito (Pregunta 10) permite identificar los distritos con mayor volumen de pedidos y las categorías de productos más rentables en cada distrito, apoyando la exploración de patrones de demanda y la optimización de inventario y rutas.

Recomendación: Utilizar estas visualizaciones para convocar mesas de trabajo por distrito y centro de distribución, enfocando la discusión en los outliers y las tendencias observadas para definir acciones concretas de mejora logística y campañas de reactivación de clientes inactivos.