data = read_csv("master.csv", col_types = list(UNIT = col_character()), col_names = TRUE)
datatable(
data[1:10, ],
caption = "Base de datos: Suicide Rates Overview 1985 to 2016",
options = list(
scrollX = TRUE,
scrollY = "450px",
paging = FALSE
)
)Tarea 2
Actividad Práctica
Por: Valentina Cabrera
Librerías
Base de datos
Tipo de variables
spc_tbl_ [27,820 × 12] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
$ country : chr [1:27820] "Albania" "Albania" "Albania" "Albania" ...
$ year : num [1:27820] 1987 1987 1987 1987 1987 ...
$ sex : chr [1:27820] "male" "male" "female" "male" ...
$ age : chr [1:27820] "15-24 years" "35-54 years" "15-24 years" "75+ years" ...
$ suicides_no : num [1:27820] 21 16 14 1 9 1 6 4 1 0 ...
$ population : num [1:27820] 312900 308000 289700 21800 274300 ...
$ suicides/100k pop : num [1:27820] 6.71 5.19 4.83 4.59 3.28 2.81 2.15 1.56 0.73 0 ...
$ country-year : chr [1:27820] "Albania1987" "Albania1987" "Albania1987" "Albania1987" ...
$ HDI for year : num [1:27820] NA NA NA NA NA NA NA NA NA NA ...
$ gdp_for_year ($) : num [1:27820] 2.16e+09 2.16e+09 2.16e+09 2.16e+09 2.16e+09 ...
$ gdp_per_capita ($): num [1:27820] 796 796 796 796 796 796 796 796 796 796 ...
$ generation : chr [1:27820] "Generation X" "Silent" "Generation X" "G.I. Generation" ...
- attr(*, "spec")=
.. cols(
.. country = col_character(),
.. year = col_double(),
.. sex = col_character(),
.. age = col_character(),
.. suicides_no = col_double(),
.. population = col_double(),
.. `suicides/100k pop` = col_double(),
.. `country-year` = col_character(),
.. `HDI for year` = col_double(),
.. `gdp_for_year ($)` = col_number(),
.. `gdp_per_capita ($)` = col_double(),
.. generation = col_character()
.. )
- attr(*, "problems")=<externalptr>
Dimensión de la base
[1] 27820 12
Primer punto:
– Características de la base de datos.
Para este ejercicio, contamos con la base de datos Suicide Rates Overview 1985 to 2016. Este conjunto de datos busca encontrar cuáles señales están correlacionadas con el aumento de suicidios a nivel mundial. La información se encuentra organizada en 27820 filas (# observaciones) y 12 columnas (# variables), en donde cada una de ellas ofrece información socieconómica y demográfica de cada país.
En cuanto a las variables, tal como se mencionó antes, en total son 12 y se tienen tanto numéricas como categóricas. A continuación, veamos de qué tipo son y cómo están codificadas en este caso.
– Numéricas:
year, la cual representa el año.
suicides_no, la cual representa el número de suicidios.
population, la cual representa la población.
suicides.100k.pop, la cual representa las tasas de suicidios por cada 100 mil habitantes.
HDI.for.year, la cual representa el índice de desarrollo humano (IDH) por año.
gdp_for_year ($), la cual representa el producto interno bruto (PIB) por año.
gdp_per_capita, la cual representa el producto interno bruto per capita.
– Categóricas:
country, la cual representa el país.
sex, la cual representa el género y se trabaja con dos valores establecidos, “male” y “female”.
age, la cual representa el grupo de edad.
country.year, la cual representa la clave compuesta por el país y el año.
generation, la cual representa la generación a la cual pertenece el grupo de personas.
A continuación, se analizará la correlación de las variables cuantitativas.
Para esto, se filtró la base de datos de tal manera que solo quedaran las columnas de tipo numérico, pero sin incluir la columna HDI for year, debido a su alta cantidad de datos faltantes.
data_num <- select_if(data, is.numeric)
data_num <- select_if(data, is.numeric) %>% select(-"HDI for year")
print(data_num)# A tibble: 27,820 × 6
year suicides_no population `suicides/100k pop` `gdp_for_year ($)`
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1987 21 312900 6.71 2156624900
2 1987 16 308000 5.19 2156624900
3 1987 14 289700 4.83 2156624900
4 1987 1 21800 4.59 2156624900
5 1987 9 274300 3.28 2156624900
6 1987 1 35600 2.81 2156624900
7 1987 6 278800 2.15 2156624900
8 1987 4 257200 1.56 2156624900
9 1987 1 137500 0.73 2156624900
10 1987 0 311000 0 2156624900
# ℹ 27,810 more rows
# ℹ 1 more variable: `gdp_per_capita ($)` <dbl>
cor_test <- cor_mat(data_num)
cor_test# A tibble: 6 × 7
rowname year suicides_no population `suicides/100k pop` `gdp_for_year ($)`
* <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 year 1 -0.0045 0.0089 -0.039 0.095
2 suicide… -0.0045 1 0.62 0.31 0.43
3 populat… 0.0089 0.62 1 0.0083 0.71
4 suicide… -0.039 0.31 0.0083 1 0.025
5 gdp_for… 0.095 0.43 0.71 0.025 1
6 gdp_per… 0.34 0.061 0.082 0.0018 0.3
# ℹ 1 more variable: `gdp_per_capita ($)` <dbl>
ggcorrplot(cor_test, hc.order = TRUE, type = "lower",
lab = TRUE)A partir de esto, podemos observar que, a rasgos generales, en su mayoría las variables no están fuertemente correlacionadas entre sí. Las únicas que presentan un nivel “alto” son suicides_no y population cuyo coeficiente de correlación es 0.62, es decir, están moderadamente correlacionadas y, por otro lado, population con gpd_for_year ($) con coeficiente de correlación igual a 0.71, por tanto, están fuertemente correlacionadas. El resto de casos, se encuentra dentro de los rangos de débilmente correlacionadas.
– Características de cada variable
year
Min. 1st Qu. Median Mean 3rd Qu. Max. 1985 1995 2002 2001 2008 2016Para poder visualizar esta variable de forma gráfica, vamos a trabajar con datos agrupados debido a la gran variedad de años registrados en la base de datos.
n_sturges = 1 + log(length(data))/log(2) n_sturgesc = ceiling(n_sturges) n_sturgesf = floor(n_sturges) n_clases = 0 if (n_sturgesc%%2 == 0) { n_clases = n_sturgesf } else { n_clases = n_sturgesc } R = max(data$year) - min(data$year) w = ceiling(R/n_clases) bins <- seq(min(data$year), max(data$year) + w, by = w)años <- cut(data$year, bins) freq_table <- transform(table(años), Rel_Freq = prop.table(Freq), Cum_Freq = cumsum(Freq)) knitr::kable(freq_table)años Freq Rel_Freq Cum_Freq (1985,1992] 4752 0.1744237 4752 (1992,1999] 6324 0.2321245 11076 (1999,2006] 7188 0.2638379 18264 (2006,2013] 7140 0.2620761 25404 (2013,2020] 1840 0.0675378 27244 data_freq <- data.frame(x = freq_table$años, y = freq_table$Freq) ggplot(data=data_freq, aes(x=x, y=y)) + geom_bar(stat="identity", fill="lightblue") + xlab("Rango de años") + ylab("Frecuencia")Esta gráfica revela que la cantidad de suicidios ocurridos entre 1999 y 2006, con un total de
7188casos, es notablemente mayor en comparación con los otros periodos analizados. Por otro lado, entre 2013 y 2020, se observa una disminución significativa en el número de suicidios, con solo1840casos registrados. Esto indica que existe una posible asimetría a la derecha en la distribución de la variable, debido a la alta concentración de casos en los años anteriores.suicides_no
Min. 1st Qu. Median Mean 3rd Qu. Max. 0.0 3.0 25.0 242.6 131.0 22338.0boxplot(data$suicides_no, main = "Boxplot de número de suicidios", col = "lightblue")Es evidente la gran cantidad de valores atípicos que presenta. A su vez, dada la gran diferencia entre los valores descriptivos, podemos afirmar que existe una asimetría a la derecha.
population
Min. 1st Qu. Median Mean 3rd Qu. Max. 278 97498 430150 1844794 1486143 43805214boxplot(data$population, main = "Boxplot de población", col = "lightblue")Es evidente la gran cantidad de valores atípicos que presenta. A su vez, dada la gran diferencia entre los valores descriptivos, podemos afirmar que existe una asimetría a la derecha.
suicides.100k.pop
Min. 1st Qu. Median Mean 3rd Qu. Max. 0.00 0.92 5.99 12.82 16.62 224.97HDI.for.year
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's 0.483 0.713 0.779 0.777 0.855 0.944 19456gdp_for_year
Min. 1st Qu. Median Mean 3rd Qu. Max. 4.692e+07 8.985e+09 4.811e+10 4.456e+11 2.602e+11 1.812e+13gdp_per_capita
Min. 1st Qu. Median Mean 3rd Qu. Max.
251 3447 9372 16866 24874 126352
- sex
female male
13910 13910
Observamos que la distribución de la variable sex es igual para ambos valores.
generation
Boomers G.I. Generation Generation X Generation Z Millenials 4990 2744 6408 1470 5844 Silent 6364
Las generaciones Generation y Generation Z tienen frecuencias alejadas a las demás. La de menor frecuencia es Generation Z con 1470 registros y la que cuenta con mayor cantidad es Generation X con 6408.
– Identificación de NA
gg_miss_var(data, show_pct = TRUE)md.pattern(data, plot = TRUE, rotate.names = TRUE) country year sex age suicides_no population suicides/100k pop
8364 1 1 1 1 1 1 1
19456 1 1 1 1 1 1 1
0 0 0 0 0 0 0
country-year gdp_for_year ($) gdp_per_capita ($) generation HDI for year
8364 1 1 1 1 1
19456 1 1 1 1 0
0 0 0 0 19456
8364 0
19456 1
19456
En cuanto a la identificación de datos faltantes (NA), se observa que la base Suicide Rates Overview 1985 to 2016 contiene este tipo de datos. En particular, solo la variable HDI for year presenta valores NA. De las 27820 observaciones en la base, 19456 contienen valores NA, lo que representa aproximadamente el 70% de los valores en esa variable.
– Detección de valores atípicos
Se puede observar una cantidad significativa de datos atípicos en varias variables, lo cual puede estar relacionado con la diversidad de los datos. Por ejemplo, en el caso del PIB per cápita, las diferencias económicas entre países pueden llevar a que algunos países presenten valores muy altos o muy bajos en comparación con otros, generando así valores atípicos en esta variable
– Decisión con NA’s : imputación
ks.test(data$`HDI for year`, "pnorm", mean = mean(data$`HDI for year`, na.rm = TRUE), sd = sd(data$`HDI for year`, na.rm = TRUE))Warning in ks.test.default(data$`HDI for year`, "pnorm", mean = mean(data$`HDI
for year`, : ties should not be present for the Kolmogorov-Smirnov test
Asymptotic one-sample Kolmogorov-Smirnov test
data: data$`HDI for year`
D = 0.055914, p-value < 2.2e-16
alternative hypothesis: two-sided
Al hacer la prueba de Kolmogorov-Smirnov, se obtuvo un p-valor inferior a 0.05, esto indica que los datos no siguen una distribución normal. Es decir, la imputación debe realizarse haciendo uso de la mediana.
median = median(data$`HDI for year`, na.rm = TRUE)
data$`HDI for year` <- replace_na(data$`HDI for year`, median)
suppressWarnings(missmap(data, col = c("lightblue","lightpink")))Segundo punto:
– Filtrado de la base de datos
– Colombia
master_col = data %>%
filter(country == "Colombia")
datatable(
master_col[1:10, ],
caption = "Base de datos: Suicide Rates Overview 1985 to 2016 - Colombia",
options = list(
scrollX = TRUE,
scrollY = "450px",
paging = FALSE
)
)– Estados Unidos
master_eu = data %>%
filter(country == "United States")
datatable(
master_eu[1:10, ],
caption = "Base de datos: Suicide Rates Overview 1985 to 2016 - EE UU",
options = list(
scrollX = TRUE,
scrollY = "450px",
paging = FALSE
)
)– Analisis de la evolución a lo largo de los años (promedio)
En este ejercicio, trabajaremos con el promedio de cada una de las variables por año. Esta decisión se basa en el hecho de que, para un solo año, existen múltiples registros en los datos. Por lo tanto, resulta útil calcular el promedio de las variables correspondientes, ya que esto nos permitirá obtener una representación centralizada y más manejable de la información anual.
# Colombia
media_col <- master_col %>%
group_by(year, country) %>%
summarise(
mean_suicidios = mean(`suicides/100k pop`, na.rm = TRUE),
mean_GDP = mean(`gdp_per_capita ($)`, na.rm = TRUE),
mean_HDI = mean(`HDI for year`, na.rm = TRUE))`summarise()` has grouped output by 'year'. You can override using the
`.groups` argument.
# EE UU
media_eu <- master_eu %>%
group_by(year, country) %>%
summarise(
mean_suicidios = mean(`suicides/100k pop`, na.rm = TRUE),
mean_GDP = mean(`gdp_per_capita ($)`, na.rm = TRUE),
) `summarise()` has grouped output by 'year'. You can override using the
`.groups` argument.
combinado <- bind_rows(master_col, master_eu)
media <- bind_rows(media_col, media_eu)Suicidios por cada 100.000 habitantes
media %>% group_by(year, country) %>% ggplot(aes(x = year, y = mean_suicidios, color = country, group = country)) + geom_line() + labs( title = "Evolución de los suicidios por cada 100.000 habitantes", x = "Año", y = "Suicidios por cada 100.000 habitantes", color = "País" ) + theme_minimal()
Al graficar la evolución de las tasas de suicidio por cada 100000 habitantes para ambos países, se observa claramente que el promedio anual de suicidios en Estados Unidos está notablemente por encima del de Colombia en todos los años de este estudio. Esto indica que la cantidad de suicidios en Estados Unidos ha sido constantemente mayor. Específicamente, la línea azul que representa a Estados Unidos muestra un pico cercano a 16 y un mínimo de aproximadamente 12, mientras que la línea roja para Colombia alcanza un pico de alrededor de 7 y un mínimo cercano a 3. Estos valores evidencian que, en todos los casos, Estados Unidos presenta tasas de suicidio significativamente más altas que Colombia.
Otra observación que se puede hacer es que desde antes de 1990 hasta el 2010, el comportamiento de ambos países fue inverso, es decir, en el caso de Colombia, desde antes de 1990 hasta aproximadamente los 2000, la tendencia iba más relacionada con el aumento en la tasa de suicidios y desde los 2000 hasta después de 2010, esta fue disminuyendo. En el caso de Estados Unidos, esto ocurre al contrario.
- PIB per cápita
combinado %>%
group_by(year, country) %>%
ggplot(aes(x = year, y = `gdp_per_capita ($)`, color = country, group = country)) +
geom_line() +
labs(
title = "Evolución del PIB per cápita",
x = "Año",
y = "PIB per cápita",
color = "País"
) +
theme_minimal()En este caso, podemos notar que, nuevamente, los registros de Colombia se encuentran por debajo de los de Estados Unidos. Es decir, Colombia, a lo largo de los años que se incluyen en este estudio, ha mantenido un PIB per cápita inferior al país norteamericano, lo cual se traduce en que este último ha tenido mayor productividad y desarrollo económico.
Índice de desarrollo humano (IDH)
combinado %>% group_by(year, country) %>% ggplot(aes(x = year, y = `HDI for year`, color = country, group = country)) + geom_line(na.rm = TRUE) + labs( title = "Evolución del índice de desarrollo humano", x = "Año", y = "Índice de desarrollo humano", color = "País") + theme_minimal()Aquí podemos analizar que ambos países tienen un comportamiento inverso pues mientras el índice de desarrollo humano de Estados Unidos crecía, el de Colombia por el contrario disminuía. Cabe resaltar que coinciden en los lapsos de tiempo en los cuales el IDH se mantuvo constante. En resumidas cuentas, los estadounidenses, a lo largo de los años, han contado con mejor esperanza de vida, educación e indicadores de ingresos per cápita en comparación con los colombianos.
– Análisis de la evolución a lo largo de los años (promedio) por género
media_colsex <- master_col %>%
group_by(year, sex) %>%
summarise(
mean_suicidios = mean(`suicides/100k pop`, na.rm = TRUE),
mean_GDP = mean(`gdp_per_capita ($)`, na.rm = TRUE),
mean_HDI = mean(`HDI for year`, na.rm = TRUE),
.groups = "drop"
)
media_eusex <- master_eu %>%
group_by(year, sex) %>%
summarise(
mean_suicidios = mean(`suicides/100k pop`, na.rm = TRUE),
mean_GDP = mean(`gdp_per_capita ($)`, na.rm = TRUE),
mean_HDI = mean(`HDI for year`, na.rm = TRUE),
.groups = "drop"
)Suicidios por cada 100.000 habitantes
suic_colsex<- media_colsex %>% group_by(year, sex) %>% ggplot(aes(x = year, y = mean_suicidios, group = sex, color = sex)) + geom_line() + theme_minimal() + xlab('Año') + ylab('Tasa de suicidio en Colombia') suic_eusex<- media_eusex %>% group_by(year, sex) %>% ggplot(aes(x = year, y = mean_suicidios, group = sex, color = sex)) + geom_line() + theme_minimal() + xlab('Año') + ylab('Tasa de suicidio en EE UU') grid.arrange(suic_colsex, suic_eusex , ncol = 2)Al graficar la tasa de suicidios por sexo en ambos países, se observa que en ambos casos la tasa de suicidios en hombres se mantiene superior a la de mujeres, es decir, por cada 100000 habitantes, la cantidad de personas del género masculino que se suicidan es mayor que la de mujeres. Además, se puede notar que este resultado es coherente con lo hallado anteriormente, ya que el rango de valores en el eje Y para el gráfico de Colombia es inferior al correspondiente a Estados Unidos.
PIB per cápita
gdp_colsex<- media_colsex %>% group_by(year, sex) %>% ggplot(aes(x = year, y = mean_GDP, group = sex, color = sex)) + geom_line() + theme_minimal() + xlab('Año') + ylab('PIB per cápita en Colombia') gdp_eusex<- media_eusex %>% group_by(year, sex) %>% ggplot(aes(x = year, y = mean_GDP, group = sex, color = sex)) + geom_line() + theme_minimal() + xlab('Año') + ylab('PIB per cápita en EE UU') grid.arrange(gdp_colsex, gdp_eusex , ncol = 2)Índice de desarrollo humano
idh_colsex<- media_colsex %>%
group_by(year, sex) %>%
ggplot(aes(x = year, y = mean_HDI, group = sex, color = sex)) +
geom_line() +
theme_minimal() +
xlab('Año') +
ylab('Índice de desarrollo humano en Colombia')
idh_eusex<- media_eusex %>%
group_by(year, sex) %>%
ggplot(aes(x = year, y = mean_HDI, group = sex, color = sex)) +
geom_line() +
theme_minimal() +
xlab('Año') +
ylab('Índice de desarrollo humano en EE UU')
grid.arrange(idh_colsex, idh_eusex , ncol = 2)– Análisis de la evolución a lo largo de los años (promedio) por grupo de edad
Suicidios por cada 100.000 habitantes
media_colage <- master_col %>% group_by(year, age) %>% summarise( mean_suicidios = mean(`suicides/100k pop`, na.rm = TRUE), mean_GDP = mean(`gdp_per_capita ($)`, na.rm = TRUE), mean_HDI = mean(`HDI for year`, na.rm = TRUE), .groups = "keep" ) media_euage <- master_eu %>% group_by(year, age) %>% summarise( mean_suicidios = mean(`suicides/100k pop`, na.rm = TRUE), mean_GDP = mean(`gdp_per_capita ($)`, na.rm = TRUE), mean_HDI = mean(`HDI for year`, na.rm = TRUE), .groups = "keep" )suic_colage<- media_colage %>% group_by(year, age) %>% ggplot(aes(x = year, y = mean_suicidios, group = age, color = age)) + geom_line() + theme_minimal() + xlab('Año') + ylab('Tasa de suicidio en Colombia') suic_euage<- media_euage %>% group_by(year, age) %>% ggplot(aes(x = year, y = mean_suicidios, group = age, color = age)) + geom_line() + theme_minimal() + xlab('Año') + ylab('Tasa de suicidio en EE UU') grid.arrange(suic_colage, suic_euage , ncol = 2)Al analizar el comportamiento de las tasas de suicidio por grupo de edad en ambos países, podemos notar que a lo largo de los años las personas pertenecientes al grupo
75+ yearsson las que más por encima se han mantenido. A su vez, los individuos del grupo5-14 yearsson los que han mantenido la menor tasa de suicidios durante todos los años de estudio.PIB per cápita
gdp_colage<- media_colage %>% group_by(year, age) %>% ggplot(aes(x = year, y = mean_GDP, group = age, color = age)) + geom_line() + theme_minimal() + xlab('Año') + ylab('PIB per cápita en Colombia') gdp_euage<- media_euage %>% group_by(year, age) %>% ggplot(aes(x = year, y = mean_GDP, group = age, color = age)) + geom_line() + theme_minimal() + xlab('Año') + ylab('PIB per cápita en EE UU') grid.arrange(gdp_colage, gdp_euage , ncol = 2)Índice de desarrollo humano
idh_colage<- media_colage %>%
group_by(year, age) %>%
ggplot(aes(x = year, y = mean_HDI, group = age, color = age)) +
geom_line() +
theme_minimal() +
xlab('Año') +
ylab('Índice de desarrollo humano en Colombia')
idh_euage<- media_euage %>%
group_by(year, age) %>%
ggplot(aes(x = year, y = mean_HDI, group = age, color = age)) +
geom_line() +
theme_minimal() +
xlab('Año') +
ylab('Índice de desarrollo humano en EE UU')
grid.arrange(idh_colage, idh_euage , ncol = 2)