Emisión de CO2

Una primera revisión de los datos

#### Levanto los data sets

co2 <- readr::read_csv("https://raw.githubusercontent.com/cienciadedatos/datos-de-miercoles/master/datos/2019/2019-08-21/co2.csv")


co2_ingreso <- readr::read_csv("https://raw.githubusercontent.com/cienciadedatos/datos-de-miercoles/master/datos/2019/2019-08-21/co2_ingreso.csv")


# Les doy una mirada: 
# head(co2)
# 
# head(co2_ingreso)


#### LIMPIEZA Y CONSISTENCIA

# Primero filtro el data set, para eliminar los registros sin el dato de emision de co_2

co2_Subset <- subset(co2,is.na(co2$emision_co2)==FALSE)

# Luego exploro un poco los datos

¿Qué valores puede tomar la variable “emision_co2”?

# Que valores puede tomar la variable "emision_co2"?

summary(co2_Subset$emision_co2)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##  -0.0201   0.4508   1.7700   4.3587   5.9793 100.6977

Hay al menos un valor negativo! ¿A qué país corresponde?

# Hay valores negativos! Es eso coherente? Que paises son?

co2_Subset[co2_Subset$emision_co2<=0,]
## # A tibble: 1 x 4
##   pais_region codigo_iso  anio emision_co2
##   <chr>       <chr>      <dbl>       <dbl>
## 1 Senegal     SEN         1968     -0.0201
Se elimina ese registro del análisis
# Es solo un pais, Senegal en 1968.Podria deberse a un error en los datos
# Se elimina el registro para continuar con el analisis 

co2_Subset <- subset(co2_Subset,co2_Subset$emision_co2>0)

Siguiente control: Cada país aparece una única vez por año?

Hay 55 combinaciones país + año que aparecen dos veces. Siempre corresponde a Nigeria, pero tiene asociado distinto Codigo ISO, así que se deja el dato tal cual como está.
# Chequeo que cada pais aparezca una sola vez por anio 

control <- as.data.frame(table(co2_Subset$pais_region,co2_Subset$anio))
table(control$Freq)
## 
##     0     1     2 
##  1577 11183    55
# Hay 55 paises que aparecen 2 veces el mismo anio! 
# Vamos a chequear cuales son: 

head(control[control$Freq==2,])
##         Var1 Var2 Freq
## 161  Nigeria 1960    2
## 394  Nigeria 1961    2
## 627  Nigeria 1962    2
## 860  Nigeria 1963    2
## 1093 Nigeria 1964    2
## 1326 Nigeria 1965    2
control <- control[control$Freq==2,]

# Siempre es Nigeria, verifiquemos si mantiene siempre el mismo valor de emision

# Para eso armo un nuevo data set filtrado, teniendo en cuenta la combinacion
# de paises y anios que aparecen dos veces en el data set

control_2 <- subset(co2_Subset,
                    paste(co2_Subset$pais_region,co2_Subset$anio) %in% 
                    paste(control$Var1,control$Var2))

control_2 <- control_2[order(control_2$anio),]

head(control_2)
## # A tibble: 6 x 4
##   pais_region codigo_iso  anio emision_co2
##   <chr>       <chr>      <dbl>       <dbl>
## 1 Nigeria     NER         1960     0.00866
## 2 Nigeria     NGA         1960     0.0755 
## 3 Nigeria     NER         1961     0.0158 
## 4 Nigeria     NGA         1961     0.0893 
## 5 Nigeria     NER         1962     0.0184 
## 6 Nigeria     NGA         1962     0.0889
# Vemos que no tienen el mismo dato de emision de co 2, pero tienen distinto codigo ISO
# Por lo tanto, dejamos el dato tal cual esta. 

Análisis de variabilidad: ¿Cómo se mueve año a año la emisión de CO2 en cada país?

# Calculo la variabilidad a?o a a?o de cada pais en la emision de CO2

# Primero me traigo el dato de la emision al anio siguiente

co2_Subset$emision_co2_ANIO_SIG <- co2_Subset$emision_co2[match(paste(co2_Subset$pais_region,(co2_Subset$anio+1)),
                                                                paste(co2_Subset$pais_region,co2_Subset$anio))]

# Elimino los registros correspondientes al ultimo anio (no se puede calcular variabilidad)

co2_Subset <- subset(co2_Subset,
                     is.na(co2_Subset$emision_co2_ANIO_SIG)==FALSE)

# Calculo la variabilidad

co2_Subset$Variabilidad <- co2_Subset$emision_co2_ANIO_SIG/co2_Subset$emision_co2 -1

¿Cómo se distribuye la variabilidad?

library(formattable)

# Como se distribuye la variabilidad? 

summary(co2_Subset$Variabilidad)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.93628 -0.02945  0.01533  0.04503  0.07108 32.65846
# Analisis por decada 

co2_Subset$Decada <- ifelse(co2_Subset$anio %in% 2000:2009,2000,
                            ifelse(co2_Subset$anio %in% 2010:2019,2010,
                                   round(co2_Subset$anio,-1)))

co2_Subset$Decada <- as.factor(co2_Subset$Decada)


metricas <- aggregate(co2_Subset$Variabilidad,
                      by=list(co2_Subset$Decada),
                      function(x) c(Min=min(x,na.rm=TRUE),
                                    Prom=mean(x,na.rm=TRUE),
                                    Med=median(x,na.rm=TRUE),
                                    Max=max(x,na.rm=TRUE),
                                    Coef_Variacion=sd(x,na.rm=TRUE)/mean(x,na.rm=TRUE)))

metricas <- data.frame(Decada=metricas$Group.1,
                       metricas$x)

metricas[,2:ncol(metricas)] <- round(metricas[,2:ncol(metricas)],2)


formattable(metricas,
            list(
              Min = color_tile("green3","Khaki"),
              Prom = color_tile("green3","Khaki"),
              Med = color_tile("green3","Khaki"),
              Max = color_tile("green3","Khaki"),
              Coef_Variacion = color_tile("lightpink", "lightcoral"))) 
Decada Min Prom Med Max Coef_Variacion
1960 -0.89 0.11 0.04 28.35 8.41
1970 -0.94 0.12 0.04 32.66 8.65
1980 -0.92 0.02 0.01 8.86 12.75
1990 -0.84 0.03 0.01 24.27 18.12
2000 -0.94 0.02 0.01 5.54 9.03
2010 -0.87 0.01 0.00 1.04 11.17

¿Aumenta, se mantuvo, o se redujo la emisión de CO2 en el tiempo?

library(ggplot2)
library(plotly)

co2_Subset$Clasifica_Var <- ifelse(co2_Subset$Variabilidad<(-0.01),"Reduce",
                                   ifelse(co2_Subset$Variabilidad>0.01,"Aumenta",
                                          "Mantiene"))

RESUMEN <- as.data.frame(table(co2_Subset$Clasifica_Var,
                               co2_Subset$anio))

CANT_POR_ANIO <- as.data.frame(table(co2_Subset$anio))

RESUMEN$Clasifica_Variabilidad <- as.factor(RESUMEN$Var1)
RESUMEN$anio <-RESUMEN$Var2
RESUMEN$Pct_Paises <-RESUMEN$Freq/CANT_POR_ANIO$Freq[match(RESUMEN$anio,
                                                           CANT_POR_ANIO$Var1)]

p <- ggplot(RESUMEN,
            aes(x = anio,
                y = Pct_Paises,
                fill=Clasifica_Variabilidad)) + 
  theme_bw() +
  geom_bar(stat="identity") 

p <- ggplotly(p + 
  theme(legend.position='top',
          axis.text=element_text(size=7)) +
  scale_fill_brewer(palette="Set1"))

p

¿Cómo se distribuye la emisión de CO2 entre países?

CO2_Ordenado <- subset(co2,co2$anio==max(co2$anio))
CO2_Ordenado <- subset(CO2_Ordenado,is.na(CO2_Ordenado$emision_co2)==FALSE)
CO2_Ordenado <- CO2_Ordenado[order(CO2_Ordenado$emision_co2,decreasing = TRUE),]

CO2_Ordenado$Pct_emisionco2 <- CO2_Ordenado$emision_co2/sum(CO2_Ordenado$emision_co2)
CO2_Ordenado$Pct_Ac_emisionco2 <-cumsum(CO2_Ordenado$Pct_emisionco2)


library(treemap)
treemap(CO2_Ordenado[CO2_Ordenado$Pct_Ac_emisionco2<=0.5,], 
        index=c("pais_region"),  
        vSize = "Pct_emisionco2", 
        type="index", 
        title="Emisi昼㸳n de CO2 en 2013: Primer 50%",
        fontsize.title = 14,
        fontsize.labels = 7
)

treemap(CO2_Ordenado[CO2_Ordenado$Pct_Ac_emisionco2>0.5,], 
        index=c("pais_region"),  
        vSize = "Pct_emisionco2", 
        type="index", 
        title="Emisi昼㸳n de CO2 en 2013: Resto",
        fontsize.title = 14,
        fontsize.labels = 7
)