1 Revisión de literatura de KIA

El concepto de Actividades Intensivas en Conocimiento (KIA, por sus siglas en inglés) surge de la necesidad de identificar y clasificar sectores económicos que dependen en gran medida del capital humano altamente cualificado y del uso intensivo de conocimiento. Esta clasificación ha sido impulsada por instituciones europeas para monitorear el avance hacia una economía basada en el conocimiento, utilizando como referencia principal la clasificación NACE Rev. 2 y el porcentaje de empleados con educación superior como umbral de inclusión (Vertesy & Van Roy, 2013).

Desde una perspectiva metodológica, las actividades KIA se definen sobre la base de indicadores estructurales como el nivel de formación del capital humano, la intensidad de I+D, y la especialización productiva regional. Esto permite una medición más precisa de los sectores que conducen el crecimiento económico impulsado por el conocimiento, como argumentan Domenech et al. (2016), quienes destacan la importancia del contexto regional para explicar la concentración de estas actividades.

Un subconjunto destacado dentro del marco de KIA son los Servicios Empresariales Intensivos en Conocimiento (KIBS), que desempeñan un papel central en la modernización de economías avanzadas, facilitando la innovación y el cambio tecnológico. En un análisis reciente, Badulescu et al. (2020) muestran cómo estos servicios contribuyen significativamente a la productividad y al desarrollo regional en la Unión Europea.

Desde el punto de vista de los recursos humanos, la proporción de trabajadores con educación terciaria es un criterio clave para determinar la intensidad en conocimiento de un sector. Mojsiewicz (2021) destaca la importancia de un enfoque centrado en el capital humano para la evaluación comparativa entre sectores y empresas. Este enfoque es respaldado por estudios como el de Teirlinck y Van Puyenbroeck (2022), que analizan el perfil de una región altamente intensiva en conocimiento como Bruselas, enfatizando la interacción entre cualificación laboral y estructura productiva.

Finalmente, el impacto de las KIA sobre la competitividad internacional también ha sido objeto de estudio. Según Biege et al. (2012), la convergencia de sectores intensivos en conocimiento dentro de la UE ha sido un motor clave para reforzar la competitividad externa, especialmente en servicios de alto valor agregado. A nivel más general, Gabriela-Liliana (2015) refuerza esta idea al señalar que el crecimiento económico sostenido en regiones en transición está estrechamente vinculado al desarrollo de servicios intensivos en conocimiento.

Bibliografia

Badulescu, D., Badulescu, A., & Sipos-Gug, S. (2020). Knowledge intensive business services and their economic role in European Union: A brief analysis. https://www.researchgate.net/… Biege, S., Borowiecki, M., Dachs, B., & Francois, J. F. (2012). Convergence of knowledge-intensive sectors and the EU’s external competitiveness. The Vienna Institute for International Economic Studies. https://www.econstor.eu/… Cioban, G.-L. (2015). Knowledge-intensive services and their effect on economic growth. Annals of the University of Petroşani, Economics, 15(1), 85–94. https://www.utgjiu.ro/… Domenech, J., Escamilla, R., & Roig-Tierno, N. (2016). Explaining knowledge-intensive activities from a regional perspective. Journal of Business Research, 69(11), 5000–5005. https://www.sciencedirect.com/… Mojsiewicz, M. C. (2021). The criterion of human resources in the assessment of the degree of the engagement of knowledge in the activities of enterprises. European Research Studies Journal, 24(2B), 1040–1053. https://www.um.edu.mt/… Teirlinck, P., & Van Puyenbroeck, T. (2022). The knowledge base of Brussels. KU Leuven. https://lirias.kuleuven.be/… Vertesy, D., & Van Roy, V. (2013). Update on the composite indicators of structural change towards a more knowledge-intensive economy. Joint Research Centre (European Commission). https://publications.jrc.ec.europa.eu/

1.1 Librerías

library(dplyr)
library(eph)
library(gt)
library(openxlsx)
library(tidyr)
library(PNADcIBGE)
library(survey)
library(srvyr)
library(stringr)
library(ggplot2)
library(ggthemes)
library(plotly)

options(scipen = 999)

1.2 Tablas anexas

corresp_caesCIUU4 <- read.xlsx("Tabla de correspondencia CAES MERCOSUR 1.0 - CIIU Rev. 4.xlsx") %>% 
    mutate(CAES = as.numeric(PP04B_COD)) %>% 
  rename( "CIUU_c" = Código)
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `CAES = as.numeric(PP04B_COD)`.
## Caused by warning:
## ! NAs introducidos por coerción
codigos_servicios_caes<- c(
  0104, 0900, 1800, 3300, 3501, 3502, 3600, 3700, 3800, 3900,
  4000, 4502, 4504, 4901, 4902, 4903, 4904, 4905, 4909, 5000,
  5100, 5201, 5202, 5300, 5500, 5601, 5602, 5800, 5900, 6000,
  6100, 6200, 6300, 6400, 6500, 6600, 6800, 6900, 7000, 7100,
  7200, 7301, 7302, 7400, 7500, 7701, 7702, 7800, 7900, 8000,
  8101, 8102, 8200, 8300, 8401, 8402, 8403, 8501, 8509, 8600,
  8700, 8800, 9000, 9100, 9200, 9301, 9302, 9401, 9402, 9409,
  9501, 9502, 9503, 9601, 9602, 9603, 9609, 9700, 9800, 9900
)

codigos_servicios_cii4 <- c(
  4510, 4520, 4530, 4540, 4550, 4560, 4570, 4581, 4582, 4590,
  4610, 4620, 4630, 4640, 4651, 4652, 4653, 4659, 4661, 4662,
  4663, 4669, 4690, 4711, 4719, 4721, 4722, 4723, 4724, 4729,
  4730, 4741, 4742, 4751, 4752, 4753, 4759, 4761, 4762, 4763,
  4764, 4769, 4771, 4772, 4773, 4774, 4775, 4776, 4777, 4778,
  4779, 4781, 4782, 4789, 4791, 4799,
  4911, 4912, 4921, 4922, 4923, 4930, 4941, 4942, 4950, 5011,
  5012, 5021, 5022, 5110, 5120, 5210, 5221, 5222, 5223, 5224,
  5229, 5310, 5320,
  5510, 5520, 5530, 5610, 5621, 5629, 5630,
  5811, 5812, 5813, 5819, 5820, 5911, 5912, 5913, 5914, 5920,
  6010, 6020, 6110, 6120, 6130, 6190, 6201, 6202, 6209, 6311,
  6312,
  6411, 6419, 6420, 6430, 6491, 6492, 6499, 6511, 6512, 6520,
  6530, 6611, 6612, 6619, 6621, 6622, 6629, 6630,
  6810, 6820, 6831, 6832,
  6910, 6920, 7010, 7020, 7110, 7120, 7210, 7220, 7310, 7320,
  7410, 7420, 7490,
  7710, 7721, 7722, 7729, 7730, 7740, 7810, 7820, 7830, 7911,
  7912, 7920, 8010, 8020, 8030, 8110, 8121, 8129, 8130, 8211,
  8219, 8220, 8230, 8291, 8292, 8299,
  8411, 8412, 8413, 8421, 8422, 8423, 8424, 8425, 8430,
  8510, 8521, 8522, 8530, 8541, 8542, 8549,
  8610, 8620, 8690, 8710, 8720, 8730, 8790,
  9000, 9101, 9102, 9200, 9311, 9312, 9321, 9329,
  9411, 9412, 9420, 9491, 9492, 9499, 9511, 9512, 9521, 9522,
  9523, 9524, 9529, 9601, 9602, 9603, 9609
)


download.file(url = "https://unstats.un.org/unsd/classifications/Econ/Download/In%20Text/ISIC_Rev_4_Spanish_structure.Txt", destfile = "CIUU4")
CIUU4 <- read.csv(file = "CIUU4")

CIUU4 <- CIUU4 %>%
  mutate(Code = ifelse(startsWith(as.character(Code), "0"),
                       substr(Code, 2, nchar(Code)),
                       as.character(Code)))
nuevas_filas_CIIU4Uy <- tibble(
  Code = c("1011", "1012", "1013", "1019", "2430", 
           "5511", "5512", "5513", "5519", "6100", "819"),
  Title = c("Matanza de ganado",
            "Elaboración de fiambres y chacinados",
            "Matanza, preparación y conservación de pollos y gallinas",
            "Matanza, procesamiento y conservación de carne de ñandúes y otras aves n.c.p",
            "Fundición de hiero y acero y de metales no ferrosos",
            "Actividades de alojamiento en hoteles",
            "Actividades de alojamiento transitorio: hoteles de alta rotatividad",
            "Actividades de alojamiento en albergues",
            "Otros alojamientos de corto plazo n.c.p.",
            "Telecomunicaciones",
            "Extracción de yeso y de otros tipos de piedras en canteras 089 Explotación de minas y canteras n.c.p")
)

CIUU4 <- bind_rows(CIUU4, nuevas_filas_CIIU4Uy)


CIUU_serv<-corresp_caesCIUU4 %>% 
  select(3,4) %>% 
  mutate( Servicio = case_when(
      CIUU_c %in% codigos_servicios_cii4 ~ "Sí",
      TRUE ~ "No")) %>% 
  filter(Servicio == "Sí")

CIUU4_EBOP6 <- read.xlsx("STRI_EBOPS.xlsx", sheet = "Hoja1") %>% 
  mutate(across(5:15, as.numeric)) %>% 
  pivot_longer(cols = 5:15, names_to = "CIUU", values_to = "CIUU_c") %>% 
  select(EBOP6.4, Description, CIUU_c) %>% 
  filter(!is.na(CIUU_c)) %>%  # esta línea elimina los NA
  group_by(EBOP6.4, Description, CIUU_c)

1.3 Argentina

b2024_1 <-get_microdata(year=2024,period = 1, type = "individual") 
#%>%   organize_labels(.,type= "individual")
b2024_1 <- organize_caes(b2024_1)
## Warning in organize_caes(b2024_1): Convirtiendo PP04B_COD a character
b2024_12 <- b2024_1 %>%
  filter(ESTADO == 1) %>%
  mutate(PP04B_COD = as.numeric(PP04B_COD)) %>%
  select(PONDERA, NIVEL_ED, PP04B_COD, PP04B_label, CH04) %>%
  mutate(
    NIVEL_ED = case_when(
      NIVEL_ED %in% c("5", "6") ~ "ALTO",
      TRUE ~ "BAJO"
    ),
    Sexo = case_when(
      CH04 == 1 ~ "Hombre",
      CH04 == 2 ~ "Mujer"
    ),
    Servicio = case_when(
      PP04B_COD %in% codigos_servicios_caes ~ "Sí",
      TRUE ~ "No"
    )
  )

TABLA1.1<- b2024_12 %>% 
  group_by(PP04B_COD,PP04B_label,Servicio, NIVEL_ED,Sexo) %>% 
  summarise( Trabajadores = sum(PONDERA)) %>% 
  rename("Nvl educativo" = NIVEL_ED,
         "Codigo CAES" = PP04B_COD, 
         "Rama" = PP04B_label,
         "Cant. trabajadores" = Trabajadores)  
## `summarise()` has grouped output by 'PP04B_COD', 'PP04B_label', 'Servicio',
## 'NIVEL_ED'. You can override using the `.groups` argument.
CAES_cods <- b2024_1 %>%
  group_by(PP04B_COD, PP04B_label, caes_version, caes_seccion_cod, caes_seccion_label,
           caes_division_cod, caes_division_label, caes_eph_cod, caes_eph_label) %>%
  summarise(count = n(), .groups = "drop") %>%
  rename(CAES = PP04B_COD) %>%
  select(-count) %>%
  mutate(CAES = as.numeric(sub("^0+", "", as.character(CAES))))

rm(b2024_1 ,b2024_12)

1.4 Uruguay

download.file(url = "https://www4.ine.gub.uy/Anda5/index.php/catalog/767/download/1368", destfile = "ECH_2024")
b2024_ech <- read.csv(file = "ECH_2024")

b2024_ech2 <- b2024_ech %>%
  filter(POBPCOAC == 2) %>% 
  select(W, NIV_EDU,f72_2,e26) %>% 
mutate(
    NIVEL_ED = case_when(
      NIV_EDU == "4. Terciario completo o posgrado" ~ "ALTO",
      TRUE ~ "BAJO"
    ),
    Sexo = case_when(
      e26 == 1 ~ "Hombre",
      e26 == 2 ~ "Mujer"
    ),
    Servicio = case_when(
      f72_2 %in% codigos_servicios_cii4 ~ "Sí",
      TRUE ~ "No"
    ))

corresp_caesCIUU42 <- corresp_caesCIUU4 %>%
  mutate(CIUU_c = str_remove(as.character(CIUU_c), "^0"))

TABLA1.2<- b2024_ech2 %>% 
  group_by(f72_2,Servicio, NIVEL_ED,Sexo) %>% 
  summarise( Trabajadores = sum(W)) %>% 
  rename("Nvl educativo" = NIVEL_ED,
         "CIUU_c" = f72_2, 
         #"Rama" = PP04B_label,
         "Cant. trabajadores" = Trabajadores) %>% 
  mutate(CIUU_c = as.character(CIUU_c)) %>%
  left_join(corresp_caesCIUU42, by = "CIUU_c")
## `summarise()` has grouped output by 'f72_2', 'Servicio', 'NIVEL_ED'. You can
## override using the `.groups` argument.
## Warning in left_join(., corresp_caesCIUU42, by = "CIUU_c"): Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 32 of `x` matches multiple rows in `y`.
## ℹ Row 4 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
##   "many-to-many"` to silence this warning.
rm(b2024_ech,b2024_ech2 ,corresp_caesCIUU42, CIUU4, nuevas_filas_CIIU4Uy)

1.5 Brasil

dadosPNADc <- get_pnadc(year=2024, quarter=1)
dadosPNADc2<-as_survey(dadosPNADc)

Tabla1.3 <- dadosPNADc2 %>%
  filter(VD4002 == "Pessoas ocupadas") %>%
  mutate(
    V4013 = substr(as.character(V4013), 1, 4),  # <-- Recorta los primeros 4 caracteres
    NIVEL_ED = case_when(
      V3009A %in% c(
        "Superior - graduação",
        "Especialização de nível superior",
        "Mestrado",
        "Doutorado"
      ) ~ "ALTO",
      TRUE ~ "BAJO"
    ),
    Servicio = case_when(
      V4013 %in% codigos_servicios_caes ~ "Sí",
      TRUE ~ "No"
    )
  ) %>%
  group_by(V4013, Servicio, V2007, NIVEL_ED) %>%
  summarise(freq = survey_total(), .groups = "drop")

Tabla1.3 <- Tabla1.3 %>% 
  mutate(V4013 = str_remove(as.character(V4013), "^0"))

rm(dadosPNADc, dadosPNADc2)
Tabla1.1b <- TABLA1.1 %>% 
  ungroup() %>%
  mutate(País = paste0("Argentina")) %>% 
  rename("CAES" = "Codigo CAES") %>% 
  select(País,CAES, Servicio, "Nvl educativo", Sexo, "Cant. trabajadores")

Tabla1.2b <- TABLA1.2 %>% 
  ungroup() %>% 
   mutate( País = paste0("Uruguay")) %>% 
  #rename("CAES" = PP04B_COD) %>% 
  select(País,CAES, Servicio, "Nvl educativo", Sexo, "Cant. trabajadores")

Tabla1.3b <- Tabla1.3 %>% 
  mutate(País = "Brasil",
         Sexo = case_when(
           V2007 == "Mulher" ~ "Mujer",
           V2007 == "Homem" ~ "Hombre"),
         `Cant. trabajadores` = round(freq, 0)) %>% 
  rename(CAES = V4013,
         "Nvl educativo"= NIVEL_ED ) %>% 
  select(País, CAES, Servicio, "Nvl educativo", Sexo, `Cant. trabajadores`) 


Tabla1.3b <- Tabla1.3b %>%   mutate( CAES = as.numeric(CAES))

rm(TABLA1.1, TABLA1.2, Tabla1.3, corresp_caesCIUU4)

Tabla_final <- bind_rows(Tabla1.1b, Tabla1.2b, Tabla1.3b)

Tabla_final2 <- Tabla_final %>%
  group_by(País, CAES, Servicio, `Nvl educativo`) %>%
  summarise(`Cant. trabajadores` = sum(`Cant. trabajadores`), .groups = "drop") %>%
  pivot_wider(names_from = `Nvl educativo`, values_from = `Cant. trabajadores`) %>% 
  mutate(across(c(ALTO, BAJO), ~replace_na(.x, 0))) %>% 
  mutate( Total = ALTO+ BAJO,
          "%Alto" = round((ALTO/Total)*100,1),
          "%Bajo" = round((BAJO/Total)*100,1)) %>% 
  left_join(CAES_cods, by = "CAES") %>% 
  select(1:9)
  

rm(Tabla1.1b, Tabla1.2b, Tabla1.3b, Tabla_final, CAES_cods, CIUU_serv, CIUU4_EBOP6)

1.6 Grafico 1

Grafico1 <- Tabla_final2 %>%
  mutate(Servicio = case_when(
    Servicio == "Sí" ~ "Servicio", 
    Servicio == "No" ~ "Bienes")) %>% 
  ggplot(aes(x = Servicio , y = `%Alto`, fill = Servicio)) +
  geom_boxplot() +
  facet_grid(. ~ País) +
  theme_economist() +
  theme(
    axis.title.x = element_blank(),
    legend.position = "none",
    axis.title.y = element_text(margin = margin(r = 15)),  
    strip.text = element_text(margin = margin(b = 5))      
  ) +
  labs(
    title = "Trabajadores con alto nivel de estudio según ramas de actividad",
    caption = "Encuesta de hogares 2024"
  ) +
  ylab("% de trabajadores con alto nivel de estudio")
Grafico1

1.7 Grafico 2

Grafico2 <- Tabla_final2 %>% 
  mutate(Servicio = case_when(
    Servicio == "Sí" ~ "Servicio", 
    Servicio == "No" ~ "Bienes"
  )) %>% 
  ggplot(aes(x = log(Total), y = `%Alto`, color = Servicio, text = PP04B_label)) +  # tooltip solo en el primer geom
  geom_point(size = 3.5) +     
  geom_point(aes(x = log(Total), y = `%Alto`), color = "#D5E4EB", size = 1.5, alpha = 0.9, inherit.aes = FALSE) +  # sin tooltip para el segundo geom
  facet_grid(. ~ País) +
  theme_economist() +
  labs(title = "Cantidad de trabajadores con alta formación según rama", caption = "Encuesta de hogares 2024") +
  ylab("% de trabajadores con alto nivel de estudio") +
  xlab("Logaritmo de total de trabajadores") +
  theme(
    legend.title = element_blank(),
    axis.title.y = element_text(margin = margin(r = 5)),
    strip.text = element_text(margin = margin(b = 5))
  )

ggplotly(Grafico2, tooltip = "text")

1.8 BATIS

batis<-read.csv("services_annual_dataset/services_annual_dataset.csv")


tabla2 <- batis %>%
  filter (ProductClassificationCode == "BOP6") %>% 
  group_by(ProductCode,Product) %>%
  summarise(cuantas = n())
## `summarise()` has grouped output by 'ProductCode'. You can override using the
## `.groups` argument.