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
- Comprendre els conceptes bàsics de les sèries temporals.
- Aprendre a identificar components de les sèries temporals.
- 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:
- Tendència (T): La direcció general a llarg termini de la sèrie temporal.
- Estacionalitat (S): Patrons repetitius que es produeixen en intervals regulars de temps.
- Cicle (C): Fluctuacions a llarg termini que poden no ser regulars.
- 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
- Identificació: Determinar els valors dels paràmetres \(p\), \(d\), i \(q\).
- Estimació: Ajustar el model als valors identificats.
- 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
- Carrega un conjunt de dades de sèries temporals.
- Descompon la sèrie temporal en els seus components.
- 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
- Carrega un conjunt de dades de sèries temporals.
- Ajusta un model ARIMA als dades.
- 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.