|
@@ -0,0 +1,163 @@
|
|
1
|
+library(plyr)
|
|
2
|
+library(dplyr)
|
|
3
|
+library(ggplot2)
|
|
4
|
+library("sf")
|
|
5
|
+library("rnaturalearth")
|
|
6
|
+library("rnaturalearthdata")
|
|
7
|
+library("rgeos")
|
|
8
|
+library(stringr)
|
|
9
|
+library(tidyverse)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+######################################################################################
|
|
13
|
+#
|
|
14
|
+#
|
|
15
|
+######################################################################################
|
|
16
|
+
|
|
17
|
+#Import des températures (partout sur la planète), on ne garde que l'année correspondante.
|
|
18
|
+temp = read.csv("D:/Rstudio/Projects/Data/GlobalTemperatures.csv")
|
|
19
|
+temp$dt <- substring(temp$dt,1,4)
|
|
20
|
+# Calcul de la moyenne par année
|
|
21
|
+MeanYear = ddply(temp, "dt" , summarise, meanYear = mean(na.omit(LandAverageTemperature)))
|
|
22
|
+
|
|
23
|
+# Importation des températures (pas dans l'eau) et mise en forme de l'année.
|
|
24
|
+tempCountries = read.csv("D:/Rstudio/Projects/Data/GlobalLandTemperaturesByCountry.csv")
|
|
25
|
+tempCountries$dt <- substring(tempCountries$dt,1,4)
|
|
26
|
+# Calcul de la moyenne par année, tout pays confondus
|
|
27
|
+MeanTempByYear = ddply(tempCountries, c("dt") , summarise, meanTemp = mean(na.omit(AverageTemperature)))
|
|
28
|
+
|
|
29
|
+# Mise en forme de la moyenne.
|
|
30
|
+ggplot(MeanTempByYear, aes(x=dt , y = meanTemp)) +
|
|
31
|
+ geom_path(size = 1 , color = "red", aes(group=1)) +
|
|
32
|
+ ggtitle("Evolution de la température moyenne au niveau mondial depuis 1750 (Continent)") +
|
|
33
|
+ scale_x_discrete(breaks=seq(1750, 2015, 15)) +
|
|
34
|
+ theme(panel.background = element_blank(), axis.line = element_line(colour = "black")) +
|
|
35
|
+ ylab("moyenne des températures observées") +
|
|
36
|
+ xlab("année")
|
|
37
|
+
|
|
38
|
+# Superposition des 2 courbes
|
|
39
|
+ggplot(MeanTempByYear, aes(x=dt , y = meanTemp)) +
|
|
40
|
+ geom_path(size = 1 , color = "red", aes(group=1)) +
|
|
41
|
+ geom_line() +
|
|
42
|
+ geom_line(data = MeanYear, aes(x=dt , y = meanYear, group=2),color = "blue") +
|
|
43
|
+ ggtitle("Comparaison de la température moyenne sur Terre et en Mer") +
|
|
44
|
+ theme(panel.background = element_blank(), axis.line = element_line(colour = "black")) +
|
|
45
|
+ scale_x_discrete(breaks=seq(1750, 2015, 15)) +
|
|
46
|
+ ylab("moyenne des températures observées") +
|
|
47
|
+ xlab("année")
|
|
48
|
+
|
|
49
|
+# Calcul de l'année la plus chaude.
|
|
50
|
+x = MeanTempByYear$dt[which.max(MeanTempByYear$meanTemp)]
|
|
51
|
+tempCountries2013 = subset(tempCountries, dt == x)
|
|
52
|
+MeanTemp2013ByCountry = ddply(tempCountries2013, c("Country") , summarise, meanTemp = mean(na.omit(AverageTemperature)))
|
|
53
|
+MeanTemp2013ByCountry = MeanTemp2013ByCountry[order(MeanTemp2013ByCountry$meanTemp, decreasing = TRUE), ]
|
|
54
|
+#On ne garde que les 10 pays les plus chauds
|
|
55
|
+TenHottest2013Countries = head(MeanTemp2013ByCountry,10)
|
|
56
|
+
|
|
57
|
+# Mise en forme de la moyenne.
|
|
58
|
+ggplot(TenHottest2013Countries, aes(x=Country , y = meanTemp, fill=factor(meanTemp))) +
|
|
59
|
+ geom_bar(stat = "identity") +
|
|
60
|
+ ggtitle("Les 10 pays les plus chauds durant l'année 2013") +
|
|
61
|
+ theme(axis.text.x = element_text(color = "blue", size = 15)) +
|
|
62
|
+ ylab("moyenne des températures observées") +
|
|
63
|
+ xlab("Pays")
|
|
64
|
+
|
|
65
|
+######################################################################################
|
|
66
|
+#
|
|
67
|
+#
|
|
68
|
+######################################################################################
|
|
69
|
+
|
|
70
|
+## develop a model
|
|
71
|
+#on enlève les années 1743-1745
|
|
72
|
+MeanTempByYear = na.omit(MeanTempByYear)
|
|
73
|
+linear_model <- lm( MeanTempByYear$meanTemp ~ MeanTempByYear$dt)
|
|
74
|
+FutureData <- data.frame(2020)
|
|
75
|
+Prediction <- data.frame(predict(linear_model,FutureData))
|
|
76
|
+print(Prediction)
|
|
77
|
+summary(linear_model)
|
|
78
|
+#Essai peu concluant ... Circulez, il n'y a rien de fonctionnel à voir !
|
|
79
|
+
|
|
80
|
+######################################################################################
|
|
81
|
+#
|
|
82
|
+#
|
|
83
|
+#####################################################################################
|
|
84
|
+
|
|
85
|
+MeanTempByYear = ddply(tempCountries, c("dt") , summarise, meanTemp = mean(na.omit(AverageTemperature)))
|
|
86
|
+MeanTempByYear <- MeanTempByYear[-c(1:10), ]
|
|
87
|
+#On plot le résultat obtenu, on décide d'enlever les 10 premières années qui sont très inconsistantes
|
|
88
|
+
|
|
89
|
+new_row = c(2050, 20)
|
|
90
|
+MeanTempByYear = rbind(MeanTempByYear,new_row)
|
|
91
|
+#On ajoute cette valeur afin que notre smooth puisse extrapoler jusqu'en 2050, on replot
|
|
92
|
+
|
|
93
|
+MeanTempByYear <- MeanTempByYear[-c(1:107), ]
|
|
94
|
+# On enlève tous les ans qui ont appartenu à la période dite du "Petit Age glaciaire, ainsi,
|
|
95
|
+# on essaye d'enlever les impacts qui ne dépendant pas de l'activité humaine et de prédire au mieux
|
|
96
|
+# ce qui se serait passé sans cette période. On remarque des résultats plus catastrophiques
|
|
97
|
+
|
|
98
|
+new_row = c(2050, 21)
|
|
99
|
+MeanTempByYear = rbind(MeanTempByYear,new_row)
|
|
100
|
+#On ajoute cette valeur afin que notre smooth puisse extrapoler jusqu'en 2050, on replot
|
|
101
|
+
|
|
102
|
+#En appelant ou non les lignes au dessus de nous, nous obtenons les résultats présentés sur le rapport.
|
|
103
|
+ggplot(MeanTempByYear, aes(x=as.numeric(dt) , y = meanTemp)) +
|
|
104
|
+ geom_point() +
|
|
105
|
+ ggtitle("Températures terrestres et extrapolation à 40 ans") +
|
|
106
|
+ geom_smooth(stat = "smooth", color = "red", method="auto", fullrange = TRUE) +
|
|
107
|
+ ylab("moyenne des températures observées") +
|
|
108
|
+ xlab("année")
|
|
109
|
+
|
|
110
|
+######################################################################################
|
|
111
|
+#
|
|
112
|
+#
|
|
113
|
+#####################################################################################
|
|
114
|
+
|
|
115
|
+# Importation des Bases de données et mise en forme de l'année.
|
|
116
|
+LocationTemp = read.csv("D:/Rstudio/Projects/Data/GlobalLandTemperaturesByMajorCity.csv")
|
|
117
|
+LocationTemp$dt <- substring(LocationTemp$dt,1,4)
|
|
118
|
+LocationTemp <- subset(na.omit(LocationTemp), dt == "2003")
|
|
119
|
+#LocationTemp$Latitude[str_sub(LocationTemp$Latitude, -1) == "N"] <-1
|
|
120
|
+#LocationTemp$Latitude[str_sub(LocationTemp$Latitude, -1) == "S"] <- -LocationTemp$Latitude
|
|
121
|
+TrLocationTemp <- LocationTemp %>%
|
|
122
|
+ mutate(Latitude = case_when (str_sub(LocationTemp$Latitude, -1) == "N" ~ str_sub(LocationTemp$Latitude, 0,-2),
|
|
123
|
+ (str_sub(LocationTemp$Latitude, -1) == "S" ~ paste("-",str_sub(LocationTemp$Latitude, 0,-2), sep = "")))) %>%
|
|
124
|
+ mutate(Longitude = case_when (str_sub(LocationTemp$Longitude, -1) == "E" ~ str_sub(LocationTemp$Longitude, 0,-2),
|
|
125
|
+ (str_sub(LocationTemp$Longitude, -1) == "W" ~ paste("-",str_sub(LocationTemp$Longitude, 0,-2),sep = ""))))
|
|
126
|
+#Essai de transformation des données, échec cuisant car ça n'a rien changé mais démarche intéressante
|
|
127
|
+
|
|
128
|
+# Calcul de la moyenne par année
|
|
129
|
+MeanLocationYear = ddply(TrLocationTemp, "Country" , summarise, meanYear = mean(AverageTemperature), Latitude = Latitude, Longitude = Longitude)
|
|
130
|
+world <- ne_countries(returnclass = "sf")
|
|
131
|
+
|
|
132
|
+ggplot() +
|
|
133
|
+ geom_sf(data= world) +
|
|
134
|
+ geom_point(data = LocationTemp, aes(x = Longitude, y = Latitude))
|
|
135
|
+#Le plot fonctionne, et grâce à lui, on s'aperçoit que le monde est petit...
|
|
136
|
+
|
|
137
|
+#########################################################################################
|
|
138
|
+#
|
|
139
|
+#
|
|
140
|
+#########################################################################################
|
|
141
|
+
|
|
142
|
+library(countrycode)
|
|
143
|
+continent <- countrycode(sourcevar = MeanTemp2013ByCountry[, "Country"],
|
|
144
|
+ origin = "country.name",
|
|
145
|
+ destination = "continent")
|
|
146
|
+#import d'un référencement des continents de chaque payes
|
|
147
|
+
|
|
148
|
+continent30 = head(na.omit(continent),30)
|
|
149
|
+# On ne garde que les 30 pays les plus chauds, ainsi que leur continent
|
|
150
|
+
|
|
151
|
+ggplot(data=as.data.frame(continent30),
|
|
152
|
+ aes(x = factor(1),fill = factor(continent30))) +
|
|
153
|
+ geom_bar(stat = "count") +
|
|
154
|
+ ggtitle("Distribution au sein des continents des 30 pays les plus chauds") +
|
|
155
|
+ coord_polar(theta='y') +
|
|
156
|
+ theme(axis.text.y = element_blank(),
|
|
157
|
+ axis.title.y = element_blank(),
|
|
158
|
+ axis.ticks.y = element_blank(),
|
|
159
|
+ axis.title.x = element_blank()) +
|
|
160
|
+ labs(fill = "Continents")
|
|
161
|
+# On plotte la proportion de continents parmi les 30 pays les plus chauds
|
|
162
|
+
|
|
163
|
+################################Fin du code########################################
|