Bases de Datos Finales SPP

Author

Emiliano M

Published

July 27, 2026

Introducción.

El objetivo del presente documento es realizar actualizaciones finales a las bases de datos gdp_2021_spp_definitiva y gdp_per_capita_spp_definitiva implementando las siguientes correcciones:

  • Argentina: Verificar la retropolación realizada con los datos de PGB provincial de Fundación Norte y Sur.
  • México: Utilizar un deflactor único a nivel nacional.

A continuación se mostrarán las correcciones por sección para, finalmente, escribir las bases de datos finales de PIB y PIB per Capita para el SPP.

── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   4.0.3     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Adjuntando el paquete: 'kableExtra'


The following object is masked from 'package:dplyr':

    group_rows

Argentina.

Proceso de retropolación

En una frase: El proceso descrito a continación es prácticamente idéntico al del archivo retropolacion_ar_1980_2003 salvo que aquí la base anchor contiene el PIB provincial de CEPAL a precios constantes del 2004 previo a aplicar la deflactación y dividir por el tipo de cambio.

Primeramente, se cargarán y procesarán las siguientes bases de datos:

  • Base “definitiva” de PIB subnacional
  • Base de PGB Provincial de la fundación Norte y Sur (NYS)
  • Base nacional de NYS
  • Tabla 4.1 de Aráoz et al.
  • Anchor: Ancla para retrpolación de la CEPAL a pesos del 2004.
  • Catalogo SPP: Diccionario que contiene la codificación de las provincias en formato SPP

Posteriormente se realizará el proceso de retropolación, donde la provincia de Corrientes será tratada por su cuenta. Luego, se le aplicará la deflactación y se la dividirá por el tipo de cambio correspondiente para, finalmente, unirla con el resto de la base de datos.

Show code
### Lectura de base de datos
DEFINITIVA <- "gdp_2021_spp_definitiva.xlsx"          # base definitiva del 9-jul

NYS        <- "nys_pbg_provincial_tidy.csv"      # PBG provincial NyS (snapshot 12-jul-2026)

NACIONAL   <- "ferreres_pbi_nacional_anual.csv"  # PIB nacional anual (NyS oficial)

ARAOZ      <- "araoz_table_4_1_shares.csv"       # shares Aráoz et al. (2020), Tabla 4.1

catalogo_spp <- read_excel("catalogo_spp.xlsx")

nys <- read.csv(NYS)                    # state_name, year, pbg_nys_m_pesos2004
nac <- read.csv(NACIONAL)               # year, pbi_nacional_m_pesos2004
araoz <- read.csv(ARAOZ, check.names = FALSE)

def <- read_xlsx(DEFINITIVA) |>
  filter(country_name == "ARGENTINA") |>
  select(state_name, year, gdp_dollars_2021, type, type_cat)

catalogo_spp <- catalogo_spp %>%
  mutate(state_name = recode(state_name,
                             "MATO GROSS DO SUL" = "MATO GROSSO DO SUL"))

argentina_coding <- catalogo_spp |> 
  filter(country_name %in% "ARGENTINA")

mexico_coding <- catalogo_spp |> 
  filter(country_name %in% "MEXICO")

brazil_coding <- catalogo_spp |> 
   filter(country_name %in% "BRAZIL")
#catalogo_spp con nombres


anchor <- read_excel("pib_sub_argentina_actual.xlsx") |>
  select(entidad, `2004`) |>
  mutate(
    entidad = case_when(
      entidad == "Ciudad de Buenos Aires" ~ "CAPITAL FEDERAL",
      entidad == "Buenos Aires" ~ "BUENOS AIRES",
      entidad == "Catamarca" ~ "CATAMARCA",
      entidad == "Córdoba" ~ "CORDOBA",
      entidad == "Corrientes" ~ "CORRIENTES",
      entidad == "Chaco" ~ "CHACO",
      entidad == "Chubut" ~ "CHUBUT",
      entidad == "Entre Ríos" ~ "ENTRE RIOS",
      entidad == "Formosa" ~ "FORMOSA",
      entidad == "Jujuy" ~ "JUJUY",
      entidad == "La Pampa" ~ "LA PAMPA",
      entidad == "La Rioja" ~ "LA RIOJA",
      entidad == "Mendoza" ~ "MENDOZA",
      entidad == "Misiones" ~ "MISIONES",
      entidad == "Neuquén" ~ "NEUQUEN",
      entidad == "Río Negro" ~ "RIO NEGRO",
      entidad == "Salta" ~ "SALTA",
      entidad == "San Juan" ~ "SAN JUAN",
      entidad == "San Luis" ~ "SAN LUIS",
      entidad == "Santa Cruz" ~ "SANTA CRUZ",
      entidad == "Santa Fe" ~ "SANTA FE",
      entidad == "Santiago del Estero" ~ "SANTIAGO DEL ESTERO",
      entidad == "Tucumán" ~ "TUCUMAN",
      entidad == "Tierra del Fuego" ~ "TIERRA DEL FUEGO",
      TRUE ~ entidad
    )
  ) |>
  rename(
    state_name = entidad,
    gdp_2004 = `2004`
  )

Una vez hecho esto se procede con la retropolación o el encadenamiento.

La retropolación sirve para extrapolar hacia atrás la serie nueva utilizando indicadores proxy o estructuras de la serie antigua, obteniendo una serie homogénea y comparable a lo largo del tiempo.Para este caso se usará el método clásico de retropolación basado en un indicador de volumen/evolución \(\text{NyS}\)):\[\text{PIB}(\text{prov}, t) = \text{PIB}_{\text{definitiva}}(\text{prov}, 2004) \cdot \frac{\text{NyS}(\text{prov}, t)}{\text{NyS}(\text{prov}, 2004)}\]\(\text{PIB}_{\text{definitiva}}(\text{prov}, 2004)\): donde el nivel oficial del PIB en el año ancla o año de empalme (\(2004\)). Este valor ya incorpora las correcciones metodológicas más recientes.\(\frac{\text{NyS}(\text{prov}, t)}{\text{NyS}(\text{prov}, 2004)}\): Es el índice de evolución temporal de la variable indicadora (posiblemente Nóminas y Salarios, Nivel de Sueldos, o Nóminas y Seguros) para el año \(t\) respecto al año base \(2004\).El supuesto clave: Asume que antes de 2004, el PIB de la provincia evolucionó al mismo ritmo relativo al que evolucionó la variable proxy (\(\text{NyS}\)).

\[ \text{PIB}(\text{prov}, t) = \text{PIB}_{\text{definitiva}}(\text{prov}, 2004) \cdot \frac{\text{NyS}(\text{prov}, t)}{\text{NyS}(\text{prov}, 2004)} \]

Se encadenan las provincias:

Show code
# --- 1) encadenado: todas las provincias, años con dato NyS ------------------
nys04 <- nys |> filter(year == 2004) |>
  select(state_name, nys_2004 = pbg_nys_m_pesos2004)

chained <- nys |>
  filter(year >= 1980, year <= 2003) |>
  inner_join(nys04,  by = "state_name") |>
  inner_join(anchor, by = "state_name") |>
  mutate(gdp_dollars_2021 = gdp_2004 * pbg_nys_m_pesos2004 / nys_2004,
         type_cat = "official_chained_nys") |>
  select(state_name, year, gdp_dollars_2021, type_cat)

Se hace un procedimiento especial para corrientes

Show code
# --- 2) Corrientes 1980–85: share Aráoz x PIB nacional, empalmado en 1986 ----
row_corr <- araoz |> filter(provincia == "Corrientes")
sh75 <- row_corr[["1975"]]; sh86 <- row_corr[["1986"]]

corr_8085 <- tibble(year = 1980:1985) |>
  mutate(share = sh75 + (sh86 - sh75) * (year - 1975) / (1986 - 1975)) |>
  left_join(nac, by = "year") |>
  mutate(raw = pbi_nacional_m_pesos2004 * share / 100)

corr_1986_chained <- chained |>
  filter(state_name == "CORRIENTES", year == 1986) |> pull(gdp_dollars_2021)
corr_1986_raw <- nac$pbi_nacional_m_pesos2004[nac$year == 1986] * sh86 / 100
splice <- corr_1986_chained / corr_1986_raw    # unidades se cancelan aquí

corr_8085 <- corr_8085 |>
  transmute(state_name = "CORRIENTES", year,
            gdp_dollars_2021 = raw * splice,
            type_cat = "estimated_share")

# --- 3) Corrientes 1987–89: spline monótono entre 1986 y 1990–2003 -----------
corr_known <- bind_rows(
    chained |> filter(state_name == "CORRIENTES"),
    anchor  |> filter(state_name == "CORRIENTES") |>
      transmute(state_name, year = 2004, gdp_dollars_2021 = gdp_2004,
                type_cat = "anchor")) |>
  arrange(year)

fh <- splinefun(corr_known$year, corr_known$gdp_dollars_2021, method = "monoH.FC")
corr_8789 <- tibble(state_name = "CORRIENTES", year = 1987:1989,
                    gdp_dollars_2021 = fh(1987:1989),
                    type_cat = "interpolated")

# --- 4) ensamblado: 1980–2003 propuesto + 2004–2024 intacto ------------------
propuesta_pre2004 <- bind_rows(chained, corr_8085, corr_8789) |>
  arrange(state_name, year) |> 
  rename(gdp_dollars_2004 = gdp_dollars_2021)
####

Hasta este punto, tenemos la serie de 1980 a 2004 en pesos constantes del 2004. Lo único que se modificó del proceso del archivo retropolacion_ar_1980_2003 fue la base anchor que ahora contiene los valores de PIB a pesos del 2004.

Aplicación de deflactor y división por el tipo de cambio

Se deja las variables listas para modificarse en futuros procesos de automatización.

Show code
## Deflactor (Listo para cambiarse)
ipc_arg <- 78.11

## Tipo de Cambio (Listo para cambiarse) 
tipo_de_cambio <- 95.19159

Procedimiento:

Show code
propuesta_pre2004 <- propuesta_pre2004 |>
  mutate(
    gdp_dollars_2021 = (gdp_dollars_2004 * ipc_arg) / tipo_de_cambio
  ) |>
  select(-gdp_dollars_2004)

Una vez realizado esto se realiza la unión final.

Unión de bases de datos y verificación.

Show code
serie_final <- bind_rows(
    propuesta_pre2004 |> mutate(type = NA_real_),
    def |> filter(year >= 2004)) |>
  arrange(state_name, year)
Show code
# --- 5) verificación: el empalme 2003→2004 debe quedar en rangos razonables --
verif <- serie_final |>
  group_by(state_name) |>
  arrange(year, .by_group = TRUE) |>
  mutate(g = 100 * (gdp_dollars_2021 / lag(gdp_dollars_2021) - 1)) |>
  filter(year == 2004) |>
  select(state_name, crecimiento_2003_2004_pct = g) |>
  arrange(desc(crecimiento_2003_2004_pct))

print(verif, n = 24)
# A tibble: 24 × 2
# Groups:   state_name [24]
   state_name          crecimiento_2003_2004_pct
   <chr>                                   <dbl>
 1 MENDOZA                                14.7  
 2 MISIONES                               14.0  
 3 BUENOS AIRES                           11.7  
 4 SAN JUAN                               11.2  
 5 LA PAMPA                               10.9  
 6 CORRIENTES                              9.15 
 7 CHUBUT                                  9.09 
 8 TUCUMAN                                 9.01 
 9 CAPITAL FEDERAL                         8.78 
10 LA RIOJA                                8.64 
11 TIERRA DEL FUEGO                        7.69 
12 SANTA FE                                7.49 
13 ENTRE RIOS                              7.36 
14 SALTA                                   7.24 
15 FORMOSA                                 7.18 
16 RIO NEGRO                               6.93 
17 JUJUY                                   6.80 
18 CATAMARCA                               6.25 
19 SAN LUIS                                4.97 
20 SANTIAGO DEL ESTERO                     3.41 
21 CORDOBA                                 2.96 
22 CHACO                                   1.37 
23 SANTA CRUZ                              0.839
24 NEUQUEN                                -3.05 
Show code
# Esperado: máximo ~+15% (Mendoza), sin ningún salto tipo -30%/+59%.
# Comparar con la definitiva actual: Corrientes -30%, Santiago del Estero +59%, Catamarca +26% — esos tres desaparecen.

# Chequeo extra: cobertura completa 24 provincias x 45 años (1980–2024)

stopifnot(nrow(serie_final) == 24 * 45)

Validación Gráfica.

Show code
# Leer el CSV
csv <- read_csv("gdp_ar_1980_2024_propuesta.csv")

# Comparar
comparacion <- serie_final |>
  select(state_name, year, gdp_dollars_2021) |>
  rename(gdp_serie = gdp_dollars_2021) |>
  inner_join(
    csv |>
      select(state_name, year, gdp_dollars_2021) |>
      rename(gdp_csv = gdp_dollars_2021),
    by = c("state_name", "year")
  ) |>
  mutate(
    diff_pct = 100 * (gdp_serie - gdp_csv) / gdp_csv
  )

### Gráfico
comparacion |>
  mutate(
    diff_pct_plot = if_else(abs(diff_pct) < 1e-8, 0, diff_pct)
  ) |>
  ggplot(aes(x = year, y = diff_pct_plot, color = state_name)) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  geom_line(linewidth = 0.8) +
  labs(
    x = "Año",
    y = "Diferencia (%)",
    title = "Diferencia porcentual entre serie_final y el CSV"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

Este validación gráfica comprueba que ambas series coinciden!

La siguiente sección del código únicamente pone la serie final a la usanza del spp.

Codificación Usanza SPP

Ahora únicamente queda modificar la base para que quede a la usanza del SPP:

Show code
arg_gdp <- serie_final |>
  left_join(argentina_coding, by = "state_name") |> 
  mutate(
  type = case_when(
    type_cat == "official_chained_nys" ~ 0,
    type_cat %in% c("interpolated", "estimated_share") ~ 1,
    TRUE ~ type
  )
) |> 
    select(
    country_name,
    country_code,
    region_name,
    state_name,
    state_code,
    country_state_code,
    year,
    gdp_dollars_2021,
    type,
    type_cat
  )

Ya con esto tenemos los registros que reemplazaremos en las bases definitivas.

México

Con México lo que se hará es hacer la deflactación empleando el INPC nacional y no uno para cada estado.

Lectura de datos.

Show code
# Extraer de la línea 4 a la 39 donde se encuentran los datos relevantes.
pib_subnacional_mexico <- read_excel("pib_subnacional_mexico.xlsx") |>
  slice(4:39) 

# Usar la primera fila como nombres de columnas
colnames(pib_subnacional_mexico) <- as.character(pib_subnacional_mexico[1, ])

# Eliminar las primeras 3 filas, que no contienen información relevante
pib_subnacional_mexico <- pib_subnacional_mexico %>%
  slice(-(1:4)) |> 
  rename(
    entidad = `Concepto`,
  `2023` = `2023R`,
  `2024` = `2024P`
  )

pib_subnacional_mexico |> 
  slice_head(n = 10) |> 
  kbl(caption = "Tabla 1. Méx. PIB por unidad subnacional", align = "l") |>
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE
  )
Tabla 1. Méx. PIB por unidad subnacional
entidad 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
Aguascalientes 74478.826000000001 82816.058000000005 83133.482999999993 78800.570999999996 82466.824999999997 84980.153000000006 81602.732999999993 84379.077999999994 86482.198999999993 91061.619000000006 97895.019 103728.74099999999 109843.958 114706.122 121683.61 116418.715 124298.764 133594.837 143027.44399999999 145644.38500000001 158299.88399999999 167309.35 174918.42800000001 176576.72099999999 182404.56099999999 185650.54199999999 200318.26500000001 219091.899 218472.94699999999 201960.39600000001 219912.90599999999 230510.39799999999 242758.40900000001 251657.00700000001 277675.25799999997 294497.17499999999 307395.84100000001 314242.37900000002 327926.30699999997 329358.364 307125.68300000002 315233.12 314602.24699999997 334314.66600000003 328087.96500000003
Baja California 400156.97100000002 451676.82699999999 446781.45299999998 406200.11300000001 425488.625 437529.217 402275.15399999998 414361.76299999998 417816.03899999999 436724.07799999998 467382.39600000001 487452.21100000001 511546.29499999998 513177.24900000001 548270.478 494337.73700000002 558044.57499999995 631004.25100000005 662820.82200000004 720343.96400000004 790646.79299999995 730554.23699999996 696088.19900000002 682996.92799999996 697268.68900000001 716802.17099999997 772686.80799999996 778767.04799999995 756707.31900000002 658790.71200000006 686065.86499999999 698850.50699999998 726418.10600000003 733753.71100000001 760856.96699999995 795080.74699999997 828692.24699999997 863600.64899999998 878816.86800000002 893946.24899999995 839693.34 896313.55900000001 919300.27800000005 947957.51899999997 947677.00899999996
Baja California Sur 53015.906000000003 57736.199000000001 58188.199000000001 57232.819000000003 59391.459000000003 60739.521999999997 59879.334000000003 61326.62 62347.413 65210.463000000003 67808.263999999996 71483.581999999995 74828.892999999996 72837.861000000004 75145.063999999998 72405.422000000006 80971.993000000002 84520.69 86993.271999999997 89307.070999999996 95187.275999999998 99668.467000000004 97301.797000000006 102696.425 110723.357 117708.462 126685.37 137545.255 142084.054 134464.67600000001 138668.83199999999 144956.375 147269.70199999999 145215.69 147613.68400000001 156072.03400000001 163094.64799999999 170784.40299999999 184618.103 177860.75 151931.29 171064.57500000001 178129.82399999999 180788.204 187152.16099999999
Campeche 511362.33600000001 560971.27599999995 559721.98800000001 523134.52799999999 546199.16200000001 566378.35600000003 548649.86199999996 570391.17299999995 588026.45200000005 614610.51800000004 649387.91899999999 671524.50100000005 692158.83799999999 687476.86600000004 713798.59499999997 678258.36100000003 734002.00699999998 777814.21499999997 808927.14300000004 763456.63100000005 826278.19 892409.08799999999 913435.10400000005 986877.72400000005 998062.31499999994 985831.29500000004 959641.06299999997 897799.85499999998 828677.16799999995 753908.78399999999 730232.32400000002 711663.19099999999 691262.00399999996 692549.897 685992.02500000002 700310.74100000004 663239.24199999997 595666.96 564591.05599999998 541962.92599999998 500514.72600000002 489604.29499999998 472680.02399999998 508514.61700000003 473399.45699999999
Coahuila de Zaragoza 362298.76199999999 401419.87 400947.44099999999 372296.47200000001 388155.755 399779.40299999999 375949.16899999999 384635.71299999999 387781.17700000003 400158.299 423114.63199999998 437256.44500000001 460053.092 470418.45600000001 479739.94199999998 466715.13500000001 541594.61 593148.48300000001 627310.17200000002 640331.19499999995 655490.87 657960.99399999995 693560.01399999997 725622.35199999996 738323.00899999996 751258.28300000005 798549.10100000002 819995.32 806977.054 647795.10800000001 775118.74300000002 824838.46699999995 870634.53099999996 864429.38300000003 902863.24100000004 897702.09499999997 901719.48400000005 941581.76300000004 966054.66200000001 953384.33400000003 843597.571 921586.98300000001 935841.223 927968.19299999997 922286.18900000001
Colima 63715.01 69001.929000000004 69593.668999999994 68026.277000000002 70501.031000000003 72487.649000000005 71375.437999999995 73308.392000000007 74614.039000000004 76928.024999999994 80232.039000000004 82613.489000000001 84539.724000000002 86396.611999999994 90021.396999999997 85408.456000000006 91716.410999999993 95885.861999999994 103304.32399999999 106422.374 110550.51 108484.81200000001 109196.395 106240.461 107179.09299999999 107631.26300000001 114843.833 122046.01300000001 124498.00599999999 118472.235 125595.851 133676.15900000001 135599.86499999999 133729.296 135090.72500000001 141029.12899999999 140705.23800000001 150360.09599999999 153808.394 161109.85800000001 148143.27299999999 147667.296 148438.43400000001 153354.77799999999 157139.889
Chiapas 200061.47 212022.28400000001 213802.06599999999 211467.23 217413.49799999999 221924.46900000001 221017.022 225978.77 230321.52299999999 237262.25200000001 246057.65400000001 253835.72099999999 262154.11700000003 271140.54700000002 281576.82400000002 280089.47200000001 277752.38099999999 286887.61499999999 304458.95899999997 304224.77799999999 309796.913 308418.26 312380.02100000001 314665.41100000002 304083.364 310293.58199999999 321113.54599999997 324676.53200000001 337160.57799999998 332432.799 355978.85700000002 361270.255 370237.30499999999 360620.97700000001 374691.48700000002 364001.28200000001 369919.28700000001 359734.408 353600.11300000001 348914.39199999999 337240.435 353638.51 374518.00300000003 379626.19900000002 389794.85200000001
Chihuahua 303189.89799999999 336143.54700000002 334520.59399999998 315609.48200000002 327938.86700000003 336124.56199999998 318334.84399999998 325130.196 326595.35399999999 336951.95799999998 357492.57199999999 370983.42200000002 385367.50900000002 399928.05300000001 417236.55900000001 403134.63900000002 435992.033 465482.54700000002 507712.96500000003 535621.56799999997 581263.82200000004 554947.18200000003 545694.429 559444.75800000003 577532.78399999999 592161.22199999995 635597.82400000002 664331.06299999997 696713.272 626309.62399999995 647629.946 662042.78700000001 711480.75699999998 732550.603 753194.78 803883.27599999995 830488.50899999996 851284.31299999997 853322.804 866861.299 808710.89099999995 846063.93799999997 911271.14199999999 940100.50899999996 930854.91
Ciudad de México 1831598.702 2023097.662 2017375.6229999999 1937032.27 1992078.797 1989027.993 1890532.2039999999 1896703.477 1897079.4339999999 1966175.1140000001 2060708.4739999999 2161707.696 2235098.068 2354923.7990000001 2448263.341 2292168.7519999999 2381093.8169999998 2556605.051 2657943.1370000001 2739399.4920000001 2903708.8220000002 2870934.1570000001 2893524.3089999999 2842788.554 2962342.2140000002 2991075.2439999999 3134225.2170000002 3142463.801 3183429.429 3008811.7659999998 3125716.6910000001 3231440.2390000001 3332208.7209999999 3363394.3250000002 3412110.1979999999 3503520.1129999999 3571368.1880000001 3646318.179 3694574.8739999998 3679917.3459999999 3293855.3080000002 3496055.8110000002 3650377.6189999999 3805614.443 3885956.5929999999
Durango 138131.74900000001 149622.29 148864.49299999999 142374.33199999999 146541.785 149331.258 144410.954 147319.56 149135.74100000001 153874.10699999999 160987.57 165970.86300000001 169449.99100000001 172783.065 181317.13 174420.96299999999 183390.103 190883.33100000001 206637.853 206787.114 208654.022 217801.31700000001 218739.592 231278.924 242836.198 235761.59899999999 241373.38399999999 248235.60500000001 261332.53200000001 256632.61300000001 261476.68599999999 273067.299 286058.27399999998 299615.20500000002 307939.663 300289.37599999999 305382.234 304646.65700000001 308981.25400000002 309426.43599999999 286240.78200000001 303251.38099999999 300478.11300000001 309199.136 323802.35700000002
Show code
### Datos de INPC
inpc_mex <- read_csv("conjunto_de_datos_inpc_mensual.csv")

### Promedios de INPC
inpc_mex |>
  mutate(FECHA = dmy(FECHA),
         year = year(FECHA)) |>
  filter(year %in% c(2018, 2021)) |>
  group_by(year) |>
  summarise(
    inpc_promedio = mean(VALOR, na.rm = TRUE)
  )
# A tibble: 2 × 2
   year inpc_promedio
  <dbl>         <dbl>
1  2018          101.
2  2021          115.

Fuente: https://www.inegi.org.mx/programas/inpc/2018a/#datos_abiertos

Deflactación y aplicación del tipo de cambio

\[ \text{PIB}_{i,\; \text{base2021}} = \text{PIB}_{i,\; \text{base2018}} \times \left( \frac{\text{Promedio INPC}_{i,\;2021}}{\text{Promedio INPC}_{i,\;2018}} \right) \] Se deja las variables listas para modificarse en futuros procesos de automatización.

Show code
## Deflactor (Listo para cambiarse)
inpc_2018 <- 100.5578   
inpc_2021 <- 114.6001   

deflactor_mex <- inpc_2018/inpc_2021

## Tipo de Cambio promedio 2021 (Listo para cambiarse) 
tipo_de_cambio_mex <- 20.27564
Show code
pib_subnacional_mexico_long <- pib_subnacional_mexico |>
  pivot_longer(
    cols = matches("^\\d{4}$"),
    names_to = "year",
    values_to = "gdp_dollars_current"
  ) |>
  mutate(
    year = as.integer(year)
  ) 
Show code
mexico_gdp_raw <- pib_subnacional_mexico_long |>
  mutate(gdp_dollars_current = as.numeric(gdp_dollars_current)) |> 
  mutate(
    gdp_dollars_2021 = (gdp_dollars_current * deflactor_mex) / tipo_de_cambio_mex
  ) |>
  select(-gdp_dollars_current)

Listo! El procedimiento anterior resuelve con éxito el problema de los deflactores. Ahora únicamente queda codificarlo a la usanza SPP.

Codificación Usanza SPP.

Show code
### Igualación de nombres, join y reordenamiento de columnas
library(dplyr)

mexico_gdp <- mexico_gdp_raw |>
  mutate(
    entidad = case_when(
      entidad == "Aguascalientes" ~ "AGUASCALIENTES",
      entidad == "Baja California" ~ "BAJA CALIFORNIA",
      entidad == "Baja California Sur" ~ "BAJA CALIFORNIA SUR",
      entidad == "Campeche" ~ "CAMPECHE",
      entidad == "Coahuila de Zaragoza" ~ "COAHUILA",
      entidad == "Colima" ~ "COLIMA",
      entidad == "Chiapas" ~ "CHIAPAS",
      entidad == "Chihuahua" ~ "CHIHUAHUA",
      entidad == "Ciudad de México" ~ "CDMX",
      entidad == "Durango" ~ "DURANGO",
      entidad == "Guanajuato" ~ "GUANAJUATO",
      entidad == "Guerrero" ~ "GUERRERO",
      entidad == "Hidalgo" ~ "HIDALGO",
      entidad == "Jalisco" ~ "JALISCO",
      entidad == "México" ~ "MEXICO",
      entidad == "Michoacán de Ocampo" ~ "MICHOACAN",
      entidad == "Morelos" ~ "MORELOS",
      entidad == "Nayarit" ~ "NAYARIT",
      entidad == "Nuevo León" ~ "NUEVO LEON",
      entidad == "Oaxaca" ~ "OAXACA",
      entidad == "Puebla" ~ "PUEBLA",
      entidad == "Querétaro" ~ "QUERETARO",
      entidad == "Quintana Roo" ~ "QUINTANA ROO",
      entidad == "San Luis Potosí" ~ "SAN LUIS POTOSI",
      entidad == "Sinaloa" ~ "SINALOA",
      entidad == "Sonora" ~ "SONORA",
      entidad == "Tabasco" ~ "TABASCO",
      entidad == "Tamaulipas" ~ "TAMAULIPAS",
      entidad == "Tlaxcala" ~ "TLAXCALA",
      entidad == "Veracruz de Ignacio de la Llave" ~ "VERACRUZ",
      entidad == "Yucatán" ~ "YUCATAN",
      entidad == "Zacatecas" ~ "ZACATECAS",
      TRUE ~ entidad
    )
  ) |> 
  left_join(mexico_coding, by = c("entidad" = "state_name")) |> 
  rename(state_name = entidad) |> 
    mutate(
    type = 0,
    type_cat = "official_data"
  ) |> 
    select(
    country_name,
    country_code,
    region_name,
    state_name,
    state_code,
    country_state_code,
    year,
    gdp_dollars_2021,
    type,
    type_cat
  )

Integración a base de datos PIB dólares de 2021

Show code
#gdp_spp_final <- def |>
#  filter(!country_name %in% c("ARGENTINA", "MEXICO"))

#gdp_spp_final <- bind_rows(
#  arg_gdp,
#  gdp_spp_final,
#  mexico_gdp
#)  


#write_xlsx(gdp_spp_final, "gdp_spp_usd_2021_final.xlsx")

Recálculo de PIB Per Capita

Show code
### Lectura
spp_pop <- read_excel("spp_pop.xlsx")

gdp_spp <- read_excel("gdp_spp_usd_2021_final.xlsx")

### Proceso
gdp_per_capita_spp <- gdp_spp %>%
  
  # 1. Unir población
  left_join(
    spp_pop %>% 
      select(country_state_code, year, total_population),
    by = c("country_state_code", "year")
  ) %>%
  
  # 2. Calcular PIB per cápita (USD 2021, gdp está en millones)
  mutate(
    gdp_per_capita = (gdp_dollars_2021 * 1e6) / total_population
  ) %>%
  mutate(gdp_per_capita = round(gdp_per_capita,1)) |> 
  
  # 3. Clasificación consistente con tu lógica previa
  mutate(
    source = "own_calculus",
    type = 1L,
    type_cat = "own_calculus"
  ) %>%
  
  # 4. Orden final de variables
  select(
    country_name,
    country_code,
    region_name,
    state_name,
    state_code,
    country_state_code,
    year,
    gdp_per_capita,
    source,
    type,
    type_cat
  )
Show code
### Escritura
#write_xlsx(
#  gdp_per_capita_spp,
# "gdp_per_capita_usd_2021_spp.xlsx"
#)

Conclusión

La aplicación de estos procedimientos resulta en la versión final de las bases de PIB y PIB Per Cápita.