Applicazioni pratiche di machine learning/Previsioni sul cambiamento climatico
Caricamento librerie
modifica library(ggplot2)
library(dplyr)
library(forecast)
library(reshape2)
Parte 1: Dati
modificaIl 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
modificaCalcolando 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
modificaPer 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")
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
modificaUtilizzando 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