Provides the official population estimates and projections of Ecuador published by the National Institute of Statistics and Censuses (INEC, "Instituto Nacional de Estadística y Censos"), Revision 2024: national (1950-2050), provincial (1990-2035) and cantonal (2010-2035) figures by sex, age and urban/rural area, identified by the codes of the political-administrative division (DPA, "División Político-Administrativa") < https://www.ecuadorencifras.gob.ec/proyecciones-poblacionales/>. Because INEC does not publish projections for parishes, the package also offers a parish-level estimate for 2010-2035 that distributes the official cantonal projection among parishes using their shares in the 2010 and 2022 censuses (logistic extrapolation) and their age and sex structure in the 2022 census (iterative proportional fitting); parish figures always add up to the official cantonal ones. Includes helpers to aggregate ages, join population denominators to case tables and compute rates, convert codes of urban parishes and of the 2026 political-administrative division (CONALI, "Comité Nacional de Límites Internos") to census units, and native integration with the 'geoecu' package to map population on the boundaries of provinces, cantons and parishes. Documentation is in Spanish. Includes conditional territorial population scenarios for 1900-2100 using structural time series, damped extrapolation and hierarchical compositional allocation with Monte Carlo bands.

pobecu da acceso en una línea de código a la población del Ecuador por provincia, cantón y parroquia, desde 1950 hasta 2050, con los códigos de la División Político-Administrativa (DPA). Está pensado para obtener denominadores de tasas, coberturas e indicadores sin descargar ni limpiar hojas de cálculo.
Nota: pobecu es un paquete independiente, desarrollado a título personal. No es un producto oficial del INEC ni de ninguna otra institución. Las cifras nacionales, provinciales y cantonales son las oficiales del INEC, sin modificar. Las parroquiales son una estimación propia del paquete, documentada abajo.
Casi todo indicador de salud pública, educación o planificación necesita un denominador de población: la incidencia de una enfermedad, la mortalidad, la cobertura de vacunación, la razón de médicos por habitante o el tamaño de una población objetivo. En Ecuador esas cifras vienen del INEC en archivos Excel extensos, con formatos que cambian entre revisiones, sin un formato común entre niveles y sin datos parroquiales proyectados.
pobecu resuelve eso:
c(0, 1, 5, 15, 65).pob_unir() y pob_tasa() unen la
población con tu tabla de casos por código DPA, aunque los códigos vengan
de Excel sin ceros a la izquierda.pob_mapa() devuelve la capa sf con
población y densidad. Las diferencias entre las unidades del Censo 2022 y
la DPA del CONALI (2026) que usa geoecu se resuelven automáticamente.data-raw/ y se
regenera cuando el INEC publica una nueva revisión.# install.packages("remotes")
remotes::install_github("f-slg/pobecu", build_vignettes = TRUE)
# Opcional, para mapas
remotes::install_github("f-slg/geoecu")
Los grupos quinquenales vienen dentro del paquete (1,2 MB) y funcionan sin conexión. Las edades simples (2 MB) se descargan automáticamente la primera vez que se piden y se guardan en caché.
La función principal es poblacion():
library(pobecu)
poblacion(nivel = "canton", # "nacional", "provincia", "canton" o "parroquia"
anio = 2025, # uno o varios años; NULL = todos
provincia = NULL, # filtro por nombre o código: "Loja", "11", 11
canton = NULL, # filtro por nombre o código
sexo = FALSE, # TRUE: hombre / mujer
area = FALSE, # TRUE: urbana / rural (2010-2035)
edad = NULL) # NULL, "quinquenal", "simple", "etapas" o cortes
Población de las provincias en 2025:
poblacion("provincia", anio = 2025)
#> dpa_provin provincia anio poblacion
#> 1 01 Azuay 2025 834958
#> 2 02 Bolívar 2025 204351
#> 3 03 Cañar 2025 237460
#> 4 04 Carchi 2025 177020
#> 5 05 Cotopaxi 2025 493382
#> ...
Un cantón por sexo y año. Los nombres no distinguen tildes ni mayúsculas:
poblacion("canton", anio = 2025:2026, canton = "loja", sexo = TRUE)
#> dpa_canton canton dpa_provin provincia anio sexo poblacion
#> 1 1101 Loja 11 Loja 2025 hombre 124296
#> 2 1101 Loja 11 Loja 2025 mujer 134218
#> 3 1101 Loja 11 Loja 2026 hombre 125024
#> 4 1101 Loja 11 Loja 2026 mujer 134953
edad = |
Resultado | Niveles |
|---|---|---|
NULL |
sin desagregar | todos |
"quinquenal" |
0-4, 5-9, ..., 100+ (parroquias: hasta 85+) |
todos |
"simple" |
0, 1, 2, ..., 100 (100 = 100 y más) | nacional, provincia, cantón |
"etapas" |
0-11, 12-17, 18-29, 30-64, 65+ (INEC) |
nacional, provincia, cantón |
c(0, 1, 5) (cortes) |
0, 1-4, 5+: cualquier agrupación |
todos (parroquias: múltiplos de 5) |
# Menores de 1 año y de 1 a 4: poblaciones objetivo de vacunación
poblacion("canton", anio = 2026, canton = "Loja", edad = c(0, 1, 5))
#> dpa_canton canton dpa_provin provincia anio edad poblacion
#> 1 1101 Loja 11 Loja 2026 0 3427
#> 2 1101 Loja 11 Loja 2026 1-4 15224
#> 3 1101 Loja 11 Loja 2026 5+ 241326
# Etapas de vida del INEC
poblacion("provincia", anio = 2030, provincia = "Pichincha", edad = "etapas")
#> dpa_provin provincia anio edad poblacion
#> 1 17 Pichincha 2030 0-11 447539
#> 2 17 Pichincha 2030 12-17 296136
#> 3 17 Pichincha 2030 18-29 620040
#> 4 17 Pichincha 2030 30-64 1665096
#> 5 17 Pichincha 2030 65+ 371097
# Urbano y rural, con menores de 5 y adultos mayores
poblacion("canton", anio = 2025, provincia = "Azuay", area = TRUE,
edad = c(0, 5, 65))
Con sexo = TRUE y edad = "quinquenal" tienes todo lo necesario para una
pirámide de población de cualquier territorio y año:
library(ggplot2)
pir <- poblacion("nacional", anio = c(1950, 1990, 2025, 2050),
sexo = TRUE, edad = seq(0, 90, 5))
pir$pct <- 100 * pir$poblacion / ave(pir$poblacion, pir$anio, FUN = sum)
ggplot(pir, aes(ifelse(sexo == "hombre", -pct, pct), edad, fill = sexo)) +
geom_col(width = 0.9) +
facet_wrap(~anio, nrow = 1) +
scale_x_continuous(labels = function(x) paste0(abs(x), "%")) +
labs(x = NULL, y = NULL)
La transición demográfica también se ve en los grandes grupos de edad, y la desagregación por área permite comparar la población urbana y la rural de cada provincia o cantón:
poblacion("nacional", edad = c(0, 15, 65)) # 1950-2050
poblacion("provincia", anio = 2025, provincia = "Chimborazo",
sexo = TRUE, area = TRUE, edad = "quinquenal")
pob_tasa() agrega a tu tabla la población del territorio y año
correspondientes, y calcula la tasa por 100 000 habitantes (u otra base):
casos <- data.frame(dpa_canton = c(1101, 1102, 701), # códigos como número
anio = 2024, casos = c(120, 8, 40))
pob_tasa(casos, "casos")
#> dpa_canton anio casos poblacion tasa
#> 1 1101 2024 120 257110 46.67263
#> 2 1102 2024 8 26544 30.13864
#> 3 701 2024 40 321196 12.45346
pob_unir() solo agrega la columna poblacion, lo que sirve para
coberturas o tasas específicas por sexo y edad:
vacunas <- data.frame(dpa_provin = c("01", "11"), anio = 2025, edad = "0",
vacunados = c(11800, 6900))
v <- pob_unir(vacunas, nivel = "provincia", edad = "simple")
v$cobertura <- 100 * v$vacunados / v$poblacion
v
#> dpa_provin anio edad vacunados poblacion cobertura
#> 1 01 2025 0 11800 12589 93.73262
#> 2 11 2025 0 6900 7316 94.31383
Los años pueden venir de una columna (anio por defecto) o fijarse con
anio = 2025. Si un código o año no existe, la fila queda con NA y se
avisa.
poblacion("parroquia", anio = 2030, canton = "Puyango")
#> dpa_parroq parroquia dpa_canton canton dpa_provin provincia anio poblacion
#> 1 111050 Alamor 1110 Puyango 11 Loja 2030 9334
#> 2 111051 Ciano 1110 Puyango 11 Loja 2030 1271
#> 3 111052 El Arenal 1110 Puyango 11 Loja 2030 1287
#> 4 111053 El Limo 1110 Puyango 11 Loja 2030 2440
#> 5 111054 Mercadillo 1110 Puyango 11 Loja 2030 1373
#> 6 111055 Vicentino 1110 Puyango 11 Loja 2030 919
Las unidades son las 1042 parroquias del Censo 2022: 221 cabeceras
cantonales (código terminado en 50) y 821 parroquias rurales. El censo
no separa las parroquias urbanas: Cuenca, por ejemplo, tiene 15 en muchos
registros administrativos, pero en el censo son una sola unidad, la
cabecera 010150. Tampoco tiene los cantones y parroquias creados después
(Borbón, Sevilla Don Bosco, Sosote, etc.), que sí están en la DPA del CONALI
(2026) que usa geoecu desde la versión 0.4.0. Si tus datos usan esos
códigos, conviértelos y agrégalos antes de unir:
homologar_parroquia(c("010101", "010115", "010151", "131251"))
#> [1] "010150" "010150" "010151" "131250"
homologar_canton(c("0809", "1413"))
#> [1] "0802" "1401"
casos$dpa_parroq <- homologar_parroquia(casos$dpa_parroq)
casos <- aggregate(casos ~ dpa_parroq + anio, casos, sum)
pob_tasa(casos, "casos", nivel = "parroquia")
geoecu contiene los límites de
provincias, cantones y parroquias con códigos DPA, según la Organización
Territorial del Estado del CONALI (2026). pob_mapa() une ambos paquetes y
devuelve un objeto sf con la población y la densidad (hab/km²). Antes de
unir, convierte la capa a las unidades del Censo 2022 con
agrupar_unidades(): por ejemplo, el cantón Borbón se dibuja dentro de Eloy
Alfaro, que lo incluía en el censo, para que la densidad sea correcta.
mapa <- pob_mapa("canton", anio = 2025, provincia = "Loja")
plot(mapa["densidad"])
# Nivel parroquial, dos años
pob_mapa("parroquia", anio = c(2025, 2035))
# Una tasa sobre el mapa, con la capa en unidades del censo
capa <- agrupar_unidades(geoecu::read_cantones())
merge(capa, pob_tasa(casos, "casos"), by = "dpa_canton", all.x = TRUE)
La viñeta vignette("pobecu-geoecu") tiene ejemplos completos con
ggplot2: densidad, tasas y mapas por año o grupo de edad.
Las cifras nacionales, provinciales y cantonales son las de la Revisión 2024 del INEC, basada en el Censo de Población y Vivienda 2022 y calculada por edad simple y año calendario. Son estimaciones hasta 2022 y proyecciones desde 2023, siempre al 30 de junio de cada año.
| Nivel | Método del INEC |
|---|---|
| Nacional y provincial | Componentes demográficos por cohortes: la población avanza año a año por la ecuación compensadora (nacimientos, defunciones y migración) para cada cohorte de edad y sexo. La fecundidad, la mortalidad y la migración se reconstruyen desde 1950 con censos, estadísticas vitales y encuestas, y se proyectan con curvas logísticas. |
| Cantonal | Extrapolación logística de proporciones (Arriaga, 1994) con variables sintomáticas (Bay, 1998): la provincia proyectada se reparte entre sus cantones según su participación, y el sexo y la edad se ajustan por raking. |
| Urbano y rural | Proyecciones derivadas (Naciones Unidas, 1974; CEPAL, 2024): porcentaje urbano de cada cantón y sexo proyectado con una curva logística; la población rural es la diferencia. |
pobecu no modifica estas cifras. Solo las pasa a formato largo, agrupa edades y agrega códigos y nombres.
Como el INEC no proyecta parroquias, pobecu aplica un nivel más abajo la misma lógica que usa el INEC entre provincia y cantón:
Hay dos excepciones. En los 17 cantones con parroquias creadas después de
2010 se usa la participación constante de 2022. En los 41 cantones de una
sola parroquia, esa parroquia recibe todo el cantón. La columna metodo de
dpa_pob indica qué se aplicó a cada parroquia.
Los scripts se detienen si falla cualquiera de estas condiciones:
Los tests comparan además con cifras publicadas por el INEC; por ejemplo, Guayaquil tiene 2 908 589 habitantes en 2022 y 3 218 450 en 2035.
85+.La metodología completa, con fórmulas, gráficos de validación y
referencias, está en vignette("metodologia").
| Objeto | Contenido | Filas |
|---|---|---|
pob_nacional |
1950-2050 × área × sexo × 21 grupos quinquenales | 5 334 |
pob_provincias |
24 provincias, 1990-2035 × área × sexo × grupos | 72 576 |
pob_cantones |
221 cantones, 2010-2035 × área × sexo × grupos | 482 664 |
pob_parroquias |
1042 parroquias, 2010-2035 × sexo × 18 grupos (estimación) | 975 312 |
dpa_pob |
catálogo: códigos, nombres, tipo, método, censos 2010 y 2022 | 1 042 |
| edades simples | 0-100+ para los niveles oficiales (descarga en el primer uso) | 2,7 M |
Todas las tablas usan el mismo formato largo (anio, area, sexo,
grupo_edad, poblacion), pero lo más cómodo es consultarlas con
poblacion(). pob_fuentes() muestra la revisión y el periodo de cada
nivel.
| Función | Para qué |
|---|---|
poblacion() |
Consultar población por nivel, año, sexo, área y edad |
pob_unir(), pob_tasa() |
Unir población a una tabla propia y calcular tasas |
pob_mapa() |
Capa sf de geoecu con población y densidad |
agrupar_unidades() |
Convertir una capa de geoecu a las unidades del Censo 2022 |
homologar_parroquia(), homologar_canton() |
Convertir códigos de parroquias urbanas o del CONALI (2026) a las unidades del censo |
buscar_pob() |
Buscar territorios por nombre o código |
formatear_codigo(), normalizar_nombre() |
Limpiar códigos DPA y nombres |
pob_fuentes() |
Fuentes, revisión y cobertura de los datos |
pobecu_cache_dir(), pobecu_usar_carpeta(), pobecu_limpiar_cache() |
Gestionar los datos descargados (por ejemplo, para trabajar sin conexión) |
Cuando el INEC publique una nueva revisión de sus proyecciones, los scripts
de data-raw/
descargan los tabulados, reconstruyen todas las tablas y la estimación
parroquial, y regeneran las figuras de este README:
| Script | Qué hace |
|---|---|
01_preparar_datos.R |
Descarga y lee los tabulados del INEC y asigna códigos DPA a las parroquias del censo |
02_estimar_parroquias.R |
Estimación parroquial (participación logística, IPF y redondeo) |
03_construir_datos.R |
Tablas del paquete y archivo de edades simples para el release |
04_logo.R, 05_figuras_readme.R |
Logo y figuras, con datos reales |
06_equivalencias_conali.R |
Comprueba las equivalencias entre la DPA del CONALI (2026) y el Censo 2022 |
Cada versión de los datos se publica como un
release (datos-vX.Y.Z), y
el número de versión del paquete indica la revisión del INEC que usa.
citation("pobecu")
Salas Guerrero, R. F. (2026). pobecu: Población del Ecuador por provincia,
cantón y parroquia. Paquete de R versión 0.2.0.
https://github.com/f-slg/pobecu
Cita también la fuente de los datos: INEC (2024). Estimaciones y Proyecciones de Población, Revisión 2024. Si usas cifras parroquiales, indica que son una estimación de pobecu y no cifras oficiales.
Las preguntas de uso van en Discussions, y los errores y propuestas en issues. Consulta la guía de contribución. Este proyecto sigue un código de conducta: al participar, te comprometes a respetarlo.
El código se distribuye bajo licencia MIT. Los datos provienen del INEC, que los publica en acceso abierto.