Utente:G273Y/Sandbox
Cambiamento climatico in Italia
modificaCaricamento librerie
modificalibrary(ggplot2) library(dplyr) library(caret)
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
modificaApplicando il modello di regressione lineare al periodo temporale che va dal 1991 al 2016 si ottiene un R^2 pari al 40% circa che rappresenta la percentuale di variabilità della temperatura media annuale espressa dal modello .
df1 <- tas_1991_2016_ITA %>% group_by(Year)%>% summarise(media = mean(Temperature....Celsius.))
lm_model <- lm( media ~ Year,df1) summary(lm_model)
cat("R-squared=", cor(df1$media,df1$Year)^2,"\n")
p1 <- predict(lm_model,newdata = df1) cat("RMSE_train=",sqrt((1/nrow(df1))*sum((p1-df1$media)^2)))
Call: lm(formula = media ~ Year, data = df1)
Residuals: Min 1Q Median 3Q Max -0.6810 -0.2077 0.0209 0.1953 0.7737
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -64.939272 18.394421 -3.530 0.001709 ** Year 0.038715 0.009181 4.217 0.000304 *** --- Residual standard error: 0.3511 on 24 degrees of freedom Multiple R-squared: 0.4256, Adjusted R-squared: 0.4017 F-statistic: 17.78 on 1 and 24 DF, p-value: 0.0003042
R-squared= 0.4255855 RMSE_train= 0.3373344
Aggiungendo come predictors alla regressione lineare la CO2 emessa in Italia e nel mondo dal 1960 al 2014 si ottiene un adjusted R-squared = 0,69 e un errore RMSE = 0,30°C che danno una stima positiva del modello .
df1 <- tas_1901_2016_ITA %>% filter(Year %in% 1960:2014) %>% group_by(Year)%>% summarise(media = mean(Temperature....Celsius.))
df1 <- cbind(df1,CO2_it=CO2_kt$CO2_Italia) df1 <- cbind(df1,CO2_world=CO2_kt$CO2_Mondo)
lm_2 <- lm( media ~ Year + CO2_world + CO2_it , df1) summary(lm_2)
p1 <- predict(lm_2,newdata = df1) cat("RMSE_train=",sqrt((1/nrow(df1))*sum((p1-df1$media)^2)))
Call: lm(formula = media ~ Year + CO2_world + CO2_it, data = df1)
Residuals: Min 1Q Median 3Q Max -0.64561 -0.21553 0.05704 0.21581 0.64385
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -1.338e+02 3.135e+01 -4.267 8.60e-05 *** Year 7.475e-02 1.619e-02 4.618 2.66e-05 *** CO2_world -7.276e-08 3.200e-08 -2.274 0.02722 * CO2_it -3.053e-06 8.038e-07 -3.798 0.00039 ***
Residual standard error: 0.3204 on 51 degrees of freedom Multiple R-squared: 0.7054, Adjusted R-squared: 0.688 F-statistic: 40.7 on 3 and 51 DF, p-value: 1.432e-13
RMSE_train= 0.3084831
Parte 5: Previsioni
modificaMantenendo costante la CO2 italiana e mondiale dal 2020 al 2040 pari a quella del 2014, con questo nuovo modello la temperatura media in Italia continua a crescere :**
for (y in 2020:2040) { new_year <- data.frame(Year=y, CO2_it=320411, CO2_world=36138285) print("_________________________________________________________________") pred <-predict(lm_2, new_year, interval = "confidence", level = 0.95) print(paste("Nell'anno ",y," la predetta temperatura media annuale sarà ",round(pred[1],2), ".")) print("Siamo sicuri al 95% che la temperatura media annuale sarà ") print(paste("tra ",round(pred[2],2), " e " , round(pred[3],2) ,"" ))
}
[1] "_________________________________________________________________" [1] "Nell'anno 2020 la predetta temperatura media annuale sarà 13.61 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.24 e 13.98 " [1] "_________________________________________________________________" [1] "Nell'anno 2021 la predetta temperatura media annuale sarà 13.68 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.3 e 14.07 " [1] "_________________________________________________________________" [1] "Nell'anno 2022 la predetta temperatura media annuale sarà 13.76 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.35 e 14.16 " [1] "_________________________________________________________________" [1] "Nell'anno 2023 la predetta temperatura media annuale sarà 13.83 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.41 e 14.26 " [1] "_________________________________________________________________" [1] "Nell'anno 2024 la predetta temperatura media annuale sarà 13.91 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.46 e 14.36 " [1] "_________________________________________________________________" [1] "Nell'anno 2025 la predetta temperatura media annuale sarà 13.98 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.51 e 14.46 " [1] "_________________________________________________________________" [1] "Nell'anno 2026 la predetta temperatura media annuale sarà 14.06 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.56 e 14.56 " [1] "_________________________________________________________________" [1] "Nell'anno 2027 la predetta temperatura media annuale sarà 14.13 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.61 e 14.66 " [1] "_________________________________________________________________" [1] "Nell'anno 2028 la predetta temperatura media annuale sarà 14.21 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.66 e 14.76 " [1] "_________________________________________________________________" [1] "Nell'anno 2029 la predetta temperatura media annuale sarà 14.28 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.7 e 14.86 " [1] "_________________________________________________________________" [1] "Nell'anno 2030 la predetta temperatura media annuale sarà 14.36 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.75 e 14.96 " [1] "_________________________________________________________________" [1] "Nell'anno 2031 la predetta temperatura media annuale sarà 14.43 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.8 e 15.06 " [1] "_________________________________________________________________" [1] "Nell'anno 2032 la predetta temperatura media annuale sarà 14.51 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.84 e 15.17 " [1] "_________________________________________________________________" [1] "Nell'anno 2033 la predetta temperatura media annuale sarà 14.58 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.89 e 15.27 " [1] "_________________________________________________________________" [1] "Nell'anno 2034 la predetta temperatura media annuale sarà 14.66 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.94 e 15.38 " [1] "_________________________________________________________________" [1] "Nell'anno 2035 la predetta temperatura media annuale sarà 14.73 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 13.98 e 15.48 " [1] "_________________________________________________________________" [1] "Nell'anno 2036 la predetta temperatura media annuale sarà 14.81 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 14.03 e 15.58 " [1] "_________________________________________________________________" [1] "Nell'anno 2037 la predetta temperatura media annuale sarà 14.88 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 14.07 e 15.69 " [1] "_________________________________________________________________" [1] "Nell'anno 2038 la predetta temperatura media annuale sarà 14.95 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 14.12 e 15.79 " [1] "_________________________________________________________________" [1] "Nell'anno 2039 la predetta temperatura media annuale sarà 15.03 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 14.16 e 15.9 " [1] "_________________________________________________________________" [1] "Nell'anno 2040 la predetta temperatura media annuale sarà 15.1 ." [1] "Siamo sicuri al 95% che la temperatura media annuale sarà " [1] "tra 14.2 e 16 "