Dans ce blog, nous ferons des analyses sur les particules fines (PM2,5), qui sont des polluants qui existe dans l’air ambiant et qui sont très néfastes pour la santé humaine. Ces données présentes ont été publié par l’Environmental Protection Agency (EPA), qui publie sa base de donnée sur les émissions de (PM2,5) tous, les 3 ans et connu sous le nom d’Inventaire national des émissions (NEI).

Pour plus d’infos sur le NEI voir NEI.

Les données que nous utiliserons pour effectuer nos analyses sont celles de 1999, 2002, 2005, 2008. et peuvent être télécharger. ici: donnée.

Le contenu du fichier zip:

1) summarySCC_PM25.rds: Base de donnée avec les données sur les émissions de PM2,5 pour les années 1999, 2002, 2005 et 2008. Le tableau contient un nombre de tonnes de PM2,5 émis par un type de source spécifique pendant toute l’année.

Variables: - fips: Comté américain. - Pollutant: Le polluant. - SCC : Le nom de la source. - Emissions: Quantité de PM2,5 émise. - Année : Année des émissions enregistrées. - Type : Le type de source.

2) Source_Classification_Code.rds: Mappage des chaînes de chiffres SCC dans la table des émissions au nom réel de la source PM2,5.

Chargeons les librairies

# Tidyverse
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.6.3
## -- Attaching packages ----------------------------------------------------------------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2     v purrr   0.3.4
## v tibble  3.0.3     v dplyr   1.0.0
## v tidyr   1.1.0     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.5.0
## Warning: package 'ggplot2' was built under R version 3.6.3
## Warning: package 'tibble' was built under R version 3.6.3
## Warning: package 'tidyr' was built under R version 3.6.3
## Warning: package 'purrr' was built under R version 3.6.3
## Warning: package 'dplyr' was built under R version 3.6.3
## Warning: package 'forcats' was built under R version 3.6.3
## -- Conflicts -------------------------------------------------------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
# gridExtra
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
# Plotly
library(plotly)
## Warning: package 'plotly' was built under R version 3.6.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout

Importation des données RDS (read_rds)

# Lecture du fichier contenant les données sur les émissions de PM2.5
fichier_NEI <- file.choose("summarySCC_PM25.rds")
NEI_data <- readRDS(file = fichier_NEI)

# Lecture du fichier contenant les données sur les émissions de PM2.5
fichier_SCC <- file.choose("Source_Classification_Code.rds")
SCC_data <- readRDS(file = fichier_SCC)

Compréhension du fichier NEI_data

Aperçu de la variable Results

glimpse(NEI_data)
## Rows: 6,497,651
## Columns: 6
## $ fips      <chr> "09001", "09001", "09001", "09001", "09001", "09001", "09...
## $ SCC       <chr> "10100401", "10100404", "10100501", "10200401", "10200504...
## $ Pollutant <chr> "PM25-PRI", "PM25-PRI", "PM25-PRI", "PM25-PRI", "PM25-PRI...
## $ Emissions <dbl> 15.714, 234.178, 0.128, 2.036, 0.388, 1.490, 0.200, 0.081...
## $ type      <chr> "POINT", "POINT", "POINT", "POINT", "POINT", "POINT", "PO...
## $ year      <int> 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 199...

Dimension de notre dataframe NEI

cat("Notre data NEI a",nrow(NEI_data),"lignes et",ncol(NEI_data),"colonnes")
## Notre data NEI a 6497651 lignes et 6 colonnes

convertissons la colonne year en date

# Conversion
NEI_data$year <- as.character.Date(NEI_data$year)

# Aperçu des changements
glimpse(NEI_data)
## Rows: 6,497,651
## Columns: 6
## $ fips      <chr> "09001", "09001", "09001", "09001", "09001", "09001", "09...
## $ SCC       <chr> "10100401", "10100404", "10100501", "10200401", "10200504...
## $ Pollutant <chr> "PM25-PRI", "PM25-PRI", "PM25-PRI", "PM25-PRI", "PM25-PRI...
## $ Emissions <dbl> 15.714, 234.178, 0.128, 2.036, 0.388, 1.490, 0.200, 0.081...
## $ type      <chr> "POINT", "POINT", "POINT", "POINT", "POINT", "POINT", "PO...
## $ year      <chr> "1999", "1999", "1999", "1999", "1999", "1999", "1999", "...

Les années que nous traitons de nos données NEI

unique(NEI_data$year)
## [1] "1999" "2002" "2005" "2008"

Les Type de sources de nos données NEI

unique(NEI_data$type)
## [1] "POINT"    "NONPOINT" "ON-ROAD"  "NON-ROAD"

Compréhension du fichier NEI_data

Aperçu de la variable Results

glimpse(SCC_data)
## Rows: 11,717
## Columns: 15
## $ SCC                 <fct> 10100101, 10100102, 10100201, 10100202, 1010020...
## $ Data.Category       <fct> Point, Point, Point, Point, Point, Point, Point...
## $ Short.Name          <fct> "Ext Comb /Electric Gen /Anthracite Coal /Pulve...
## $ EI.Sector           <fct> Fuel Comb - Electric Generation - Coal, Fuel Co...
## $ Option.Group        <fct> , , , , , , , , , , , , , , , , , , , , , , , , , 
## $ Option.Set          <fct> , , , , , , , , , , , , , , , , , , , , , , , , , 
## $ SCC.Level.One       <fct> External Combustion Boilers, External Combustio...
## $ SCC.Level.Two       <fct> Electric Generation, Electric Generation, Elect...
## $ SCC.Level.Three     <fct> Anthracite Coal, Anthracite Coal, Bituminous/Su...
## $ SCC.Level.Four      <fct> "Pulverized Coal", "Traveling Grate (Overfeed) ...
## $ Map.To              <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
## $ Last.Inventory.Year <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
## $ Created_Date        <fct> , , , , , , , , , , , , , , , , , , , 6/6/2003 ...
## $ Revised_Date        <fct> , , , , , , , , , , , , , , , , , , , , , , , , , 
## $ Usage.Notes         <fct> , , , , , , , , , , , , , , , , , , , , , , , , ,

Dimension de notre dataframe SCC

cat("Notre data NEI a",nrow(SCC_data),"lignes et",ncol(SCC_data),"colonnes")
## Notre data NEI a 11717 lignes et 15 colonnes

Les Type de sources de nos données SCC

unique(SCC_data$Data.Category)
## [1] Point    Nonpoint Onroad   Nonroad  Biogenic Event   
## Levels: Biogenic Event Nonpoint Nonroad Onroad Point

On peut voir que on les mêmes données que celle des types de NEI_data.

Requêtes:

Les émissions totales de PM2,5 ont-elles diminué aux USA de 1999 à 2008?

# Requête 1
req_1 <- NEI_data %>% group_by(year) %>% summarise(total_emission = round(sum(Emissions),0))
## `summarise()` ungrouping output (override with `.groups` argument)
req_1
## # A tibble: 4 x 2
##   year  total_emission
##   <chr>          <dbl>
## 1 1999         7332967
## 2 2002         5635780
## 3 2005         5454703
## 4 2008         3464206
# Graphe
emissions_par_an <- req_1 %>% ggplot(aes(year, total_emission, fill = total_emission)) +
                    geom_bar(stat = "identity", color = "white") +
                    geom_text(aes(label = total_emission, hjust = 0.5,vjust = -0.5), size = 3,color = 'black') +
                    xlab("Année") +
                    ylab("Total Émission") +
                    labs("Émission") +
                    scale_fill_gradient(low = "yellow", high = "red") +
                    ggtitle("Émission de particules fines PM2,5 par année au USA") +
                    theme(plot.title = element_text(color = "blue", hjust = 0.5,  face = "bold", size = 12),
                          axis.title.x = element_text(color = "red", face = "bold"),
                          axis.title.y = element_text(color = "red", face = "bold"),
                          axis.line = element_line(colour = "darkblue", size = 3, linetype = "solid"),
                          axis.text = element_text(color = "blue"),
                          legend.background = element_rect(fill = "lightblue", 
                          size=0.5, linetype="solid", colour = "white"))
  

emissions_par_an %>% ggplotly()

Conclusion : D’après nos précédents résultats, on peut bien se rendre compte que les émissions de particules fines PM2,5 ont bel et bien diminué de 1999 à 2008!

Les émissions totales de PM2,5 ont-elles diminué dans la ville de Baltimore, Maryland (fips == “24510”) de 1999 à 2008?

# Requête 2
req_2 <- NEI_data %>% filter(fips == "24510") %>% group_by(year) %>% summarise(total_emission = round(sum(Emissions),1))
## `summarise()` ungrouping output (override with `.groups` argument)
req_2
## # A tibble: 4 x 2
##   year  total_emission
##   <chr>          <dbl>
## 1 1999           3274.
## 2 2002           2454.
## 3 2005           3091.
## 4 2008           1862.
# Graphe
pm_par_an_balt <- req_2 %>% ggplot(aes(year, total_emission, fill = total_emission)) +
                  geom_bar(stat = "identity", color = "white") +
                  geom_text(aes(label = total_emission), size = 3, color = 'blue') +  
                  xlab("Année") +
                  ylab("Total Émission") +
                  scale_fill_gradient(low = "#00AFBB", high = "red") +
                  ggtitle("Émission de particules fines PM2,5 par année à Baltimore au Maryland") +
                  theme(plot.title = element_text(color = "#FC4E07", hjust = 0.5, face = "bold", size = 10),
                        axis.title.x = element_text(color = "red", face = "bold"),
                        axis.title.y = element_text(color = "red", face = "bold"),
                        axis.line = element_line(colour = "#FC4E07", size = 3, linetype = "solid"),
                        axis.text = element_text(color = "blue"),
                        legend.background = element_rect(fill = "lightblue", 
                        size = 0.5, linetype = "solid", colour = "white"))
        

pm_par_an_balt %>% ggplotly()

Conclusion : D’après nos précédents résultats, on peut bien se rendre compte que les émissions de particules fines PM2,5 n’ont pas diminué de 1999 à 2008, il y’a des fluctuations de dimunition parfois et d’augmentation.

Parmi les quatre types de sources indiqués par la variable de type (ponctuelle, non ponctuelle, routière, non routière), laquelle de ces quatre sources a connu une diminution des émissions de 1999 à 2008 pour la ville de Baltimore? Lesquels ont connu une augmentation des émissions de 1999 à 2008?

# Requête 3
req_3 <- NEI_data %>% filter(fips == "24510") %>% group_by(year,type) %>% summarise(total_emission = round(sum(Emissions),1))
## `summarise()` regrouping output by 'year' (override with `.groups` argument)
req_3
## # A tibble: 16 x 3
## # Groups:   year [4]
##    year  type     total_emission
##    <chr> <chr>             <dbl>
##  1 1999  NON-ROAD          523. 
##  2 1999  NONPOINT         2108. 
##  3 1999  ON-ROAD           347. 
##  4 1999  POINT             297. 
##  5 2002  NON-ROAD          241. 
##  6 2002  NONPOINT         1510. 
##  7 2002  ON-ROAD           134. 
##  8 2002  POINT             569. 
##  9 2005  NON-ROAD          249. 
## 10 2005  NONPOINT         1510. 
## 11 2005  ON-ROAD           130. 
## 12 2005  POINT            1202. 
## 13 2008  NON-ROAD           55.8
## 14 2008  NONPOINT         1373. 
## 15 2008  ON-ROAD            88.3
## 16 2008  POINT             345
# Graphe
pm_par_an_route_balt <- req_3 %>% ggplot(aes(year, total_emission, group = type, color = type)) +
                        geom_point() +  
                        geom_line(linetype = "solid", alpha = 1) +
                        geom_text(aes(label = total_emission), size = 3, color = 'red', face = "bold") +
                        xlab("Année") +
                        ylab("Total Émission") +
                        scale_fill_gradient(low = "darkblue", high = "blue") +
                        ggtitle("Émission de particules fines PM2,5 par source à Baltimore") +
                        theme(plot.title = element_text(color = "blue", hjust = 0.5, face = "bold", size = 10),
                              axis.title.x = element_text(color = "red", face = "bold"),
                              axis.title.y = element_text(color = "red", face = "bold"),
                              axis.line = element_line(colour = "darkblue", size = 3, linetype = "solid"),
                              axis.text = element_text(color = "blue"),
                              legend.background = element_rect(fill = "lightblue", 
                              size = 0.5, linetype = "solid", colour = "white"))
## Warning: Ignoring unknown parameters: face
pm_par_an_route_balt %>% ggplotly()
## Warning: `group_by_()` is deprecated as of dplyr 0.7.0.
## Please use `group_by()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.

Conclusion : D’après nos précédents résultats, on peut bien voir que les routes ayant subit des diminutions des émissions de 1999 à 2008 sont: NonPoint, On-Road, Non-Road.

Partout aux États-Unis, comment les émissions provenant de sources liées à la combustion du charbon ont-elles changé entre 1999 et 2008?

# Lignes liée à la combustion du charbon
# >str <- c("Regular", "expression", "examples of R language")
# >x <- grepl("x*ress",str)
charbon <- grepl("coal", SCC_data$Short.Name, ignore.case = TRUE) | grepl("coal", SCC_data$EI.Sector,ignore.case = TRUE)

# Sélection des lignes liée à la combustion du charbon dans un nouveau dataframe
charbon <- SCC_data[charbon, ]
charbon <- NEI_data[NEI_data$SCC %in% charbon$SCC,]

# Requête 4
req_4 <- charbon %>% group_by(year) %>% summarise(total_emission = round(sum(Emissions),1))
## `summarise()` ungrouping output (override with `.groups` argument)
req_4
## # A tibble: 4 x 2
##   year  total_emission
##   <chr>          <dbl>
## 1 1999         604691.
## 2 2002         567130.
## 3 2005         571768.
## 4 2008         358219.
# Graphe
pm_charbon_USA <- req_4 %>% ggplot(aes(year, total_emission, fill = total_emission)) +
                  geom_bar(stat = "identity", color = "white") +
                  geom_text(aes(label = total_emission), size = 3, color = 'black') +  
                  xlab("Année") +
                  ylab("Total Émission") +
                  scale_fill_gradient(low = "#660000", high = "brown") +
                  ggtitle("Émission de particules fines provenant des sources liées au charbons au USA") +
                  theme(plot.title = element_text(color = "brown", hjust = 0.5, face = "bold", size = 10),
                        axis.title.x = element_text(color = "red", face = "bold"),
                        axis.title.y = element_text(color = "red", face = "bold"),
                        axis.line = element_line(colour = "black", size = 3, linetype = "solid"),
                        axis.text = element_text(color = "red"),
                        legend.background = element_rect(fill = "lightblue", 
                        size = 0.5, linetype = "solid", colour = "white"))
        

pm_charbon_USA %>% ggplotly()

Comment les émissions des véhicules à moteur ont-elles changé de 1999 à 2008 dans la ville de Baltimore?

req_5 <- NEI_data %>% filter(fips == "24510" & type == "ON-ROAD") %>% group_by(year) %>% summarise(total_emission = round(sum(Emissions),1))
## `summarise()` ungrouping output (override with `.groups` argument)
req_5
## # A tibble: 4 x 2
##   year  total_emission
##   <chr>          <dbl>
## 1 1999           347. 
## 2 2002           134. 
## 3 2005           130. 
## 4 2008            88.3
# Graphe
pm_moteur_baltimore <- req_5 %>% ggplot(aes(year, total_emission, fill = total_emission)) +
                       geom_bar(stat = "identity", color = "white") +
                       geom_text(aes(label = total_emission), size = 3, color = 'black') +  
                       xlab("Année") +
                       ylab("Total Émission") +
                       scale_fill_gradient(low = "#FFFF00", high = "#ff0000") +
                       ggtitle("Émission des particules des véhicules à moteur dans la ville de Baltimore") +
                       theme(plot.title = element_text(color = "orange", hjust = 0.5, face = "bold", size = 10),
                             axis.title.x = element_text(color = "red", face = "bold"),
                             axis.title.y = element_text(color = "red", face = "bold"),
                             axis.line = element_line(colour = "black", size = 3, linetype = "solid"),
                             axis.text = element_text(color = "orange"),
                             legend.background = element_rect(fill = "lightblue", 
                             size = 0.5, linetype = "solid", colour = "white"))
        

pm_moteur_baltimore %>% ggplotly()

Conclusion : D’après nos précédents résultats, on constater que les Émissions de particules PM2,5 des véhicules à moteur dans la ville de Baltimore ont diminué de manière abyssal de 1999 à 2008.

Comparez les émissions provenant de sources de véhicules à moteur dans la ville de Baltimore avec les émissions de sources de véhicules à moteur dans le comté de Los Angeles, Californie (fips == 06037). Quelle ville a connu des changements plus importants au fil du temps dans les émissions des véhicules à moteur?

req_6 <- NEI_data %>% filter((fips == "24510" | fips == "06037") & type == "ON-ROAD") %>% group_by(year,fips) %>% summarise(total_emission = round(sum(Emissions),0)) %>% mutate(fips = replace(fips, fips == "24510","Baltimore") , fips = replace(fips, fips == "06037","Californie") )
## `summarise()` regrouping output by 'year' (override with `.groups` argument)
req_6
## # A tibble: 8 x 3
## # Groups:   year [4]
##   year  fips       total_emission
##   <chr> <chr>               <dbl>
## 1 1999  Californie           3931
## 2 1999  Baltimore             347
## 3 2002  Californie           4274
## 4 2002  Baltimore             134
## 5 2005  Californie           4601
## 6 2005  Baltimore             130
## 7 2008  Californie           4101
## 8 2008  Baltimore              88
# Graphe
pm_baltimore_vs_Cal <- req_6 %>% ggplot(aes(year, total_emission)) +
                       facet_grid(~fips) +
                       geom_bar(stat = "identity",aes(fill = year)) +
                       geom_text(aes(label = total_emission), size = 3, color = 'black') +  
                       xlab("Année") +
                       ylab("Total Émission") +
                       ggtitle("Émission des particules des véhicules à moteur Baltimore vs Californie") +
                       theme(plot.title = element_text(color = "orange", hjust = 0.5, face = "bold", size = 10),
                             axis.title.x = element_text(color = "red", face = "bold"),
                             axis.title.y = element_text(color = "red", face = "bold"),
                             axis.line = element_line(colour = "black", size = 2, linetype = "solid"),
                             axis.text = element_text(color = "orange"),
                             legend.background = element_rect(fill = "lightblue", 
                             size = 0.5, linetype = "solid", colour = "white"))
        

pm_baltimore_vs_Cal %>% ggplotly()

Conclusion : D’après nos précédents résultats, on constater que les Émissions de particules PM2,5 des véhicules à moteur dans la ville de Baltimore ont diminué de manière abyssal de 1999 à 2008, ce qui est complètement différent en Californie où on peut voir une augmentation d’émission de particules 1999 à 2005 puis une dimunition de 2005 à 2008. On peut en déduire qu’il est préférable de vivre à Baltimore que en Californie si on veut pas être exposé aux particules fines.