# Cargar librerías necesarias
library(readxl)
library(dplyr)
library(ggplot2)
library(corrplot)
library(caret)
library(shiny)
library(plotly)
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).
# 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" ...
.xlsx) de 22.6
MB, sin valores faltantes.| 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.
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).
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).
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.
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" ...
| 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.
| 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.
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.
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.
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.