Applicazioni pratiche di machine learning/Previsioni sul cambiamento climatico

Indice del libro

Caricamento librerie modifica

 library(ggplot2)
 library(dplyr)
 library(forecast)
 library(reshape2)

Parte 1: Dati modifica

Il data set tas_1901_2016_ITA scaricabile dal sito https://climateknowledgeportal.worldbank.org/download-data sotto la Creative Commons Attribution 4.0 International License (CC BY 4.0) contiene 12 X 116 = 1392 misurazioni delle temperature medie mensili in gradi centigradi in Italia dal 1901 al 2016 . Ci sono per ciascuna osservazione 5 variabili, ma le uniche che si prendono in considerazione per l'analisi del cambiamento climatico sono l'anno della misurazione e la temperatura media per ciascuno dei 12 mesi dell'anno.

Caricamento dei dati:

 tas_1901_2016_ITA<- read.csv("tas_1901_2016_ITA.csv",header=TRUE)
 tas_1991_2016_ITA<- read.csv("tas_1991_2016_ITA.csv",header=TRUE)
 CO2_kt<- read.csv("CO2_kt.csv",header=TRUE)

Parte 2: Domanda di ricerca modifica

Calcolando la media annuale delle temperature dal 1901 al 2016 si vuole valutare se è in atto un cambiamento climatico in Italia, basandosi quindi su dati di oltre 1 secolo .

Parte 3: Esplorazione dei dati modifica

Per studiare la relazione tra le 2 variabili anno e temperatura media annuale in Italia si traccia in figura uno scatterplot che è un tipo di grafico in cui ogni punto rappresenta una singola osservazione di anno e temperatura media annuale.

 df <- tas_1901_2016_ITA %>%
  group_by(Year)%>%
  summarise(media = mean(Temperature....Celsius.))

 df %>%
   ggplot(aes(Year,media))+
  geom_line()+
  ylab("Temperatura media annuale in gradi centigradi") +
  xlab("Anni") +
  ggtitle("Andamento temporale della variazione di temperatura  ",subtitle = "media annuale in Italia dal 1991 al 2016")

 df %>%
   ggplot(aes(Year,media))+
  geom_point(size=2)+
  geom_smooth() +
  scale_x_continuous(breaks=seq(1901,2016,10))+
  ylab("Temperatura media annuale in gradi centigradi") +
  xlab("Anno") +
  ggtitle("Cambiamento climatico in Italia ",subtitle = "tramite variazione temperatura media annuale dal 1901 al 2016")
 
Andamento temporale della variazione di temperatura media annuale in Italia dal 1991 al 2016
 
Cambiamento climatico in Italia tramite variazione temperatura media annuale dal 1901 al 2016

Si nota dal grafico che c'è una relazione moderata tra anno e temperatura media annuale ma la relazione non è lineare cioè una linea retta non si adatterebbe ai dati ma una linea curva ottenuta tramite la tecnica dello Smoothing con la local regression si adatta meglio ai dati. In tal modo si evidenzia un trend significativo dei dati, attenuando il rumore. In altri termini sommando graficamente lo smooth trend e il rumore si ottiene l'andamento temporale della variazione di temperatura. La zona grigia lungo la curva di smoothing rappresenta l'intervallo di confidenza al 95% che la curva rappresenti l'effettivo trend dei dati. Come si vede dal grafico la temperatura media annuale in Italia è cresciuta nel corso di più di 1 secolo da 11,01464 °C del 1901 a 13,13094 °C del 2016 .

Parte 4: Modellizazione e previsione modifica

Utilizzando il modello arima per prevedere le temperature medie in Italia dal 2021 al 2030 con intervallo di confidenza all'80% e al 95% si ottiene che la temperatura crescerà secondo la colonna Point forecast nella seguente tabella e secondo il grafico in basso:

 years <- data.frame(year=2021:2030)

 ar <- auto.arima(df$media)
 fore <- forecast(ar)
 plot(fore)
 print(cbind(years,fore))
 
    year Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
121 2021       13.51401 13.01746 14.01055 12.75461 14.27341
122 2022       13.53144 13.02323 14.03965 12.75420 14.30868
123 2023       13.54888 13.02926 14.06849 12.75420 14.34355
124 2024       13.56631 13.03554 14.09708 12.75457 14.37805
125 2025       13.58375 13.04205 14.12544 12.75529 14.41220
126 2026       13.60118 13.04877 14.15359 12.75634 14.44602
127 2027       13.61862 13.05570 14.18153 12.75771 14.47952
128 2028       13.63605 13.06282 14.20928 12.75937 14.51273
129 2029       13.65349 13.07012 14.23685 12.76130 14.54567
130 2030       13.67092 13.07759 14.26425 12.76351 14.57833
10 rows