Vai al contenuto principale

Analisi delle serie temporali con R: Tutorial

Impara l’analisi delle serie temporali con R e usa un package in R per il forecasting per adattare la serie reale al modello ottimale.
Aggiornato 29 set 2026  · 13 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

La serie temporale è una misura, o una metrica, rilevata a intervalli regolari nel tempo. Esempi di analisi di serie temporali sono finanza, prezzi azionari, dati meteorologici, studi sui consumi e molti altri.

Il modello di serie temporali può essere costruito tramite:

  • Comprendere le forze e le strutture sottostanti che hanno prodotto i dati osservati.
  • Iniziare a adattare un modello e quindi passare a previsione, monitoraggio o anche controllo a retroazione e anticipazione.

In questo tutorial avrai una panoramica dei modelli stazionari e non stazionari. Ti sarà mostrato come identificare una serie temporale calcolandone ACF e PACF. I grafici di queste funzioni permettono di valutare la stazionarietà di una serie. Possiamo rendere stazionaria una serie non stazionaria differenziandola. Conoscendo la natura di una serie, diventa semplice prevedere i valori futuri con un modello coerente con il comportamento osservato. Un esempio con dati reali disponibili nel package TSA di R farà parte del tutorial.

Processi stazionari

Sia $X$ una variabile casuale indicizzata nel tempo (di solito denotato con $t$), le osservazioni $\left\{x_t,\,t\in \textbf{N}\right\}$ si chiamano serie temporale. $\textbf{N}$ è l’insieme degli interi che qui viene considerato come insieme degli indici temporali. $N$ può anche essere un timestamp. La stazionarietà è un’ipotesi cruciale nei modelli di serie temporali e implica omogeneità nella serie: la serie si comporta in modo simile a prescindere dal tempo, ovvero le sue proprietà statistiche non cambiano nel tempo. Esistono due forme di stazionarietà: forte e debole.

Definizione 1

Un processo stazionario $\left\{x_t,\,t\in \textbf{N}\right\}$ si dice strettamente o fortemente stazionario se le sue distribuzioni statistiche restano invariate dopo una traslazione della scala temporale. Poiché le distribuzioni di un processo stocastico sono definite dalle distribuzioni finite-dimensionali, possiamo formulare una definizione alternativa di stazionarietà stretta. Se per ogni $n$, ogni scelta di istanti $t_1, t_2, \ldots, t_n\in \textbf{N}$ e ogni ritardo $k$ tale che $t_{i+k}\in\textbf{N}$, il vettore casuale $n$-dimensionale $(X_{t_1+k}, X_{t_2+k}, \ldots, X_{t_n+k})$ ha la stessa distribuzione del vettore $(X_{t_1}, X_{t_2}, \ldots, X_{t_n})$, allora il processo è strettamente stazionario. Ovvero per $h$ e $x_i$

\begin{align*} P(X_{t_1}\leq x_1, X_{t_2}\leq x_2, \ldots, X_{t_k}\leq x_k) &= F(x_{t_1}, x_{t_2}, \ldots, x_{t_k})\\ &= F(x_{h+t_1}, x_{h+t_2}, \ldots, x_{h+t_k})\\ &= P(X_{h+t-1}\leq x_1, X_{h+t_2}\leq x_2, \ldots, X_{h+t_k}\leq x_k) \end{align*}

per qualsiasi traslazione temporale $h$ e osservazione $x_j$. Se $\left\{X-t,\,t\in\textbf{N}\right\}$ è strettamente stazionario, allora la distribuzione marginale di $X_t$ è indipendente da $t$. Inoltre, le distribuzioni bidimensionali di $(X_{t_1}, X_{t_2})$ sono indipendenti dalla posizione assoluta di $t_1$ e $t_2$, conta solo la distanza $t_1-t_2$. Di conseguenza, la funzione media $E(X)$ è costante e la covarianza $Cov(X_t,X_{t-k})$ dipende solo da $k$, non dalla posizione assoluta di $k$ e $t$. Per momenti di ordine superiore, come il terzo momento, $E[X_uX_tX_v]$ resta invariato se si aggiunge una traslazione temporale costante a $s, t, u$.

Definizione 2

Una serie temporale univariata $X_t$ è stazionaria se la sua media, varianza e covarianza sono indipendenti dal tempo. Dunque, se $X_t$ è una serie temporale (o processo stocastico, cioè variabili casuali ordinate nel tempo) definita per $t=1,2,3,\ldots, n$ e per $t=0, -1, -2, -3, \ldots$, allora $X_t$ è debolmente stazionaria se

\begin{align} (i) & E[X_t] = \mu\\ (ii) & E\left[(X-\mu)^2\right] = Var(X_t) = \gamma(0) = \sigma^2\\ (iii) & E\left[(X_t-\mu)(X_{t-k}-\mu)\right] = Cov(X_t, X_{t-k}) = \gamma(k) \end{align}

Le prime due condizioni ($(i)$ e $(ii)$) richiedono rispettivamente che il processo abbia media e varianza costanti, mentre $(iii)$ richiede che la covarianza tra due valori qualsiasi (formalmente detta funzione di covarianza) dipenda solo dall’intervallo temporale $k$ tra questi due valori e non dal punto nel tempo $t$.

Se un processo è gaussiano con momenti secondi finiti, allora la stazionarietà debole è equivalente alla stazionarietà forte. La stazionarietà stretta implica quella debole solo se esistono i momenti necessari. La stazionarietà forte richiede anche assunzioni di distribuzione. La forma forte è in genere considerata troppo restrittiva, perciò ci si concentra principalmente sulla stazionarietà debole, nota anche come stazionarietà per covarianza, in senso lato o di secondo ordine.

Stazionarietà e serie temporali casuali (processo stocastico)

Una serie temporale in cui le osservazioni fluttuano intorno a una media costante, hanno varianza costante e sono stocasticamente indipendenti è una serie temporale casuale. Una tale serie non mostra alcun pattern:

  • Le osservazioni non tendono né verso l’alto né verso il basso
  • La varianza non aumenta né diminuisce nel tempo
  • Le osservazioni non tendono a essere grandi in alcuni periodi più che in altri

Un esempio di modello casuale stazionario può essere scritto come

$$X_t = \mu+\varepsilon_t$$ dove $\mu$ è una media costante tale che $E[X_t] = \mu$ e $\varepsilon_t$ è il termine di rumore assunto a media zero, varianza costante e indipendente (noto anche come rumore bianco).

Simulazione di una serie temporale casuale

# purely random process with mean 0 and standard deviation 1.5
eps <- rnorm(100, mean = 0, sd = 1)
mu <- 2 # the constant mean
# The process
X_t <- mu + eps

# plotting the time series
ts.plot(X_t, main = "Example of (random) stationary time series", ylab = expression(X[t]))

Il processo simulato fluttua intorno alla media costante $\mu = 2$.

Funzione di autocovarianza

La funzione di autocovarianza teorica (ACF) di un processo stocastico stazionario è uno strumento importante per valutare le proprietà delle serie temporali. Sia $X_t$ un processo stocastico stazionario con media $\mu$ e varianza $\sigma^2$. L’ACF al lag $k$, $\gamma(k)$, è $$\gamma(k) = \frac{\gamma(k)}{\gamma(0)} = \frac{\gamma(k)}{\sigma^2}$$

La funzione ACF è una misura normalizzata dell’autocovarianza e possiede diverse proprietà.

Proprietà dell’ACF

  1. $\rho(0) = 1$
  2. L’ACF è una funzione pari dei lag. Significa che $\rho(k) = \rho(-k)$
  3. $|\rho(-k)| \leq 1$

L’ACF del processo sopra è rappresentata dalla figura seguente.

# Auto-covariance function of the simulated stationary random time series
acf(X_t, main = "Auto-covariance function of X")

Nota 1. La mancanza di unicità è una caratteristica dell’ACF. Anche se un dato processo casuale ha una struttura di covarianza unica, in generale non vale il contrario: è possibile trovare più di un processo stocastico con la stessa ACF. Questo genera problemi di specificazione, come illustrato in [@jenkinsd].

Nota 2: Dalla funzione di autocorrelazione di un processo stazionario si ottiene una matrice molto particolare, detta matrice di Toeplitz. È una sorta di matrice di varianze e covarianze di ordine $m = t-k$ (il lag, includendo le autocorrelazioni fino al lag $m-1$), quindi è diagonale, simmetrica, definita positiva.

\begin{equation} \begin{pmatrix} 1 & \rho(1) & \rho(2) & \cdots & \rho(m-1)\\ \rho(1) & 1 & \rho(1) & \cdots & \rho(m-2)\\ \cdots &\cdots &\cdots &\cdots &\cdots\\ \rho(m-1) & \rho(m-2) & \cdots & \rho(1) & 1 \end{pmatrix} \end{equation}

Processo puramente casuale o rumore bianco

Un processo discreto $\left\{Z_t\right\}$ si chiama processo puramente casuale se le variabili casuali $Z_t$ formano una sequenza di variabili mutuamente indipendenti e identicamente distribuite (i.i.d.). La definizione implica che il processo abbia media e varianza costanti.

$$\gamma(k) = cov(Z_t, Z_{t+k}) = 0,\quad\forall k\in -3,-2,-1,0,1,2,3, \ldots$$ Poiché la media e la funzione di autocovarianza (acvf) non dipendono dal tempo, il processo è stazionario di secondo ordine.

Processo a passeggio aleatorio (Random Walk)

Un processo $\left\{X_t\right\}$ si dice passeggio aleatorio se $X_t = X_{t-1}+Z_t$, con $Z_t$ un processo puramente casuale con media $\mu$ e varianza $\sigma^2_Z$. Il processo di solito parte a $t = 0$ e abbiamo $X_1 = Z_0$, il che implica $X_0 = 0$. Abbiamo

\begin{align*} X_1 &= X_0 + Z_1, \quad\text{a } t = 1\\ X_2 &= X_1 + Z_2 = X_0 + Z_1+ Z_2, \quad\text{a } t = 2\\ X_3 &= X_2 + Z_3 = X_0 + Z_1+ Z_2 + Z_3, \quad\text{a } t = 3\\ &\cdots\\ X_t &= X_0 + \sum_{i = 1}^tZ_i \end{align*}

Il primo momento (o valore atteso) per questo processo è pari a $$E[X_t] = X_0 +\sum_{i = 1}^tE[Z_i] = X_0 + t\mu_z = t\mu_z$$ e la varianza $$Var(X_t) = t\sigma^2_Z$$ Nota che media e varianza cambiano nel tempo, quindi il processo è \textbf{non stazionario}. Un esempio di serie temporali che si comportano come passeggi aleatori sono i prezzi azionari.

Simulazione di un processo Random Walk

# seed X_0 = 0
X <- 0

# purely random process with mean 0 and standard deviation 1.5
Z <- rnorm(100, mean = 0.5, sd = 1.5)

# the process
for (i in 2:length(Z)){
  X[i] <- X[i-1] + Z[i]
}

# process plotting
ts.plot(X, main = "Random walk process")

Differenza

La differenziazione è il metodo più comune per rendere stazionaria una serie temporale. È un tipo particolare di filtraggio, particolarmente importante per rimuovere un trend. Per dati stagionali, di solito è sufficiente la differenza di primo ordine per ottenere la stazionarietà in media. Sia $X_t = \left\{X_1, X_2,\ldots, X_n\right\}$ una serie non stazionaria. La serie stazionaria si ottiene come

$$\Delta X_{t+1} = X_{t+1}-X_t\quad\text{o }\,\Delta X_{t} =X_t-X_{t-1}$$ che si chiama semplicemente differenza di primo ordine. Se è richiesta la differenza di secondo ordine, puoi usare l’operatore $\Delta^2$, che è la differenza delle differenze di primo ordine

$$\Delta^2X_{t+2} = \Delta X_{t+2} - \Delta X_{t+1}$$

# differencing and plotting of the random walk process
ts.plot(diff(X))

Sai che la differenza di primo ordine risultante fluttua intorno a una media costante 0. Questo perché matematicamente

$$\Delta X_{t+1} = X_{t+1}-X_t = Z_t$$ che è stazionario perché è un processo puramente casuale con media e varianza costanti.

Media mobile di ordine $q$: MA($q$)

Sia $\left\{Z_t\right\}$ un processo puramente casuale con media zero e varianza $\sigma^2_Z$. Il processo si dice media mobile di ordine #q# se

$$X_t = \beta_0Z_t-\beta_1Z_{t-1}-\cdots-\beta_q Z_{t-q}$$ dove $\beta_i,\, i = 1,2,\ldots,q$ sono costanti. Le variabili casuali $Z_t, \,t\in\textbf{N}$ sono di solito scalate in modo che $\beta_0=1$

Simulazione di una MA di primo ordine

# purely random process with mean 0 and standard deviation 1.5 (arbitrary choice)
Z <- rnorm(100, mean = 0, sd = 1.5)

# process simulation
X <- c()
for (i in 2:length(Z)) {
  X[i] <- Z[i] - 0.45*Z[i-1]
}

# process plotting
ts.plot(X, main = "Moving Average or order 1 process")

Per il processo MA(1), le 3 condizioni possono essere verificate come segue:

\begin{align} E[X_t] &= 0\\ Var(X_t) &= E[X_t^2] - 0 = E\left[Z_t^2-2\beta Z_tZ_{t-1}+\beta^2Z_{t-1}^2\right]= \sigma^2_Z+\beta^2\sigma^2_Z\\ \gamma(k) &= cov(X_t, X_{t+k}) = E[X_tX_{t+k}] - E[X_t]E[X_{t+k}] = E[X_tX_{t+k}]\\ &= E\left[(Z_t-\beta Z_{t-1})(Z_{t+k}-\beta Z_{t-1+k})\right]\\ &= E\left[Z_tZ_{t+k} - \beta Z_tZ_{t-1+k} -\beta Z_{t-1}Z_{t+k} + \beta^2 Z_{t-1}Z_{t-1+k}\right]\\ \end{align}

per $k = 0,\, \gamma(0) = Var(X_t) = \sigma^2_Z(1+\beta^2)$

per $k = 1,\, \gamma(1) = E\left[Z_tZ_{t+1} - \beta Z_t^2 -\beta Z_{t-1}Z_{t+1} + \beta^2 Z_{t-1}Z_{t}\right] = -\beta\sigma^2_Z$

e per $k>1,\, \gamma(k) = 0.$

Dunque, il processo MA(1) ha covarianza nulla quando lo spostamento è maggiore di un periodo. Cioè ha memoria di un solo periodo.

L’ACF per MA(1) è quindi

$$\rho(k) = \frac{\gamma(k)}{\gamma(0)} = \begin{cases}1, &\text{k }=0\\\frac{-\beta}{1+\beta^2}, & \text{k }\pm 1\end{cases}$$

Domanda: rifai il lavoro per MA(2)

Si capisce perché la funzione di autocorrelazione campionaria può essere utile per specificare l’ordine di un processo a media mobile: la funzione di autocorrelazione (k) per il processo MA(q) ha q valori non nulli (significativamente diversi da zero) ed è zero per $k > q$. Non sono necessarie restrizioni su $\left\{\beta_i\right\}$ affinché MA sia stazionario. Tuttavia, $\left\{\beta_i\right\}$ deve essere soggetto a vincoli per garantire l’invertibilità.

Auto-regressione di ordine $p$: AR($p$)

Sia $\left\{Z_t\right\}$ un processo puramente casuale con media zero e varianza $\sigma_Z^2$. Un processo $\left\{X_t\right\}$ si dirà autoregressivo di ordine $p$ se $$X_t = \alpha_1X_{t-1}+\alpha_2X_{t-2}+\cdots+\alpha_pX_{t-p}+Z_t$$ Nel processo autoregressivo di ordine $p$, l’osservazione corrente $X_t$ (ad esempio il rendimento di oggi) è generata da una media pesata delle osservazioni passate fino a $p$ periodi, insieme a una variabile casuale indipendente ma dipendente dai valori passati di $X_t$ e quindi autoregressiva. Questi tipi di processi furono introdotti da [@greenwood1920inquiry]. L’AR($p$) sopra può essere scritto con una media costante

$$X_t = \delta+\alpha_1X_{t-1}+\alpha_2X_{t-2}+\cdots+\alpha_pX_{t-p}+Z_t$$ dove $\mu$ è un termine costante che è legato alla media della serie temporale e $\alpha_1, \alpha_2,\ldots, \alpha_p$ possono essere positivi o negativi. L’AR($p$) è stazionario se $E[X_t] = E[X_{t-1}] = \cdots = E[X_p] = \mu$. Quindi,

\begin{align*} E[X_t] = \mu &= \delta + \alpha_1\mu+\alpha_2\mu+\cdots+\alpha_p\mu+ 0\\ \Rightarrow \mu &= \frac{\delta}{1-\alpha_1-\alpha_2-\cdots-\alpha_p} \end{align*} Affinché l’ultima formula sia una costante, consideriamo la condizione $\alpha_1+\alpha_2+\cdots+\alpha_p<1$.

  </1>

Processo AR di primo ordine: AR(1)

Considera il caso $p=1$, allora $$X_t = \alpha X_{t-1}+Z_t$$ è l’autoregressivo di primo ordine AR(1), noto anche come processo di Markov. Usando l’operatore di ritardo $BX_t = X_{t-1}$, puoi esprimere AR(1) come un processo MA infinito. Abbiamo $$(1 - \alpha B)X_t = Z_t$$ quindi, \begin{align*} X_t &= \frac{Z_t}{1-\alpha B}\\ &= (1+\alpha B +\alpha^2B^2+ \cdots)Z_t\\ &=Z_t+\alpha Z_{t-1}+\alpha^2Z_{t-2}+\cdots\\ &=Z_t+\beta_1 Z_{t-1}+\beta_2 Z_{t-2}+\cdots\\ \end{align*}

Quindi $E[X_t] = 0$ e $Var(X_t) = \sigma^2_Z(1+\alpha^2+\alpha^4+\cdots)$. La serie converge con la condizione $|\alpha|<1$.

Domanda: Dato un processo AR(1) $X_t = \alpha_1X_1+Z_t$ puramente casuale con media zero e varianza $\sigma^2_Z$ e $\alpha$ costante con le condizioni necessarie su $\alpha$, deriva la varianza e la funzione di autocovarianza di $X_t$.

Simulazione di un AR(1)

# constant alpha
alpha = 0.5

# purely random process with mean 0 and standard deviation 1.5
Z <- rnorm(100, mean = 0, sd = 1.5)

# seed
X <- rnorm(1)

# the process
for (i in 2:length(Z)) {
  X[i] <- 0.7*X[i-1]+Z[i]
}

# process plotting
ts.plot(X)

Domanda: Esprimi la condizione di stazionarietà del modello AR (2) in funzione dei valori dei parametri. Cioè, mostra le seguenti condizioni:

expression

Puoi anche esprimere un processo AR di ordine finito, diciamo p, come un processo MA di ordine infinito. Questo può essere fatto per sostituzioni successive o usando l’operatore di ritardo all’indietro.

Processo autoregressivo a media mobile: ARMA($p,q$)

Nella costruzione di un modello, può essere necessario combinare termini AR e MA. Questo porta al processo misto autoregressivo–media mobile (ARMA). Un processo ARMA che contiene $p$ termini autoregressivi e $q$ termini a media mobile si dice di ordine $(p, q)$ ed è dato da

$$X_t = \alpha_1X_{t-1}+\alpha_2X_{t-2}+\cdots+\alpha_pX_{t-p}+Z_t-\beta_1Z_{t-1}-\beta_2Z_{t-2}-\cdots-\beta_qZ_{t-q}$$ Usando l’operatore di ritardo B, l’equazione può essere scritta come

$$\alpha_p(B)X_t = \beta_q(B)Z_t$$ dove $\alpha_p(B)$ e $\beta_q(B)$ sono polinomi di ordine $p$ e $q$ rispettivamente, tali che

\begin{align*} \alpha_p(B) &= \left(1-\alpha_1 B-\cdots-\alpha_p B^p\right)\\ \beta_q(B) &= \left(1-\beta_1 B-\cdots-\beta_p B^p\right) \end{align*}

Affinché il processo sia invertibile, le radici di $\beta_q(B)$ devono giacere all’esterno del cerchio unitario. Per essere stazionario, richiediamo che le radici di $\alpha_p(B)=0$ giacciano all’esterno del cerchio unitario. Si assume inoltre che $\alpha_p(B)=0$ e $\beta_q(B) = 0$ non condividano radici comuni.

Processo ARMA(1,1)

Questo processo è di ordine $(1,1)$ ed è dato dall’equazione $$X_t = \alpha_1X_{t-1}+Z_t-\beta_1Z_{t-1}$$

con le condizioni $|\alpha_1|<1$ e $|\beta_1|<1$ necessarie per la prova di stazionarietà e invertibilità. Quando $\alpha < 0$, l’ARMA(1,1) si riduce a MA(1) e quando $\beta_1<0$, avremo un AR(1). Un processo ARMA(1,1) può essere trasformato in una rappresentazione puramente autoregressiva usando l’operatore di ritardo:

$$(1-\alpha_1B)X_t = (1-\beta_1B)Z_t$$

Abbiamo

\begin{align*} \frac{1-\alpha_1B}{1-\beta_1B}X_t &= Z_t\\ \pi(B)X_t &= Z_t \end{align*}

con

\begin{align*} \pi(B) = 1-\pi_1B-\pi_2B^2-\ldots &= \frac{1-\alpha_1B}{1-\beta_1B}\\ (1-\beta_1B)(1-\pi_1B-\pi_2B^2-\ldots) &= 1-\alpha_1B\\ 1-\left[(\pi_1+\beta_1)B - (\pi_2+\beta_2)B^2 - (\pi_3+\beta_3)B^3\right] & = 1-\alpha_1B \end{align*}

Per identificazione dei coefficienti di B su entrambi i lati dell’equazione, otteniamo i termini incogniti come $$\pi_j = \beta_1^{j-1}(\alpha_1-\beta_1),\,\text{per }\, j\geq1$$

Funzione di autocorrelazione dell’ARMA (1, 1)

L’atteso di $X_t$ è dato da $E[X_t] = \alpha_1E[X_{t-1}]$ e, sotto l’ipotesi di stazionarietà, abbiamo $E[X_t] = E[X_{t-1}] = \mu = 0$. Questo è utile per il calcolo della funzione di autocovarianza che si ottiene come segue:

  1. $X_tX_{t-k} = \alpha_1X_{t-k}X_{t-1}+X_{t-k}Z_t-\beta_1X_{t-k}Z_{t-1}$
  2. Prendendo l’atteso su entrambi i lati, otteniamo: \begin{align*} E\left[X_tX_{t-k}\right] &= E\left[\alpha_1X_{t-k}X_{t-1}\right]+E\left[X_{t-k}Z_t\right]-\beta_1E\left[X_{t-k}Z_{t-1}\right]\\ \gamma(k)&=\alpha_1\gamma(k-1)+E\left[X_{t-k}Z_t\right]-\beta_1E\left[X_{t-k}Z_{t-1}\right] \end{align*}

Per $k = 0$,

\begin{align*} \gamma(1)&=\alpha_1\gamma(0)+E\left[X_{t-1}Z_t\right]-\beta_1E\left[X_{t-1}Z_{t-1}\right]\\ &=\alpha_1\left(\alpha_1\gamma(1)+ \sigma^2_Z - \beta_1(\alpha_1-\beta_1)\sigma^2_Z\right)-\beta_1\sigma^2_Z\\ &= \alpha^2\gamma(1)+(\alpha_1-\beta_1)(1-\alpha_1\beta_1)\sigma^2_Z\\ \Rightarrow \gamma(1)&=\frac{(\alpha_1-\beta_1)(1-\alpha_1\beta_1)\sigma^2_Z}{1-\alpha^2}\\ \Rightarrow \gamma(0)&=\alpha_1\frac{(\alpha_1-\beta_1)(1-\alpha_1\beta_1)\sigma^2_Z}{1-\alpha^2}+ \sigma^2_Z - \beta_1(\alpha_1-\beta_1)\sigma^2_Z\\ &=\frac{\left(1+\beta_1^2-2\alpha_1\beta_1\right)\sigma_Z^2}{1-\alpha^2} \end{align*}

Per $k \geq 2$,

\begin{align*} \gamma(2)&=\alpha_1\gamma(k-1) \end{align*}

Quindi, l’ACF di ARMA(1,1) è:

$$\rho(k) = \begin{cases} 1, &\text{per }\,k=0\\ \frac{(\alpha_1-\beta_1)(1-\alpha_1\beta_1)}{1+\beta_1^2-2\alpha_1\beta_1},&\text{per }\,k=1\\ \alpha_1\rho(k-1), &\text{per }\,k\geq2\\ \end{cases} $$ L’ACF di ARMA(1,1) combina le caratteristiche dei processi AR(1) e MA(1). I parametri di MA(1) e AR(1) sono entrambi presenti in $\rho(1)$. Oltre $\rho(1)$, l’ACF di un modello ARIMA(1,1) segue lo stesso andamento dell’ACF di un AR(1).

Domanda: Trova la funzione di autocorrelazione parziale (PACF) del processo ARMA(1,1).

Nota: Le caratteristiche dei processi di serie temporali sono espresse in termini di ACF e PACF. I passaggi più cruciali nell’analisi delle serie temporali sono identificare e costruire un modello basato sui dati disponibili, dove ACF e PACF sono sconosciute.

Simulazione di un processo ARMA(1,1)

# purely random process with mean 0 and standard deviation 1.5
Z <- rnorm(100, mean = 0, sd = 1.5)

# Process
X <- rnorm(1)

for (i in 2:length(Z)) {
  X[i] <- 0.35*X[i-1] + Z[i] + 0.4*Z[i-1]
}

# process plotting
ts.plot(X, main = "ARMA(1,1) process")

# ACF et PACF
par(mfrow = c(1,2))
acf(X); pacf(X)

Processo ARIMA($p,d,q$)

I modelli autoregressivi integrati a media mobile sono serie temporali definite dall’equazione:

Processo SARIMA(p,d,q)(P,D,Q)

Previsioni

In questa sezione userai una serie reale per adattare il modello ottimale. A questo scopo userai il package forecast. La funzione auto.arima adatta e seleziona il modello ottimale dai dati e la funzione forecast permette la previsione di h periodi in avanti.

# R packages to be used
library(forecast)
library(TSA)

Esempio 1:

# Data from TSA package
data("co2")
data("boardings")

# fitting
fit <- auto.arima(co2)

# Time series plot
plot(fc <- forecast(fit, h = 15))

Esempio 2:

data("boardings")

# fitting
fit2 <- auto.arima(boardings[,"log.price"])

# forecasting
plot(fc2 <- forecast(fit2, h = 15))

Riferimenti

Greenwood, Major, e G Udny Yule. 1920. “Un’indagine sulla natura delle distribuzioni di frequenza rappresentative di eventi multipli con particolare riferimento al verificarsi di attacchi multipli di malattia o di incidenti ripetuti.” Journal of the Royal Statistical Society 83 (2). JSTOR: 255–79.

Jenkins, GM. s.d. “D. G. Watts (1968) Spectral Analysis and Its Applications.” San Francisco.

Conclusione

In questo tutorial hai visto molti dettagli sulle serie temporali in R. Hai imparato cos’è un processo stazionario, la simulazione di variabili casuali, la simulazione di serie temporali casuali, il processo random walk e molto altro. Inoltre, hai affrontato l’Auto-regressione di ordine pp: Ar(pp), il processo SARIMA(p,d,q(P, D, Q)) e le previsioni.

Se vuoi approfondire le serie temporali in R, segui questi corsi di DataCamp:

Argomenti
R
Data Science
Analisi dei dati

Scopri di più su R

Corso

Analisi delle serie temporali in R

4 ore
61.5K
Impara le tecniche fondamentali per ricavare informazioni significative dai dati delle serie temporali.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro