Browse Source

Script R d'analyse exploratoire

Abdel-Kader Chabi-Sika-Boni 3 years ago
parent
commit
f5d65771a6
1 changed files with 163 additions and 0 deletions
  1. 163
    0
      ProjectRFinal.R

+ 163
- 0
ProjectRFinal.R View File

@@ -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######################################## 

Loading…
Cancel
Save