Script R d'analyse exploratoire

This commit is contained in:
Abdel-Kader Chabi-Sika-Boni 2021-01-08 23:09:32 +01:00
parent 4cb4c29825
commit f5d65771a6

163
ProjectRFinal.R Normal file
View file

@ -0,0 +1,163 @@
library(plyr)
library(dplyr)
library(ggplot2)
library("sf")
library("rnaturalearth")
library("rnaturalearthdata")
library("rgeos")
library(stringr)
library(tidyverse)
######################################################################################
#
#
######################################################################################
#Import des températures (partout sur la planète), on ne garde que l'année correspondante.
temp = read.csv("D:/Rstudio/Projects/Data/GlobalTemperatures.csv")
temp$dt <- substring(temp$dt,1,4)
# Calcul de la moyenne par année
MeanYear = ddply(temp, "dt" , summarise, meanYear = mean(na.omit(LandAverageTemperature)))
# Importation des températures (pas dans l'eau) et mise en forme de l'année.
tempCountries = read.csv("D:/Rstudio/Projects/Data/GlobalLandTemperaturesByCountry.csv")
tempCountries$dt <- substring(tempCountries$dt,1,4)
# Calcul de la moyenne par année, tout pays confondus
MeanTempByYear = ddply(tempCountries, c("dt") , summarise, meanTemp = mean(na.omit(AverageTemperature)))
# Mise en forme de la moyenne.
ggplot(MeanTempByYear, aes(x=dt , y = meanTemp)) +
geom_path(size = 1 , color = "red", aes(group=1)) +
ggtitle("Evolution de la température moyenne au niveau mondial depuis 1750 (Continent)") +
scale_x_discrete(breaks=seq(1750, 2015, 15)) +
theme(panel.background = element_blank(), axis.line = element_line(colour = "black")) +
ylab("moyenne des températures observées") +
xlab("année")
# Superposition des 2 courbes
ggplot(MeanTempByYear, aes(x=dt , y = meanTemp)) +
geom_path(size = 1 , color = "red", aes(group=1)) +
geom_line() +
geom_line(data = MeanYear, aes(x=dt , y = meanYear, group=2),color = "blue") +
ggtitle("Comparaison de la température moyenne sur Terre et en Mer") +
theme(panel.background = element_blank(), axis.line = element_line(colour = "black")) +
scale_x_discrete(breaks=seq(1750, 2015, 15)) +
ylab("moyenne des températures observées") +
xlab("année")
# Calcul de l'année la plus chaude.
x = MeanTempByYear$dt[which.max(MeanTempByYear$meanTemp)]
tempCountries2013 = subset(tempCountries, dt == x)
MeanTemp2013ByCountry = ddply(tempCountries2013, c("Country") , summarise, meanTemp = mean(na.omit(AverageTemperature)))
MeanTemp2013ByCountry = MeanTemp2013ByCountry[order(MeanTemp2013ByCountry$meanTemp, decreasing = TRUE), ]
#On ne garde que les 10 pays les plus chauds
TenHottest2013Countries = head(MeanTemp2013ByCountry,10)
# Mise en forme de la moyenne.
ggplot(TenHottest2013Countries, aes(x=Country , y = meanTemp, fill=factor(meanTemp))) +
geom_bar(stat = "identity") +
ggtitle("Les 10 pays les plus chauds durant l'année 2013") +
theme(axis.text.x = element_text(color = "blue", size = 15)) +
ylab("moyenne des températures observées") +
xlab("Pays")
######################################################################################
#
#
######################################################################################
## develop a model
#on enlève les années 1743-1745
MeanTempByYear = na.omit(MeanTempByYear)
linear_model <- lm( MeanTempByYear$meanTemp ~ MeanTempByYear$dt)
FutureData <- data.frame(2020)
Prediction <- data.frame(predict(linear_model,FutureData))
print(Prediction)
summary(linear_model)
#Essai peu concluant ... Circulez, il n'y a rien de fonctionnel à voir !
######################################################################################
#
#
#####################################################################################
MeanTempByYear = ddply(tempCountries, c("dt") , summarise, meanTemp = mean(na.omit(AverageTemperature)))
MeanTempByYear <- MeanTempByYear[-c(1:10), ]
#On plot le résultat obtenu, on décide d'enlever les 10 premières années qui sont très inconsistantes
new_row = c(2050, 20)
MeanTempByYear = rbind(MeanTempByYear,new_row)
#On ajoute cette valeur afin que notre smooth puisse extrapoler jusqu'en 2050, on replot
MeanTempByYear <- MeanTempByYear[-c(1:107), ]
# On enlève tous les ans qui ont appartenu à la période dite du "Petit Age glaciaire, ainsi,
# on essaye d'enlever les impacts qui ne dépendant pas de l'activité humaine et de prédire au mieux
# ce qui se serait passé sans cette période. On remarque des résultats plus catastrophiques
new_row = c(2050, 21)
MeanTempByYear = rbind(MeanTempByYear,new_row)
#On ajoute cette valeur afin que notre smooth puisse extrapoler jusqu'en 2050, on replot
#En appelant ou non les lignes au dessus de nous, nous obtenons les résultats présentés sur le rapport.
ggplot(MeanTempByYear, aes(x=as.numeric(dt) , y = meanTemp)) +
geom_point() +
ggtitle("Températures terrestres et extrapolation à 40 ans") +
geom_smooth(stat = "smooth", color = "red", method="auto", fullrange = TRUE) +
ylab("moyenne des températures observées") +
xlab("année")
######################################################################################
#
#
#####################################################################################
# Importation des Bases de données et mise en forme de l'année.
LocationTemp = read.csv("D:/Rstudio/Projects/Data/GlobalLandTemperaturesByMajorCity.csv")
LocationTemp$dt <- substring(LocationTemp$dt,1,4)
LocationTemp <- subset(na.omit(LocationTemp), dt == "2003")
#LocationTemp$Latitude[str_sub(LocationTemp$Latitude, -1) == "N"] <-1
#LocationTemp$Latitude[str_sub(LocationTemp$Latitude, -1) == "S"] <- -LocationTemp$Latitude
TrLocationTemp <- LocationTemp %>%
mutate(Latitude = case_when (str_sub(LocationTemp$Latitude, -1) == "N" ~ str_sub(LocationTemp$Latitude, 0,-2),
(str_sub(LocationTemp$Latitude, -1) == "S" ~ paste("-",str_sub(LocationTemp$Latitude, 0,-2), sep = "")))) %>%
mutate(Longitude = case_when (str_sub(LocationTemp$Longitude, -1) == "E" ~ str_sub(LocationTemp$Longitude, 0,-2),
(str_sub(LocationTemp$Longitude, -1) == "W" ~ paste("-",str_sub(LocationTemp$Longitude, 0,-2),sep = ""))))
#Essai de transformation des données, échec cuisant car ça n'a rien changé mais démarche intéressante
# Calcul de la moyenne par année
MeanLocationYear = ddply(TrLocationTemp, "Country" , summarise, meanYear = mean(AverageTemperature), Latitude = Latitude, Longitude = Longitude)
world <- ne_countries(returnclass = "sf")
ggplot() +
geom_sf(data= world) +
geom_point(data = LocationTemp, aes(x = Longitude, y = Latitude))
#Le plot fonctionne, et grâce à lui, on s'aperçoit que le monde est petit...
#########################################################################################
#
#
#########################################################################################
library(countrycode)
continent <- countrycode(sourcevar = MeanTemp2013ByCountry[, "Country"],
origin = "country.name",
destination = "continent")
#import d'un référencement des continents de chaque payes
continent30 = head(na.omit(continent),30)
# On ne garde que les 30 pays les plus chauds, ainsi que leur continent
ggplot(data=as.data.frame(continent30),
aes(x = factor(1),fill = factor(continent30))) +
geom_bar(stat = "count") +
ggtitle("Distribution au sein des continents des 30 pays les plus chauds") +
coord_polar(theta='y') +
theme(axis.text.y = element_blank(),
axis.title.y = element_blank(),
axis.ticks.y = element_blank(),
axis.title.x = element_blank()) +
labs(fill = "Continents")
# On plotte la proportion de continents parmi les 30 pays les plus chauds
################################Fin du code########################################