Introducció a les Sèries Temporals

Les sèries temporals són seqüències de dades recollides i ordenades cronològicament. Aquest tipus d'anàlisi és fonamental per comprendre i predir comportaments futurs basats en dades històriques. Les sèries temporals s'utilitzen àmpliament en diversos camps com l'economia, la meteorologia, la medicina i la ciència de dades.

Objectius del Tema

  1. Comprendre els conceptes bàsics de les sèries temporals.
  2. Aprendre a identificar components de les sèries temporals.
  3. Aplicar mètodes d'anàlisi i models per a la predicció de sèries temporals.

Conceptes Bàsics

Definició de Sèrie Temporal

Una sèrie temporal és una col·lecció de dades observades en intervals de temps regulars. Per exemple, les temperatures diàries, els preus de les accions diàries, o les vendes mensuals d'una empresa.

Components d'una Sèrie Temporal

Les sèries temporals poden descompondre's en quatre components principals:

  1. Tendència (T): La direcció general a llarg termini de la sèrie temporal.
  2. Estacionalitat (S): Patrons repetitius que es produeixen en intervals regulars de temps.
  3. Cicle (C): Fluctuacions a llarg termini que poden no ser regulars.
  4. Error (E): Variabilitat aleatòria que no pot ser explicada pels altres components.

Model Additiu i Model Multiplicatiu

  • Model Additiu: \( Y_t = T_t + S_t + C_t + E_t \)
  • Model Multiplicatiu: \( Y_t = T_t \times S_t \times C_t \times E_t \)

Anàlisi de Sèries Temporals

Descomposició de Sèries Temporals

La descomposició és el procés de separar una sèrie temporal en els seus components. Això ajuda a entendre millor les dades i a fer prediccions més precises.

Exemple de Descomposició Additiva

import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose

# Carregar dades
data = pd.read_csv('temps_dades.csv', index_col='Data', parse_dates=True)

# Descomposició
result = seasonal_decompose(data['Valor'], model='additive')

# Gràfics
result.plot()
plt.show()

Suavització Exponencial

La suavització exponencial és una tècnica per a suavitzar les dades de sèries temporals, donant més pes a les observacions més recents.

Exemple de Suavització Exponencial Simple

from statsmodels.tsa.holtwinters import SimpleExpSmoothing

# Ajustar el model
model = SimpleExpSmoothing(data['Valor']).fit(smoothing_level=0.2)

# Prediccions
data['Suavitzat'] = model.fittedvalues

# Gràfic
data[['Valor', 'Suavitzat']].plot()
plt.show()

Model ARIMA

El model ARIMA (AutoRegressive Integrated Moving Average) és un dels models més utilitzats per a la predicció de sèries temporals.

Passos per a l'Ajust del Model ARIMA

  1. Identificació: Determinar els valors dels paràmetres \(p\), \(d\), i \(q\).
  2. Estimació: Ajustar el model als valors identificats.
  3. Diagnòstic: Verificar la idoneïtat del model ajustat.

Exemple d'Ajust del Model ARIMA

from statsmodels.tsa.arima.model import ARIMA

# Ajustar el model
model = ARIMA(data['Valor'], order=(1, 1, 1))
model_fit = model.fit()

# Prediccions
data['Predicció'] = model_fit.predict(start=0, end=len(data)-1, dynamic=False)

# Gràfic
data[['Valor', 'Predicció']].plot()
plt.show()

Exercicis Pràctics

Exercici 1: Descomposició de Sèries Temporals

  1. Carrega un conjunt de dades de sèries temporals.
  2. Descompon la sèrie temporal en els seus components.
  3. Representa gràficament els components.

Solució

import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose

# Carregar dades
data = pd.read_csv('temps_dades.csv', index_col='Data', parse_dates=True)

# Descomposició
result = seasonal_decompose(data['Valor'], model='additive')

# Gràfics
result.plot()
plt.show()

Exercici 2: Ajust del Model ARIMA

  1. Carrega un conjunt de dades de sèries temporals.
  2. Ajusta un model ARIMA als dades.
  3. Realitza prediccions i representa-les gràficament.

Solució

from statsmodels.tsa.arima.model import ARIMA

# Carregar dades
data = pd.read_csv('temps_dades.csv', index_col='Data', parse_dates=True)

# Ajustar el model
model = ARIMA(data['Valor'], order=(1, 1, 1))
model_fit = model.fit()

# Prediccions
data['Predicció'] = model_fit.predict(start=0, end=len(data)-1, dynamic=False)

# Gràfic
data[['Valor', 'Predicció']].plot()
plt.show()

Conclusió

En aquesta secció, hem après els conceptes bàsics de les sèries temporals, incloent-hi la seva descomposició i els models de predicció com la suavització exponencial i el model ARIMA. Aquestes tècniques són fonamentals per a l'anàlisi i la predicció de dades temporals en diversos camps professionals.

© Copyright 2024. Tots els drets reservats