Leonardo Quiroga Cortes
Componente:Introducion a R
Profesor:Jeisson Rodriguez Rodriguez
Universidad:Surcolombiana
Fecha: 30 de mayo de 2026
Este informe presenta un análisis completo de una base de datos comercial con 800 transacciones. Tras un proceso de limpieza que incluyó estandarización de categorías, tratamiento de valores atípicos y imputación de datos faltantes (usando mediana para variables numéricas y moda para categóricas), se realizó un análisis exploratorio profundo. Se identificó que los métodos de pago más utilizados son Efectivo y Nequi, y que las categorías de producto con mayores montos de compra promedio son Ropa (USD 1,044) y Alimentos (USD 673).
A partir de un modelo de regresión lineal, no se encontró evidencia estadísticamente significativa de que el descuento porcentual, el tiempo de entrega o el método de pago afecten la calificación del cliente (p-valor global = 0.764). Esto sugiere que otros factores no medidos (calidad del producto, atención al cliente) podrían ser más relevantes para la satisfacción. Se recomienda enfocar esfuerzos en reducir los tiempos de entrega por debajo de 10 días y recolectar variables adicionales para futuros análisis.
En el contexto actual de negocio, los datos se han convertido en un activo estratégico fundamental. Sin embargo, es común que las bases de datos comerciales lleguen al área de análisis con múltiples problemas de calidad: valores mal escritos (por ejemplo, “E”, “EFECTICO”, “efectivo” para un mismo método de pago), celdas vacías, formatos inconsistentes y errores de captura. Estos problemas, si no se tratan adecuadamente, distorsionan indicadores clave, afectan modelos predictivos y pueden llevar a decisiones comerciales equivocadas.
El presente informe corresponde a un proceso completo de análisis exploratorio y limpieza de datos aplicado a la base de datos comercial proporcionada. El objetivo principal es transformar la información cruda en un activo confiable, consistente y listo para ser utilizado en procesos de toma de decisiones. Para ello, se implementan las siguientes etapas:
Como resultado, se entrega una base de datos lista para análisis estadísticos avanzados, modelado predictivo o dashboards ejecutivos, junto con un informe detallado que respalda cada transformación aplicada. Este enfoque garantiza que las decisiones basadas en estos datos se sustenten en información precisa y consistente, maximizando el valor comercial de la información.
Antes de cualquier análisis, fue necesario depurar la base de datos original para poder obtener una mejor vista de los datos, ya que al tener una base limpia se interpretan mejor. A continuación se detallan los problemas encontrados y las decisiones tomadas.
Primero cargo mi base de datos que en este caso fue el proyecto 7 de datos comerciales con sus dimeciones 800 filas y 10 colunnas origuinales
## Dimensiones originales: 800 10
| ID | Categoria_Producto | Metodo_Pago | Estado_Pedido | Edad_Cliente | Monto_Compra_USD | Cantidad_Productos | Descuento_Porcentaje | Tiempo_Entrega_Dias | Calificacion_Cliente |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Electrónica | Nequi | Pendiente | 18 | 243.43 | 4 | 9.7 | 17 | 4.5 |
| 2 | Ropa | Transferencia | Cancelado | 29 | 160.88 | 6 | NA | 19 | 1.5 |
| 3 | Electrónica | Efectivo | Entregado | 25 | 227.39 | 1 | 16.5 | 10 | 2.5 |
| 4 | Hogar | Tarjeta | Cancelado | 26 | 223.07 | 8 | 8.5 | 6 | 3.3 |
| 5 | Hogar | Nequi | Entregado | 61 | 459.73 | 2 | 27.0 | 12 | 3.1 |
| 6 | Deportes | Tarjeta | Pendiente | 62 | 253.33 | 10 | 14.5 | -20 | NA |
| 7 | Electrónica | nequi | Cancelado | 70 | 615.43 | 7 | -6.2 | 5 | 4.7 |
| 8 | Alimentos | Efectivo | Entregado | 48 | 331.84 | 5 | 17.8 | 8 | 5.2 |
| 9 | Hogar | Efectivo | Entregado | 48 | 460.16 | 5 | 8.9 | 5 | 3.4 |
| 10 | Alimentos | Nequi | Cancelado | 30 | 190.17 | 12 | 12.0 | 18 | 3.9 |
Se presenta las variables NA que hay por colunna y sus porcentaje a nivel del resto.
| variable | n_miss | pct_miss |
|---|---|---|
| Descuento_Porcentaje | 40 | 5 |
| Calificacion_Cliente | 40 | 5 |
| Monto_Compra_USD | 39 | 4.88 |
| Metodo_Pago | 31 | 3.88 |
| Estado_Pedido | 31 | 3.88 |
| ID | 0 | 0 |
| Categoria_Producto | 0 | 0 |
| Edad_Cliente | 0 | 0 |
| Cantidad_Productos | 0 | 0 |
| Tiempo_Entrega_Dias | 0 | 0 |
Tambien se mira las variables que significan los mismo pero estan escritas de manera diferente.
##
## === CATEGORÍAS ÚNICAS EN LA COLUMNA 'PRODUCTOS' ===
## [1] "Electrónica" "Ropa" "Hogar" "Deportes" "Alimentos"
##
## === CATEGORÍAS ÚNICAS EN LA COLUMNA 'METODO DE PAGO' ===
## [1] "Nequi" "Transferencia" "Efectivo" "Tarjeta"
## [5] "nequi" "E" NA "TarjeTa"
## [9] "TransferenCia" "efectivo" "N" "transferencia"
## [13] "TRANSFERENCIA" "T" "TARJETA" "NEQUI"
## [17] "tarjeta" "EFECTIVO"
##
## === CATEGORÍAS ÚNICAS EN LA COLUMNA 'ESTADO DE PEDIDO' ===
## [1] "Pendiente" "Cancelado" "Entregado" NA "entregado" "P"
## [7] "EntregaDo" "pendiente" "ENTREGADO" "PENDIENTE" "cancelado" "E"
## [13] "CancelaDo" "CANCELADO" "C"
Valores mal escritos y sinónimos: en Metodo_Pago encontramos “E”, “EFECTICO”, “efectivo”, “Efectivo”, “Nequi”, “NEQUI”, “Tarjeta”, “tarjeta”, “TARJETA”, “Transferencia”, “transferencia”, etc.
Celdas vacías: ““,” “,”NA”, “NULL”.
Datos atípicos: edades negativas o >100 años, montos negativos, descuentos >100%, tiempos de entrega >60 días, calificaciones fuera de 1-5.
Duplicados: filas idénticas.
Estandarización de variables categóricas Se aplica estandarización usando tolower(), trimws() y case_when(). Para categoria_producto se usó str_detect() para capturar cualquier variante de “electr”.
Imprimos ya las variables organizadas y con un mismo tipo de escritura:
##
## === CATEGORÍAS ÚNICAS EN LA COLUMNA 'PRODUCTOS' ===
## [1] "Electronica" "Ropa" "Hogar" "Deportes" "Alimentos"
##
## === CATEGORÍAS ÚNICAS EN LA COLUMNA 'METODO DE PAGO' ===
## [1] "Nequi" "Transferencia" "Efectivo" "Tarjeta"
## [5] NA
##
## === CATEGORÍAS ÚNICAS EN LA COLUMNA 'ESTADO DE PEDIDO' ===
## [1] "Pendiente" "Cancelado" "Entregado" NA
Los valores NA presentes en método de pago y estado de pedido fueron reemplazados utilizando la moda (el valor que más se repite en cada columna). Esto asegura que los registros incompletos se completen con la categoría más común del dataset.
Validación de rangos en variables numéricas Para garantizar la coherencia de los datos, se definieron rangos lógicos para cada variable numérica:
Edad del cliente: entre 18 y 100 años (valores fuera de este rango se consideran erróneos y se convierten en NA).
Monto de compra: no puede ser negativo.
Cantidad de productos: entre 1 y 50 unidades por pedido.
Descuento: entre 0% y 100%.
Tiempo de entrega: entre 0 y 60 días.
Calificación del cliente: entre 1 y 5 estrellas.
Aquellos valores que no cumplían con estos rangos fueron transformados a NA para ser tratados posteriormente.
Imputación de valores numéricos con la mediana Los valores NA generados en el paso anterior, más los que ya existían originalmente, fueron reemplazados utilizando la mediana de cada variable (con na.rm = TRUE para ignorar los NA durante el cálculo). Se eligió la mediana en lugar de la media porque es más robusta ante valores atípicos o extremos.
Imputación específica para la edad por categoría de producto Se observó que la edad del cliente podía variar según el tipo de producto comprado. Por lo tanto, los NA en la variable edad_cliente se rellenaron con la mediana de edad de cada categoría de producto (Electrónica, Ropa, Hogar, etc.), en lugar de usar una mediana global. Esto permite una imputación más precisa y contextualizada.
Eliminación de duplicados Finalmente, se eliminaron las filas completamente duplicadas para evitar sesgos en los análisis posteriores, conservando solo registros únicos.
## === VALORES USADOS EN IMPUTACIÓN ===
## Moda para metodo_pago: Tarjeta
## Moda para estado_pedido: Entregado
##
## Medianas globales:
## monto_compra_usd: 252.695
## cantidad_productos: 8
## descuento_porcentaje: 10.55
## tiempo_entrega_dias: 10
## calificacion_cliente: 3.9
##
## Medianas de edad por categoría de producto:
## # A tibble: 5 × 2
## categoria_producto mediana_edad
## <chr> <dbl>
## 1 Alimentos 43
## 2 Deportes 42
## 3 Electronica 45
## 4 Hogar 44
## 5 Ropa 47
##
## Limpieza completada. Dimensiones finales: 800 10
| variable | na_count |
|---|
Se crean precio_unitario, grupo_edad, satisfecho y descuento_alto. Para un mejor analisis de los datos y poder llegar a unas mejores concluciones
| edad_cliente | monto_compra_usd | cantidad_productos | descuento_porcentaje | tiempo_entrega_dias | calificacion_cliente | precio_unitario | |
|---|---|---|---|---|---|---|---|
| edad_cliente | 1.00 | 0.02 | 0.00 | -0.06 | -0.02 | 0.04 | 0.05 |
| monto_compra_usd | 0.02 | 1.00 | 0.01 | 0.07 | 0.01 | -0.01 | 0.74 |
| cantidad_productos | 0.00 | 0.01 | 1.00 | 0.00 | 0.02 | 0.02 | -0.08 |
| descuento_porcentaje | -0.06 | 0.07 | 0.00 | 1.00 | -0.03 | 0.01 | 0.02 |
| tiempo_entrega_dias | -0.02 | 0.01 | 0.02 | -0.03 | 1.00 | -0.05 | 0.03 |
| calificacion_cliente | 0.04 | -0.01 | 0.02 | 0.01 | -0.05 | 1.00 | 0.00 |
| precio_unitario | 0.05 | 0.74 | -0.08 | 0.02 | 0.03 | 0.00 | 1.00 |
La matriz de correlación (coeficiente de Pearson) permite identificar relaciones lineales entre las variables cuantitativas del dataset. Los valores oscilan entre -1 y 1; valores cercanos a 0 indican ausencia de relación lineal.
Principales hallazgos:
| Par de variables | Correlación | Interpretación |
|---|---|---|
precio_unitario ↔︎ monto_compra_usd |
0.74 | Correlación positiva fuerte (alta). Es esperable porque
monto_compra_usd = precio_unitario × cantidad_productos.
Esta alta correlación puede generar multicolinealidad
si se incluyen ambas en un modelo predictivo. Por ello, en la regresión
logística se excluyó precio_unitario, manteniendo
monto_compra_usd como variable representativa del
gasto. |
tiempo_entrega_dias ↔︎
calificacion_cliente |
-0.05 | Correlación negativa muy débil, prácticamente nula. Aunque el gráfico de dispersión sugería una ligera tendencia negativa, la correlación confirma que no existe una relación lineal significativa entre el tiempo de entrega y la calificación. Esto explica por qué en el modelo de regresión logística dicha variable no resultó significativa (p = 0.144). |
| Resto de pares | Todos entre -0.08 y 0.07 | Correlaciones prácticamente nulas. Ninguna otra variable numérica muestra una asociación lineal relevante. Esto es positivo porque indica ausencia de multicolinealidad entre las predictoras restantes. |
Conclusiones para el análisis:
precio_unitario vs monto_compra_usd), y ya
fue tratada excluyendo una de ellas.tiempo_entrega_dias y
calificacion_cliente refuerza la conclusión del modelo:
el tiempo de entrega no es un determinante lineal de la
satisfacción del cliente en este conjunto de datos.| edad_cliente | monto_compra_usd | cantidad_productos | descuento_porcentaje | tiempo_entrega_dias | calificacion_cliente | |
|---|---|---|---|---|---|---|
| Min. :18.00 | Min. : 0.04 | Min. : 1.000 | Min. : 0.10 | Min. : 1.00 | Min. :1.20 | |
| 1st Qu.:31.00 | 1st Qu.: 177.92 | 1st Qu.: 4.000 | 1st Qu.: 7.20 | 1st Qu.: 6.00 | 1st Qu.:3.50 | |
| Median :44.00 | Median : 252.69 | Median : 8.000 | Median :10.55 | Median :10.00 | Median :3.90 | |
| Mean :45.13 | Mean : 486.88 | Mean : 7.543 | Mean :11.50 | Mean :10.26 | Mean :3.85 | |
| 3rd Qu.:59.00 | 3rd Qu.: 329.10 | 3rd Qu.:11.000 | 3rd Qu.:15.43 | 3rd Qu.:15.00 | 3rd Qu.:4.30 | |
| Max. :74.00 | Max. :100000.00 | Max. :14.000 | Max. :34.90 | Max. :19.00 | Max. :5.00 |
| Etapa | Filas | Duplicados | Total_NA |
|---|---|---|---|
| Registros originales | 800 | 0 | 181 |
| Registros después de limpieza | 800 | 0 | 0 |
| Variable | NA_imputados_mediana |
|---|---|
| edad_cliente | 0 |
| monto_compra_usd | 39 |
| cantidad_productos | 0 |
| descuento_porcentaje | 40 |
| tiempo_entrega_dias | 0 |
| calificacion_cliente | 40 |
| metodo_pago | n | porcentaje |
|---|---|---|
| Tarjeta | 265 | 33.12 |
| Transferencia | 185 | 23.12 |
| Nequi | 180 | 22.50 |
| Efectivo | 170 | 21.25 |
| estado_pedido | n | porcentaje |
|---|---|---|
| Entregado | 322 | 40.25 |
| Cancelado | 239 | 29.88 |
| Pendiente | 239 | 29.88 |
| categoria_producto | n | porcentaje |
|---|---|---|
| Electronica | 176 | 22.0 |
| Hogar | 168 | 21.0 |
| Deportes | 156 | 19.5 |
| Ropa | 156 | 19.5 |
| Alimentos | 144 | 18.0 |
El análisis de tendencia central muestra que la mayoría de las variables presentan distribuciones simétricas (edad, cantidad de productos, tiempo de entrega, calificación), donde la media y mediana son cercanas. La excepción es el monto de compra, que tiene una fuerte asimetría positiva debido a valores atípicos extremos (máximo de 100,000USD),porloquela mediana(252.69 USD) representa mejor el gasto típico del cliente. Los rangos lógicos establecidos (edad 18-100 años, descuento 0-100%, etc.) se cumplen en su totalidad después de la limpieza.
Interpretación:Existe una clara segmentación etaria en
la elección del método de pago. Nequi domina entre los jóvenes (18-29
años), mientras que Tarjeta es preferido por adultos maduros (45-59
años). El efectivo mantiene un uso equilibrado, y la transferencia es el
método más homogéneo en todas las edades. Estas diferencias sugieren que
la empresa podría adaptar sus promociones o canales de comunicación
según el perfil etario de cada método de pago.
## [1] "Electronica" "Ropa" "Hogar" "Deportes" "Alimentos"
## # A tibble: 5 × 2
## categoria_producto monto_promedio
## <chr> <dbl>
## 1 Alimentos 673.
## 2 Deportes 265.
## 3 Electronica 250.
## 4 Hogar 264.
## 5 Ropa 1044.
Interpretación: La categoría Ropa presenta el monto de compra promedio más alto (USD 1,066), seguida por Alimentos (USD 687). Luego se ubican Hogar (USD 263), Deportes (USD 250) y Electrónica (USD 237). Existe una brecha importante entre las dos primeras categorías y las tres últimas. Para incrementar los ingresos, se podría incentivar la venta cruzada (por ejemplo, ofrecer accesorios de vestir a compradores de alimentos) o analizar por qué las categorías de menor ticket (Electrónica, Hogar, Deportes) tienen montos promedio más bajos, posiblemente debido a productos de menor precio unitario o menor cantidad por transacción.
Interpretación: La mayoría de las calificaciones se concentran entre 3 y 5, con una moda en 4 (o donde sea). Esto confirma que los clientes tienden a estar satisfechos.
## [1] -0.04997328
## # A tibble: 3 × 3
## rango_entrega calificacion_promedio n_pedidos
## <chr> <dbl> <int>
## 1 Lento (>12 días) 3.79 297
## 2 Normal (8-12 días) 3.93 236
## 3 Rápido (≤7 días) 3.85 267
##
## Call:
## glm(formula = satisfecho_bin ~ descuento_porcentaje + tiempo_entrega_dias +
## metodo_pago + categoria_producto + estado_pedido + grupo_edad,
## family = binomial, data = datos_limpios)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.637566 0.347329 -1.836 0.0664 .
## descuento_porcentaje 0.006567 0.011292 0.582 0.5608
## tiempo_entrega_dias -0.019938 0.013644 -1.461 0.1439
## metodo_pagoNequi 0.014818 0.223482 0.066 0.9471
## metodo_pagoTarjeta 0.214125 0.203626 1.052 0.2930
## metodo_pagoTransferencia 0.352515 0.218558 1.613 0.1068
## categoria_productoDeportes 0.468280 0.238134 1.966 0.0492 *
## categoria_productoElectronica 0.062447 0.235242 0.265 0.7907
## categoria_productoHogar 0.111692 0.236184 0.473 0.6363
## categoria_productoRopa 0.240579 0.240337 1.001 0.3168
## estado_pedidoEntregado 0.101956 0.177100 0.576 0.5648
## estado_pedidoPendiente 0.209674 0.189277 1.108 0.2680
## grupo_edad30-44 -0.092465 0.207252 -0.446 0.6555
## grupo_edad45-59 0.081206 0.214033 0.379 0.7044
## grupo_edad60+ 0.042405 0.214784 0.197 0.8435
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1088.5 on 799 degrees of freedom
## Residual deviance: 1075.0 on 785 degrees of freedom
## AIC: 1105
##
## Number of Fisher Scoring iterations: 4
| Variable | Coef | OR | IC_2.5 | IC_97.5 | p_valor | |
|---|---|---|---|---|---|---|
| (Intercept) | (Intercept) | -0.638 | 0.529 | 0.266 | 1.041 | 0.066 |
| descuento_porcentaje | descuento_porcentaje | 0.007 | 1.007 | 0.985 | 1.029 | 0.561 |
| tiempo_entrega_dias | tiempo_entrega_dias | -0.020 | 0.980 | 0.954 | 1.007 | 0.144 |
| metodo_pagoNequi | metodo_pagoNequi | 0.015 | 1.015 | 0.655 | 1.574 | 0.947 |
| metodo_pagoTarjeta | metodo_pagoTarjeta | 0.214 | 1.239 | 0.832 | 1.851 | 0.293 |
| metodo_pagoTransferencia | metodo_pagoTransferencia | 0.353 | 1.423 | 0.928 | 2.188 | 0.107 |
| categoria_productoDeportes | categoria_productoDeportes | 0.468 | 1.597 | 1.003 | 2.555 | 0.049 |
| categoria_productoElectronica | categoria_productoElectronica | 0.062 | 1.064 | 0.672 | 1.691 | 0.791 |
| categoria_productoHogar | categoria_productoHogar | 0.112 | 1.118 | 0.704 | 1.780 | 0.636 |
| categoria_productoRopa | categoria_productoRopa | 0.241 | 1.272 | 0.795 | 2.041 | 0.317 |
| estado_pedidoEntregado | estado_pedidoEntregado | 0.102 | 1.107 | 0.783 | 1.569 | 0.565 |
| estado_pedidoPendiente | estado_pedidoPendiente | 0.210 | 1.233 | 0.851 | 1.789 | 0.268 |
| grupo_edad30-44 | grupo_edad30-44 | -0.092 | 0.912 | 0.607 | 1.370 | 0.655 |
| grupo_edad45-59 | grupo_edad45-59 | 0.081 | 1.085 | 0.713 | 1.652 | 0.704 |
| grupo_edad60+ | grupo_edad60+ | 0.042 | 1.043 | 0.685 | 1.591 | 0.843 |
## fitting null model for pseudo-r2
##
## Pseudo R-cuadrado de McFadden: 0.0124
El modelo busca predecir la probabilidad de que un cliente esté satisfecho (calificación ≥ 4 estrellas) a partir de variables demográficas y de transacción.
Resultados clave:
| Variable | Odds Ratio | IC 95% | p-valor | Interpretación práctica |
|---|---|---|---|---|
| Categoría Deportes (vs Alimentos) | 1.597 | [1.003 – 2.555] | 0.049 | Los compradores de artículos deportivos tienen un 60% más de probabilidad de estar satisfechos que los compradores de Alimentos. Sin embargo, el intervalo de confianza apenas roza el 1 (límite inferior = 1.003), lo que indica un efecto débil y marginalmente significativo. |
| Tiempo de entrega (por día adicional) | 0.980 | [0.954 – 1.007] | 0.144 | Cada día extra de demora reduce la probabilidad de satisfacción en un 2%, pero el efecto no es estadísticamente significativo (p > 0.05). |
| Método de pago Transferencia (vs Efectivo) | 1.423 | [0.928 – 2.188] | 0.107 | Pagar con Transferencia aumenta la probabilidad de satisfacción en un 42% en comparación con Efectivo, pero la falta de significancia (p = 0.107) impide concluir que sea un factor real. |
| Resto de variables (descuento, otros métodos, otros grupos de edad, etc.) | — | — | todos > 0.05 | Ninguna otra variable mostró una asociación estadísticamente significativa con la satisfacción. |
precio_unitario fue excluida del modelo
final porque presentaba alta correlación con
monto_compra_usd (multicolinealidad), lo cual es
correcto.Aunque la categoría Deportes aparece como un factor positivo, su efecto es débil y apenas significativo. En la práctica, ninguna de las variables disponibles logra explicar la satisfacción del cliente. Esto implica que la empresa debería: 1. Recolectar otros datos (calidad del producto, atención al cliente, facilidad de devolución, experiencia en el sitio web). 2. No tomar decisiones operativas basadas en descuentos, tiempos de entrega o métodos de pago para mejorar la satisfacción, ya que no hay evidencia estadística de que influyan. 3. Realizar un análisis cualitativo (entrevistas o encuestas abiertas) para identificar los verdaderos impulsores de satisfacción.
El presente trabajo desarrolló un proceso completo de limpieza, análisis exploratorio y modelado predictivo sobre una base de datos de 800 transacciones de comercio electrónico. A continuación se resumen los hallazgos más importantes y las recomendaciones derivadas.
categoria_producto, metodo_pago,
estado_pedido), reduciendo las categorías inconsistentes de
más de 10 variantes por variable a solo 4-5 categorías limpias.precio_unitario y
monto_compra_usd (esperable por construcción). El resto de
correlaciones son prácticamente nulas (entre -0.08 y 0.07), lo que
indica ausencia de multicolinealidad problemática.satisfecho_bin (1 =
calificación ≥ 4, 0 = calificación < 4).precio_unitario por alta correlación
con monto_compra_usd).Este informe cumple con los objetivos planteados: se ejecutó una limpieza rigurosa, un análisis exploratorio completo, una matriz de correlación y un modelo de regresión logística. La base de datos resultante es confiable y el análisis deja en claro que la empresa necesita ampliar su recolección de datos para entender verdaderamente la satisfacción del cliente. El código y la metodología quedan documentados y reproducibles.
Entregable final: RMarkdown con código ejecutable, tablas, gráficos e interpretaciones listo para ser presentado al profesor Jeisson Rodriguez.