Home > Doc > Analisi delle serie storiche con R > Caricamento dei dati

Analisi delle serie storiche con R

Caricamento dei dati

Prima di poter iniziare l’analisi della serie storica occorre in primo luogo caricare i dati da una sorgente esterna (nel nostro caso un file di testo) e creare l’oggetto ts in R. Esistono due possibili modi per operare in tal senso:

a) usare la funzione read.ts() del package tseries che consente di leggere i dati dal file esterno e creare contestualmente la serie storica;

b) usare la funzione read.table() per leggere i dati dal file creando un dataframe, successivamente si impiega il comando ts() per ottenere la serie storica come oggetto di R.

Funzione read.ts()

La funzione read.ts()si trova nel package tseries che occorre scaricare dal sito del CRAN in quanto non fa parte della configurazione base di R. Una volta scaricato e installato sulla propria macchina tale pacchetto addizionale è necessario caricarlo in memoria con il comando:

library(tseries)

di seguito, con tale comando si crea la serie storica denominata ore leggendo i dati dal file mydata.txt:

ore<-read.ts("C:/mydata.txt", header=TRUE, start=1998, frequency=12)

Click to enlarge image

Come si può vedere i parametri principali della funzione read.ts() risultano essere quattro. Occorre specificare il nome e la collocazione del file da cui leggere i dati; di seguito viene indicato (parametro header) se nel file vi è o meno l’indicazione di nome della variabile. In caso affermativo header=TRUE, in caso contrario header=FALSE, che è anche l’impostazione di default. I parametri start e frequency sono relativi alla serie storica e indicano rispettivamente il tempo della prima osservazione e la frequenza, ossia il numero di osservazioni per unità di tempo. Nel nostro caso, essendo la serie a cadenza mensile, si è impostato il parametro frequency=12 e, iniziando a gennaio 1998, il valore di start=1998.

A seconda dei casi frequency può assumere il valore 7 quando i dati sono rilevati giornalmente e il periodo di tempo di riferimento è la settimana, 12 quando i dati sono mensili, 4 quando sono trimestrali e 3 quando sono con frequenza quadrimestrale e il periodo di riferimento è l’anno. Il parametro start può essere un singolo numero o un vettore di due interi.

Nel caso di serie con frequenza mensile gli elementi del vettore indicano rispettivamente l’anno e il mese a cui si riferisce la prima osservazione della serie. Se si indica solo il primo elemento, questo verrà considerato come l’anno iniziale e il mese pari a gennaio. Qualora si avesse una serie con dati trimestrali il primo elemento del vettore indica sempre l’anno, mentre il secondo il trimestre. Nel caso in cui la nostra serie di dati relativi alle ore lavorate fosse iniziata ad aprile 1998 anziché a gennaio 1998, avremmo dovuto scrivere:

Click to enlarge image

Analogamente nel caso di dati trimestrali con inizio al secondo trimestre del 1998 si avrebbe:

ore3<-read.ts("C:/mydata.txt", header=TRUE, start=c(1998,2), frequency=4)

Funzione ts()

Un modo alternativo e più tradizionale per creare una serie storica senza dover ricorrere a packages aggiuntivi è quello di usare il comando ts()presente nella versione base di R. In primo luogo occorre importare i dati dal file di testo mydata.txt e questo può essere fatto o con scan(), memorizzando i dati in un vettore, o con read.table(), nel qual caso vengono inseriti in un dataframe.

dati<-scan("C:/mydata.txt",skip=1)

Read 75 items

is.vector(dati)

[1] TRUE

Click to enlarge image

Si è inserito il parametro skip=1 per saltare, in lettura, la prima riga del file di testo che contiene una etichetta (nome della variabile).

dati<-read.table("C:/mydata.txt", header=TRUE)

is.data.frame(dati)

[1] TRUE

Nel primo caso l’oggetto dati è un vettore, mentre nel secondo è un dataframe, tuttavia in entrambe le circostanze esso contiene i dati a partire dai quali bisogna creare la serie storica:

ore<-ts(dati,start=1998,frequency=12) ## se dati è un vettore

ore<-ts(dati$OreLavorate,start=1998,frequency=12) ## se dati è un dataframe

Click to enlarge image

Il comando ts()presenta alcune analogie con read.ts(): il primo parametro indica la sorgente (vettore, matrice o dataframe) da cui vanno presi i dati, mentre gli altri due hanno il medesimo significato illustrato precedentemente. Per conoscere il tempo della prima e dell’ultima osservazione di una serie storica si utilizzano i comandi start() ed end(), mentre frequency() restituisce il numero di osservazioni per unità di tempo:

La funzione time()restituisce sotto forma di oggetto ts l’insieme degli istanti di tempo della serie storica mentre window()consente di estrarre una serie derivata (un sottoinsieme di dati) da quella originale indicando l’inizio e la fine:

window(ore,start=c(1999,5),end=c(2001,5))

Click to enlarge image

Vito Ricci

Successivo: Decomposizione di una serie storica

Sommario: Index