Explicación del Dataset
Enlace Dataset: https://www.datos.gov.co/Salud-y-Protecci-n-Social/Tasa-de-mortalidad-por-tipo-de-c-ncer/64it-izw2/about_data
El conjunto de datos proviene del Departamento Administrativo Nacional de Estadística (DANE) y del Instituto Nacional de Cancerología, entidad encargada de la vigilancia epidemiológica del cáncer en Colombia. La base contiene información sobre la tasa de mortalidad cruda por tipo de cáncer (por 100.000 personas-año), agrupada por departamento, en el período comprendido entre 1997 y 2019.
Explicación variables:
Localización: Departamento de interés
Tipo de Cáncer: Tipo de cáncer
El resto de variables numéricas representan la tasa de mortalidad por 100k habitantes en cada año.
csv_path <- "C:/Users/CRISTIAN/Desktop/dataViz/tarea_geo_shiny/Tasa_mortalidad_cancer.csv"
df <- read_csv(csv_path)
## Rows: 1819 Columns: 25
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): Tipo de Cáncer, Localización
## dbl (23): 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, ...
##
## ℹ 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.
df <- janitor::clean_names(df)
colnames(df)
## [1] "tipo_de_cancer" "localizacion" "x1997" "x1998"
## [5] "x1999" "x2000" "x2001" "x2002"
## [9] "x2003" "x2004" "x2005" "x2006"
## [13] "x2007" "x2008" "x2009" "x2010"
## [17] "x2011" "x2012" "x2013" "x2014"
## [21] "x2015" "x2016" "x2017" "x2018"
## [25] "x2019"
Revisamos dimensiones y estructura del Dataset
dim(df)
## [1] 1819 25
str(df)
## spc_tbl_ [1,819 × 25] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ tipo_de_cancer: chr [1:1819] "Labio" "Labio" "Labio" "Labio" ...
## $ localizacion : chr [1:1819] "Amazonas" "Antioquia" "Arauca" "Archipiélago de San Andrés, Providencia" ...
## $ x1997 : num [1:1819] 0 0 0 0 0 0 0.1 0.1 0.1 0 ...
## $ x1998 : num [1:1819] 0 0 0 0 0 0 0.1 0.1 0.1 0 ...
## $ x1999 : num [1:1819] 0 0 0 0 0 0 0.1 0.1 0.1 0 ...
## $ x2000 : num [1:1819] 0 0 0 0 0 0 0.1 0.1 0.1 0 ...
## $ x2001 : num [1:1819] 0 0 0 0 0.1 0 0.2 0.1 0.1 0 ...
## $ x2002 : num [1:1819] 0 0 0 0 0.1 0 0.2 0.1 0.1 0 ...
## $ x2003 : num [1:1819] 0 0 0 0 0.1 0 0.2 0.1 0.1 0 ...
## $ x2004 : num [1:1819] 0 0 0 0 0.1 0 0.2 0.1 0.1 0 ...
## $ x2005 : num [1:1819] 0 0 0 0 0.1 0 0 0.1 0.1 0 ...
## $ x2006 : num [1:1819] 0 0.1 0 0 0 0 0.1 0.1 0.1 0.2 ...
## $ x2007 : num [1:1819] 0 0 0 0 0 0 0.1 0.2 0.1 0.2 ...
## $ x2008 : num [1:1819] 0 0 0 0 0 0 0.1 0.2 0.1 0.2 ...
## $ x2009 : num [1:1819] 0 0 0 0 0 0 0.1 0.2 0.1 0.2 ...
## $ x2010 : num [1:1819] 0 0 0 0 0 0 0.1 0 0.1 0.2 ...
## $ x2011 : num [1:1819] 0 0 0 0 0 0 0 0 0.1 0 ...
## $ x2012 : num [1:1819] 0 0 0.4 0 0.1 0 0 0 0.1 0 ...
## $ x2013 : num [1:1819] 0 0 0.4 0 0.1 0 0 0 0.1 0 ...
## $ x2014 : num [1:1819] 1.3 0 0.4 0 0.1 0 0 0.1 0 0 ...
## $ x2015 : num [1:1819] 1.3 0 0.4 0 0.1 0 0 0.1 0 0 ...
## $ x2016 : num [1:1819] 1.3 0 0.4 0 0.1 0 0 0.1 0 0 ...
## $ x2017 : num [1:1819] 1.3 0 0 0 0 0 0 0.1 0 0 ...
## $ x2018 : num [1:1819] 1.3 0 0 0 0 0 0 0.1 0 0 ...
## $ x2019 : num [1:1819] 0 0 0 0 0 0 0 0.1 0 0 ...
## - attr(*, "spec")=
## .. cols(
## .. `Tipo de Cáncer` = col_character(),
## .. Localización = col_character(),
## .. `1997` = col_double(),
## .. `1998` = col_double(),
## .. `1999` = col_double(),
## .. `2000` = col_double(),
## .. `2001` = col_double(),
## .. `2002` = col_double(),
## .. `2003` = col_double(),
## .. `2004` = col_double(),
## .. `2005` = col_double(),
## .. `2006` = col_double(),
## .. `2007` = col_double(),
## .. `2008` = col_double(),
## .. `2009` = col_double(),
## .. `2010` = col_double(),
## .. `2011` = col_double(),
## .. `2012` = col_double(),
## .. `2013` = col_double(),
## .. `2014` = col_double(),
## .. `2015` = col_double(),
## .. `2016` = col_double(),
## .. `2017` = col_double(),
## .. `2018` = col_double(),
## .. `2019` = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
head(df)
## # A tibble: 6 × 25
## tipo_de_cancer localizacion x1997 x1998 x1999 x2000 x2001 x2002 x2003 x2004
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Labio Amazonas 0 0 0 0 0 0 0 0
## 2 Labio Antioquia 0 0 0 0 0 0 0 0
## 3 Labio Arauca 0 0 0 0 0 0 0 0
## 4 Labio Archipiélago d… 0 0 0 0 0 0 0 0
## 5 Labio Atlántico 0 0 0 0 0.1 0.1 0.1 0.1
## 6 Labio Bogotá D.C 0 0 0 0 0 0 0 0
## # ℹ 15 more variables: x2005 <dbl>, x2006 <dbl>, x2007 <dbl>, x2008 <dbl>,
## # x2009 <dbl>, x2010 <dbl>, x2011 <dbl>, x2012 <dbl>, x2013 <dbl>,
## # x2014 <dbl>, x2015 <dbl>, x2016 <dbl>, x2017 <dbl>, x2018 <dbl>,
## # x2019 <dbl>
colSums(is.na(df))
## tipo_de_cancer localizacion x1997 x1998 x1999
## 0 0 0 0 0
## x2000 x2001 x2002 x2003 x2004
## 0 0 0 0 0
## x2005 x2006 x2007 x2008 x2009
## 0 0 0 0 0
## x2010 x2011 x2012 x2013 x2014
## 0 0 0 0 0
## x2015 x2016 x2017 x2018 x2019
## 0 0 0 0 13
Observamos que tenemos 13 valores faltantes en el año 2019. Seleccionamos aquellas instancias con datos faltantes para una inspección.
df %>% filter(is.na(`x2019`))
## # A tibble: 13 × 25
## tipo_de_cancer localizacion x1997 x1998 x1999 x2000 x2001 x2002 x2003 x2004
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Orofaringe Amazonas 0 0 0 0 0 0 0 0
## 2 Orofaringe Arauca 0 0 0 0 0 0 0 0
## 3 Orofaringe Archipiélago … 1.5 1.5 1.5 1.5 1.5 1.5 1.4 1.4
## 4 Orofaringe Guainía 0 0 0 0 0 0 0 0
## 5 Orofaringe Guaviare 0 0 0 0 0 0 0 0
## 6 Orofaringe La Guajira 0 0 0.2 0.2 0.2 0.2 0.2 0
## 7 Orofaringe Vaupés 0 0 0 0 0 0 0 0
## 8 Orofaringe Vichada 0 0 0 0 0 0 0 0
## 9 Nasofaringe Arauca 0 0 0.5 0.5 0.5 0.5 0.5 0
## 10 Nasofaringe Archipiélago … 0 0 0 0 0 0 0 0
## 11 Nasofaringe Putumayo 0 0 0 0 0 0 0 0
## 12 Nasofaringe Vaupés 0 0 0 2.7 2.7 2.7 2.7 2.7
## 13 Nasofaringe Vichada 0 0 0 0 0 0 0 0
## # ℹ 15 more variables: x2005 <dbl>, x2006 <dbl>, x2007 <dbl>, x2008 <dbl>,
## # x2009 <dbl>, x2010 <dbl>, x2011 <dbl>, x2012 <dbl>, x2013 <dbl>,
## # x2014 <dbl>, x2015 <dbl>, x2016 <dbl>, x2017 <dbl>, x2018 <dbl>,
## # x2019 <dbl>
Se identificó la presencia de datos faltantes en las categorías de cáncer de Orofaringe y Nasofaringe. Dado que el objetivo del análisis se centrará exclusivamente en los tipos de cáncer de Colón, Mama, no es necesario aplicar ningún tratamiento o imputación para los valores faltantes.
df <- df %>%
filter(!is.na(x2019))
unique(df$tipo_de_cancer)
## [1] "Labio"
## [2] "Lengua"
## [3] "Cavidad oral"
## [4] "Glándulas salivares"
## [5] "Amigdala"
## [6] "Orofaringe"
## [7] "Hipofaringe"
## [8] "Nasofaringe"
## [9] "Faringe no específica"
## [10] "Esófago"
## [11] "Estómago"
## [12] "Intestino delgado"
## [13] "Vagina"
## [14] "Colon"
## [15] "Recto"
## [16] "Placenta"
## [17] "Ano"
## [18] "Hígado"
## [19] "Hueso"
## [20] "vesícula biliar y otras partes de las vías biliares"
## [21] "Páncreas"
## [22] "Cavidad nasal, oido medio y senos paranasales"
## [23] "Laringe"
## [24] "Tráquea, bronquios y pulmón"
## [25] "Otros órganos Toraxicos"
## [26] "Pelvis renal"
## [27] "Melanoma de piel"
## [28] "Otros canceres de piel"
## [29] "Mesotelioma"
## [30] "Ureter"
## [31] "Sarcoma de Kaposi"
## [32] "Tejido Conjuntivo y otros tejidos blandos"
## [33] "Vulva"
## [34] "Mama"
## [35] "Cuerpo uterino"
## [36] "Otros Órganos genitales femeninos"
## [37] "Riñon"
## [38] "Pene"
## [39] "Póstata"
## [40] "Testículo"
## [41] "Otros órganos genitales masculinos"
## [42] "Vejiga"
## [43] "Otros órganos urinarios"
## [44] "Ojo"
## [45] "Encéfalo y sistema nervioso central"
## [46] "Tiroides"
## [47] "Glándula suprarrenal"
## [48] "Glándulas endocrinas"
## [49] "Linfomas hodgkin"
## [50] "Linfomas no hodgkin"
## [51] "Mieloma múltiple y tumores malignos de células plasmáticas"
## [52] "Enfermedades inmunoproliferativas"
## [53] "Leucemias mieloides"
## [54] "Leucemias no específicas"
## [55] "Otros tipos de cancer y no especificados"
unique(df$localizacion)
## [1] "Amazonas"
## [2] "Antioquia"
## [3] "Arauca"
## [4] "Archipiélago de San Andrés, Providencia"
## [5] "Atlántico"
## [6] "Bogotá D.C"
## [7] "Bolívar"
## [8] "Boyacá"
## [9] "Caldas"
## [10] "Caquetá"
## [11] "Casanare"
## [12] "Cauca"
## [13] "Cesar"
## [14] "Chocó"
## [15] "Córdoba"
## [16] "Cundinamarca"
## [17] "Guainía"
## [18] "Guaviare"
## [19] "Huila"
## [20] "La Guajira"
## [21] "Magdalena"
## [22] "Meta"
## [23] "Nariño"
## [24] "Norte de Santander"
## [25] "Putumayo"
## [26] "Quindio"
## [27] "Risaralda"
## [28] "Santander"
## [29] "Sucre"
## [30] "Tolima"
## [31] "Valle del Cauca"
## [32] "Vaupés"
## [33] "Vichada"
## [34] "Archipiélago de San Andrés. Providencia"
## [35] "Tasa de mortalidad cruda por 100.000 personas-año. en ambos sexos. edades [080+]. cáncer de hígado. Amazonas. Antioquia. Arauca. Archipiélago de San Andrés. Providencia . Atlántico. Bogotá D.C. Bolívar. Boyacá. Caldas. Caquetá. Casanare. Cauca. Cesar. Chocó. Cundinamarca. Córdoba. Guainía. Guaviare. Huila. La Guajira. Magdalena. Meta. Nariño. Norte de Santander. Putumayo. Quindio. Risaralda. Santander. Sucre. Tolima. Valle del Cauca. Vaupés. Vichada. años 1997. 1998. 1999. 2000. 2001. 2002. 2003. 2004. 2005. 2006. 2007. 2008. 2009. 2010. 2011. 2012. 2013. 2014. 2015. 2016. 2017. 2018. 2019"
## [36] "Tasa de mortalidad cruda por 100.000 personas-año, en ambos sexos, edades [0 - 80+], cáncer de placenta, Amazonas, Antioquia, Arauca, Archipiélago de San Andrés, Providencia , Atlántico, Bogotá D.C, Bolívar, Boyacá, Caldas, Caquetá, Casanare, Cauca, Cesar, Chocó, Cundinamarca, Córdoba, Guainía, Guaviare, Huila, La Guajira, Magdalena, Meta, Nariño, Norte de Santander, Putumayo, Quindio, Risaralda, Santander, Sucre, Tolima, Valle del Cauca, Vaupés, Vichada, años 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019"
## [37] "Tasa de mortalidad cruda por 100.000 personas-año, en ambos sexos, edades [0 - 80+], cáncer de pene, Amazonas, Antioquia, Arauca, Archipiélago de San Andrés, Providencia , Atlántico, Bogotá D.C, Bolívar, Boyacá, Caldas, Caquetá, Casanare, Cauca, Cesar, Chocó, Cundinamarca, Córdoba, Guainía, Guaviare, Huila, La Guajira, Magdalena, Meta, Nariño, Norte de Santander, Putumayo, Quindio, Risaralda, Santander, Sucre, Tolima, Valle del Cauca, Vaupés, Vichada, años 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019"
## [38] "Tasa de mortalidad cruda por 100.000 personas-año, en ambos sexos, edades [0 - 80+], cáncer de leucemias no específicas, Amazonas, Antioquia, Arauca, Archipiélago de San Andrés, Providencia , Atlántico, Bogotá D.C, Bolívar, Boyacá, Caldas, Caquetá, Casanare, Cauca, Cesar, Chocó, Cundinamarca, Córdoba, Guainía, Guaviare, Huila, La Guajira, Magdalena, Meta, Nariño, Norte de Santander, Putumayo, Quindio, Risaralda, Santander, Sucre, Tolima, Valle del Cauca, Vaupés, Vichada, años 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019"
Observamos errores en la variable localización, procedemos a eliminarlos
filas_a_eliminar <- grepl("Tasa de mortalidad cruda.*c.ncer", df$localizacion, ignore.case = TRUE)
df <- df[!filas_a_eliminar, ]
df <- df %>%
mutate(localizacion = str_replace(localizacion,
"Archipiélago de San Andrés\\. Providencia",
"Archipiélago de San Andrés, Providencia"))
Revisamos luego de la limpieza
unique(df$localizacion)
## [1] "Amazonas"
## [2] "Antioquia"
## [3] "Arauca"
## [4] "Archipiélago de San Andrés, Providencia"
## [5] "Atlántico"
## [6] "Bogotá D.C"
## [7] "Bolívar"
## [8] "Boyacá"
## [9] "Caldas"
## [10] "Caquetá"
## [11] "Casanare"
## [12] "Cauca"
## [13] "Cesar"
## [14] "Chocó"
## [15] "Córdoba"
## [16] "Cundinamarca"
## [17] "Guainía"
## [18] "Guaviare"
## [19] "Huila"
## [20] "La Guajira"
## [21] "Magdalena"
## [22] "Meta"
## [23] "Nariño"
## [24] "Norte de Santander"
## [25] "Putumayo"
## [26] "Quindio"
## [27] "Risaralda"
## [28] "Santander"
## [29] "Sucre"
## [30] "Tolima"
## [31] "Valle del Cauca"
## [32] "Vaupés"
## [33] "Vichada"
shp_path <- "C:/Users/CRISTIAN/Desktop/dataViz/COLOMBIA/COLOMBIA.SHP"
shp <- st_read(shp_path)
## Reading layer `COLOMBIA' from data source
## `C:\Users\CRISTIAN\Desktop\dataViz\COLOMBIA\COLOMBIA.shp' using driver `ESRI Shapefile'
## Simple feature collection with 33 features and 11 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -81.73575 ymin: -4.227907 xmax: -66.84735 ymax: 13.39453
## Geodetic CRS: WGS 84
unique(shp$DPTO_CNMBR)
## [1] "ANTIOQUIA" "ATLANTICO"
## [3] "BOGOTA D.C." "BOLIVAR"
## [5] "BOYACA" "CALDAS"
## [7] "CAQUETA" "CAUCA"
## [9] "CESAR" "CORDOBA"
## [11] "CUNDINAMARCA" "CHOCO"
## [13] "HUILA" "LA GUAJIRA"
## [15] "MAGDALENA" "META"
## [17] "NARI?O" "NORTE DE SANTANDER"
## [19] "QUINDIO" "RISARALDA"
## [21] "SANTANDER" "SUCRE"
## [23] "TOLIMA" "VALLE DEL CAUCA"
## [25] "ARAUCA" "CASANARE"
## [27] "PUTUMAYO" "AMAZONAS"
## [29] "GUAINIA" "GUAVIARE"
## [31] "VAUPES" "VICHADA"
## [33] "ARCHIPIELAGO DE SAN ANDRES"
Dado que los nombres de los departamentos presentan variaciones en su escritura entre ambas fuentes, empleamos una tabla de equivalencia (diccionario) para poder realizar la unión espacial entre el shapefile geográfico y el dataset tabular.
equivalencias <- data.frame(
shp_name = c("ANTIOQUIA", "ATLANTICO", "BOGOTA D.C.", "BOLIVAR", "BOYACA",
"CALDAS", "CAQUETA", "CAUCA", "CESAR", "CORDOBA", "CUNDINAMARCA",
"CHOCO", "HUILA", "LA GUAJIRA", "MAGDALENA", "META", "NARI?O",
"NORTE DE SANTANDER", "QUINDIO", "RISARALDA", "SANTANDER", "SUCRE",
"TOLIMA", "VALLE DEL CAUCA", "ARAUCA", "CASANARE", "PUTUMAYO",
"AMAZONAS", "GUAINIA", "GUAVIARE", "VAUPES", "VICHADA",
"ARCHIPIELAGO DE SAN ANDRES"),
df_name = c("Antioquia", "Atlántico", "Bogotá D.C", "Bolívar", "Boyacá",
"Caldas", "Caquetá", "Cauca", "Cesar", "Córdoba", "Cundinamarca",
"Chocó", "Huila", "La Guajira", "Magdalena", "Meta", "Nariño",
"Norte de Santander", "Quindio", "Risaralda", "Santander", "Sucre",
"Tolima", "Valle del Cauca", "Arauca", "Casanare", "Putumayo",
"Amazonas", "Guainía", "Guaviare", "Vaupés", "Vichada",
"Archipiélago de San Andrés, Providencia")
)
shp_joined <- shp %>%
left_join(equivalencias, by = c("DPTO_CNMBR" = "shp_name")) %>%
left_join(df, by = c("df_name" = "localizacion"))
library(dplyr)
library(tidyr)
library(ggplot2)
library(sf)
map_data <- shp_joined %>%
select(df_name, tipo_de_cancer, geometry, x2000, x2019) %>%
pivot_longer(cols = c(x2000, x2019),
names_to = "ano",
values_to = "tasa_mortalidad") %>%
mutate(ano = recode(ano,
x2000 = "2000",
x2019 = "2019")) %>%
filter(tipo_de_cancer %in% c("Mama",
"Colon"))
ggplot(map_data) +
geom_sf(aes(fill = tasa_mortalidad), color = "white", size = 0.2) +
facet_grid(tipo_de_cancer ~ ano) +
scale_fill_viridis_c(option = "plasma", direction = -1) +
theme_void() +
labs(title = "Tasa de mortalidad por cáncer en Colombia",
subtitle = "Comparación entre 2000 y 2019",
fill = "Tasa")
1. Liderazgo en Tasas de Cáncer Región Andina y Centro, las regiones con las tasas más altas de cáncer de mama y colon se concentran en la zona andina y los principales centros urbanos del país. Departamentos como Antioquia, Caldas, Risaralda, Quindío, Valle del Cauca, Bogotá D.C., Santander y Atlántico presentan la mayor incidencia. Esta concentración evidencia un patrón de desigualdad territorial claro.
2. Brechas Territoriales Extremas Se identifica una fuerte disparidad norte-sur y centro-periferia. Las tasas de mortalidad en las regiones andinas pueden ser hasta cuatro o cinco veces superiores a las registradas en departamentos de la Amazonía, la Orinoquía y zonas de frontera, como Putumayo, Vaupés, Guainía, Chocó, La Guajira y Caquetá, que reportan las cifras más bajas.
3. Factores Explicativos de las Disparidades La distribución desigual de las tasas de cáncer no refleja únicamente la incidencia de la enfermedad, sino un complejo entramado de factores socioeconómicos y de acceso a la salud:
Capacidad Diagnóstica y Subregistro: Las regiones más desarrolladas cuentan con mayor infraestructura sanitaria (mamógrafos, equipos de TAC, colonoscopios, oncólogos), lo que conduce a una mayor detección y reporte de casos. Por el contrario, las bajas tasas en zonas periféricas son, en gran medida, un indicador de subdiagnóstico y subregistro, no de menor prevalencia de la enfermedad.
Factores Sociodemográficos y Estilo de Vida: El mayor nivel socioeconómico, la urbanización, la exposición a factores de riesgo ambientales (contaminación) y dietas asociadas a estilos de vida urbanos contribuyen al aumento del riesgo en las regiones centrales.
Oportunidad en la Atención: Existe una brecha significativa en el tiempo que transcurre entre la aparición de los síntomas, el diagnóstico definitivo y el inicio del tratamiento. Un mayor nivel de educación en salud en las zonas urbanas acorta este ciclo crítico.
La distribución geográfica de la mortalidad por cáncer en Colombia refleja la profunda desigualdad en el desarrollo regional. Las altas tasas en las regiones andinas y urbanas son, paradójicamente, un signo de su mayor acceso al diagnóstico. Mientras, las bajas tasas en las regiones periféricas son un alarmante indicador de barreras de acceso a la salud y posibles subregistros.