En el presente informe se aborda el análisis exploratorio y decsriptivo de un conjunto de datos relacionado a registros de suicidios o intentos de los mismos, posibles razones psicológicas, datos demográficos, entre otras variables de interés. El conjunto de datos posee registros de distintos países a nivel mundial, la población de los mismos y la tasa de suicidios por cada 10 mil habitantes.
Se iniciará con una inspección del conjunto de datos, su estructura, tipos de variables, datos faltantes y distribución de las variables. Posterior se realizará una descripción gráfica de la información y posibles inferencias.
Se procede a inspeccionar el conjunto de datos desde la naturaleza de las variables, estructura, primeras filas hasta su dimensión y tipo de variable. Es relevante mencionar que se cuenta con 27820 registros de 12 variables de las cuales 5 son categóricas posibles factores y una de ellas con notables valores fanltantes.
master <- read_csv("master.csv")
head(master)
## # A tibble: 6 × 12
## country year sex age suicides_no population `suicides/100k pop`
## <chr> <dbl> <chr> <chr> <dbl> <dbl> <dbl>
## 1 Albania 1987 male 15-24 years 21 312900 6.71
## 2 Albania 1987 male 35-54 years 16 308000 5.19
## 3 Albania 1987 female 15-24 years 14 289700 4.83
## 4 Albania 1987 male 75+ years 1 21800 4.59
## 5 Albania 1987 male 25-34 years 9 274300 3.28
## 6 Albania 1987 female 75+ years 1 35600 2.81
## # ℹ 5 more variables: `country-year` <chr>, `HDI for year` <dbl>,
## # `gdp_for_year ($)` <dbl>, `gdp_per_capita ($)` <dbl>, generation <chr>
## [1] 27820 12
A partir del nombre de las variables podemos identificar cuales son categóricas y cuales son numéricas; Entre las variables cualitativas encontramos el país, sexo, la edad de la persona (intervalo), la generación a la que pertenecen y un distintivo country-year. Por otro lado, entre las variables numéricas podemos encontrar el año del registro, el número de suicidios, la población, la propoorcion de suicidios por cada 100mil habitantes, el HDI por año, el producto interno bruto y per capita.
## [1] "country" "year" "sex"
## [4] "age" "suicides_no" "population"
## [7] "suicides/100k pop" "country-year" "HDI for year"
## [10] "gdp_for_year ($)" "gdp_per_capita ($)" "generation"
## 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>
Observamos de manera gráfica a través de una tabla la información del conjunto de datos, en la cual se evidencia la presencia de datos faltantes en la columna ‘HDI for years’ para varias de las observaciones, así como también que la edad de los registros están agrupados en intervalios y no de forma continua.
| country | year | sex | age | suicides_no | population | suicides/100k pop | country-year | HDI for year | gdp_for_year (\() </th> <th style="text-align:right;position: sticky; top:0; background-color: #FFFFFF;"> 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 |
| Albania | 1987 | female | 35-54 years | 6 | 278800 | 2.15 | Albania1987 | NA | 2156624900 | 796 | Silent |
| Albania | 1987 | female | 25-34 years | 4 | 257200 | 1.56 | Albania1987 | NA | 2156624900 | 796 | Boomers |
| Albania | 1987 | male | 55-74 years | 1 | 137500 | 0.73 | Albania1987 | NA | 2156624900 | 796 | G.I. Generation |
| Albania | 1987 | female | 5-14 years | 0 | 311000 | 0.00 | Albania1987 | NA | 2156624900 | 796 | Generation X |
| Albania | 1987 | female | 55-74 years | 0 | 144600 | 0.00 | Albania1987 | NA | 2156624900 | 796 | G.I. Generation |
| Albania | 1987 | male | 5-14 years | 0 | 338200 | 0.00 | Albania1987 | NA | 2156624900 | 796 | Generation X |
| Albania | 1988 | female | 75+ years | 2 | 36400 | 5.49 | Albania1988 | NA | 2126000000 | 769 | G.I. Generation |
| Albania | 1988 | male | 15-24 years | 17 | 319200 | 5.33 | Albania1988 | NA | 2126000000 | 769 | Generation X |
| Albania | 1988 | male | 75+ years | 1 | 22300 | 4.48 | Albania1988 | NA | 2126000000 | 769 | G.I. Generation |
| Albania | 1988 | male | 35-54 years | 14 | 314100 | 4.46 | Albania1988 | NA | 2126000000 | 769 | Silent |
| Albania | 1988 | male | 55-74 years | 4 | 140200 | 2.85 | Albania1988 | NA | 2126000000 | 769 | G.I. Generation |
| Albania | 1988 | female | 15-24 years | 8 | 295600 | 2.71 | Albania1988 | NA | 2126000000 | 769 | Generation X |
| Albania | 1988 | female | 55-74 years | 3 | 147500 | 2.03 | Albania1988 | NA | 2126000000 | 769 | G.I. Generation |
| Albania | 1988 | female | 25-34 years | 5 | 262400 | 1.91 | Albania1988 | NA | 2126000000 | 769 | Boomers |
## vars n mean sd median
## suicides_no 1 27820 2.425700e+02 9.020500e+02 2.500000e+01
## gdp_per_capita ($) 2 27820 1.686646e+04 1.888758e+04 9.372000e+03
## population 3 27820 1.844794e+06 3.911779e+06 4.301500e+05
## suicides/100k pop 4 27820 1.282000e+01 1.896000e+01 5.990000e+00
## gdp_for_year ($) 5 27820 4.455810e+11 1.453610e+12 4.811469e+10
## trimmed mad min max range
## suicides_no 7.234000e+01 3.706000e+01 0 2.233800e+04 2.233800e+04
## gdp_per_capita ($) 1.339088e+04 1.087339e+04 251 1.263520e+05 1.261010e+05
## population 9.105993e+05 5.902972e+05 278 4.380521e+07 4.380494e+07
## suicides/100k pop 8.690000e+00 8.630000e+00 0 2.249700e+02 2.249700e+02
## gdp_for_year ($) 1.395568e+11 6.929537e+10 46919625 1.812071e+13 1.812067e+13
## skew kurtosis se
## suicides_no 10.35 157.13 5.410000e+00
## gdp_per_capita ($) 1.96 4.94 1.132400e+02
## population 4.46 27.40 2.345286e+04
## suicides/100k pop 2.96 12.16 1.100000e-01
## gdp_for_year ($) 7.23 64.22 8.715039e+09
Rangos de Curtosis - Curtosis < 3: Platicúrtica (colas delgadas, menos outliers). - Curtosis ≈ 3: Mesocúrtica (distribución normal, colas moderadas). - Curtosis > 3: Leptocúrtica (colas pesadas, más outliers). - Curtosis >> 3: Muy leptocúrtica (colas extremadamente pesadas, muchos outliers).
La tabla a continuación refleja la asimetría y la curtosis de cinco variables clave del conjunto de datos: suicides_no, gdp_per_capita, population, suicides/100k pop, y gdp_for_year.
suicides_no: Esta variable muestra una asimetría muy alta de 10.35, lo que indica que la distribución está fuertemente sesgada hacia la derecha. Esto significa que la mayoría de los países tienen un número relativamente bajo de suicidios, con pocos países presentando cifras extremadamente altas. La curtosis es de 157.13, lo que sugiere una distribución con colas extremadamente pesadas y una alta presencia de outliers.
gdp_per_capita ($): Con una asimetría de 1.96, esta variable también está sesgada hacia la derecha, pero menos pronunciadamente que suicides_no. Indica que la mayoría de los países tienen un PIB per cápita bajo o moderado, con algunos países teniendo valores muy altos. La curtosis de 4.94 indica una distribución levemente leptocúrtica, con colas más pesadas que una distribución normal, pero sin ser extremadamente pronunciada.
population: La asimetría de 4.45 muestra un sesgo hacia la derecha, sugiriendo que muchos países tienen poblaciones más pequeñas, mientras que algunos pocos tienen poblaciones extremadamente grandes. La curtosis de 27.39 refuerza esto, indicando una distribución con colas muy pesadas y la presencia de outliers significativos en la población.
suicides/100k pop: Con una asimetría de 2.96, esta variable está significativamente sesgada hacia la derecha, lo que indica que la mayoría de los países tienen tasas de suicidio relativamente bajas, con algunos pocos presentando tasas muy altas. La curtosis de 12.16 sugiere una distribución con colas pesadas, lo que indica variabilidad en las tasas de suicidio entre diferentes países y la posible presencia de outliers.
gdp_for_year ($): Finalmente, esta variable muestra una asimetría de 7.23, lo que indica un fuerte sesgo hacia la derecha, con la mayoría de los países presentando valores de PIB anual relativamente bajos, mientras que unos pocos países tienen PIB extremadamente altos. La curtosis de 64.22 es muy elevada, sugiriendo una distribución con colas extremadamente pesadas, similar a la observada en suicides_no, indicando outliers considerables.
## package 'e1071' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\perfil\AppData\Local\Temp\RtmpuEhhpB\downloaded_packages
## Variable Asimetría Curtosis
## suicides_no suicides_no 10.351794 157.128868
## gdp_per_capita ($) gdp_per_capita ($) 1.963258 4.936084
## population population 4.458934 27.399849
## suicides/100k pop suicides/100k pop 2.963095 12.162253
## gdp_for_year ($) gdp_for_year ($) 7.232975 64.217033
Se ejecuta la función de control o filtro de problemas en nuestro conjunto de datos para examinar si hay alguna inconsistencia en los mismos. Se observa que que no hay errores dentro del conjunto de datos.
prob1 <- problems(master) # Implmentamos la función 'problems' para verificar que no haya problema en los datos
prob1
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
La grafica muestra que la proporción entre hombres y mujeres dentro de cada grupo de edad es relativamente estable, con las secciones rojas (mujeres) siendo consistentemente más grandes que las azules (hombres), lo que sugiere una ligera predominancia de mujeres en todos los grupos de edad. La distribución no presenta grandes variaciones, lo que sugiere homogeneidad en la representación de ambos sexos a lo largo de los grupos de edad.
ggplot(master, aes(x = age, fill = sex)) +
geom_bar(position = "stack") +
labs(title = "Distribución de Edad por Sexo (Apilado)", x = "Grupo de Edad", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
La gráfica muestra una comparación del número total de suicidios entre hombres y mujeres. La barra correspondiente a los hombres es significativamente más alta, con un conteo que supera los 5 millones de suicidios, mientras que la barra para las mujeres muestra un conteo de alrededor de 1 millón de suicidios. Esto indica que, en los datos analizados, los hombres tienen una tasa de suicidios considerablemente mayor que las mujeres, con más de cinco veces la cantidad de suicidios
lA gráfica muestra la frecuencia de suicidios según diferentes generaciones. La generación X presenta la frecuencia más alta, con más de 6,000 suicidios registrados. Le siguen la generación Silent y los Millennials, ambos con frecuencias cercanas a 6,000. Los Boomers también muestran una frecuencia alta, superando los 4,000 casos. En contraste, la G.I. Generation y la Generation Z tienen las frecuencias más bajas, con menos de 3,000 y alrededor de 2,000 casos respectivamente. Esta distribución sugiere que ciertas generaciones, como la generación X, tienen una mayor prevalencia de suicidios en comparación con otras, lo que podría reflejar diferencias generacionales en factores de riesgo y circunstancias sociales.
Agrupamos los rangos anuales para mejor modelado e inspección de los datos. Para ello realizamos una tabla de frecuencias y aplicamos la n de sturges. sE MUESTRAN LOS RESULTADOS A CONTINUACIÓN:
Interpretación General: - La tabla indica que la mayor concentración de suicidios ocurrió entre 1999 y 2013, representando más del 50% de los casos totales en los periodos analizados. Además, se observa una disminución en la frecuencia de suicidios en el periodo más reciente (2013-2020), tanto en términos absolutos como relativos, lo que podría reflejar cambios en las tendencias o en las circunstancias socioeconómicas de esos años
| 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 |
Se observa que los rangos de edad 1999-2006 y 2006-2013 concentran el mayor número de observaciones o suicidios, con más de 7,000 registros cada uno. Esto sugiere un aumento significativo en la cantidad de datos o en la incidencia de los eventos durante estos años. Los periodos 1992-1999 y 1985-1992 presentan frecuencias más bajas, con alrededor de 6,324 y 4,752 observaciones respectivamente. Sin embargo, el periodo más reciente (2013-2020) muestra una fuerte disminución, con solo 1,840 observaciones, lo que podría indicar un cambio en la tendencia de los eventos o en la recolección de datos en los últimos años.
El diagrama de cajas y bigotes ilustra la distribución del PIB per cápita en dólares entre los países del conjunto de datos. Se observa una enorme cantidad de datos atipicos y una distribución no normal.
Se presenta un gráfico de violín de la distribución de la variable PIB per capita por sexo y la mayor parte de los datos se concentra en la parte baja del rango de PIB per cápita, que es visible por la mayor anchura en la parte inferior de ambos violines. Esto significa que la mayoría de los países tienen un PIB per cápita relativamente bajo, con muchos países en el mismo rango de valores.
Realizamos una imspección de datos faltantes para analizar si se debe inputar datos en algún momento, para ello a través de una tabla, observamos que para la variable “HDI for year” posee 19456 valores vacíos por lo que debe recibir un tratamiento particular. A partir de esta información verificamos mediante la matriz de datos faltantes qué proporción de datos faltantes equivale esta cantidad de registros (6%), posterior a ellos examinaremos la normalidad de la variable y decidiremos como inputar los datos.
## country year sex age
## 0 0 0 0
## suicides_no population suicides/100k pop country-year
## 0 0 0 0
## HDI for year gdp_for_year ($) gdp_per_capita ($) generation
## 19456 0 0 0
Ddo que tenemos una muestra mayor a 200, se aplicará el test de kolmogrov-smirnov cuyas hipotesis son:
Examinamos la normalidad de la variable HDI for year y se arroja el resultado de que p-valor < alfa, lo que indica que la variable no sigue una distribución normal, por tanto se deben reemplazar los datos faltantes por su mediana.
## Warning in ks.test.default(hdi_data[!is.na(hdi_data)], "pnorm", mean =
## mean(hdi_data, : ties should not be present for the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: hdi_data[!is.na(hdi_data)]
## D = 0.055914, p-value < 2.2e-16
## alternative hypothesis: two-sided
hdi_data <- master$`HDI for year`
# Usar la mediana
mediana_hdi <- median(hdi_data, na.rm = TRUE)
master$`HDI for year`[is.na(master$`HDI for year`)] <- mediana_hdi
ggplot(master, aes(x = `HDI for year`)) +
geom_histogram(binwidth = 0.01, fill = "steelblue", color = "black") +
labs(title = "Distribución del HDI (después de imputación)", x = "HDI", y = "Frecuencia") +
theme_minimal()
missmap(master, col = c("lightblue", "blue"), legend = TRUE)