Script R d'analyse exploratoire
This commit is contained in:
parent
4cb4c29825
commit
f5d65771a6
1 changed files with 163 additions and 0 deletions
163
ProjectRFinal.R
Normal file
163
ProjectRFinal.R
Normal 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########################################
|
Loading…
Reference in a new issue