# Cargar librerías necesarias
library(readxl)
library(dplyr)
library(ggplot2)
library(corrplot)
library(caret)
library(shiny)
library(plotly)

Resumen Ejecutivo

El conjunto de datos Online Retail contiene 541 909 transacciones realizadas entre el 1 de diciembre de 2010 y el 9 de diciembre de 2011 por un comercio electrónico del Reino Unido que vende regalos de ocasión única. Con 8 variables clave (número de factura, código de producto, descripción, cantidad, fecha de la factura, precio unitario, identificador de cliente y país), este dataset permite abordar objetivos como la segmentación de clientes (RFM), el descubrimiento de patrones de compra (basket analysis) y el análisis de tendencias temporales. En este documento se plantea:
- Objetivo: generar perfiles de clientes y detectar tendencias de venta para optimizar marketing y logística.
- Preguntas clave: ¿Qué productos y países generan mayor facturación? ¿Cómo varía la demanda a lo largo del tiempo? ¿Qué segmentos de clientes aportan mayor valor?
- Metodología: carga y exploración inicial, análisis descriptivo y preparación de datos para modelado (clustering y clasificación).


Entendimiento del problema

Objetivo

  • Desarrollar un análisis descriptivo y predictivo que permita segmentar clientes según su comportamiento de compra y detectar patrones estacionales en las ventas.

Preguntas

  1. ¿Cuáles son los productos más vendidos y su contribución al total de ingresos?
  2. ¿Cómo varían las ventas por país y en función del tiempo (estacionalidad mensual)?
  3. ¿Qué segmentos de clientes (RFM) generan mayor valor y frecuencia de compra?
  4. ¿Cuál es el impacto de las devoluciones (facturas canceladas) sobre los ingresos netos?

Partes interesadas

  • Equipo de marketing: para diseñar campañas dirigidas a segmentos de alto valor.
  • Gestión de inventario: para ajustar niveles de stock según demanda estacional.
  • Dirección comercial: para establecer precios dinámicos y promociones basadas en tendencias.

Criterios de éxito

  • Definición de al menos tres segmentos de clientes con perfiles distintivos (alta frecuencia, alto valor, ocasionales).
  • Identificación de patrones temporales claros (picos de ventas estacionales o mensuales).
  • Propuestas de acciones concretas (campañas por segmento, ajuste de stock) que puedan pilotarse y medirse en KPI (p.ej., incremento ≥ 5 % en ingresos de clientes recurrentes).

Entendimiento del conjunto de datos

# Cargar librería y leer datos
library(readxl)
retail <- read_excel("online_retail.xlsx")
# Inspección rápida
dim(retail)   # Número de filas y columnas
## [1] 541909      8
str(retail)   # Estructura de las variables
## tibble [541,909 × 8] (S3: tbl_df/tbl/data.frame)
##  $ InvoiceNo  : chr [1:541909] "536365" "536365" "536365" "536365" ...
##  $ StockCode  : chr [1:541909] "85123A" "71053" "84406B" "84029G" ...
##  $ Description: chr [1:541909] "WHITE HANGING HEART T-LIGHT HOLDER" "WHITE METAL LANTERN" "CREAM CUPID HEARTS COAT HANGER" "KNITTED UNION FLAG HOT WATER BOTTLE" ...
##  $ Quantity   : num [1:541909] 6 6 8 6 6 2 6 6 6 32 ...
##  $ InvoiceDate: POSIXct[1:541909], format: "2010-12-01 08:26:00" "2010-12-01 08:26:00" ...
##  $ UnitPrice  : num [1:541909] 2.55 3.39 2.75 3.39 3.39 7.65 4.25 1.85 1.85 1.69 ...
##  $ CustomerID : num [1:541909] 17850 17850 17850 17850 17850 ...
##  $ Country    : chr [1:541909] "United Kingdom" "United Kingdom" "United Kingdom" "United Kingdom" ...

1. Origen y formato

  • Registros: 541 909 transacciones entre el 01/12/2010 y el 09/12/2011.
  • Variables: 8 columnas (6 features + ID + target implícito).
  • Formato: fichero Excel (.xlsx) de 22.6 MB, sin valores faltantes.

2. Variables principales

Variable Rol Tipo Descripción Valores faltantes
InvoiceNo ID de trans. Categórica Número de factura (si empieza por ‘C’, indica cancelación) No
StockCode ID de prod. Categórica Código de producto No
Description Feature Categórica Nombre del producto No
Quantity Feature Entera Cantidad de unidades por transacción No
InvoiceDate Feature Fecha-Hora Fecha y hora de emisión de la factura No
UnitPrice Feature Real Precio unitario (libras esterlinas) No
CustomerID Feature Categórica Identificador único de cliente No
Country Feature Categórica País de residencia del cliente No

Nota: no hay valores faltantes reportados en las 8 variables.

3. Observaciones iniciales

  • Devoluciones: alrededor del 0.7 % de las facturas comienzan con ‘C’, indicando cancelaciones; conviene ajustar ingresos netos.
  • Distribución de países: predominio de clientes del Reino Unido (~60 %), seguido por Alemania y Francia.
  • Rangos extremos: cantidades negativas o muy altas apuntan a devoluciones o a compras al por mayor (wholesale).
  • Estacionalidad: se observan picos en ventas antes de Navidad (diciembre) y en verano (junio-julio).

Con este entendimiento, avanzaremos al análisis exploratorio (univariado, bivariado y series temporales) y prepararemos los datos para explotación vía clustering (segmentación RFM) y modelado predictivo (pronóstico de ventas).

Drug Consumption (Quantified) - DATA

Introducción

El consumo de sustancias psicoactivas, tanto legales como ilegales, representa un desafío significativo para la salud pública y la cohesión social. Comprender los factores que influyen en el uso de estas sustancias es esencial para desarrollar estrategias efectivas de prevención y tratamiento. En este contexto, el análisis de datos y la aplicación de modelos predictivos ofrecen herramientas poderosas para identificar patrones de comportamiento y factores de riesgo asociados al consumo de drogas.

El conjunto de datos “Drug Consumption (Quantified)”, disponible en el repositorio de UCI Machine Learning, proporciona información detallada sobre 1,885 individuos, incluyendo mediciones de personalidad basadas en el modelo de los Cinco Grandes (NEO-FFI-R), niveles de impulsividad (BIS-11) y búsqueda de sensaciones (ImpSS), así como datos demográficos como edad, género, nivel educativo, país de residencia y etnicidad. Además, se recopila información sobre el uso de 18 sustancias diferentes, clasificadas en siete categorías temporales que van desde “Nunca usado” hasta “Usado en el último día” (R: Drug consumption data set).


Entendimiento del problema

Objetivo
- Identificar qué combinaciones de rasgos psicológicos y características demográficas están asociadas con distintos patrones de consumo (ocasional, habitual, frecuente).
- Generar perfiles de riesgo que sirvan de base para intervenciones preventivas y programas de tratamiento focalizados.

Preguntas clave
1. ¿Qué rasgos del Big Five (neuroticismo, extraversión, apertura, afabilidad, responsabilidad) se correlacionan con un mayor uso de sustancias como alcohol, cannabis o cocaína?
2. ¿Cómo influyen la impulsividad y la búsqueda de *sensaciones en la probabilidad de consumo reciente frente al pasado lejano?
3. ¿Existen grupos demográficos (edad, género, nivel educativo, región) con patrones de consumo distintivos que requieran estrategias de salud pública diferenciadas?

Partes Interesadas
- Investigadores en psicología y adicciones: buscan comprender los determinantes individuales del consumo.
- Profesionales de salud pública y clínicos: diseñan y evalúan programas de prevención e intervención.
- Autoridades y policymakers: necesitan evidencia para asignar recursos y establecer políticas de reducción de daños.

Criterios de éxito
- Modelos predictivos con desempeño sólido (p.ej. AUC ≥ 0.70 en validación cruzada).
- Identificación de al menos tres perfiles de riesgo claros y clínicamente interpretables.
- Recomendaciones de intervención basadas en datos que puedan pilotarse en entornos reales.


Este estudio combinará un análisis exploratorio de datos con técnicas de modelado (clasificación y clustering) para responder las preguntas planteadas y ofrecer recomendaciones prácticas para la prevención y el tratamiento del consumo problemático de sustancias.

Entendimiento del conjunto de datos

El objetivo de esta fase es conocer a fondo la estructura, el origen y las características principales de cada variable, para sentar las bases de un análisis riguroso.

# Leer los datos
datos <- read_excel("drug_consumption.xlsx")

Todas las variables predictoras excepto se encuentran respectivamente normalizadas (con sus valores exclusivamente entre los rangos -1 y 1).

dim(datos)        # filas y columnas
## [1] 1885   32
str(datos)        # estructura de datos
## tibble [1,885 × 32] (S3: tbl_df/tbl/data.frame)
##  $ ID        : num [1:1885] 1 2 3 4 5 6 7 8 9 10 ...
##  $ AGE       : num [1:1885] 0.4979 -0.0785 0.4979 -0.952 0.4979 ...
##  $ GENDER    : num [1:1885] 0.482 -0.482 -0.482 0.482 0.482 ...
##  $ EDUCATION : num [1:1885] -0.0592 1.9844 -0.0592 1.1637 1.9844 ...
##  $ COUNTRY   : num [1:1885] 0.961 0.961 0.961 0.961 0.961 ...
##  $ ETHNICITY : num [1:1885] 0.126 -0.317 -0.317 -0.317 -0.317 ...
##  $ NSCORE    : num [1:1885] 0.313 -0.678 -0.467 -0.149 0.735 ...
##  $ ESCORE    : num [1:1885] -0.575 1.939 0.805 -0.806 -1.633 ...
##  $ OSCORE    : num [1:1885] -0.5833 1.4353 -0.8473 -0.0193 -0.4517 ...
##  $ ASCORE    : num [1:1885] -0.917 0.761 -1.621 0.59 -0.302 ...
##  $ CSCORE    : num [1:1885] -0.00665 -0.14277 -1.0145 0.58489 1.30612 ...
##  $ IMPULSIVE : num [1:1885] -0.217 -0.711 -1.38 -1.38 -0.217 ...
##  $ SS        : num [1:1885] -1.181 -0.216 0.401 -1.181 -0.216 ...
##  $ ALCOHOL   : chr [1:1885] "CL5" "CL5" "CL6" "CL4" ...
##  $ AMPHET    : chr [1:1885] "CL2" "CL2" "CL0" "CL0" ...
##  $ AMYL      : chr [1:1885] "CL0" "CL2" "CL0" "CL0" ...
##  $ BENZOS    : chr [1:1885] "CL2" "CL0" "CL0" "CL3" ...
##  $ CAFFEINE  : chr [1:1885] "CL6" "CL6" "CL6" "CL5" ...
##  $ CANNABIS  : chr [1:1885] "CL0" "CL4" "CL3" "CL2" ...
##  $ CHOCOLAT  : chr [1:1885] "CL5" "CL6" "CL4" "CL4" ...
##  $ COCAINE   : chr [1:1885] "CL0" "CL3" "CL0" "CL2" ...
##  $ CRACK     : chr [1:1885] "CL0" "CL0" "CL0" "CL0" ...
##  $ ECSTASY   : chr [1:1885] "CL0" "CL4" "CL0" "CL0" ...
##  $ HEROIN    : chr [1:1885] "CL0" "CL0" "CL0" "CL0" ...
##  $ KETAMINE  : chr [1:1885] "CL0" "CL2" "CL0" "CL2" ...
##  $ LEGALH    : chr [1:1885] "CL0" "CL0" "CL0" "CL0" ...
##  $ LSD       : chr [1:1885] "CL0" "CL2" "CL0" "CL0" ...
##  $ METH      : chr [1:1885] "CL0" "CL3" "CL0" "CL0" ...
##  $ MUSHROOMS : chr [1:1885] "CL0" "CL0" "CL1" "CL0" ...
##  $ NICOTINE  : chr [1:1885] "CL2" "CL4" "CL0" "CL2" ...
##  $ FICTICIOUS: chr [1:1885] "CL0" "CL0" "CL0" "CL0" ...
##  $ VSA       : chr [1:1885] "CL0" "CL0" "CL0" "CL0" ...

1. Origen y formato

  • Registros: 1 885 participantes.
  • Variables:
    • ID (numérica y entera): identificador único de fila, sin relación con la persona.
    • Demográficas (5): edad, género, educación, país, etnicidad.
    • Psicológicas (7): cinco rasgos de personalidad (N, E, O, A, C), impulsividad (Impulsive) y búsqueda de sensaciones (SS).
    • Consumo de sustancias (18): cada sustancia codificada en 7 niveles de frecuencia.
    • Sustancia ficticia (1): como parte del formato.

2. Variables demográficas

Variable Tipo Valores y significado % principal
Age Real (z) 6 grupos etarios: 18–24, 25–34, …, 65+ 18–24: 34.1%; 25–34: 25.5%; …
Gender Real (z) Female (0.48246), Male (–0.48246) F: 49.97%; M: 50.03%
Education Real (z) 9 niveles: “Left school before 16”, …, “Doctorate” Some college: 26.8%; University: 25.5%
Country Real (z) 7 categorías (UK, USA, Canada, …, Other) UK: 55.4%; USA: 29.6%
Ethnicity Real (z) 7 categorías (White, Asian, Black, Mixed, Other) White: 91.3%

Cada demográfica ya viene estandarizada (media ≈ 0, sd ≈ 1), aunque la interpretación se hace en función de su significado original en la tabla de información que aparece en la página de la UCI.


3. Variables psicológicas

Prueba / Rasgo Código Ítems Escala original Estadísticos (Value)
Neuroticism (Nscore) Nscore 12–60 Likert 1–5 (sumado) Min –3.46; Max 3.27; Mean 0.00; SD 0.998
Extraversion (Escore) Escore 16–59 Likert 1–5 (sumado) Min –3.27; Max 3.27; Mean 0.00; SD 0.997
Openness (Oscore) Oscore 24–60 Likert 1–5 (sumado) Min –3.27; Max 2.90; Mean 0.00; SD 0.996
Agreeableness (Ascore) Ascore 12–60 Likert 1–5 (sumado) Min –3.46; Max 3.46; Mean 0.00; SD 0.997
Conscientiousness (Cscore) Cscore 17–60 Likert 1–5 (sumado) Min –3.46; Max 3.46; Mean 0.00; SD 0.998
Impulsividad (Impulsive) Impulsive 10 facetas Likert 1–4 (sumado) Min –2.56; Max 2.90; Mean 0.007; SD 0.954
Búsqueda de sensaciones (SS) SS 8 ítems Likert 1–4 (sumado) Min –2.08; Max 1.92; Mean –0.003; SD 0.964

Nota: Todas estas variables se han transformado a puntuaciones estandarizadas (z-scores) para facilitar la comparación y el modelado.


4. Variables de consumo de sustancias

Para cada una de las 18 sustancias reales y la ficticia (p.ej. Alcohol, Cannabis, Cocaína, Crack, etc.), la variable de salida toma 7 clases:

Clase Definición
CL0 Nunca usado
CL1 Usado hace >10 años
CL2 Usado hace 5–10 años
CL3 Usado hace 1–5 años
CL4 Usado hace 1–12 meses
CL5 Usado hace 1–30 días
CL6 Usado en el último día

Este mismo esquema se repite para Amphetaminas, Benzodiazepinas, Café, Cannabis, Cocaína, Crack, Éxtasis, Heroína, Ketamina, “Legal highs”, LSD, Metadona, Hongos alucinógenos, Nicotina, Semeron (ficticio) y VSA.


5. Observaciones iniciales

  • Balance de clases: algunas sustancias (p.ej. Alcohol, Café, Chocolate) presentan alta prevalencia de uso reciente, mientras que otras (p.ej. Crack, Heroína) dominan los “Never used”.
  • Distribución demográfica: sesgo hacia participantes de Reino Unido y EE. UU., con mayoría de etnia blanca.
  • Variabilidad psicológica: los rasgos de personalidad cubren rangos amplios, permitiendo estudiar correlaciones fuertes con el consumo.

Con este conocimiento, podemos avanzar al análisis exploratorio (univariado, bivariado y visualizaciones) y preparar los datos para el modelado predictivo y de segmentación.

Exploración y Limpieza de datos

El conjunto de datos utilizado en este análisis contiene información sobre 1,885 individuos, incluyendo variables demográficas, psicológicas y de comportamiento relacionadas con el consumo de sustancias psicoactivas. Se incluyen tanto variables categóricas como cuantitativas, lo que permite realizar un análisis integral sobre los factores que influyen en los patrones de consumo. Esta información puede ser útil para identificar perfiles de riesgo y apoyar estrategias de intervención en salud pública.