Salta al contenuto

Primi passi con R e le temperature

Come anticipato qui, oggi iniziamo a scrivere qualche riga di codice (ricordiamo, stiamo utilizzando R) per creare i nostri grafici personalizzati, in questo caso partiamo dalle anomalie termiche così come vengono misurate da RSS e UAH. In questa prima parte vedremo passo passo come ottenere i grafici, in futuro andremo più spediti, in quanto non è nostro obiettivo creare dei tutorial online sull’utilizzo di R (fatto salvo che rimaniamo a disposizione per ogni eventuale chiarimento).

Carichiamo il file relativo alle anomalie termiche elaborate da RSS:

data_rss<-scan("http://www.climatemonitor.it/Download/RSS.csv")

Vi ricordo che è sufficiente eseguire un copia/incolla all'interno della shell di R, inoltre il file che mettiamo a vostra disposizione non è il file originale rilasciato da RSS, bensì una elaborazione (i dati non sono stati alterati, semplicemente il file è stato "ripulito" da tutte le informazioni non utili ai fini della rappresentazione grafica).

Cosa abbiamo fatto con questo comando? Abbiamo caricato il file RSS.csv all'interno del vettore data_rss. Quello che vogliamo ottenere è una serie storica, quindi dobbiamo utilizzare la libreria tseries, precedentemente installata.

library(tseries)

A questo punto trasformiamo il nostro vettore data_rss in una serie storica, la chiameremo RSS:

RSS<-ts(data_rss,start=1979,frequency=12)

Il comando ts trasforma il vettore data_rss (i dati da noi caricati sul nostro computer) in una serie storica con inizio 1/1979 e con frequenza mensile.

Digitiamo RSS e premiamo invio, in questo modo richiamiamo la serie storica, in modalità testuale, ecco le prime righe di risultato:

> rss
[1] -0.227 -0.125 -0.139 -0.265 -0.227 -0.201 -0.045 -0.159 -0.008 0.131
[11] 0.035 0.058 0.010 0.087 -0.040 0.037 0.094 0.136 -0.010 0.018
[21] 0.049 0.047 -0.166 -0.082 0.198 0.202 -0.029 0.078 0.007 -0.061
(...)

Il numero di dati visualizzati in ogni riga, ovviamente dipende dalla ampiezza del vostro monitor.

A questo punto ripetiamo tutto il procedimento per la serie di dati UAH:

data_uah<-scan("http://www.climatemonitor.it/Download/UAH.csv")

Create la serie storica utilizzando i passaggi visti per la serie RSS, e chiamate la serie storica UAH

A questo punto, tutti noi dovremmo avere due serie di dati: RSS e UAH. E' venuto il momento di visualizzarle entrambe, sotto forma di grafico.

op <- par(mfrow=c(2,1))
plot(RSS,type="l",ylab="°C",xlab="",main="Anomalie termiche - RSS")
plot(UAH,type="l",ylab="°C",xlab="Anno", main="Anomalie termiche - UAH")
par(op)

Una volta premuto invio, si aprirà una nuova finestra con il grafico appena elaborato, ecco il risultato:

Anomalie termiche

Se preferite una vista più smussata, possiamo applicare un filtro (avremo modo di parlare dei filtri più avanti, per il momento applichiamo questo semplice, ma efficace, smussatore).

Il filtro applicato è di tipo ricorsivo, un'autoregressione, secondo la formula:
y[i] = x[i] + f[1]*y[i-1] + ... + f[p]*y[i-p]
Volendo potremmo anche applicare una media mobile (to do!)
plot(RSS,ylab="°C",xlab="Anno",main="Anomalie termiche - RSS (k=12)")
k<-12
lines(filter(RSS,rep(1/k,k)),col="red",lwd=3)

Serie RSS smussata

Per il momento è tutto, prossimamente completeremo le fonti di dati scaricabili da Climate Monitor, e cominceremo ad effettuare qualche analisi di tipo statistico.

Il vostro feedback è molto importante! Rimango in attesa di suggerimenti e di migliorie da apportare al codice.
Reblog this post [with Zemanta]
Related Posts Plugin for WordPress, Blogger...Facebooktwitterlinkedinmail
Published inAmbienteAttualitàClimatologiaR

6 Comments

  1. Molto interessante il problema del filtraggio e come l’hai risolto.
    Aggiungo che per inserire una retta orizzontale in un grafico già visualizzato, usando sempre il comando abline(), si può usare anche questo codice:

    abline(h=0, lwd=2, col=”orange”)

    Mentre per ottenere delle rette verticali, si scrive:

    abline(v=0, lwd=2, col=”orange”)

    Io lo uso generalmente per creare delle griglie (anche se la library ggplot2 è più comoda x questo) nei grafici come ad esempio (quadrati pari alle unità):

    abline(h=0:30, col=”grey”)
    abline(v=-15:15, col=”grey”)

  2. Lucas

    Ok, Fatto!

    Grazie Claudio!
    Alla prossima analisi!

  3. Ciao Lucas, non diamo mai nulla per scontato, siamo qui tutti quanti per scoprire insieme le potenzialità di R. La svista è stata mia, in effetti in un grafico con anomalie è di fondamentale importanza inserire una retta base. Il linguaggio R ci viene incontro con abline che ci consente di disegnare rette alle coordinate da noi scelte (in effetti ci consente di disegnare anche rette di regressione, ma questo magari lo vedremo più avanti). Una volta inseriti i comandi così come indicato nell’articolo qui sopra, aggiungete questa linea:

    abline(a=0,b=0,lwd=2,col=”blue”)

    in questo modo R disegnerà una retta orizzontale per l’intercetta 0.

    Qui trovate il manuale online.

  4. Lucas

    Bel lavoro Claudio!
    mi chiedevo se fosse possibile, sicuramente si, inserire una retta in corrispondenza di anomalia zero….ma come si fa?
    Devo specificare nel grafico la retta ma non riesco a capire la si fa! premetto però che non sono uno smanettone del pc…quindi è probabile che questa perplessità possa risultare ovvia ad altri!

    Ciao

  5. In plot(RSS,type=”l”,ylab=”°C”,xlab=””,main=”Anomalie termiche – RSS”), ho volutamente lasciato xlab=”” vuoto, per questioni di impaginazione, dal momento che l’etichetta dell’asse x è indicata nel grafico sottostante.
    La sequenza op<-par(mfrow=c(r,c)) (…) par(op) è molto importante, e la utilizzeremo spesso per creare dei panel di grafici.

    C.Gravina

  6. Molto molto interessante. Ci sono alcuni punti che non mi erano chiari e sono andato a guardarmi la documentazione. Riporto qui sotto quello che ho trovato qualora dovesse interessare ad altri.

    op <- par(mfrow=c(2,1))
    Digitando ?mfrow al prompt di R leggo l’help di questo comando e mi pare di capire che semplicemente è la definizione di una griglia di una colonna per due righe per ospitare i due grafici.

    plot(RSS,type=”l”,ylab=”°C”,xlab=””,main=”Anomalie termiche – RSS”)
    Il comando plot si aspetta: coordinate x,y oppure un oggetto di R che supporti il metodo plot. L’oggetto RSS (creato con la funzione ts) immagino supporti questo metodo.
    type=l significa grafico a linea
    xlab e main impostano rispettivamente un titolo vuoto per l’asse x e il titolo del grafico

    ciao
    Rodolfo

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Categorie

Termini di utilizzo

Licenza Creative Commons
Climatemonitor di Guido Guidi è distribuito con Licenza Creative Commons Attribuzione - Non commerciale 4.0 Internazionale.
Permessi ulteriori rispetto alle finalità della presente licenza possono essere disponibili presso info@climatemonitor.it.
scrivi a info@climatemonitor.it
Translate »