Kristel Herrera Rodríguez C13769
Oscar Porras Silesky C16042
Fabrizzio Herrera Calvo B83849
Este proyecto proporciona un conjunto de herramientas para analizar mediciones de contaminantes atmosféricos. Las funciones permiten evaluar distribuciones de probabilidad, calcular medias temporales, determinar ergodicidad y más, facilitando el análisis estadístico de los datos ambientales.
Este código requiere las siguientes bibliotecas:
- Pandas
- NumPy
- SciPy
- Matplotlib
- Seaborn
Para instalar las dependencias, se ejecuta el siguiente comando:
pip install pandas numpy scipy matplotlib seabornPara ejecutar el análisis, primero se importa las funciones desde proceso.py y luego se utiliza cada función con los datos apropiados.
Las funciones implementadas en este proyecto se basan en la teoría estadística y matemática para el análisis de series temporales y datos ambientales. Se utilizan métodos como ajustes de distribución, cálculos de medias y análisis de ergodicidad para interpretar los datos de contaminantes.
- Una función muestra
m(t)es una representación de una variable a lo largo del tiempo. En el contexto de mediciones de contaminantes atmosféricos,m(t)representa las mediciones de un contaminante específico en momentos específicos. - La función
muestrase utiliza para extraer una secuencia específica de mediciones del contaminante en un intervalo de tiempo y ubicación específicos, de un proceso aleatorioM(t).
M(t)es un concepto matemático que representa una serie de variables aleatorias indexadas en el tiempo. Cada medición de contaminante puede considerarse como una realización de este proceso aleatorio.- Al extraer una función muestra de
M(t), seleccionamos una serie específica de mediciones basándonos en el tiempo y la ubicación.
data: El conjunto completo de datos, que incluye mediciones de varios contaminantes en diferentes momentos y ubicaciones.variable: El contaminante específico que se desea analizar.loc: Identificador del sensor, crucial para estudiar diferencias en mediciones basadas en la ubicación.inicioyfin: Definen el intervalo de tiempo para el cual se quiere extraer las mediciones, permitiendo estudios enfocados en períodos específicos.
M(t)representa un proceso aleatorio de mediciones de un contaminante a lo largo del tiempo, permitiendo analizar cómo estas mediciones varían y se comportan.
- La función
procesocrea un conjunto de funciones muestra, cada una representando un día específico dentro de un rango de fechas, facilitando el análisis de variaciones diarias.
data: El conjunto de datos con mediciones de contaminantes.variable: El contaminante específico a estudiar.loc: Identificador del sensor, para enfocarse en mediciones de una ubicación específica.inicioyfin: Definen el rango de fechas para el análisis.
- La función genera un diccionario donde cada clave es una fecha específica y cada valor es un DataFrame con mediciones para ese día, permitiendo un análisis detallado y comparativo.
- Evalúa cómo se distribuyen los valores de los contaminantes, comparando varias distribuciones conocidas para encontrar la más adecuada.
- Utiliza el Criterio de Información de Akaike (AIC) para determinar la mejor distribución y ajusta un modelo polinomial a los parámetros de esta distribución.
- Genera histogramas para cada hora del día, proporcionando una visualización de cómo cambia la distribución del contaminante a lo largo de un día.
data: DataFrame con mediciones de contaminantes.variable: Contaminante a analizar.loc: Identificador del sensor.- Salida: Un diccionario que contiene la distribución más común y los polinomios ajustados.
- Gráficas 2D para visualizar series temporales de mediciones de contaminantes, mostrando cómo evoluciona la variable a lo largo del tiempo.
- Permite comparar visualmente los niveles de contaminantes en diferentes periodos, identificando tendencias o cambios significativos.
data: DataFrame con mediciones de contaminantes.variable: Contaminante a graficar.loc: Identificador del sensor.lista_fechas: Intervalos de tiempo para generar gráficas.carpeta: Directorio para guardar las gráficas.
- Genera gráficas diferenciando cada intervalo de tiempo, facilitando la comparación visual.
- Muestra el nivel del contaminante en función de la fecha y hora, y guarda las gráficas para análisis posteriores.
- Las gráficas 3D permiten visualizar relaciones complejas entre múltiples variables, mostrando las distribuciones de probabilidad de las mediciones de un contaminante a lo largo del día.
- Analiza y grafica las distribuciones de probabilidad de un contaminante específico para cada hora del día, revelando variaciones en sus características.
data: DataFrame con mediciones de contaminantes.variable: Contaminante a analizar.loc: Identificador del sensor.inicioyfin: Período de tiempo para el análisis.carpeta: Directorio para guardar la gráfica.
- Crea una gráfica 3D con ejes representando la hora del día, valores del contaminante, y densidad de probabilidad, utilizando colores para diferenciar cada hora.
- La autocorrelación mide la relación entre observaciones de una misma variable en diferentes momentos del tiempo, crucial para identificar patrones o dependencias en series temporales.
- Calcula la correlación entre mediciones de un contaminante en dos horas específicas del día, agrupando los datos por fecha y calculando medias diarias.
- Utiliza el coeficiente de correlación de Pearson, proporcionando un valor entre -1 y 1 para indicar la fuerza y la dirección de la correlación.
- Maneja situaciones con datos insuficientes, retornando NaN cuando no es posible calcular una correlación significativa.
La autocorrelación entre dos puntos en el tiempo t1 y t2 se calcula como:
R(t1, t2) = E[(X(t1) - μ(t1)) * (X(t2) - μ(t2))] / (σ(t1) * σ(t2))
donde:
- R(t1, t2) es el coeficiente de autocorrelación.
- E es el valor esperado.
- X(t1) y X(t2) son los valores de la serie en los tiempos t1 y t2.
- μ(t1) y μ(t2) son las medias en los tiempos t1 y t2.
- σ(t1) y σ(t2) son las desviaciones estándar en los tiempos t1 y t2.
En la implementación de autocorrelacion, se calculan primero las medias diarias para cada hora específica (( t_1 ) y ( t_2 )), y luego se utiliza la función np.corrcoef de NumPy para calcular el coeficiente de autocorrelación. Esta función aplica la fórmula anterior para medir la relación lineal entre las dos series temporales.
Este enfoque combina principios matemáticos y estadísticos fundamentales para proporcionar una comprensión profunda del comportamiento de la serie temporal.
- Mide cómo dos puntos diferentes en el tiempo de una misma serie temporal varían juntos, proporcionando una perspectiva más amplia que la autocorrelación.
- Calcula la covarianza entre mediciones de un contaminante en dos horas específicas del día, agrupando los datos por fecha y calculando medias diarias.
- Útil para identificar patrones temporales y la persistencia de condiciones ambientales a lo largo del tiempo.
- Maneja situaciones con datos insuficientes, retornando NaN cuando no es posible realizar un cálculo significativo.
La autocovarianza entre dos puntos en el tiempo t1 y t2 se calcula como:
C(t1, t2) = E[(X(t1) - μ(t1)) * (X(t2) - μ(t2))]
donde:
- C(t1, t2) es el valor de autocovarianza.
- E representa el valor esperado.
- X(t1) y X(t2) son los valores de la serie en los tiempos t1 y t2.
- μ(t1) y μ(t2) son las medias en los tiempos t1 y t2.
En la implementación de autocovarianza, se calculan las medias diarias para cada hora específica (( t_1 ) y ( t_2 )) y luego se evalúa la covarianza entre estas dos series temporales. La función se enfoca en calcular el valor esperado del producto de las desviaciones de ( X_{t_1} ) y ( X_{t_2} ) de sus respectivas medias.
Este enfoque permite comprender cómo dos puntos en el tiempo de una serie temporal están relacionados en términos de variación conjunta, proporcionando una perspectiva más profunda que la autocorrelación.
- Evalúa si una serie temporal, como las mediciones de un contaminante, tiene propiedades estadísticas consistentes a lo largo del tiempo, incluyendo la media y la autocovarianza/autocorrelación.
- Verifica la consistencia de la media y las medidas de autocorrelación/autocovarianza de la variable a lo largo del tiempo, dentro de un umbral de variación aceptable.
data: DataFrame con mediciones de contaminantes.variable: Variable de interés.datetime_col: Columna con marcas de tiempo.threshold: Umbral para la variación aceptable en la media y autocorrelación/autocovarianza.
- Útil para determinar si las características de un contaminante son consistentes a lo largo del tiempo, importante para la predicción y modelización del comportamiento del contaminante.
- Calcula el valor medio de una variable en un intervalo de tiempo específico, proporcionando una medida fundamental para entender tendencias generales en series temporales.
- Permite especificar un intervalo de tiempo para el análisis, facilitando el estudio de datos en marcos temporales concretos.
- Verifica que los datos estén indexados por fecha y hora, filtra según intervalos temporales específicos y calcula la media de la variable seleccionada.
- Fundamental para el análisis preliminar de datos ambientales, ayudando a entender los niveles promedio de contaminantes en períodos específicos.
- Indica que las propiedades estadísticas de una serie temporal son consistentes tanto en todo el conjunto de datos como en cualquier subconjunto temporal.
- Compara las medias temporales de la variable de interés en diferentes momentos con la media general del conjunto de datos, usando un margen de tolerancia para determinar si las diferencias están dentro de un rango aceptable.
data: DataFrame con mediciones de contaminantes.variable: Variable de interés.margen_tolerancia: Margen de tolerancia para la comparación de medias, generalmente establecido en 5%.
- Importante para determinar si las características de un contaminante son consistentes a lo largo del tiempo y si los datos son representativos de la serie temporal completa.