Usare R per leggere la statistica ufficiale conviene.

ISTAT (http://www.istat.it) è l’istituto nazionale di statistica italiano. Molto lo conoscono per i comunicati stampa, i commenti non molto rigorosi che la stampa a volte fa sui dati, per le statistiche che suscitano polemiche come l’andamento del PIL oppure della disoccupazione e dell’inflazione.

Per consultare i dati di ISTAT molti utilizzano il sito http://dati.istat.it, dove è possibile effettuare personalizzare le tabelle consultabili e scaricarle in diversi formati elaborabili. Forse meno persone sanno che con R è possibile automatizzare il processo.

Quali sono i vantaggi dell’uso di R in questo caso:

  • si possono eseguire gli script automaticamente e leggere i risultati in seguito;
  • si possono esportare i report che servono in altri formati (ad esempio in excel) avendo selezionato le variabili e i record che interessano;
  • si può usare tutta la potenza, anche grafica, di R (alla fine dei conti è gratuito).

Un esempio per gli impazienti

Affrontiamo subito un esempio, e rimandiamo le spiegazioni ad un altro post. La prima cosa da fare è installare la libreria che ci serve a leggere i files dai server di ISTAT:

install.packages("rsdmx")

SDMX è uno standard di interscambio dei dati statistici che consente di scaricare dati assieme ai metadati. In parole molto povere si possono scaricare, oltre ai codici, anche le etichette dei dati, anche in inglese oltre che in italiano, avendo a disposizione tutte le informazioni che servono ad elaborare e presentare i dati (vedi https://sdmx.org/).

Carichiamo la libreria1:

library(rsdmx)

con il comando:

sdmx.data <- readSDMX(providerId = "ISTAT", resource = "data", flowRef  = "159_938", dsd = TRUE)

possiamo scaricare dal servizio SDMX di ISTAT2 i dati relativi all’occupazione.

Il dataset che ho richiesto è di grande dimensione e ci vorrà del tempo per scaricarlo. L’istruzione readSDMX ha composto una richiesta che viene inviata a ISTAT providerId = "ISTAT" e ho richiesto di scaricare il flusso 159_938 flowRef = "159_938" con la relativa Data Structure Definition dsd = TRUE, vale a dire con i relativi metadati e label.

Per sapere quali flussi vengono pubblicati si può consultare il registro: http://sdmx.istat.it/sdmxMetaRepository/DataFlow.aspx?m=y . Sono gli stessi dati presenti su dati.istat.it.

Una volta scaricato posso trasformare l’oggetto sdmx.data (avrei potuto chiamarlo in qualsiasi altro modo…) in un dataframe:

occ <- as.data.frame(sdmx.data, labels = TRUE)

e salvare i risultati

save(occ, file = "occ.RData")

Una rapida elaborazione dei risultati.

Carichiamo qualche altra libreri che useremo per manipolare i dati e produrre un grafico:

library(dplyr)
library(ggplot2)
library(RColorBrewer)

Adesso filtriamo i dati in modo che ci restino solo i dati annuali della Lombardia per classi di età. Lo faremo filtrando i dati annuali "FREQ == A", dopo il 2004 obsTime >= 2004 e per la Lombardia, ITTER107 == "ITC4", mentre per tutte le altre variabili selezioniamo solo i totali, a parte le classi di età per le quali NON selezioniamo i due totali presenti CLASSE_ETA != "Y15-64", CLASSE_ETA != "Y_GE15":

loca <- occ %>%
  filter(FREQ == "A",
         obsTime >= 2004,
         ITTER107 == "ITC4",
         SESSO == "9",
         CARATT_OCC == "9",
         POSIZPROF == "9",
         TEMPO_PIENO_PARZ == "9",
         ATECO_2007 == "0010",
         ATECO_2002 == "0010",
         CLASSE_ETA != "Y15-64",
         CLASSE_ETA != "Y_GE15",
         TITOLO_STUDIO == "99") %>%
  mutate_if(is.character,as.factor)

Tempo di produrre il grafico:

ggplot(loca, 
       aes(x = obsTime, y = obsValue, group = CLASSE_ETA_label.it, col = CLASSE_ETA_label.it)) +
  geom_line(size = 1) +
  theme_minimal() +
  scale_y_continuous("migliaia") +
  scale_x_discrete("anno") +
  labs(title = "Occupati in Lombardia",
       caption = "ns. elaborazione su dati ISTAT - RLCF") +
  scale_color_brewer(palette = "Set1", name="Classe di età")

Per oggi può bastare…

Come vedete si può automatizzare molto del lavoro e aggiornare i dati spesso. Nei prossimi articoli renderò disponibili altri script per aggiornare i dati ISTAT ed elaborarli velocemente.