Torna al blog
MatematicaForecastingSerie temporali

Serie temporali e previsione della domanda

MUSTNODE SRL11 min di lettura

Il valore di prevedere

Prevedere consumi, domanda o carico produttivo permette di pianificare scorte, energia e risorse. Le serie temporali, sequenze di osservazioni ordinate nel tempo, sono lo strumento matematico per farlo.

Le componenti di una serie temporale

Una serie temporale yty_t si puo scomporre in componenti fondamentali. Nel modello additivo:

yt=Tt+St+Rty_t = T_t + S_t + R_t

dove:

  • TtT_t e il trend, l'andamento di lungo periodo;
  • StS_t e la stagionalita, i pattern che si ripetono a intervalli regolari;
  • RtR_t e la componente residua (rumore).

Quando l'ampiezza delle oscillazioni cresce col livello della serie, si preferisce il modello moltiplicativo yt=TtStRty_t = T_t \cdot S_t \cdot R_t.

Lisciamento esponenziale

Un metodo semplice ed efficace e il lisciamento esponenziale, che pesa le osservazioni passate con pesi decrescenti:

y^t+1=αyt+(1α)y^t\hat{y}_{t+1} = \alpha \, y_t + (1 - \alpha) \, \hat{y}_t

con 0<α<10 < \alpha < 1. Un α\alpha alto reagisce rapidamente ai cambiamenti, uno basso produce previsioni piu stabili. Le estensioni di Holt-Winters aggiungono trend e stagionalita.

Modelli ARIMA

I modelli ARIMA (AutoRegressive Integrated Moving Average) combinano tre elementi:

  • AR (autoregressivo): la previsione dipende dai valori passati;
  • I (integrato): si differenzia la serie per renderla stazionaria;
  • MA (media mobile): si modellano gli errori passati.

Una componente autoregressiva di ordine pp si scrive:

yt=c+i=1pϕiyti+εty_t = c + \sum_{i=1}^{p} \phi_i \, y_{t-i} + \varepsilon_t

Misurare la qualita di una previsione

Per valutare un modello si usano metriche di errore. Una delle piu interpretabili e l'errore percentuale assoluto medio (MAPE):

MAPE=100nt=1nyty^tyt\text{MAPE} = \frac{100}{n} \sum_{t=1}^{n} \left| \frac{y_t - \hat{y}_t}{y_t} \right|
import numpy as np

def mape(actual, pred):
    actual, pred = np.array(actual), np.array(pred)
    return np.mean(np.abs((actual - pred) / actual)) * 100

def smoothing(series, alpha=0.3):
    result = [series[0]]
    for value in series[1:]:
        result.append(alpha * value + (1 - alpha) * result[-1])
    return result

Errori da evitare

  • Ignorare la stazionarieta: molti modelli la richiedono.
  • Validare male: con le serie temporali non si puo mescolare passato e futuro; la validazione deve rispettare l'ordine temporale.
  • Overfitting sulla stagionalita: pattern apparenti possono essere rumore.

Conclusione

La previsione delle serie temporali e centrale per l'ottimizzazione industriale, dalla domanda energetica alla pianificazione della produzione. In MUSTNODE applichiamo questi modelli ai dati raccolti dalle nostre soluzioni di monitoraggio per supportare decisioni basate sui dati.

Articoli correlati

Altri approfondimenti dalla categoria Dati & AI.