En este trabajo se realizará un análisis exhaustivo de dos conjuntos de datos: AirQualityUCI y Online Retail, ambos con la posibilidad de proporcionar información importante en sus respectivos contextos.
El conjunto de datos AirQualityUCI contiene registros horarios recolectados entre marzo de 2004 y abril de 2005, los cuales miden distintos contaminantes atmosféricos como monóxido de carbono (CO), óxidos de nitrógeno (NOx), benceno (C₆H₆) e hidrocarburos no metánicos (NMHC), así como variables meteorológicas como la temperatura, la humedad relativa y la humedad absoluta. Estos datos, capturados mediante una red de sensores, permiten analizar las condiciones del aire a lo largo del tiempo. Esta recolección sistemática se convierte en una herramienta clave para comprender la magnitud del problema de la contaminación del aire, una de las amenazas ambientales más significativas para la salud humana y el medio ambiente, especialmente en zonas urbanas densamente pobladas. A partir de este análisis, es posible generar evidencia científica que apoye el desarrollo de modelos predictivos y la formulación de políticas de mitigación ambiental.
Por otro lado, el conjunto de datos Online Retail comprende transacciones registradas entre el 1 de diciembre de 2010 y el 9 de diciembre de 2011 en una tienda minorista en línea con sede en el Reino Unido. Esta empresa se dedica a la venta de regalos únicos para distintas ocasiones, y cuenta con una importante base de clientes mayoristas. El análisis de este conjunto de datos busca identificar tendencias y patrones en el comportamiento de los clientes, así como detectar posibles problemáticas que puedan estar afectando el rendimiento del negocio. Con base en estos hallazgos, se pretende proponer soluciones prácticas y generar información útil para la toma de decisiones estratégicas en un entorno digital cada vez más competitivo.
library(readxl)
Air <- read_excel("C:/Users/gabui/Downloads/AirQualityUCI.xlsx")
Retail <- read_excel("C:/Users/gabui/Downloads/Online Retail.xlsx")
El conjunto de datos AirQualityUCI contiene un total de 9,357 registros distribuidos en 15 variables, que corresponden a mediciones horarias realizadas durante más de un año en una ciudad europea. Estas mediciones combinan tanto datos ambientales (temperatura, humedad) como químicos (concentraciones de contaminantes). Aunque no hay celdas vacías, existen valores negativos en ciertas variables, los cuales se deben considerar como datos faltantes o inválidos, ya que representan magnitudes físicas que no pueden tomar valores por debajo de cero (como concentraciones o temperaturas).
library(knitr)
resultados <- data.frame(Índice = integer(0), Columna = character(0))
for (i in seq_along(colnames(Air))) {
resultados <- rbind(resultados, data.frame(Índice = i, Columna = colnames(Air)[i]))
}
kable(resultados,
col.names = c("Indice", "Columna"),
caption = "Tabla de Indices y Nombres de Columnas",
align = c("c", "l"))
| Indice | Columna |
|---|---|
| 1 | Date |
| 2 | Time |
| 3 | CO(GT) |
| 4 | PT08.S1(CO) |
| 5 | NMHC(GT) |
| 6 | C6H6(GT) |
| 7 | PT08.S2(NMHC) |
| 8 | NOx(GT) |
| 9 | PT08.S3(NOx) |
| 10 | NO2(GT) |
| 11 | PT08.S4(NO2) |
| 12 | PT08.S5(O3) |
| 13 | T |
| 14 | RH |
| 15 | AH |
Date: Fecha en la que se tomó la medición
Time: Hora exacta de la medición, registrada en formato de 24 horas.
CO(GT): Concentración de monóxido de carbono (CO) en el aire ambiente, medida en miligramos por metro cúbico (mg/m³).
C6H6(GT): Concentración de benceno (C₆H₆) en el aire, expresada en microgramos por metro cúbico (µg/m³).
PT08.S2(NMHC): Salida eléctrica del sensor 2, relacionado con la detección de hidrocarburos no metánicos.
PT08.S3(NOx): Salida eléctrica del sensor 3, que corresponde a la detección de óxidos de nitrógeno.
NO2(GT): Concentración de dióxido de nitrógeno (NO₂), medida en microgramos por metro cúbico (µg/m³).
PT08.S4(NO2): Salida eléctrica del sensor 4, el cual está asociado a la detección de dióxido de nitrógeno.
PT08.S5(O3): Salida eléctrica del sensor 5, relacionado con la detección de ozono (O₃).
T: Temperatura del aire ambiente, medida en grados Celsius (°C).
RH: Humedad relativa del aire, expresada como porcentaje (%), que indica la cantidad de vapor de agua presente en el aire respecto al máximo que puede contener a esa temperatura.
AH: Humedad absoluta, medida en kilogramos de vapor de agua por metro cúbico de aire seco (kg/m³)
Información extra:
Todas las variables son continuas:
Los sensores (p. ej. PT08.S1(CO), PT08.S2(NMHC), etc.), las concentraciones de contaminantes (CO, NOx, NO₂, C6H6) y las variables meteorológicas (T, RH, AH) están en escala numérica continua.
Variable objetivo con valores reales y amplios rangos
La variable CO(GT) (monóxido de carbono) presenta un rango amplio de valores (desde negativos como artefacto de medición hasta picos positivos) y una distribución sesgada, como muestra el histograma.
Dependencia temporal
Hay un componente de serie de tiempo (mediciones horarias), por lo que podríamos usar técnicas de regresión clásica o modelos de series de tiempo.
La base de datos AirQualityUCI contiene múltiples variables ambientales registradas por tiempo, para determinar qué columna es la X (variables independientes) y cuál es la Y (variable dependiente). En los análisis de calidad del aire, la variable objetivo suele ser una medida de contaminación como: CO(GT) (monóxido de carbono en el aire ambiente), NOx(GT) o el NO2(GT) (óxidos de nitrógeno). Basado en el nombre del archivo y el contenido, lo más común sería usar: Y (variable dependiente): CO(GT) (niveles de monóxido de carbono medidos) y X (variables independientes): todas las demás columnas numéricas relacionadas (como sensores PT08, temperatura T, humeda relativa del aire RH y humedad absoluta AH).
El problema que se plantea con esta base de datos es un problema de regresión, en el que se busca predecir la concentración de gases contaminantes en el aire (como CO, NMHC, NOx, NO2, entre otros) a partir de las lecturas de un dispositivo multisensor y otras variables ambientales registradas de manera horaria. Para abordar este problema, es importante primero realizar un preprocesamiento adecuado de los datos, ya que existen valores faltantes codificados como -200, los cuales deben ser identificados y tratados correctamente para evitar distorsiones en los análisis y modelos predictivos. Una vez que los datos estén limpios, se pueden aplicar diferentes modelos de regresión, como regresión lineal múltiple.
Análisis exploratorio: Examinar la distribución y comportamiento temporal de las variables, identificar valores faltantes (-200) y patrones en las concentraciones de gases mediante histogramas y gráficos de series temporales
Modelo de regresión: Construir un modelo para predecir concentraciones de gases contaminantes (CO o NOx) a partir de las lecturas del multisensor y variables ambientales.
Evaluación del modelo: Medir desempeño con métricas como RMSE, MAE o R², y validar con conjuntos de datos de prueba.
Interpretación: Analizar qué variables tienen mayor impacto en la predicción de contaminantes y discutir implicaciones para la monitorización ambiental y posibles acciones de mitigación.
El conjunto de datos Online Retail contiene aproximadamente 541,909 registros distribuidos en 8 variables, que corresponden a transacciones realizadas entre diciembre de 2010 y diciembre de 2011 por una tienda minorista en línea con sede en el Reino Unido. Esta tienda se dedica a la venta de productos de regalo únicos, y atiende tanto a clientes individuales como a mayoristas, con una fuerte concentración de ventas en el mercado británico.
Cada fila representa una línea de detalle dentro de una factura, e incluye información relacionada con el producto vendido, la cantidad, el precio, el cliente y la fecha de compra. Las facturas pueden contener varios productos, por lo que hay múltiples registros con el mismo número de factura (InvoiceNo).
library(knitr)
result <- data.frame(Índice = integer(0), Columna = character(0))
for (i in seq_along(colnames(Retail))) {
result <- rbind(result, data.frame(Índice = i, Columna = colnames(Retail)[i]))
}
kable(result,
col.names = c("Indice", "Columna"),
caption = "Tabla de Indices y Nombres de Columnas",
align = c("c", "l"))
| Indice | Columna |
|---|---|
| 1 | InvoiceNo |
| 2 | StockCode |
| 3 | Description |
| 4 | Quantity |
| 5 | InvoiceDate |
| 6 | UnitPrice |
| 7 | CustomerID |
| 8 | Country |
A continuación vamos a analizar cada variable:
InvoiceNo: Es el número de factura. Es un código único asignado a cada transacción. Como se dijo anteriormente las facturas que comienzan con la letra “C” indican que la transacción fue cancelada o devuelta.
StockCode: Es el código del producto. Es un identificador único para cada artículo en el inventario.
Description: Como su nombre lo indica es la descripción del producto. Indica el nombre o detalles del artículo vendido. Algunos valores están vacíos, lo cual puede dificultar el análisis si no se corrige.
Quantity: Es la cantidad de productos comprados (puede ser negativa, lo que indica una devolución).
InvoiceDate: Fecha y hora en que se realizó la transacción. Es útil para el análisis temporal (tendencias diarias, mensuales, estacionales).
UnitPrice: Es el precio unitario del producto, expresado en libras esterlinas
CustomerID: Es el código único asignado a cada cliente. Algunos registros no tienen este valor (clientes no identificados), lo que puede limitar ciertos análisis como segmentación o fidelización.
Country: Es el país del cliente. Ayuda a identificar el origen geográfico de la compra y a segmentar el mercado por región. El Reino Unido es el país predominante.
La variable principal a estudiar es el valor monetario de la transacción, calculado como el producto entre la cantidad vendida y el precio unitario de cada ítem. Esta variable representa los ingresos generados . A partir de la variable , que contiene la fecha y hora exacta de cada transacción, se derivarán diversas variables temporales que permiten distintos niveles de agregación. Entre ellas se encuentran la fecha sin hora, utilizada para el análisis diario; el mes, útil para detectar patrones estacionales a lo largo del año; el día de la semana, que permite analizar el comportamiento de las ventas en función de los ciclos semanales; y la hora del día, para estudiar las franjas horarias con mayor o menor actividad comercial. . Como complemento, se podrán utilizar variables contextuales como el país para segmentar las ventas geográficamente, y el productopara analizar su evolución temporal según el tipo de artículo. Estas variables serán clave para identificar patrones, tendencias y estacionalidades que permitan interpretar el comportamiento temporal de las ventas y ofrecer información útil para la toma de decisiones estratégicas.
El presente estudio se enfoca en el análisis de una base de datos que registra transacciones comerciales realizadas por una tienda de ventas en línea. El problema estadístico que se plantea es el análisis y modelado de series de tiempo, con el objetivo de entender el comportamiento temporal de las ventas y prever su evolución futura. A través de esta metodología se busca identificar tendencias generales, patrones estacionales, y eventos atípicos que puedan incidir en el volumen de ventas o ingresos generados. Este enfoque es especialmente relevante para optimizar la planificación comercial, prever la demanda, gestionar inventarios y diseñar campañas de marketing ajustadas a los momentos de mayor actividad.
Antes de aplicar cualquier modelo de series temporales, es imprescindible realizar un proceso de depuración de datos, ya que el conjunto presenta diversos problemas de calidad. Entre los más relevantes se encuentran las facturas canceladas, fácilmente reconocibles porque su número comienza con la letra “C”; los valores negativos en la columna de cantidad, que reflejan devoluciones de productos y deben tratarse adecuadamente para evitar distorsiones en el análisis; los valores faltantes en el identificador del cliente, que dificultan la desagregación de patrones individuales de compra; y los precios unitarios iguales a cero, que pueden indicar errores de registro o promociones mal documentadas. Adicionalmente, es necesario construir nuevas variables temporales a partir de la fecha y hora de la transacción, tales como el mes, el día de la semana o la hora del día, que permiten captar comportamientos cíclicos y estacionales más finos.
Fase 1: Preparación y transformación de los datos:
En esta primera etapa se realiza la limpieza y estructuración de los datos con el fin de obtener series temporales coherentes y aptas para el análisis. Se eliminarán los registros anómalos o no representativos de una venta efectiva, incluyendo las facturas canceladas (identificadas por la letra “C”), las transacciones con cantidades negativas (devoluciones), precios unitarios iguales a cero y registros con valores faltantes en campos clave. Posteriormente, se creará una variable de valor de transacción, obtenida como el producto de la cantidad por el precio unitario. Además, se extraerán componentes temporales a partir de la fecha de la transacción, como el año, mes, día de la semana y hora, para permitir distintos niveles de agregación temporal. Estas transformaciones permitirán construir series de tiempo confiables a nivel diario, semanal y mensual.
Fase 2: Análisis exploratorio temporal
Con los datos ya estructurados, se procederá a un análisis visual y descriptivo de la evolución de las ventas a lo largo del tiempo. Se generarán series temporales agregadas del valor total de ventas para observar tendencias generales, estacionalidades mensuales y semanales, y posibles caídas o picos en momentos específicos. Asimismo, se analizarán diferencias en el comportamiento de las ventas según variables contextuales como el país del cliente, el horario del día o el tipo de producto. Las herramientas de visualización incluirán gráficos de líneas temporales, descomposición estacional de la serie y mapas de calor temporales (por hora y día o por mes y país). Este análisis permitirá detectar patrones recurrentes, momentos críticos de baja o alta actividad comercial, y generar hipótesis explicativas del comportamiento de la demanda.
Todo este proceso tiene como fin último interpretar los patrones temporales en el comportamiento de las ventas, identificar los momentos de mayor y menor actividad, anticipar la demanda futura y brindar una base analítica sólida para la toma de decisiones comerciales estratégicas, como la programación de ofertas, la asignación de recursos logísticos y la optimización de inventario en función del comportamiento esperado del mercado.