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.
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)
A continuación, se presentan las 10 visualizaciones requeridas para responder a las preguntas de negocio.
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()
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")
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")
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")
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()
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")
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()
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()
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()
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))
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):
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.