No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ProjectRFinal.R 7.7KB

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