Evolución del PIB por Sector Industrial (BCV)

Author

Náyuha Palenzuela

Introducción

El análisis de datos económicos provenientes de fuentes oficiales a menudo presenta desafíos técnicos, tal como los archivos del BCV que están diseñados para lectura pero que no necesariamente son funcionales para el procesamiento computacional.

En este artículo estaremos trabajando con datos del Producto Interno Bruto (PIB) del Sector Industrial (Base 2007) a precios constantes, del Banco Central de Venezuela (BCV), demostraremos cómo extraer, limpiar y visualizar la evolución del PIB por Sector Institucional.

Preparación del entorno

Cargaremos las librerías necesarias para el procesamiento de datos.

library(readxl)
library(dplyr)
library(tidyr)
library(plotly)
library(stringr)

Descargamos los datos del BCV.

download.file("https://www.bcv.org.ve/sites/default/files/cuentas_macroeconomicas/5_2_1_si_anual.xlsx",
              "pib_inst.xlsx", method='curl')

Desafíos en la estructura del archivo

Al analizar el archivo podemos notar que en las primeras filas los títulos no tienen una estructura que se pueda tabular, generando un conflicto, además de esto en la columna de años no es totalmente numérico, si no que algunos años contienen carácter (*) para expresar que estas son cifras provicionales. Es decir, debemos de realizar una limpieza de la tabla para poder trabajar.

Así que ajustamos nuestra df para agarrar o los datos que nos interesan, a partir de la fila 10.

df <- read_excel("pib_inst.xlsx", col_names = FALSE,
              skip = 10)
New names:
• `` -> `...1`
• `` -> `...2`
• `` -> `...3`
• `` -> `...4`
• `` -> `...5`
View(df)

Renombramos las columnas según el fromato del BCV, para mantener consistencia en los datos.

colnames(df) <- c("Anio", "Total", "Público", "Privado", "Impuestos")

Ahora debemos de realizar una limpieza en la columna de los años para eliminar el carácter (*) de cifras porvisionales.

df_limpio <- df %>%
  mutate(
    Anio = as.numeric(str_remove(Anio, "\\s\\(\\*\\)"))
  )

View(df_limpio)

Convertimos nuestro formato a un formato largo y definimos el orden de los sectores, en este caso no vamos a representar en la gráfica la columna total, si no únicamente los valores del sector público, privado y los impuestos.

df_long <- df_limpio %>%
  pivot_longer(
    cols = c( "Público", "Privado", "Impuestos"),
    names_to = "Sector",
    values_to = "valores"
  )

Por último generamos el gráfico interactivo con la librería de plotly.

pib <- plot_ly(df_long,
             x = ~Anio,
             y = ~valores,
             color = ~Sector,
             type = 'scatter',
             mode = 'lines+markers',
             # Colores sugeridos (puedes quitarlos para usar los de R por defecto)
             colors = c("#1A05A2", "#DE1A58", "#F67D31"),
             hovertemplate = paste('<b>%{fullData.name}</b><br>',
                                   'Año: %{x}<br>',
                                   'valores: %{y}')) %>%
  layout(title = "Evolución del PIB por Sector Institucional (BCV)",
         xaxis = list(title = "Año",
                      tickmode = "linear",
                      dtick = 1), # Muestra todos los años en el eje
         yaxis = list(title = "Variación Porcentual (%)"),
         legend = list(orientation = 'h', y = -0.2), # Leyenda abajo para más espacio
         hovermode = "x unified")

pib