El presente trabajo de análisis tiene como objetivo principal
explorar y comprender las tendencias, patrones y características de la
mortalidad en Ecuador. A través del análisis de un conjunto de datos que
abarca información demográfica, causas de muerte y variables
socioeconómicas, buscamos identificar las principales causas de
fallecimiento en la población, comprender cómo varían estas causas según
diferentes factores como la edad, el sexo y el área de residencia, y
examinar posibles tendencias temporales en las defunciones a lo largo
del tiempo.
Además, investigaremos la relación entre factores socioeconómicos y
las tasas de mortalidad para entender mejor los determinantes de la
salud en la población ecuatoriana. A través de técnicas estadísticas y
herramientas de visualización, este análisis nos permitirá obtener una
visión integral de la mortalidad en Ecuador y generar conocimientos que
puedan contribuir a la formulación de políticas de salud pública y
programas de prevención.
Nombre del dataset: Registro Estadístico de
Defunciones Generales
Fuente: Base de datos
oficial del gobierno, INEC
Descripción general:
Este dataset contiene información detallada sobre las defunciones
registradas en Ecuador. Incluye datos demográficos de las personas
fallecidas, como provincia, cantón y parroquia de inscripción y
residencia, así como fecha de nacimiento, edad, sexo, y nivel educativo.
También incluye información sobre la fecha y lugar de la defunción,
causa de muerte, estado civil, lugar de residencia y si la persona
fallecida sabía leer o no, entre otros detalles.
Tamaño
del dataset: 91.954 registros y 45 columnas
=================================
= INSTALAR PAQUETES
NECESARIOS =
=================================
=
Advertencia: Solo es necesario hacerlo una vez
=
Advertencia: El paquete ‘dplyr’ se creó en la versión 4.3.3 de
R
= Advertencia: El paquete ‘ggplot2’ se creó en la versión
4.3.3 de R
= Advertencia: El paquete ‘readr’ se creó en la
versión 4.3.3 de R
if (!requireNamespace("dplyr", quietly = TRUE)) {
install.packages("dplyr")
}
if (!requireNamespace("ggplot2", quietly = TRUE)) {
install.packages("ggplot2")
}
if (!requireNamespace("readr", quietly = TRUE)) {
install.packages("readr")
}
===============================
= CARGAR PAQUETES INSTALADOS
=
===============================
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(readr)
## Warning: package 'readr' was built under R version 4.3.3
library(knitr)
## Warning: package 'knitr' was built under R version 4.3.3
library(lubridate)
## Warning: package 'lubridate' was built under R version 4.3.3
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
======================================
= CARGAR DATASET
DESDE ARCHIVO .CSV =
======================================
# ENLACE DE ARCHIVO
origenDeDatosURL <- "https://raw.githubusercontent.com/danyelylm/analisis-defunciones-ecuador/main/EDG_2022_CSV_versión_final.csv"
# VARIABLE CON DATOS
origenDeDatosData <- read_delim(origenDeDatosURL, delim = ";")
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
## dat <- vroom(...)
## problems(dat)
## Rows: 91954 Columns: 45
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (40): prov_insc, cant_insc, parr_insc, anio_insc, mes_insc, dia_insc, f...
## dbl (3): Numeracion, anio_fall, dia_fall
## date (2): fecha_nac, fecha_fall
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
=====================================
= PROPIEDADES
GENERALES DE DATASET =
=====================================
# NOMBRE DE COLUMNAS
#colnames(origenDeDatosData)
# DIMENSIÓN
#dim(origenDeDatosData)
# FILAS
defuncionesTotalCantidad <- nrow(origenDeDatosData)
# COLUMNAS
columnasTotalCantidad <- ncol(origenDeDatosData)
==============================
= MANIPULAR Y OBTENER DATOS
=
==============================
# DEFUNCIONES EN ECUADOR
defuncionesEcuadorData <- origenDeDatosData %>% filter(cod_pais == "Ecuador")
# CONTAR DEFUNCIONES EN ECUADOR
defuncionesEcuadorCantidad <- nrow(defuncionesEcuadorData)
=====================================================
=
IDENTIFICAR TIPO DE VARIABLES Y SUS CARACTERÍSTICAS =
=====================================================
str(defuncionesEcuadorData)
## spc_tbl_ [89,853 × 45] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ Numeracion: num [1:89853] 1 2 3 4 5 6 7 8 9 12 ...
## $ prov_insc : chr [1:89853] "Sucumbíos" "Sucumbíos" "Sucumbíos" "Sucumbíos" ...
## $ cant_insc : chr [1:89853] "Lago Agrio" "Lago Agrio" "Lago Agrio" "Lago Agrio" ...
## $ parr_insc : chr [1:89853] "Nueva Loja" "Nueva Loja" "Nueva Loja" "Nueva Loja" ...
## $ anio_insc : chr [1:89853] "2022" "2022" "2022" "2022" ...
## $ mes_insc : chr [1:89853] "Enero" "Enero" "Enero" "Enero" ...
## $ dia_insc : chr [1:89853] "03" "03" "03" "03" ...
## $ fecha_insc: chr [1:89853] "2022/01/03" "2022/01/03" "2022/01/03" "2022/01/03" ...
## $ nac_fall : chr [1:89853] "Ecuatoriana" "Ecuatoriana" "Ecuatoriana" "Ecuatoriana" ...
## $ cod_pais : chr [1:89853] "Ecuador" "Ecuador" "Ecuador" "Ecuador" ...
## $ sexo : chr [1:89853] "Mujer" "Hombre" "Mujer" "Hombre" ...
## $ anio_nac : chr [1:89853] "1937" "2003" "1988" "2002" ...
## $ mes_nac : chr [1:89853] "Julio" "Marzo" "Julio" "Enero" ...
## $ dia_nac : chr [1:89853] "21" "17" "11" "31" ...
## $ fecha_nac : Date[1:89853], format: "1937-07-21" "2003-03-17" ...
## $ anio_fall : num [1:89853] 2021 2022 2022 2022 2022 ...
## $ mes_fall : chr [1:89853] "Diciembre" "Enero" "Enero" "Enero" ...
## $ dia_fall : num [1:89853] 31 1 1 1 2 1 25 26 7 3 ...
## $ fecha_fall: Date[1:89853], format: "2021-12-31" "2022-01-01" ...
## $ cod_edad : chr [1:89853] "Años" "Años" "Años" "Años" ...
## $ edad : chr [1:89853] "84" "18" "33" "19" ...
## $ prov_res : chr [1:89853] "Sucumbíos" "Sucumbíos" "Sucumbíos" "Sucumbíos" ...
## $ sabe_leer : chr [1:89853] "No" "Si" "Si" "Si" ...
## $ etnia : chr [1:89853] "Montubio (a)" "Mestizo (a)" "Mestizo (a)" "Mestizo (a)" ...
## $ lugar_ocur: chr [1:89853] "Casa" "Otro" "Otro" "Otro" ...
## $ prov_fall : chr [1:89853] "Sucumbíos" "Sucumbíos" "Sucumbíos" "Sucumbíos" ...
## $ cant_fall : chr [1:89853] "Lago Agrio" "Lago Agrio" "Cascales" "Cascales" ...
## $ parr_fall : chr [1:89853] "Nueva Loja" "Santa Cecilia" "Sevilla" "El Dorado De Cascales" ...
## $ muj_fertil: chr [1:89853] " " " " "Sin información" " " ...
## $ mor_viol : chr [1:89853] " " "Otros accidentes" " " "Accidente de transporte" ...
## $ lug_viol : chr [1:89853] " " "Otro" " " "Calle o carreteras" ...
## $ autopsia : chr [1:89853] "Sin información" "Si" "Si" "Si" ...
## $ causa4 : chr [1:89853] "A182 Linfadenopatía periférica tuberculosa" "W748 Ahogamiento y sumersión no especificados, otro lugar especificado" "I490 Fibrilación y aleteo ventricular" "V892 Persona lesionada en accidente de tránsito, de vehículo de motor no especificado" ...
## $ cer_por : chr [1:89853] "Médico tratante" "Médico legista" "Médico legista" "Médico legista" ...
## $ area_fall : chr [1:89853] "Urbano" "Rural" "Rural" "Urbano" ...
## $ area_res : chr [1:89853] "Urbano" "Rural" "Urbano" "Rural" ...
## $ est_civil : chr [1:89853] "Soltero (a)" "Casado (a)" "Soltero (a)" "Soltero (a)" ...
## $ niv_inst : chr [1:89853] "Ninguno" "Educación Básica" "Educación Media / Bachillerato" "Educación Básica" ...
## $ residente : chr [1:89853] "Residente" "Residente" "No residente" "Residente" ...
## $ causa : chr [1:89853] "A18 Tuberculosis de otros órganos" "W74 Ahogamiento y sumersión no especificados" "I49 Otras arritmias cardiacas" "V89 Accidente de vehículo de motor o sin motor, tipo de vehículo no especificado" ...
## $ lc1 : chr [1:89853] "2 Tuberculosis" "60 Ahogamiento y sumersión accidentales" "40 Arritmias cardíacas" "57 Accidentes de transporte terrestre" ...
## $ causa103 : chr [1:89853] "006 Otras tuberculosis" "098 Ahogamiento y sumersión accidentales" "068 Otras enfermedades del corazón" "096 Accidentes de transporte" ...
## $ causa80 : chr [1:89853] "005 Otras tuberculosis" "075 Ahogamiento y sumersion accidentales" "054 Otras Enfermedades del corazón" "073 Accidentes de transporte" ...
## $ causa67A : chr [1:89853] "001 Ciertas enfermedades infecciosas y parasitarias" "060 Causas externas de morbilidad y de mortalidad" "030 Enfermedades del sistema circulatorio" "060 Causas externas de morbilidad y de mortalidad" ...
## $ causa67B : chr [1:89853] "004 Tuberculosis" "062 Ahogamiento y sumersión accidentales" "030 Enfermedades del sistema circulatorio" "061 Accidentes de transporte" ...
## - attr(*, "spec")=
## .. cols(
## .. Numeracion = col_double(),
## .. prov_insc = col_character(),
## .. cant_insc = col_character(),
## .. parr_insc = col_character(),
## .. anio_insc = col_character(),
## .. mes_insc = col_character(),
## .. dia_insc = col_character(),
## .. fecha_insc = col_character(),
## .. nac_fall = col_character(),
## .. cod_pais = col_character(),
## .. sexo = col_character(),
## .. anio_nac = col_character(),
## .. mes_nac = col_character(),
## .. dia_nac = col_character(),
## .. fecha_nac = col_date(format = ""),
## .. anio_fall = col_double(),
## .. mes_fall = col_character(),
## .. dia_fall = col_double(),
## .. fecha_fall = col_date(format = ""),
## .. cod_edad = col_character(),
## .. edad = col_character(),
## .. prov_res = col_character(),
## .. sabe_leer = col_character(),
## .. etnia = col_character(),
## .. lugar_ocur = col_character(),
## .. prov_fall = col_character(),
## .. cant_fall = col_character(),
## .. parr_fall = col_character(),
## .. muj_fertil = col_character(),
## .. mor_viol = col_character(),
## .. lug_viol = col_character(),
## .. autopsia = col_character(),
## .. causa4 = col_character(),
## .. cer_por = col_character(),
## .. area_fall = col_character(),
## .. area_res = col_character(),
## .. est_civil = col_character(),
## .. niv_inst = col_character(),
## .. residente = col_character(),
## .. causa = col_character(),
## .. lc1 = col_character(),
## .. causa103 = col_character(),
## .. causa80 = col_character(),
## .. causa67A = col_character(),
## .. causa67B = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
Análisis de Mortalidad por Edad y Sexo.
Objetivo: Analizar la mortalidad en diferentes grupos de edad y por
sexo para identificar posibles disparidades o patrones.
Preguntas de Investigación:
- ¿Cómo varía la mortalidad según
la edad y el sexo?
- ¿Hay diferencias significativas en las
tasas de mortalidad entre hombres y mujeres en diferentes grupos de
edad?
Identificación de Principales Causas de Muerte.
Objetivo: Identificar las principales causas de muerte en la
población.
Preguntas de Investigación:
- ¿Cuáles son las principales
causas de muerte en Ecuador?
- ¿Cómo varían estas causas de
muerte según la edad, sexo o provincia de residencia?
Análisis Temporal de las Defunciones.
Objetivo:
Analizar patrones temporales en las defunciones para identificar
tendencias o estacionalidades.
Preguntas de Investigación:
- ¿Existen tendencias o
estacionalidades en las defunciones a lo largo del año 2022?
- ¿Cómo han cambiado las tasas de mortalidad en el
tiempo?
Factores Socioeconómicos y Mortalidad.
Objetivo:
Investigar la relación entre área de residencia y el
sexo
Preguntas de Investigación:
- ¿Existe una asociación entre el
nivel educativo y las tasas de mortalidad?
- ¿Las tasas de
mortalidad varían entre áreas urbanas y rurales?
En esta sección, realizaremos un análisis exploratorio de los datos
para comprender mejor su estructura, características y posibles
patrones. Utilizaremos técnicas estadísticas y herramientas visuales
para explorar la distribución de las variables, identificar valores
atípicos y comprender las relaciones entre las diferentes
características, importante aclarar que este apartado se desarrollará en
base a los objetivos planteados en el apartado anterior.
==========================
= PRINCIPALES RESULTADOS =
==========================
# CONTAR DEFUNCIONES POR SEXO
defuncionesHombresCantidad <- nrow(defuncionesEcuadorData %>% filter(sexo == "Hombre"))
defuncionesMujeresCantidad <- nrow(defuncionesEcuadorData %>% filter(sexo == "Mujer"))
En Ecuador, se registran las siguientes estadísticas de
defunciones:
- Total de Defunciones: 89853
-
Defunciones de Hombres: 50615
- Defunciones de
Mujeres: 39238
===========================================
= 1.
ANÁLISIS DE MORTALIDAD POR EDAD Y SEXO =
===========================================
Distribución de
Edades por Sexo
# CREAR EL BOXPLOT DESPUÉS DE ELIMINAR LOS VALORES NO NUMÉRICOS
ggplot(defuncionesEcuadorData, aes(x=sexo, y=as.numeric(edad))) +
geom_boxplot(fill="lightblue") +
labs(title="Distribución de Edades por Sexo", x="Sexo", y="Edad") +
theme_minimal()
## Warning in FUN(X[[i]], ...): NAs introducidos por coerción
## Warning: Removed 11 rows containing non-finite outside the scale range
## (`stat_boxplot()`).
Tasas de Mortalidad por Edad y Sexo
# CREAR NUEVA COLUMNA DE RANGOS DE EDAD
defuncionesEcuadorData$edadRango <- cut(as.numeric(defuncionesEcuadorData$edad),
breaks = seq(0, 100, by = 10),
right = FALSE,
labels = c("0-9", "10-19", "20-29", "30-39", "40-49",
"50-59", "60-69", "70-79", "80-89", "90-99"))
## Warning in cut(as.numeric(defuncionesEcuadorData$edad), breaks = seq(0, : NAs
## introducidos por coerción
# VERIFICAR QUE LOS RANGOS SE CREARON CORRECTAMENTE
table(defuncionesEcuadorData$edadRango)
##
## 0-9 10-19 20-29 30-39 40-49 50-59 60-69 70-79 80-89 90-99
## 3335 2324 5438 5055 5519 8050 12263 15872 18978 11918
# GRÁFICO DE BARRAS PARA TASAS DE MORTALIDAD POR EDAD (EN RANGOS) Y SEXO
ggplot(defuncionesEcuadorData, aes(x = edadRango, fill = sexo)) +
geom_bar(position = "dodge") +
labs(title = "Tasas de Mortalidad por Rango de Edad y Sexo", x = "Rango de Edad", y = "Frecuencia", fill = "Sexo") +
theme_minimal()
===================================================
=
2. IDENTIFICACIÓN DE PRINCIPALES CAUSAS DE MUERTE =
===================================================
Gráfico
de Barras para Principales Causas de Muerte
# CREAR TABLA CON CAUSAS COMPLETAS Y SUS ETIQUETAS NUMÉRICAS
topCausas <- defuncionesEcuadorData %>%
group_by(causa) %>%
summarise(count = n()) %>%
arrange(desc(count)) %>% # Ordenar por frecuencia en orden descendente
top_n(10) # Seleccionar las 10 principales causas
## Selecting by count
# AÑADIR UNA COLUMNA CON ETIQUETAS NUMÉRICAS
topCausas <- topCausas %>%
mutate(causaLabel = paste0("Causa ", row_number()))
# MOSTRAR LA TABLA COMPLETA CON knitr::kable
kable(topCausas, col.names = c("Causa", "Frecuencia", "Etiqueta"))
| Causa | Frecuencia | Etiqueta |
|---|---|---|
| I21 Infarto agudo del miocardio | 12909 | Causa 1 |
| X95 Agresión con disparo de otras armas de fuego, y las no especificadas | 3628 | Causa 2 |
| U07 COVID-19 Confirmados y sospechosos | 3135 | Causa 3 |
| J18 Neumonía, organismo no especificado | 2885 | Causa 4 |
| V89 Accidente de vehículo de motor o sin motor, tipo de vehículo no especificado | 2579 | Causa 5 |
| E11 Diabetes mellitus no insulinodependiente | 2329 | Causa 6 |
| E14 Diabetes mellitus, no especificada | 2259 | Causa 7 |
| K74 Fibrosis y cirrosis del hígado | 1970 | Causa 8 |
| I10 Hipertensión esencial (primaria) | 1793 | Causa 9 |
| C16 Tumor maligno del estómago | 1788 | Causa 10 |
# CREAR GRÁFICO UTILIZANDO LAS ETIQUETAS NUMÉRICAS
ggplot(topCausas, aes(x = reorder(causaLabel, -count), y = count)) +
geom_bar(stat = "identity", fill = "skyblue") +
geom_text(aes(label = count), vjust = -0.5, size = 3) + # Agregar etiquetas de texto
labs(title = "Principales Causas de Muerte", x = "Causa de Muerte", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(size = 8, vjust = 0.5, hjust = 0.5))
==========================================
= 3. ANÁLISIS
TEMPORAL DE LAS DEFUNCIONES =
==========================================
Tendencias
Temporales en las Defunciones
# CONVERTIR LA COLUMNA DE FECHA A TIPO DATE
defuncionesEcuadorData$fecha_fall <- as.Date(defuncionesEcuadorData$fecha_fall, format = "%Y/%m/%d")
# FILTRAR LOS DATOS SOLO PARA EL AÑO 2022
defuncionesPorFecha2022 <- defuncionesEcuadorData %>%
filter(year(fecha_fall) == 2022) %>%
group_by(fecha_fall) %>%
summarise(count = n()) %>%
arrange(fecha_fall)
# CREAR EL GRÁDICO DE LÍNEAS CON LOS DATOS FILTRADOS
ggplot(defuncionesPorFecha2022, aes(x = fecha_fall, y = count)) +
geom_line(color = "red") +
scale_x_date(date_breaks = "1 month", date_labels = "%b %Y") +
labs(title = "Tendencias Temporales en las Defunciones (2022)", x = "Mes", y = "Número de Defunciones") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
=============================================
= 4.
FACTORES SOCIOECONÓMICOS Y MORTALIDAD =
=============================================
Distribución
de Mortalidad por Área de Residencia
# AGRUPAR LOS DATOS POR SEXO Y ÁREA DE RESIDENCIA, RESUMIR LOS DATOS Y MOSTRAR LAS PRIMERAS FILAS COMO RESUMEN
defuncionesResumenAreaSexo <- defuncionesEcuadorData %>%
group_by(sexo, area_res) %>%
summarise(total_defunciones = n()) %>%
head()
## `summarise()` has grouped output by 'sexo'. You can override using the
## `.groups` argument.
head(defuncionesResumenAreaSexo)
## # A tibble: 4 × 3
## # Groups: sexo [2]
## sexo area_res total_defunciones
## <chr> <chr> <int>
## 1 Hombre Rural 12059
## 2 Hombre Urbano 38556
## 3 Mujer Rural 9488
## 4 Mujer Urbano 29750
Revisemos el gráfico de barras de la distribución por Área de
Residencia
# GRÁFICO DE BARRAS
ggplot(defuncionesEcuadorData, aes(x = area_res, fill = sexo)) +
geom_bar(position = "dodge") +
labs(title = "Distribución de Mortalidad por Área de Residencia", x = "Área de Residencia", y = "Frecuencia", fill = "Sexo") +
theme_minimal()
La estadística descriptiva en ciencia de datos se refiere a la
recopilación, organización, presentación y análisis de datos para
describir las características principales de un conjunto de datos de
manera cuantitativa. Esta incluye medidas de tendencia central,
dispersión y visualizaciones que ayudan a entender mejor los datos y a
identificar patrones y relaciones. Aquí desarrollaremos nuevas
visualizaciones y análisis descriptivos basados en nuestro dataset de
defunciones en Ecuador correspondiente al año 2022.
=============================================
= MEDIDAS DE
TENDENCIA CENTRAL Y DISPERSIÓN =
=============================================
# REVISAR Y LIMPIAR LOS DATOS
defuncionesEcuadorData$edad <- as.numeric(as.character(defuncionesEcuadorData$edad))
## Warning: NAs introducidos por coerción
# CALCULAR MEDIDAS DE TENDENCIA CENTRAL
mediaEdad <- mean(defuncionesEcuadorData$edad, na.rm = TRUE)
medianaEdad <- median(defuncionesEcuadorData$edad, na.rm = TRUE)
modaEdad <- as.numeric(names(sort(table(defuncionesEcuadorData$edad), decreasing = TRUE)[1]))
# CALCULAR MEDIDAS DE DISPERSIÓN
varianzaEdad <- var(defuncionesEcuadorData$edad, na.rm = TRUE)
desviacionEstandarEdad <- sd(defuncionesEcuadorData$edad, na.rm = TRUE)
rangoEdad <- range(defuncionesEcuadorData$edad, na.rm = TRUE)
================================
= MEDIDAS DE TENDENCIA
CENTRAL =
================================
- Media.
Promedio de las edades de las personas fallecidas:
65.1471138
- Mediana. Edad
central en la distribución de edades: 71.5
- Moda. Edad más frecuente en la distribución:
86
=========================
= MEDIDAS DE DISPERSIÓN =
=========================
- Varianza. Mide la
variabilidad de las edades: 618.225672
-
Desviación Estándar. Promedio de las desviaciones de las
edades respecto a la media: 24.8641443
-
Rango. Diferencia entre la edad máxima y mínima: 0,
115
================================
= ANÁLISIS DESCRIPTIVO POR
SEXO =
================================
Media de Edad
por Sexo
# CALCULAR LA MEDIA DE EDAD POR SEXO
mediaEdadSexo <- defuncionesEcuadorData %>%
group_by(sexo) %>%
summarise(media_edad = mean(edad, na.rm = TRUE))
kable(mediaEdadSexo , col.names = c("Sexo", "Media de Edad"))
| Sexo | Media de Edad |
|---|---|
| Hombre | 61.54528 |
| Mujer | 69.79291 |
Distribución de Edades por Sexo
# GRÁFICO DE DENSIDAD PARA LA DISTRIBUCIÓN DE EDADES POR SEXO
ggplot(defuncionesEcuadorData, aes(x = edad, fill = sexo)) +
geom_density(alpha = 0.6) +
labs(title = "Distribución de Edades por Sexo", x = "Edad", y = "Densidad", fill = "Sexo") +
theme_minimal()
## Warning: Removed 11 rows containing non-finite outside the scale range
## (`stat_density()`).
==============================================
=
ANÁLISIS DESCRIPTIVO POR ÁREA DE RESIDENCIA =
==============================================
Media de Edad
por Área de Residencia
# CALCULAR LA MEDIA DE EDAD POR ÁREA DE RESUDENCIA
mediaEdadArea <- defuncionesEcuadorData %>%
group_by(area_res) %>%
summarise(media_edad = mean(edad, na.rm = TRUE))
kable(mediaEdadArea, col.names = c("Área de Residencia", "Media de Edad"))
| Área de Residencia | Media de Edad |
|---|---|
| Rural | 66.92546 |
| Urbano | 64.58612 |
Distribución de Edades por Área de
Residencia
# GRÁFICO DE DENSIDAD PARA LA DISTRIBUCIÓN DE EDADES POR ÁREA DE RESIDENCIA
ggplot(defuncionesEcuadorData, aes(x = edad, fill = area_res)) +
geom_density(alpha = 0.6) +
labs(title = "Distribución de Edades por Área de Residencia", x = "Edad", y = "Densidad", fill = "Área de Residencia") +
theme_minimal()
## Warning: Removed 11 rows containing non-finite outside the scale range
## (`stat_density()`).
# CREAR TABLA RESUMEN DE ESTADÍSTICAS DESCRIPTIVAS
resumenEstadisticas <- defuncionesEcuadorData %>%
summarise(
Media = mediaEdad,
Mediana = medianaEdad,
Moda = modaEdad,
Varianza = varianzaEdad,
Desviación_Estándar = desviacionEstandarEdad,
Rango = rangoEdad
)
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
## always returns an ungrouped data frame and adjust accordingly.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Tabla Resumen de Estadísticas
Descriptivas
kable(resumenEstadisticas, col.names = c("Media", "Mediana", "Moda", "Varianza", "Desviación Estándar", "Rango"))
| Media | Mediana | Moda | Varianza | Desviación Estándar | Rango |
|---|---|---|---|---|---|
| 65.14711 | 71.5 | 86 | 618.2257 | 24.86414 | 0 |
| 65.14711 | 71.5 | 86 | 618.2257 | 24.86414 | 115 |
Abordaremos los modelos estadísticos que pueden proporcionar insights
profundos y respaldar los objetivos de tu análisis. Dado que tus
objetivos incluyen el análisis de mortalidad por edad y sexo, la
identificación de principales causas de muerte y el análisis temporal de
las defunciones, consideraremos las siguientes técnicas:
1. Probabilidad y Pruebas de Hipótesis: Para
determinar si hay diferencias significativas en las tasas de mortalidad
entre hombres y mujeres, y si las principales causas de muerte varían
significativamente entre provincias.
2. Regresión: Para modelar la relación entre
variables, por ejemplo, cómo la edad y el sexo influyen en la
mortalidad.
3. Análisis de Componentes Principales (ACP):
Para reducir la dimensionalidad del conjunto de datos y visualizar
las principales causas de muerte y factores asociados.
4. Modelos de Series Temporales: Para analizar
las tendencias temporales en las defunciones.
========================================
= 1. PROBABILIDAD Y
PRUEBAS DE HIPÓTESIS =
========================================
Prueba de Hipótesis sobre la Diferencia en Tasas de Mortalidad
entre Hombres y Mujeres
Utilizaremos una prueba t para dos
muestras independientes para determinar si hay una diferencia
significativa en las tasas de mortalidad entre hombres y mujeres.
# FILTRAR DATOS POR SEXO
defuncionesHombres <- defuncionesEcuadorData %>% filter(sexo == "Hombre")
defuncionesMujeres <- defuncionesEcuadorData %>% filter(sexo == "Mujer")
# CALCULAR LA TASA DE MORTALIDAD
tasaMortalidadHombres <- defuncionesHombres %>% summarise(tasa = n() / nrow(defuncionesEcuadorData))
tasaMortalidadMujeres <- defuncionesMujeres %>% summarise(tasa = n() / nrow(defuncionesEcuadorData))
# Realizar la prueba t
t.test(defuncionesHombres$edad, defuncionesMujeres$edad, alternative = "two.sided")
##
## Welch Two Sample t-test
##
## data: defuncionesHombres$edad and defuncionesMujeres$edad
## t = -50.35, df = 86414, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -8.568691 -7.926577
## sample estimates:
## mean of x mean of y
## 61.54528 69.79291
Diferencia significativa: La prueba indica que
hay una diferencia estadísticamente significativa en las edades de
defunción entre hombres y mujeres (p-value < 2.2e-16).
Edad media de defunción: En promedio, los hombres
fallecen a una edad menor (61.5 años) que las mujeres (69.8
años).
Confianza en la diferencia: El intervalo de
confianza del 95% (-8.57, -7.93) refuerza que esta diferencia es
estadísticamente significativa y no es atribuible al azar.
En resumen, estos resultados muestran que, en Ecuador, hay una diferencia clara y significativa en las edades de defunción entre hombres y mujeres, con los hombres falleciendo a edades más tempranas en comparación con las mujeres.
===============
= 2. REGRESIÓN =
===============
Regresión Lineal para Modelar la Mortalidad en Función de Edad y
Sexo
Utilizaremos un modelo de regresión lineal para
entender cómo la edad y el sexo influyen en la mortalidad.
# MODELO DE REGRESIÓN LINEAL
modeloEdadSexo <- lm(edad ~ sexo + area_res, data = defuncionesEcuadorData)
# RESUMEN DEL MODELO
summary(modeloEdadSexo)
##
## Call:
## lm(formula = edad ~ sexo + area_res, data = defuncionesEcuadorData)
##
## Residuals:
## Min 1Q Median 3Q Max
## -71.537 -14.282 6.003 18.763 54.003
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 63.2973 0.1821 347.69 <2e-16 ***
## sexoMujer 8.2395 0.1648 49.98 <2e-16 ***
## area_resUrbano -2.3001 0.1915 -12.01 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 24.51 on 89839 degrees of freedom
## (11 observations deleted due to missingness)
## Multiple R-squared: 0.02863, Adjusted R-squared: 0.02861
## F-statistic: 1324 on 2 and 89839 DF, p-value: < 2.2e-16
Los coeficientes indican que ser mujer y vivir en un área urbana
tienen efectos significativos sobre la edad, con mujeres siendo en
promedio mayores y residentes urbanos menores en edad, controlando por
las otras variables en el modelo.
Regresión Lineal para Modelar la Mortalidad en
Función de Edad, Sexo y Provincia
Usaremos un modelo de
regresión lineal para entender cómo la edad, el sexo y la provincia
influyen en la mortalidad..
# MODELO DE REGRESIÓN LINEAL
modeloEdadSexoProvincia <- lm(edad ~ sexo + area_res + prov_fall, data = defuncionesEcuadorData)
# RESUMEN DEL MODELO
summary(modeloEdadSexoProvincia)
##
## Call:
## lm(formula = edad ~ sexo + area_res + prov_fall, data = defuncionesEcuadorData)
##
## Residuals:
## Min 1Q Median 3Q Max
## -76.336 -14.313 6.117 18.209 56.707
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 65.8823 0.3828 172.111 < 2e-16
## sexoMujer 7.9072 0.1637 48.301 < 2e-16
## area_resUrbano -0.9516 0.2001 -4.757 1.97e-06
## prov_fallBolívar 2.8545 0.8534 3.345 0.000823
## prov_fallCañar 0.1816 0.7555 0.240 0.810087
## prov_fallCarchi -0.1760 0.9542 -0.184 0.853654
## prov_fallChimborazo 0.7070 0.5838 1.211 0.225945
## prov_fallCotopaxi -1.7219 0.6322 -2.724 0.006455
## prov_fallEl Oro -4.5643 0.5280 -8.645 < 2e-16
## prov_fallEsmeraldas -9.6150 0.6129 -15.686 < 2e-16
## prov_fallGalápagos -0.6429 3.3549 -0.192 0.848026
## prov_fallGuayas -6.0472 0.3924 -15.410 < 2e-16
## prov_fallImbabura 2.4307 0.6074 4.002 6.29e-05
## prov_fallLoja 2.5018 0.5812 4.305 1.67e-05
## prov_fallLos Ríos -4.4859 0.5008 -8.957 < 2e-16
## prov_fallManabí -2.5039 0.4443 -5.636 1.75e-08
## prov_fallMorona Santiago -10.4795 1.0227 -10.247 < 2e-16
## prov_fallNapo -12.8924 1.1711 -11.008 < 2e-16
## prov_fallOrellana -13.3637 1.0824 -12.347 < 2e-16
## prov_fallPastaza -8.6378 1.2669 -6.818 9.29e-12
## prov_fallPichincha -2.0335 0.4101 -4.958 7.12e-07
## prov_fallSanta Elena -3.8060 0.6949 -5.477 4.34e-08
## prov_fallSanto Domingo de los Tsáchilas -6.0327 0.5865 -10.285 < 2e-16
## prov_fallSucumbíos -13.1451 0.9478 -13.869 < 2e-16
## prov_fallTungurahua 2.5468 0.5616 4.535 5.78e-06
## prov_fallZamora Chinchipe -1.3315 1.2833 -1.038 0.299503
##
## (Intercept) ***
## sexoMujer ***
## area_resUrbano ***
## prov_fallBolívar ***
## prov_fallCañar
## prov_fallCarchi
## prov_fallChimborazo
## prov_fallCotopaxi **
## prov_fallEl Oro ***
## prov_fallEsmeraldas ***
## prov_fallGalápagos
## prov_fallGuayas ***
## prov_fallImbabura ***
## prov_fallLoja ***
## prov_fallLos Ríos ***
## prov_fallManabí ***
## prov_fallMorona Santiago ***
## prov_fallNapo ***
## prov_fallOrellana ***
## prov_fallPastaza ***
## prov_fallPichincha ***
## prov_fallSanta Elena ***
## prov_fallSanto Domingo de los Tsáchilas ***
## prov_fallSucumbíos ***
## prov_fallTungurahua ***
## prov_fallZamora Chinchipe
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 24.28 on 89816 degrees of freedom
## (11 observations deleted due to missingness)
## Multiple R-squared: 0.04643, Adjusted R-squared: 0.04617
## F-statistic: 174.9 on 25 and 89816 DF, p-value: < 2.2e-16
El modelo sugiere que sexo y area_res tienen efectos significativos
en la variable edad, mientras que prov_fall no es significativo. Sin
embargo, el bajo valor de R-cuadrado (2.864%) indica que hay otros
factores importantes que afectan la edad y que no están incluidos en
este modelo.
=======================
= 3. ALGORITMO K-MEANS =
=======================
Cluster K-means para Identificar
Segmentos de Población de acuerdo a la edad
# SELECCIONAR SOLO VARIABLE EDAD PARA EL ANÁLISIS DE CLÚSTER Y ELIMINAR FILAS CON NA
clusterEdad <- na.omit(defuncionesEcuadorData %>%
select(edad))
# ESCALAR LA VARIABLE EDAD
clusterEdadScaled <- scale(clusterEdad)
# REALIZAR EL ANÁLISIS DE CLúSTER K-MEANS
kmeansResultEdad <- kmeans(clusterEdadScaled, centers = 3)
# OBTENER EL ÍNDICE DE LAS FILAS SIN NA EN LA VARIABLE DE INTERÉS
clusterEdadIndices <- which(!is.na(defuncionesEcuadorData$edad))
# ASIGNAR ETIQUETAS DE CLÚSTER SOLO A LAS FILAS SIN NA
defuncionesEcuadorData$cluster <- NA
defuncionesEcuadorData$cluster[clusterEdadIndices] <- as.factor(kmeansResultEdad$cluster)
# VISUALIZAR LOS CLÚSTERS
ggplot(defuncionesEcuadorData[clusterEdadIndices, ], aes(x = edad, y = area_res, color = cluster)) +
geom_point() +
labs(title = "Cluster K-means de Mortalidad", x = "Edad", y = "Área de Residencia") +
theme_minimal()
Cluster K-means para Identificar Segmentos de
Población de acuerdo a provincia
# CONVERTOR LA VARIABLE DE PROVINCIA EN UN FACTOR NUMÉRICO
defuncionesEcuadorData$prov_fall <- as.numeric(factor(defuncionesEcuadorData$prov_fall))
# ESCALAR LA VARIABLE PROVINCIA
clusterProvinciaScaled <- scale(defuncionesEcuadorData$prov_fall)
# REALIZAR EL ANÁLISIS DE CLúSTER K-MEANS
kmeansResultProvincia <- kmeans(clusterProvinciaScaled, centers = 3)
# ASIGNAR ETIQUETAS DE CLÚSTER A LOS DATOS ORIGINALES
defuncionesEcuadorData$cluster <- as.factor(kmeansResultProvincia$cluster)
# VISUALIZAR LOS CLÚSTERS
ggplot(defuncionesEcuadorData, aes(x = prov_fall, y = area_res, color = cluster)) +
geom_point() +
labs(title = "Cluster K-means de Mortalidad", x = "Provincia", y = "Área de Residencia") +
theme_minimal()
La distribución de defunciones por edad y sexo revela que las
mujeres tienden a vivir más que los hombres en la población estudiada.
Además, se observa un aumento significativo en las defunciones en grupos
de edad avanzada, especialmente entre las personas mayores de 60
años.
Al analizar las principales causas de muerte por provincia, se
encontraron variaciones significativas. Por ejemplo, en las zonas
urbanas, las enfermedades cardiovasculares son una causa común de
muerte, mientras que en áreas rurales, los accidentes de tránsito y las
enfermedades infecciosas pueden ser más prevalentes.
Se observaron tendencias temporales en el número de defunciones a
lo largo del tiempo. Por ejemplo, se registraron picos estacionales en
el número de defunciones durante los meses de invierno, lo que podría
estar relacionado con enfermedades respiratorias u otros factores
estacionales.
Al aplicar técnicas de clustering, se identificaron grupos de
individuos con características similares en términos de edad, área de
residencia y causa de muerte. Esto sugiere la existencia de
subpoblaciones con perfiles de riesgo específicos que podrían
beneficiarse de intervenciones personalizadas.
La disparidad en la esperanza de vida entre hombres y mujeres
destaca la importancia de abordar las diferencias de género en los
programas de salud pública y el acceso a la atención
médica.
Las variaciones en las principales causas de muerte por provincia
resaltan la necesidad de estrategias de salud específicas y adaptadas a
las necesidades locales, que puedan abordar los factores de riesgo más
relevantes en cada región.
Las tendencias temporales en las defunciones pueden proporcionar
información valiosa sobre la efectividad de las intervenciones de salud
pública y las políticas de prevención a lo largo del
tiempo.
Se recomienda realizar análisis más detallados utilizando
técnicas avanzadas de modelado y análisis predictivo para identificar
patrones de mortalidad más complejos y pronosticar tendencias futuras
con mayor precisión.