Entregas Visualización de Datos

Author

Valentina Bustamante

Primera entrega

Instrucciones

Crear un nuevo dataframe que sea un subconjunto del dataframe original de dfFires. El subconjunto debe contener todos los incendios del Estado de Idaho y las columnas deben ser limitadas para que sólo estén presentes las columnas YEAR_, CAUSE y TOTALACRES. Cambie el nombre de las columnas. Agrupe los datos por CAUSE y YEAR_ y luego resuma por el total de acres quemados. Trazar los resultados.

Desarrollo

Creación de dfFires

dfFires <- read_csv("StudyArea.csv")

kable(head(dfFires), 
      caption = "Acres quemados por causa y año",
      format = "html", digits = 2, align = 'c') 
Acres quemados por causa y año
FID ORGANIZATI UNIT SUBUNIT SUBUNIT2 FIRENAME CAUSE YEAR_ STARTDATED CONTRDATED OUTDATED STATE STATE_FIPS TOTALACRES
0 FWS 81682 USCADBR San Diego Bay National Wildlife Refuge PUMP HOUSE Human 2001 1/1/01 0:00 1/1/01 0:00 NA California 6 0.1
1 FWS 81682 USCADBR San Diego Bay National Wildlife Refuge I5 Human 2002 5/3/02 0:00 5/3/02 0:00 NA California 6 3.0
2 FWS 81682 USCADBR San Diego Bay National Wildlife Refuge SOUTHBAY Human 2002 6/1/02 0:00 6/1/02 0:00 NA California 6 0.5
3 FWS 81682 USCADBR San Diego Bay National Wildlife Refuge MARINA Human 2001 7/12/01 0:00 7/12/01 0:00 NA California 6 0.1
4 FWS 81682 USCADBR San Diego Bay National Wildlife Refuge HILL Human 1994 9/13/94 0:00 9/13/94 0:00 NA California 6 1.0
5 FWS 81682 USCADBR San Diego Bay National Wildlife Refuge IRRIGATION Human 1994 4/22/94 0:00 4/22/94 0:00 NA California 6 0.1

Manipulación de columnas

Primero se realiza un filtrado para el estado de Idaho, luego nos quedamos solo con las columnas relacionas con el año, causa y total de acres incendiadas, para posteriormente realizar un cambio en el nombre de las columnas.

dffilter <- filter(dfFires, STATE == "Idaho")
dffilter <- select(dffilter, YEAR_, CAUSE, TOTALACRES)
dffilter <- rename(dffilter, AÑO = YEAR_, CAUSA = CAUSE, ACRESQUEMADOS = TOTALACRES)
kable(head(dffilter), format = "html", digits = 2, align = 'c') 
AÑO CAUSA ACRESQUEMADOS
1987 Human 5
1991 Natural 150
1991 Human 800
1990 Natural 2
1985 Human 38
1988 Human 2

Agrupe de datos

Luego, se realiza un agrupe en los datos con base a su año y causa de incendio. Esto lo que realiza es por cada año y causa calcular el total de acres quemadas. Por ejemplo, en 1980, 71974.7 acres fueron incendiadas por mano del hombre y 42938.2 por causas naturales.

dff <- summarize(group_by(dffilter, AÑO, CAUSA), TOTALACRESQUEMADOS = sum(ACRESQUEMADOS))
kable(head(dff))
AÑO CAUSA TOTALACRESQUEMADOS
1980 Human 71974.7
1980 Natural 42938.2
1980 NA 50.0
1981 Human 219362.4
1981 Natural 276593.3
1981 NA 43.0

Gráficas

ggplot(dff, aes(x = AÑO, y = TOTALACRESQUEMADOS, color = CAUSA)) +
  geom_line() +
  labs(
    title = "Total de acres quemados por año y causa en Idaho",
    x = "Año",
    y = "Total de Acres Quemados"
  )+ theme_minimal()

Es indudable el aumento que se ha presenciado en la cantidad de acres quemadas en Idaho con el paso del tiempo, siendo la causa predominante de manera natural. También llaman mucho la atención los picos visibles en el comportamiento de la variable TOTALACRESQUEMADOS. De igual manera se realizó una reclasificación, esta vez no por años, sino por décadas, donde se puede observar una disminución en la cantidad de acres quemadas por causa humana, donde además causas como indeterminadas o NA no representan un porcentaje grande de la muestra.

dffilter$DECADA <- cut(dffilter$AÑO,
                       breaks = seq(1980, 2020, by = 10),
                       labels = c("1980 - 1989", "1990 - 1999", "2000 - 2009", "2010 - 2016"),
                       right = FALSE)

dff_d <- summarize(group_by(dffilter, DECADA, CAUSA), TOTALACRESQUEMADOS = sum(ACRESQUEMADOS))

kable(head(dff_d))
DECADA CAUSA TOTALACRESQUEMADOS
1980 - 1989 Human 1395203.1
1980 - 1989 Natural 2420132.0
1980 - 1989 NA 1525.0
1990 - 1999 Human 951469.1
1990 - 1999 Natural 2518707.9
1990 - 1999 NA 2008.3
ggplot(dff_d, aes(x = DECADA, y = TOTALACRESQUEMADOS, fill = CAUSA)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_text(aes(label = round(TOTALACRESQUEMADOS, 1)),
            position = position_dodge(width = 0.9),
            vjust = -0.8,
            size = 2) +
  labs(
    title = "Total de acres quemados por causa y década en Idaho",
    x = "Década",
    y = "Acres quemados"
  ) +
  theme_minimal() +
  theme(legend.title = element_blank()) +
  scale_fill_brewer(palette = "Set2") 

Segunda entrega: 9.1.1 y 9.2

Instrucciones

Existen varias señales correlacionadas con el aumento de las tasas de suicidios mundial, este conjunto de datos fue creado para encontrar este tipo de señales y contiene 27,820 observaciones que aportan información tanto socioeconómica como demográfica de cada país.

Las variables se codificaron como:

  • suicides/100k: suicidios por cada 100 mil habitantes (tasas de suicidio).

  • country: país.

  • year: año.

  • sex: género (male, female).

  • age: edad (grupo de edad).

  • suicides_no: número de suicidios.

  • population: población.

  • country-year: clave compuesta país-año.

  • HDI: índice de desarrollo humano (IDH) por año.

  • gdp_for_year ($): producto interno bruto (PIB) por año.

  • gdp_per_capita: producto interno bruto per capita.

  • generation: generación.

  1. Importe la base de datos.

  2. Analice las características de la base de datos. Estas pueden incluir: número de filas, número de columnas, nombres de las variables, tipos de variables, entre otras.

  3. Analice cada una de las variables según su tipo: numéricas y categóricas.

  4. Filtre la base de datos para entender mejor su estructura.

  5. Explore la ayuda de la función table del paquete base y utilícela para explorar la base de datos.

  6. Identifique los valores NA (Not Available) en la base de datos.

  7. Analice la presencia de posibles valores atípicos.

  8. Decida qué hacer con los valores NA.

Considere la base de datos master y realice lo siguiente (utilice los operadores pipe de continuidad y compuesto):

  1. Edite y explore reglas para verificar que la base de datos no contenga posibles registros erróneos.

  2. Filtre los datos de Colombia y los de EEUU, generando dos bases de datos, llamadas master_col y master_eu.

  3. Realice un análisis de la evolución de los suicidios por cada 100.000 habitantes, del PIB per cápita y del IDH, a lo largo de los años en ambos países.

  4. Realice un análisis de la evolución de los suicidios por cada 100.000 habitantes, del PIB per cápita y del IDH, a lo largo de los años en ambos países por género.

  5. Realice un análisis de la evolución de los suicidios por cada 100.000 habitantes, del PIB per cápita y del IDH, a lo largo de los años en ambos países por grupo de edad.

Desarrollo

Primera parte: 9.1.1

Primero se importa la base de datos.

master <- read_csv("master.csv")
kable(head(master), 
      caption = "",
      format = "html", digits = , align = 'c') 
country year sex age suicides_no population suicides/100k pop country-year HDI for year gdp_for_year ($) gdp_per_capita ($) generation
Albania 1987 male 15-24 years 21 312900 6.71 Albania1987 NA 2156624900 796 Generation X
Albania 1987 male 35-54 years 16 308000 5.19 Albania1987 NA 2156624900 796 Silent
Albania 1987 female 15-24 years 14 289700 4.83 Albania1987 NA 2156624900 796 Generation X
Albania 1987 male 75+ years 1 21800 4.59 Albania1987 NA 2156624900 796 G.I. Generation
Albania 1987 male 25-34 years 9 274300 3.28 Albania1987 NA 2156624900 796 Boomers
Albania 1987 female 75+ years 1 35600 2.81 Albania1987 NA 2156624900 796 G.I. Generation
summary(master, na.rm = FALSE)
   country               year          sex                age           
 Length:27820       Min.   :1985   Length:27820       Length:27820      
 Class :character   1st Qu.:1995   Class :character   Class :character  
 Mode  :character   Median :2002   Mode  :character   Mode  :character  
                    Mean   :2001                                        
                    3rd Qu.:2008                                        
                    Max.   :2016                                        
                                                                        
  suicides_no        population       suicides/100k pop country-year      
 Min.   :    0.0   Min.   :     278   Min.   :  0.00    Length:27820      
 1st Qu.:    3.0   1st Qu.:   97498   1st Qu.:  0.92    Class :character  
 Median :   25.0   Median :  430150   Median :  5.99    Mode  :character  
 Mean   :  242.6   Mean   : 1844794   Mean   : 12.82                      
 3rd Qu.:  131.0   3rd Qu.: 1486143   3rd Qu.: 16.62                      
 Max.   :22338.0   Max.   :43805214   Max.   :224.97                      
                                                                          
  HDI for year   gdp_for_year ($)    gdp_per_capita ($)  generation       
 Min.   :0.483   Min.   :4.692e+07   Min.   :   251     Length:27820      
 1st Qu.:0.713   1st Qu.:8.985e+09   1st Qu.:  3447     Class :character  
 Median :0.779   Median :4.811e+10   Median :  9372     Mode  :character  
 Mean   :0.777   Mean   :4.456e+11   Mean   : 16866                       
 3rd Qu.:0.855   3rd Qu.:2.602e+11   3rd Qu.: 24874                       
 Max.   :0.944   Max.   :1.812e+13   Max.   :126352                       
 NA's   :19456                                                            

master es una base de datos que cuenta con 12 variables y 27820 registros. De las 12 variables encontradas, 5 son categóricas y corresponden al país, sexo, rango de edad, país - año y generación. De las 7 variables numéricas restantes, se puede encontrar el año, el número de suicidios, población, suicidios por cada 100000 habitantes, índice de desarrollo humano, PIB por año y PIB per capita.

table(master$country) %>% 
        as.data.frame() %>% 
        arrange(desc(Freq))
                            Var1 Freq
1                        Austria  382
2                        Iceland  382
3                      Mauritius  382
4                    Netherlands  382
5                      Argentina  372
6                        Belgium  372
7                         Brazil  372
8                          Chile  372
9                       Colombia  372
10                       Ecuador  372
11                        Greece  372
12                        Israel  372
13                         Italy  372
14                         Japan  372
15                    Luxembourg  372
16                         Malta  372
17                        Mexico  372
18                   Puerto Rico  372
19             Republic of Korea  372
20                     Singapore  372
21                         Spain  372
22                United Kingdom  372
23                 United States  372
24                     Australia  360
25                      Bulgaria  360
26                    Costa Rica  360
27                        France  360
28                     Guatemala  360
29                       Ireland  360
30                        Norway  360
31                        Sweden  358
32                        Canada  348
33                       Finland  348
34                   New Zealand  348
35                  Turkmenistan  348
36                        Belize  336
37                   Saint Lucia  336
38                      Suriname  336
39                       Ukraine  336
40                       Uruguay  336
41                       Romania  334
42                      Thailand  334
43           Antigua and Barbuda  324
44                      Paraguay  324
45                      Portugal  324
46            Russian Federation  324
47           Trinidad and Tobago  324
48                Czech Republic  322
49                       Germany  312
50                    Kazakhstan  312
51                    Kyrgyzstan  312
52                       Grenada  310
53                       Hungary  310
54                      Barbados  300
55                        Guyana  300
56                        Kuwait  300
57                        Panama  300
58  Saint Vincent and Grenadines  300
59                       Armenia  298
60                          Cuba  288
61                   El Salvador  288
62                        Poland  288
63                       Bahamas  276
64                       Albania  264
65                       Denmark  264
66                       Georgia  264
67                      Slovakia  264
68                    Uzbekistan  264
69                       Croatia  262
70                     Lithuania  262
71                       Bahrain  252
72                       Belarus  252
73                       Estonia  252
74                        Latvia  252
75                      Slovenia  252
76                   Switzerland  252
77                  South Africa  240
78                        Serbia  216
79                    Seychelles  216
80                       Jamaica  204
81                    Azerbaijan  192
82                   Philippines  180
83                        Cyprus  178
84                         Qatar  178
85                         Aruba  168
86                          Fiji  132
87                      Kiribati  132
88                     Sri Lanka  132
89                      Maldives  120
90                    Montenegro  120
91                        Turkey   84
92                     Nicaragua   72
93          United Arab Emirates   72
94                          Oman   36
95         Saint Kitts and Nevis   36
96                    San Marino   36
97        Bosnia and Herzegovina   24
98                    Cabo Verde   12
99                      Dominica   12
100                        Macau   12
101                     Mongolia   10

En total se tiene información de 101 países, siendo Austria, Islandia, Mauricio y Países Bajos quienes cuentan con un mayor número de registros (382). En Mongolia, por ejemplo, solo se cuentan 10 registros con información relacionada al 2016. En Cabo Verde (12 registros) asociados al 2011 y en Macau (12 registros) de 1994.

ggplot(master, aes(x=age, y=master$`suicides/100k pop`, fill=sex)) + 
    geom_boxplot() + ylab('Suicidos por cada 100000 habitantes') + xlab('Edad') +
  scale_fill_brewer(palette = "Set2") 

De manera general, se observan tasas de suicidio menores en mujeres. Además, de un mayor rango de las tasas de suicidio en personas mayores de 75 años y un menor rango entre los 5 y 14 años.

res1 <- summarize(group_by(master, sex, age), tasasui = mean(`suicides/100k pop`))
res1
# A tibble: 12 × 3
# Groups:   sex [2]
   sex    age         tasasui
   <chr>  <chr>         <dbl>
 1 female 15-24 years   4.33 
 2 female 25-34 years   4.57 
 3 female 35-54 years   5.92 
 4 female 5-14 years    0.462
 5 female 55-74 years   7.12 
 6 female 75+ years     9.92 
 7 male   15-24 years  13.6  
 8 male   25-34 years  19.8  
 9 male   35-54 years  24.0  
10 male   5-14 years    0.778
11 male   55-74 years  25.2  
12 male   75+ years    38.0  
ggplot(res1, aes(x=age, y=tasasui, fill=sex))  + geom_bar(stat = "identity", position = "dodge") + ylab('Promedio de la tasa de suicidios') + xlab('Edad')

Del resumen realizado con `summary al inicio del desarrollo, se destaca la ausencia de valores (19456), más del 69%, en la variable del índice del desarrollo humano.

ggplot(master, aes(y=master$`HDI for year`)) + 
    geom_boxplot(fill="slateblue", alpha=0.2) + 
    ylab("Índice de desarrollo humano")

summary(master$`HDI for year`)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  0.483   0.713   0.779   0.777   0.855   0.944   19456 

Del boxplot generado se puede notar la presencia de un dato atípico muy bajo, este corresponde al índice del desarrollo humano de Guatemala en 1990.

ggplot(master, aes(x = year, y = `HDI for year`)) +
  geom_point(size = 1) +
  labs(
    title = "Relación entre Año e IDH",
    x = "Año",
    y = "Índice de Desarrollo Humano (IDH)"
  )

Al observar el comportamiento de los registros con valores válidos para el índice del desarrollo humano, se observa que en los años anteriores al 2010, solo se ingresaron los IDH cada cinco años. Aunque el informe de desarrollo humano se reporta anualmente. También se puede notar cierto aumento en los índices a medida que pasan los años, esto mirando los valores extremos de cada año reportado.

master %>%
  filter(year == 1985) %>%
  pull(`HDI for year`) %>%
  summary()
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
 0.5390  0.6480  0.7130  0.6992  0.7530  0.8410     132 
master %>%
  filter(year == 1990) %>%
  pull(`HDI for year`) %>%
  summary()
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
 0.4830  0.6480  0.7145  0.7158  0.7850  0.8650     168 

Aún así, siguen existiendo NAs incluso en aquellos años en los que sí hay registros del IDH. Es por eso, que se realizará una imputación de datos con la mediana (0.779) para todos los NAs. Al tratarse de una imputación de datos muy simple, se usarán comandos básicos en vez de una librería más potente como mice.

median(master$`HDI for year`, na.rm = TRUE)
[1] 0.779
master_i <- master %>%
  mutate(`HDI for year` = ifelse(is.na(`HDI for year`), median(`HDI for year`, na.rm = TRUE), `HDI for year`))


summary(master_i$`HDI for year`)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.4830  0.7790  0.7790  0.7783  0.7790  0.9440 

Segunda parte: 9.2

Primero se filtró de la base de datos para quedarnos con dos dataframes derivados de esta relacionados a los registros de Colombia y Estados Unidos.

master_col <-filter(master_i, country == "Colombia")
master_eu<-filter(master_i, country == "United States")

Evaluemos el comportamiento de

plot_col <- master_col %>%
  ggplot(aes(x=year, y=`suicides/100k pop`, group=sex, color=sex)) +
    geom_line() +
    theme(
      plot.title = element_text(size=14)
    ) +xlab('Año')+ ylab('Tasa de suicidio') +
    ggtitle("Suicidos por cada 100000 habitantes según sexo en Colombia.")


plot_eu <- master_eu %>%
  ggplot(aes(x=year, y=`suicides/100k pop`, group=sex, color=sex)) +
    geom_line() +
    theme(
      plot.title = element_text(size=14)
    ) +xlab('Año')+ ylab('Tasa de suicidio') +
    ggtitle("Suicidos por cada 100000 habitantes según sexo en Estados Unidos")

grid.arrange(plot_col, plot_eu, ncol = 2)