Le Serie Storiche. Analizzarle Matematicamente

17 Gennaio 2026  di  Tech News


Le serie storiche sono sequenze di dati raccolti e ordinati nel tempo, di solito a intervalli regolari. Servono per osservare come un fenomeno evolve, individuare tendenze, cicli o cambiamenti e spesso permettono di fare previsioni basate sul comportamento passato.

Il bello delle serie storiche e’ che ci raccontano una storia.

Analisi

Le serie storiche possono essere analizzate in diversi modi, a seconda di ciò che vuoi capire dal fenomeno che stai osservando. Una serie conserva le seguenti caratteristiche:

  • Trend: la direzione di lungo periodo (crescita, calo, stabilità).
  • Stagionalità: pattern che si ripetono a intervalli regolari (es. vendite natalizie).
  • Cicli: oscillazioni più lunghe e irregolari legate al contesto economico o sociale.
  • Rumore: la parte casuale e imprevedibile.

Analizzeremo la nostra serie con una semplice classe python:

import numpy as np

class SerieStatistic:
    def __init__(self, series):
        if not isinstance(series, (list, tuple, np.ndarray)):
            raise TypeError("Input must be a list, tuple, or numpy array of numbers.")
        self.series = np.array(series, dtype=float)
        self.n = len(self.series)
        
    # Media
    def mean(self):
        return np.mean(self.series) if self.n else None

    # Mediana
    def median(self):
        return np.median(self.series) if self.n else None

    # Moda
    def mode(self):
        if self.n == 0:
            return None
        values, counts = np.unique(self.series, return_counts=True)
        max_count = np.max(counts)
        modes = values[counts == max_count]
        return modes.tolist() if len(modes) > 1 else modes[0]

    # Deviazione standard
    def standard_deviation(self):
        return np.std(self.series) if self.n else None

    # Varianza
    def variance(self):
        return np.var(self.series) if self.n else None

    def min(self):
        return np.min(self.series) if self.n else None

    def max(self):
        return np.max(self.series) if self.n else None

    # Range valori
    def value_range(self):
        return self.max() - self.min() if self.n else None

        # Restituisce la frequenza per un determinato valore
    def frequency(self, decimals=4):
        if self.n == 0:
            return {}

        if np.issubdtype(self.series.dtype, np.floating):
            rounded = np.round(self.series, decimals)
        else:
            rounded = self.series

        unique, counts = np.unique(rounded, return_counts=True)
        return dict(zip(unique.tolist(), counts.tolist()))

    def summary(self):
        return {
            "mean": round(self.mean(), 6),
            "median": round(self.median(), 6),
            "mode": self.mode(),
            "standard_deviation": round(self.standard_deviation(), 6),
            "variance": round(self.variance(), 6),
            "minimum": round(self.min(), 6),
            "maximum": round(self.max(), 6),
            "range": round(self.value_range(), 6),
            "count": self.n
        }

Ora che abbiamo la classe per studiare statisticamente una serie possiamo anche usarla richiamandola con codice Python:

from statistica import SerieStatistica

serie = [ 2, 5, 5, 2, 4, 1.2, 5, 6, 3, 4, 5 ]
statistica = SerieStatistics(serie)

print(statistica.summary())

Otterremo il risultato:

{'mean': 3.836364, 'median': 4.0, 'mode': 5.0, 'standard_deviation': 1.493789, 'variance': 2.231405, 'minimum': 1.2, 'maximum': 6.0, 'range': 4.8, 'count': 11}

Grafici

Forse non lo sai, ma le serie storiche sono dati spesso utilizzati nella realta’. Se una certa serie storica ha determinate caratterische, per un determinato tipo di evento (per esempio temperature, vendite, prezzi) allora si pensa che nel futuro queste caratteristiche si rivedranno (per esempio con dei cicli).

Se vogliamo rappresentare la serie storica attraverso dati statistici uscira’ sempre la classica campana di Gauss che usa la formula

f(x)=1σ2πe(xμ)22σ2f(x) = \frac{1}{\sigma \sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}

Bastano solamente la media μ\mu e la deviazione standard σ\sigma.

Serie Storica e Funzione di Gauss con Python

Ovviamente vi sono tantissime altre caratteristiche da studiare di una serie come cicli, la tendenza e la stagionalita‘.

Potrebbe Interessarti


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *