# Cargar librerías necesarias
library(readxl)
library(dplyr)
library(tidyverse)
library(ggplot2)
library(kableExtra)
library(FactoMineR)
library(factoextra)
library(openxlsx)

# Leer el archivo de Excel
file_path <- "Base SMII 03-18.xlsx"
df <- read_excel(file_path, sheet = 1)

#Quitamos las observaciones referentes al 2003 por la falta de información
df <- df%>%
  filter(`Año Censal` != 2003)

Proceso 1. Subíndices de eficiencia

Se crean subíndices de eficiencia para diferentes consumos de recursos en relación con la producción bruta total. Estos subíndices permiten evaluar la eficiencia con la que se utiliza cada tipo de recurso (agua, energía, combustibles, envases y papelería) para la producción.

Se calculan cinco subíndices diferentes, uno para cada tipo de recurso, dividiendo la producción bruta total por el consumo del recurso correspondiente. Posterirmente los subíndices se combinan en un índice compuesto de eficiencia, utilizando ponderadores iguales para cada subíndice. Este índice proporciona una medida general de la eficiencia de uso de recursos para cada observación en el dataframe.

# Crear subíndices de eficiencia (producción / consumo) para cada elemento
subindices_eficiencia <- df %>%
  mutate(
    eficiencia_agua = `A111A Producción bruta total (millones de pesos)` / `K976A Consumo de agua (millones de pesos)`,
    eficiencia_energia = `A111A Producción bruta total (millones de pesos)` / `K412A Gasto por consumo de energía eléctrica (millones de pesos)`,
    eficiencia_combustibles = `A111A Producción bruta total (millones de pesos)` / `K042A Consumo de combustibles, lubricantes y energéticos (millones de pesos)`,
    eficiencia_empaques = `A111A Producción bruta total (millones de pesos)` / `K910A Gastos por consumo de envases y empaques (millones de pesos)`,
    eficiencia_papeleria = `A111A Producción bruta total (millones de pesos)` / `K311A Gastos por consumo de papelería y artículos de oficina (millones de pesos)`)

# Asignar ponderadores iguales (1) para cada subíndice
ponderadores_eficiencia <- c(1, 1, 1, 1, 1)
# Calcular el índice compuesto de eficiencia
indice_eficiencia <- subindices_eficiencia %>%
  rowwise() %>%
  mutate(
    indice_eficiencia = sum(c(eficiencia_agua, eficiencia_energia, eficiencia_combustibles, eficiencia_empaques, eficiencia_papeleria) * ponderadores_eficiencia) / sum(ponderadores_eficiencia)
  )%>%
  select(`Año Censal`,rama_cve,rama,indice_eficiencia, eficiencia_agua, eficiencia_energia, eficiencia_combustibles, eficiencia_empaques, eficiencia_papeleria)

indice_eficiencia<-as.data.frame(indice_eficiencia)

# Ordenar la tabla por rama_cve y rama
indice_eficiencia <- indice_eficiencia %>% arrange(rama_cve, `Año Censal`)

# Filtrar las primeras 15 observaciones
indice_eficiencia_15 <- indice_eficiencia %>% slice(1:15)

indice_eficiencia_15 %>%
  kable("html", col.names = c("Año Censal", "Rama Cve", "Rama", "Índice de Eficiencia", "Eficiencia Agua", "Eficiencia Energía", "Eficiencia Combustibles", "Eficiencia Empaques", "Eficiencia Papelería")) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Año Censal Rama Cve Rama Índice de Eficiencia Eficiencia Agua Eficiencia Energía Eficiencia Combustibles Eficiencia Empaques Eficiencia Papelería
2008 3111 Elaboración de alimentos para animales 749.4134 2978.1609 131.13923 117.26754 152.034980 368.4645
2013 3111 Elaboración de alimentos para animales 465.2265 1253.0895 126.38023 117.24738 89.462570 739.9527
2018 3111 Elaboración de alimentos para animales 405.0582 887.1077 135.88667 86.58018 84.571119 831.1451
2008 3112 Molienda de granos y de semillas y obtención de aceites y grasas 598.2031 557.1714 81.17397 42.86200 37.448164 2272.3600
2013 3112 Molienda de granos y de semillas y obtención de aceites y grasas 535.5738 542.9739 81.35383 70.94045 41.734569 1940.8662
2018 3112 Molienda de granos y de semillas y obtención de aceites y grasas 540.4427 269.3525 71.76914 65.83273 32.210070 2263.0493
2008 3113 Elaboración de azúcares, chocolates, dulces y similares 251.7732 223.1951 94.13810 36.17415 23.079491 882.2793
2013 3113 Elaboración de azúcares, chocolates, dulces y similares 196.4265 288.1816 106.37078 66.71179 29.047752 491.8208
2018 3113 Elaboración de azúcares, chocolates, dulces y similares 370.1212 262.4078 110.61586 92.82670 30.183391 1354.5724
2008 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 148.0607 281.9694 62.61998 65.34446 8.425119 321.9445
2013 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 258.7174 226.8647 53.04742 63.35483 11.941298 938.3790
2018 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 348.9212 293.1347 76.80189 65.65187 22.166025 1286.8517
2008 3115 Elaboración de productos lácteos 325.4649 286.3458 100.51123 58.47284 18.807271 1163.1873
2013 3115 Elaboración de productos lácteos 281.1489 456.7619 97.73493 89.38267 27.046070 734.8192
2018 3115 Elaboración de productos lácteos 442.8505 337.3012 73.88211 32.89014 25.639209 1744.5397
# Guardar el dataframe resultante en un archivo CSV
#write.csv(indice_eficiencia, "indice_eficiencia.csv", row.names = FALSE)

Ejemplo de Interpretación

En 2008, la rama de “Elaboración de alimentos para animales” (Rama Cve: 3111) mostró una notable eficiencia en el uso de recursos, reflejada en un índice de eficiencia general de 749.4134. Los subíndices específicos indican un uso particularmente eficiente de varios recursos:

  • Eficiencia de agua: 2978.1609
  • Eficiencia de energía: 131.13923
  • Eficiencia de combustibles: 117.26754
  • Eficiencia de empaques: 152.034980
  • Eficiencia de papelería: 368.4645

La eficiencia del agua es especialmente alta, lo que sugiere un uso extremadamente eficiente del agua en la producción. También se destaca la alta eficiencia en el uso de papelería y artículos de oficina.

Por otra parte, en 2013, la rama de “Conservación de frutas, verduras, guisos y otros alimentos preparados” (Rama Cve: 3114) presentó un índice de eficiencia general de 258.7174. Los subíndices específicos fueron:

  • Eficiencia de agua: 226.8647
  • Eficiencia de energía: 53.04742
  • Eficiencia de combustibles: 63.35483
  • Eficiencia de empaques: 11.941298
  • Eficiencia de papelería: 938.3790

Aunque esta rama mostró una eficiencia notablemente alta en el uso de papelería, la eficiencia en el uso de empaques fue relativamente baja. La eficiencia del agua y de combustibles fue razonable, pero no tan destacada como en el caso de la elaboración de alimentos para animales.

Comparando ambos ejemplos, se observa que la “Elaboración de alimentos para animales” en 2008 presentó una eficiencia general superior (749.4134) en comparación con la “Conservación de frutas, verduras, guisos y otros alimentos preparados” en 2013 (258.7174).

En resumen, aunque ambas ramas muestran fortalezas en diferentes áreas, la “Elaboración de alimentos para animales” en 2008 se destaca por una eficiencia general más alta en la mayoría de los recursos evaluados, con la excepción de la eficiencia en el uso de papelería, donde la “Conservación de frutas, verduras, guisos y otros alimentos preparados” en 2013 mostró un rendimiento superior.

Proceso 2. Subíndices de relación de uso

Se crean subíndices de relación de uso para diferentes recursos en relación con la producción bruta total. Estos subíndices permiten evaluar la intensidad del uso de cada tipo de recurso en la producción.

Se calculan cinco subíndices diferentes, uno para cada tipo de recurso, dividiendo el consumo del recurso correspondiente por la producción bruta total. Los subíndices se combinan en un índice compuesto de uso, utilizando ponderadores iguales para cada subíndice. Este índice proporciona una medida general de la intensidad de uso de recursos para cada observación en el dataframe.

# Crear subíndices de relación de uso (consumo / producción) para cada elemento
subindices_uso <- df %>%
  mutate(
    uso_agua = `K976A Consumo de agua (millones de pesos)` / `A111A Producción bruta total (millones de pesos)`,
    uso_energia = `K412A Gasto por consumo de energía eléctrica (millones de pesos)` / `A111A Producción bruta total (millones de pesos)`,
    uso_combustibles = `K042A Consumo de combustibles, lubricantes y energéticos (millones de pesos)` / `A111A Producción bruta total (millones de pesos)`,
    uso_empaques = `K910A Gastos por consumo de envases y empaques (millones de pesos)` / `A111A Producción bruta total (millones de pesos)`,
    uso_papeleria = `K311A Gastos por consumo de papelería y artículos de oficina (millones de pesos)` / `A111A Producción bruta total (millones de pesos)`)

# Asignar ponderadores iguales (1) para cada subíndice
ponderadores_uso <- c(1, 1, 1, 1, 1)

# Calcular el índice compuesto de uso
indice_uso <- subindices_uso %>%
  rowwise() %>%
  mutate(
    indice_uso = sum(c(uso_agua, uso_energia, uso_combustibles, uso_empaques, uso_papeleria) * ponderadores_uso) / sum(ponderadores_uso)
  )%>%
  select(`Año Censal`,rama_cve,rama,indice_uso, uso_agua, uso_energia, uso_combustibles, uso_empaques, uso_papeleria)

indice_uso<-as.data.frame(indice_uso)

# Ordenar la tabla por rama_cve y rama
indice_uso <- indice_uso %>% arrange(rama_cve, `Año Censal`)

# Filtrar las primeras 15 observaciones
indice_uso_15 <- indice_uso %>% slice(1:15)

indice_uso_15 %>%
  kable("html", col.names = c("Año Censal", "Rama Cve", "Rama", "Índice de Uso", "Uso Agua", "Uso Energía", "Uso Combustibles", "Uso Empaques", "Uso Papelería")) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Año Censal Rama Cve Rama Índice de Uso Uso Agua Uso Energía Uso Combustibles Uso Empaques Uso Papelería
2008 3111 Elaboración de alimentos para animales 0.0051560 0.0003358 0.0076255 0.0085275 0.0065774 0.0027140
2013 3111 Elaboración de alimentos para animales 0.0059538 0.0007980 0.0079126 0.0085290 0.0111779 0.0013514
2018 3111 Elaboración de alimentos para animales 0.0066128 0.0011273 0.0073591 0.0115500 0.0118244 0.0012032
2008 3112 Molienda de granos y de semillas y obtención de aceites y grasas 0.0129177 0.0017948 0.0123192 0.0233307 0.0267036 0.0004401
2013 3112 Molienda de granos y de semillas y obtención de aceites y grasas 0.0105412 0.0018417 0.0122920 0.0140963 0.0239610 0.0005152
2018 3112 Molienda de granos y de semillas y obtención de aceites y grasas 0.0128649 0.0037126 0.0139336 0.0151900 0.0310462 0.0004419
2008 3113 Elaboración de azúcares, chocolates, dulces y similares 0.0174418 0.0044804 0.0106227 0.0276440 0.0433285 0.0011334
2013 3113 Elaboración de azúcares, chocolates, dulces y similares 0.0128641 0.0034700 0.0094011 0.0149899 0.0344261 0.0020333
2018 3113 Elaboración de azúcares, chocolates, dulces y similares 0.0114986 0.0038109 0.0090403 0.0107728 0.0331308 0.0007382
2008 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 0.0313236 0.0035465 0.0159693 0.0153035 0.1186927 0.0031061
2013 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 0.0247703 0.0044079 0.0188511 0.0157841 0.0837430 0.0010657
2018 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 0.0155110 0.0034114 0.0130205 0.0152319 0.0451141 0.0007771
2008 3115 Elaboración de productos lácteos 0.0169148 0.0034923 0.0099491 0.0171020 0.0531709 0.0008597
2013 3115 Elaboración de productos lácteos 0.0123888 0.0021893 0.0102318 0.0111879 0.0369739 0.0013609
2018 3115 Elaboración de productos lácteos 0.0172960 0.0029647 0.0135351 0.0304042 0.0390028 0.0005732
# Guardar el dataframe resultante en un archivo CSV
#write.csv(indice_uso, "indice_uso.csv", row.names = FALSE)

Ejemplo de Interpretación

En 2008, la rama de “Elaboración de alimentos para animales” (Rama Cve: 3111) mostró una relación de uso de recursos eficiente, reflejada en un índice de uso general de 0.0051560. Los subíndices específicos indican la relación de uso de varios recursos en la producción:

  • Uso de agua: 0.0003358
  • Uso de energía: 0.0076255
  • Uso de combustibles: 0.0085275
  • Uso de empaques: 0.0065774
  • Uso de papelería: 0.0027140

La relación de uso del agua es particularmente baja, lo que sugiere un uso muy eficiente del agua en la producción. También se destaca la baja relación de uso en energía y empaques.

Así mismo, en 2013, la rama de “Conservación de frutas, verduras, guisos y otros alimentos preparados” (Rama Cve: 3114) presentó un índice de uso general de 0.0247703. Los subíndices específicos para esta rama fueron:

  • Uso de agua: 0.0044079
  • Uso de energía: 0.0188511
  • Uso de combustibles: 0.0157841
  • Uso de empaques: 0.0837430
  • Uso de papelería: 0.0010657

Aunque esta rama mostró una relación de uso baja en papelería, la relación de uso en empaques fue relativamente alta. La relación de uso de agua y combustibles fue razonable, pero más alta en comparación con la elaboración de alimentos para animales.

Comparando ambos ejemplos, se observa que la “Elaboración de alimentos para animales” en 2008 presentó una relación de uso general más baja (0.0051560) en comparación con la “Conservación de frutas, verduras, guisos y otros alimentos preparados” en 2013 (0.0247703).

En resumen, aunque ambas ramas muestran diferentes patrones de uso de recursos, la “Elaboración de alimentos para animales” en 2008 se destaca por una relación de uso general más baja en la mayoría de los recursos evaluados, lo que indica un uso más eficiente de los recursos en comparación con la “Conservación de frutas, verduras, guisos y otros alimentos preparados” en 2013.

Proceso 3. Análisis de componentes principales

Se realiza un análisis de componentes principles para combinar las variables como el consumo de agua, energía y combustibles en unos pocos componentes principales que capturan la mayor parte de la variabilidad de los datos originales.

Se incluye la producción en el análisis con el objetivo de entender las relaciones y variabilidad entre todos los gastos y consumos en relación a la producción.

# Función para realizar PCA por año censal
pca_por_año <- function(df, año) {
  # Filtrar el dataframe por año
  df_año <- df %>% filter(`Año Censal` == año)
  
  # Seleccionar las variables para PCA
  variables_pca <- df_año %>%
    select(`A111A Producción bruta total (millones de pesos)`, 
           `K976A Consumo de agua (millones de pesos)`, 
           `K412A Gasto por consumo de energía eléctrica (millones de pesos)`, 
           `K042A Consumo de combustibles, lubricantes y energéticos (millones de pesos)`, 
           `K910A Gastos por consumo de envases y empaques (millones de pesos)`, 
           `K311A Gastos por consumo de papelería y artículos de oficina (millones de pesos)`)
  
  # Estandarizar las variables
  variables_pca_estandarizadas <- scale(variables_pca)
  
  # Realizar el análisis de componentes principales
  pca_result <- prcomp(variables_pca_estandarizadas)
  
  # Proporción de varianza explicada por cada componente principal
  pr.var <- pca_result$sdev^2
  pve <- pr.var/sum(pr.var)
  
  # Plot de la varianza explicada acumulada
  plot(cumsum(pve), xlab="Componente Principal", ylab="Proporción Acumulada de la Varianza Explicada", 
       ylim=c(0,1), type='b', main = paste("Varianza Explicada -", año))
  text(cumsum(pve), labels = round(cumsum(pve), 3), cex = 0.8, pos = 1, col = "black")
  
  # Cargas de los componentes principales
  loads_pca <- pca_result$rotation
  loads_pca_df <- as.data.frame(loads_pca)
  
  # Vectores de puntuación de los componentes principales
  scores_pca <- pca_result$x
  
  # Convertir los scores a un dataframe
  scores_pca_df <- as.data.frame(scores_pca)
  
  # Agregar las columnas de identificación
  scores_pca_df <- cbind(df_año %>% select(`Año Censal`, rama_cve, rama), scores_pca_df)
  
  return(list(loads_pca_df=loads_pca_df,
              scores_pca_df=scores_pca_df))
}

# Lista de años censales
años_censales <- c(2008, 2013, 2018)

# Aplicar la función para cada año censal y guardar los resultados en una lista
resultados_pca <- lapply(años_censales, function(año) pca_por_año(df, año))

# Crear un data frame de loads_pca_df con el año correspondiente
loads_pca_general <- do.call(bind_rows, lapply(1:length(años_censales), function(i) {
  res <- resultados_pca[[i]]$loads_pca_df
  res$Año_Censal <- años_censales[i]
  res
}))

# Mostrar los loads_pca_df de los tres años
loads_pca_general %>%
  kable("html", col.names = c("PC 1", "PC 2", "PC 3", "PC 4", "PC 5", "PC 6", "Año Censal")) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
PC 1 PC 2 PC 3 PC 4 PC 5 PC 6 Año Censal
A111A Producción bruta total (millones de pesos)…1 -0.4875736 -0.3670287 -0.1065212 0.0162769 -0.7415208 -0.2570935 2008
K976A Consumo de agua (millones de pesos)…2 -0.5360389 0.1089574 0.2724981 0.0729351 -0.0122469 0.7880774 2008
K412A Gasto por consumo de energía eléctrica (millones de pesos)…3 -0.3625690 0.1096382 -0.6107415 0.6085752 0.3205680 -0.1019336 2008
K042A Consumo de combustibles, lubricantes y energéticos (millones de pesos)…4 -0.3625415 -0.6239799 0.1090200 -0.3260207 0.5794881 -0.1588442 2008
K910A Gastos por consumo de envases y empaques (millones de pesos)…5 -0.3576783 0.4632696 0.5903573 0.1522820 0.1060649 -0.5239144 2008
K311A Gastos por consumo de papelería y artículos de oficina (millones de pesos)…6 -0.2900138 0.4872658 -0.4254243 -0.7032585 0.0133002 -0.0522378 2008
A111A Producción bruta total (millones de pesos)…7 -0.3861759 -0.5123547 -0.1216938 -0.1252961 -0.7444989 -0.0597805 2013
K976A Consumo de agua (millones de pesos)…8 -0.5225977 0.0940515 0.0711269 -0.0372500 0.2652904 -0.8007624 2013
K412A Gasto por consumo de energía eléctrica (millones de pesos)…9 -0.4102683 0.1112078 -0.7747656 -0.2148848 0.2739690 0.3127564 2013
K042A Consumo de combustibles, lubricantes y energéticos (millones de pesos)…10 -0.1604028 -0.7613169 0.2304104 0.0765622 0.5396445 0.2109516 2013
K910A Gastos por consumo de envases y empaques (millones de pesos)…11 -0.4155566 0.2936714 0.5568738 -0.5388379 -0.0169694 0.3746028 2013
K311A Gastos por consumo de papelería y artículos de oficina (millones de pesos)…12 -0.4593729 0.2245740 0.1291220 0.8003311 -0.0936976 0.2693724 2013
A111A Producción bruta total (millones de pesos)…13 -0.5135482 0.0318477 0.0562321 0.4188094 0.3956484 0.6325764 2018
K976A Consumo de agua (millones de pesos)…14 -0.5081418 -0.2737900 0.0318669 -0.0497945 0.4719380 -0.6637850 2018
K412A Gasto por consumo de energía eléctrica (millones de pesos)…15 -0.4824886 0.2111011 -0.0901718 0.4240800 -0.6893153 -0.2439482 2018
K042A Consumo de combustibles, lubricantes y energéticos (millones de pesos)…16 -0.3385656 -0.6057331 -0.2908935 -0.4889413 -0.3191548 0.3048253 2018
K910A Gastos por consumo de envases y empaques (millones de pesos)…17 -0.2971169 0.3154310 0.7395764 -0.4931085 -0.1243632 0.0814210 2018
K311A Gastos por consumo de papelería y artículos de oficina (millones de pesos)…18 -0.2058149 0.6426911 -0.5967405 -0.4000698 0.1680933 0.0133407 2018
# Unir los data frames de scores en uno solo
scores_pca_general <- do.call(bind_rows, lapply(resultados_pca, function(res) res$scores_pca_df))

# Ordenar la tabla por rama_cve y Año Censal
scores_pca_general <- scores_pca_general %>% arrange(rama_cve, `Año Censal`)

# Filtrar las primeras 15 observaciones
scores_pca_general_15 <- scores_pca_general %>% slice(1:15)

# Mostrar la tabla unificada
scores_pca_general_15 %>%
  kable("html", col.names = c("Año Censal", "Rama Cve", "Rama", "PC 1", "PC 2", "PC 3", "PC 4", "PC 5", "PC 6")) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Año Censal Rama Cve Rama PC 1 PC 2 PC 3 PC 4 PC 5 PC 6
2008 3111 Elaboración de alimentos para animales 0.3002864 0.1292082 -0.2959615 -0.5627747 -0.2868515 -0.2496551
2013 3111 Elaboración de alimentos para animales 0.3965452 -0.0693668 0.0679107 -0.0387509 -0.2560369 0.1305147
2018 3111 Elaboración de alimentos para animales 0.1429339 0.0315329 0.1678597 0.0474521 0.0879387 0.2867109
2008 3112 Molienda de granos y de semillas y obtención de aceites y grasas -1.2409863 -0.1992659 0.2987386 0.4729781 -0.1759629 0.0927093
2013 3112 Molienda de granos y de semillas y obtención de aceites y grasas -1.0986265 0.1330963 0.0648685 -1.0950382 -0.1652616 0.1122358
2018 3112 Molienda de granos y de semillas y obtención de aceites y grasas -0.9626598 0.3405308 1.2155351 -0.2795221 -0.2394498 0.1262340
2008 3113 Elaboración de azúcares, chocolates, dulces y similares -0.8401932 0.1603765 0.7310911 0.0842631 -0.0532280 0.7738560
2013 3113 Elaboración de azúcares, chocolates, dulces y similares -0.5227827 0.2993373 0.5522177 -0.3287991 -0.0361593 -0.1450371
2018 3113 Elaboración de azúcares, chocolates, dulces y similares -0.1851440 0.1496705 0.8271160 -0.3098312 0.0498567 0.1130250
2008 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados -0.7783472 0.9148590 0.7480019 -0.0687544 0.0690448 -0.1866113
2013 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados -0.6317600 0.5561728 0.8156369 -1.1807476 0.1408810 0.2199943
2018 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 0.0746522 0.1130078 0.7330776 -0.3056320 -0.0808672 0.0839725
2008 3115 Elaboración de productos lácteos -1.8117396 0.4827817 1.0567976 0.3463201 -0.2322763 0.6651093
2013 3115 Elaboración de productos lácteos -1.2979883 0.4451571 0.7225598 -0.9101039 -0.2071427 0.2983860
2018 3115 Elaboración de productos lácteos -0.8602407 0.3327996 1.3065330 -0.5655041 -0.3418656 0.2778382
# Guardar el dataframe resultante en un archivo CSV
#write.csv(scores_pca_general "scores_pca_general.csv", row.names = FALSE)

Componentes principales

La varianza explicada en un Análisis de Componentes Principales (PCA) indica cuánto de la variabilidad total en los datos puede ser atribuida a cada componente principal.

El PC1 (Primer Componente Principal): Explica el 50.2% de la varianza total para los datos del año 2008, el 55.7% para el 2013 y el 56.1% para los del 2018. Esto significa que el primer componente principal captura más de la mitad de la variabilidad presente en los datos originales. Es el componente más importante en términos de explicación de la variabilidad.

PC1 está fuertemente influenciado negativamente por todas las variables, especialmente por la Producción bruta total, el Consumo de agua y el Gasto por consumo de energía eléctrica. Esto significa que una alta puntuación en PC1 corresponde a bajos valores en estas variables y viceversa. PC1 puede interpretarse como una medida general de tamaño o escala operativa de las actividades, donde valores negativos altos de PC1 implican actividades con mayores producciones, consumos de agua, energía, etc.

Proceso 4. Análisis de componentes principales con los subíndices de eficiencia y uso

Se realiza el proceso para calcular componentes principales a partir de los subíndices de eficiencia y uso,.

# Definir una función para realizar el proceso para un año específico
procesar_anio <- function(anio) {
  # Filtrar para el año seleccionado
  indice_eficiencia_anio <- indice_eficiencia %>% filter(`Año Censal` == anio)
  indice_uso_anio <- indice_uso %>% filter(`Año Censal` == anio)
  
  # Seleccionar las variables para el análisis de componentes principales (PCA)
  indice_eficiencia_pca_anio <- indice_eficiencia_anio[, 5:9]
  indice_uso_pca_anio <- indice_uso_anio[, 5:9]
  
  # Estandarizar las variables
  variables_eficiencia_pca_estandarizadas_anio <- scale(indice_eficiencia_pca_anio)
  variables_uso_pca_estandarizadas_anio <- scale(indice_uso_pca_anio)
  
  # Realizar el análisis de componentes principales
  pca_eficiencia_result_anio <- prcomp(variables_eficiencia_pca_estandarizadas_anio)
  pca_uso_result_anio <- prcomp(variables_uso_pca_estandarizadas_anio)
  
  return(list(
    pca_eficiencia_result = pca_eficiencia_result_anio,
    pca_uso_result = pca_uso_result_anio
  ))
}

# Aplicar la función para los años 2008, 2013 y 2018
resultados_2008 <- procesar_anio(2008)
resultados_2013 <- procesar_anio(2013)
resultados_2018 <- procesar_anio(2018)

# Acceder a los resultados
pca_eficiencia_2008 <- resultados_2008$pca_eficiencia_result
pca_uso_2008 <- resultados_2008$pca_uso_result

pca_eficiencia_2013 <- resultados_2013$pca_eficiencia_result
pca_uso_2013 <- resultados_2013$pca_uso_result

pca_eficiencia_2018 <- resultados_2018$pca_eficiencia_result
pca_uso_2018 <- resultados_2018$pca_uso_result

#Verificamos la proporción de varianza explicada por cada componente principal 
# Función para calcular y graficar la PVE acumulada
graficar_pve <- function(pca_result, anio) {
  pr.var <- pca_result$sdev^2
  pve <- pr.var/sum(pr.var)
  plot(cumsum(pve), 
       xlab = "Componente Principal", 
       ylab = "Proporción Acumulada de la Varianza Explicada", 
       ylim = c(0, 1), 
       type = 'b', 
       main = paste("PVE Acumulada - Año", anio))
  text(cumsum(pve),
       labels = round(cumsum(pve), 3),
       cex = 0.8, pos = 1, col = "black")
}

# Aplicar la función a los resultados de PCA de eficiencia para los años 2008, 2013 y 2018
graficar_pve(resultados_2008$pca_eficiencia_result, 2008)

graficar_pve(resultados_2013$pca_eficiencia_result, 2013)

graficar_pve(resultados_2018$pca_eficiencia_result, 2018)

# Aplicar la función a los resultados de PCA de eficiencia para los años 2008, 2013 y 2018
graficar_pve(resultados_2008$pca_uso_result, 2008)

graficar_pve(resultados_2013$pca_uso_result, 2013)

graficar_pve(resultados_2018$pca_uso_result, 2018)

# Función para crear la tabla con las cargas de cada variable y agregar la columna "Año Censal"
crear_tabla_cargas <- function(pca_result, anio) {
  loads_pca <- as.data.frame(pca_result$rotation)
  loads_pca$`Año Censal` <- anio
  colnames(loads_pca) <- c("PC 1", "PC 2", "PC 3", "PC 4", "PC 5", "Año Censal")
  return(loads_pca)
}

#Eficiencia
# Crear tablas para cada año
tabla_cargas_2008_ef <- crear_tabla_cargas(resultados_2008$pca_eficiencia_result, 2008)
tabla_cargas_2013_ef <- crear_tabla_cargas(resultados_2013$pca_eficiencia_result, 2013)
tabla_cargas_2018_ef <- crear_tabla_cargas(resultados_2018$pca_eficiencia_result, 2018)

# Combinar las tablas
tabla_cargas_combined_ef <- bind_rows(tabla_cargas_2008_ef, tabla_cargas_2013_ef, tabla_cargas_2018_ef)

# Mostrar la tabla
tabla_cargas_combined_ef %>%
  kable("html", col.names = c("PC 1", "PC 2", "PC 3", "PC 4", "PC 5", "Año Censal")) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
PC 1 PC 2 PC 3 PC 4 PC 5 Año Censal
eficiencia_agua…1 -0.5137063 -0.3446729 0.0184415 0.7303762 0.2889929 2008
eficiencia_energia…2 -0.4420058 0.5361297 -0.2938952 0.1972496 -0.6260304 2008
eficiencia_combustibles…3 -0.4052009 -0.4031155 -0.6487694 -0.4943338 0.0896794 2008
eficiencia_empaques…4 -0.4364117 -0.3263246 0.6689762 -0.3244615 -0.3876244 2008
eficiencia_papeleria…5 -0.4313858 0.5698909 0.2117890 -0.2792883 0.6052058 2008
eficiencia_agua…6 -0.5339792 0.0936797 -0.1830687 0.3227290 -0.7539378 2013
eficiencia_energia…7 -0.5160509 -0.0525781 0.3345968 0.5836583 0.5275557 2013
eficiencia_combustibles…8 -0.1885215 0.9412786 -0.0660316 -0.2054424 0.1785708 2013
eficiencia_empaques…9 -0.4745999 -0.1812400 0.5464619 -0.6581247 -0.1007882 2013
eficiencia_papeleria…10 -0.4333270 -0.2638301 -0.7426642 -0.2825850 0.3334921 2013
eficiencia_agua…11 -0.5713009 -0.1122589 -0.2998822 0.1935349 0.7304985 2018
eficiencia_energia…12 -0.5485886 -0.0675363 0.1293568 -0.8048612 -0.1730739 2018
eficiencia_combustibles…13 -0.1754266 -0.6891908 0.6365533 0.2924521 -0.0592717 2018
eficiencia_empaques…14 -0.5607080 0.1932185 -0.2166131 0.4646523 -0.6208463 2018
eficiencia_papeleria…15 -0.1658247 0.6859441 0.6642410 0.1153804 0.2178395 2018
#Uso
# Crear tablas para cada año
tabla_cargas_2008_uso <- crear_tabla_cargas(resultados_2008$pca_uso_result, 2008)
tabla_cargas_2013_uso <- crear_tabla_cargas(resultados_2013$pca_uso_result, 2013)
tabla_cargas_2018_uso <- crear_tabla_cargas(resultados_2018$pca_uso_result, 2018)

# Combinar las tablas
tabla_cargas_combined_uso <- bind_rows(tabla_cargas_2008_uso, tabla_cargas_2013_uso, tabla_cargas_2018_uso)

# Mostrar la tabla
tabla_cargas_combined_uso %>%
  kable("html", col.names = c("PC 1", "PC 2", "PC 3", "PC 4", "PC 5", "Año Censal")) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
PC 1 PC 2 PC 3 PC 4 PC 5 Año Censal
uso_agua…1 0.4934749 0.4284471 0.0920193 -0.6481486 0.3799361 2008
uso_energia…2 0.5504683 -0.4666881 0.1721734 -0.2333928 -0.6285467 2008
uso_combustibles…3 0.5699054 -0.3108129 0.0156410 0.5428658 0.5325929 2008
uso_empaques…4 0.3570636 0.6504622 -0.3286618 0.4127556 -0.4135442 2008
uso_papeleria…5 -0.0343601 0.2809440 0.9239186 0.2456843 -0.0768346 2008
uso_agua…6 0.6638108 -0.1738572 0.0254020 -0.0903521 -0.7213322 2013
uso_energia…7 0.4933328 -0.3335556 0.5366562 0.3029718 0.5153363 2013
uso_combustibles…8 -0.2400197 -0.6723549 0.1567944 -0.6817006 0.0320823 2013
uso_empaques…9 0.3611786 -0.2517085 -0.8164092 -0.0492527 0.3704634 2013
uso_papeleria…10 0.3576571 0.5857440 0.1422898 -0.6579537 0.2753832 2013
uso_agua…11 -0.7009397 0.0964588 0.0060314 -0.0631405 0.7038154 2018
uso_energia…12 -0.4223640 -0.5262120 -0.1094001 0.6709298 -0.2873924 2018
uso_combustibles…13 -0.3591878 0.0591997 0.8171923 -0.2143788 -0.3920689 2018
uso_empaques…14 -0.4393897 0.4504663 -0.5337198 -0.2311413 -0.5154937 2018
uso_papeleria…15 -0.0906259 -0.7123006 -0.1879765 -0.6681930 -0.0509677 2018
# Vectores de puntuación los componentes principales
#2008
scores_pca_eficiencia_2008 <- pca_eficiencia_2008$x
scores_pca_uso_2008 <- pca_uso_2008$x
scores_pca_df_eficiencia_2008 <- as.data.frame(scores_pca_eficiencia_2008)
scores_pca_df_uso_2008 <- as.data.frame(scores_pca_uso_2008)
scores_pca_df_eficiencia_2008 <- cbind((indice_eficiencia %>% filter(`Año Censal` == 2008))[,1:3], scores_pca_df_eficiencia_2008)
scores_pca_df_uso_2008 <- cbind((indice_uso %>% filter(`Año Censal` == 2008))[,1:3], scores_pca_df_uso_2008)

#2013
scores_pca_eficiencia_2013 <- pca_eficiencia_2013$x
scores_pca_uso_2013 <- pca_uso_2013$x
scores_pca_df_eficiencia_2013 <- as.data.frame(scores_pca_eficiencia_2013)
scores_pca_df_uso_2013 <- as.data.frame(scores_pca_uso_2013)
scores_pca_df_eficiencia_2013 <- cbind((indice_eficiencia %>% filter(`Año Censal` == 2013))[,1:3], scores_pca_df_eficiencia_2013)
scores_pca_df_uso_2013 <- cbind((indice_uso %>% filter(`Año Censal` == 2013))[,1:3], scores_pca_df_uso_2013)

#2018
scores_pca_eficiencia_2018 <- pca_eficiencia_2018$x
scores_pca_uso_2018 <- pca_uso_2018$x
scores_pca_df_eficiencia_2018 <- as.data.frame(scores_pca_eficiencia_2018)
scores_pca_df_uso_2018 <- as.data.frame(scores_pca_uso_2018)
scores_pca_df_eficiencia_2018 <- cbind((indice_eficiencia %>% filter(`Año Censal` == 2018))[,1:3], scores_pca_df_eficiencia_2018)
scores_pca_df_uso_2018 <- cbind((indice_uso %>% filter(`Año Censal` == 2018))[,1:3], scores_pca_df_uso_2018)

scores_pca_df_eficiencia <- rbind(scores_pca_df_eficiencia_2008,scores_pca_df_eficiencia_2013,scores_pca_df_eficiencia_2018)%>%
  arrange(rama_cve, `Año Censal`)
  
scores_pca_df_uso <-rbind(scores_pca_df_uso_2008,scores_pca_df_uso_2013,scores_pca_df_uso_2018)%>%
  arrange(rama_cve, `Año Censal`)


# Filtrar las primeras 15 observaciones
scores_pca_15_ef <- scores_pca_df_eficiencia %>% slice(1:15)
scores_pca_15_ef %>%
  kable("html", col.names = c("Año Censal", "Rama Cve", "Rama", "PC 1", "PC 2", "PC 3", "PC 4", "PC 5")) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Año Censal Rama Cve Rama PC 1 PC 2 PC 3 PC 4 PC 5
2008 3111 Elaboración de alimentos para animales -1.0435916 -0.5961366 -0.2710829 1.6914216 0.2110226
2013 3111 Elaboración de alimentos para animales -0.2494661 -0.0313505 -0.0229370 0.6329137 -0.2363413
2018 3111 Elaboración de alimentos para animales -0.7890055 -0.1093833 0.1271590 -1.1304247 0.2480161
2008 3112 Molienda de granos y de semillas y obtención de aceites y grasas 0.3851370 0.7109270 0.2210991 0.0824009 0.2327710
2013 3112 Molienda de granos y de semillas y obtención de aceites y grasas 0.0110863 -0.3720603 -0.6630273 0.0540443 0.3027141
2018 3112 Molienda de granos y de semillas y obtención de aceites y grasas 0.1847457 1.4711614 0.9486647 -0.1914144 0.3963246
2008 3113 Elaboración de azúcares, chocolates, dulces y similares 0.7578662 0.6208261 0.0958566 0.0451108 -0.2289411
2013 3113 Elaboración de azúcares, chocolates, dulces y similares 0.4536182 -0.1572882 0.1522683 0.3920036 0.2706329
2018 3113 Elaboración de azúcares, chocolates, dulces y similares -0.1849497 0.2947134 0.7670541 -0.7744695 -0.0042944
2008 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 0.8420528 0.2565766 -0.0484921 -0.0198038 -0.1435188
2013 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 0.6060436 -0.2188056 -0.2256043 0.0465354 0.1730182
2018 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 0.3035123 0.7088356 0.2258965 -0.4038105 0.1679855
2008 3115 Elaboración de productos lácteos 0.5864194 0.6126835 -0.0237501 -0.0191543 -0.1617648
2013 3115 Elaboración de productos lácteos 0.3311672 -0.1290702 -0.0256665 0.3441202 0.1798169
2018 3115 Elaboración de productos lácteos 0.3507316 1.5740540 0.0701062 -0.5020708 0.3674875
scores_pca_15 <- scores_pca_df_uso %>% slice(1:15)
scores_pca_15 %>%
  kable("html", col.names = c("Año Censal", "Rama Cve", "Rama", "PC 1", "PC 2", "PC 3", "PC 4", "PC 5")) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Año Censal Rama Cve Rama PC 1 PC 2 PC 3 PC 4 PC 5
2008 3111 Elaboración de alimentos para animales -1.5216432 -0.1607020 0.0196817 0.5447211 0.1622891
2013 3111 Elaboración de alimentos para animales -1.3788908 0.4468070 -0.4174912 0.3212622 -0.1572317
2018 3111 Elaboración de alimentos para animales 1.2713822 0.5555232 0.0403667 -0.4349934 -0.1078451
2008 3112 Molienda de granos y de semillas y obtención de aceites y grasas -0.2362346 0.0879062 -1.0874666 0.2120042 0.4130383
2013 3112 Molienda de granos y de semillas y obtención de aceites y grasas -0.7704515 -0.1562621 -0.8168762 0.3858582 -0.0579489
2018 3112 Molienda de granos y de semillas y obtención de aceites y grasas -0.4197266 1.0355499 -0.6390335 -0.4091615 -0.3984806
2008 3113 Elaboración de azúcares, chocolates, dulces y similares 0.8686364 1.3312368 -0.8363177 -0.4649174 0.9622334
2013 3113 Elaboración de azúcares, chocolates, dulces y similares -0.1057844 -0.1384649 -1.3580770 -0.0395887 -0.3272272
2018 3113 Elaboración de azúcares, chocolates, dulces y similares -0.2364137 1.3291612 -0.8639054 -0.7336826 -0.2281897
2008 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 1.4505405 3.1319207 -0.8718038 0.9597006 -0.9855478
2013 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados 1.4538634 -1.3274887 -3.2680042 0.1640431 0.7772158
2018 3114 Conservación de frutas, verduras, guisos y otros alimentos preparados -0.7736231 1.5340890 -1.2060899 -0.7280628 -1.0120800
2008 3115 Elaboración de productos lácteos 0.4203843 1.4072833 -1.1516760 -0.1480539 0.3824391
2013 3115 Elaboración de productos lácteos -0.3968615 -0.1341092 -1.4942313 0.2029346 0.0851136
2018 3115 Elaboración de productos lácteos -0.7477231 1.3396581 -0.3167328 -0.7333512 -1.2184721
# Guardar el dataframe resultante en un archivo CSV
#write.csv(scores_pca_df, "scores_pca.csv", row.names = FALSE)

Componentes principales para los subindices de eficiencia

El Primer Componente Principal (PC1) de los subíndices de eficiencia explica el 52.1% de la varianza total en promedio para los tres años de análisis. Esto significa que el PC1 captura una parte significativa de la variabilidad presente en los datos de eficiencia, siendo el componente más importante en términos de explicación de la variabilidad en este contexto.

Para los tres años, el PC1 está influenciado negativamente por todas las variables de los subíndices de eficiencia. Estas cargas indican que una alta puntuación en PC1 corresponde a bajos valores en estas variables de eficiencia y viceversa. En otras palabras, PC1 puede interpretarse como una medida general de eficiencia operativa en las actividades, donde valores negativos altos de PC1 implican una mayor eficiencia en el uso de agua, energía, combustibles, empaques y papelería.

Componentes principales para los subindices de uso

El Primer Componente Principal (PC1) de los subíndices de uso explica solo el 32.9% de la varianza total en promedio para los tres años de análisis. Este bajo valor indica que el PC1 no captura una proporción significativa de la variabilidad presente en los datos originales de uso. En términos prácticos, esto sugiere que la variabilidad en el uso de recursos (agua, energía, combustibles, empaques y papelería) está distribuida de manera más dispersa entre varios componentes principales, y no se concentra principalmente en el PC1.

Las cargas indican que todas las variables de uso están negativamente correlacionadas con PC1. Sin embargo, dado que PC1 solo explica en promedio para los tres años de análisis 32.9% de la varianza, esto implica que no puede considerarse como una medida general suficientemente representativa del uso de recursos en las actividades. En otras palabras, la variabilidad en el uso de recursos no se puede resumir adecuadamente en un solo componente, sino que requiere considerar varios componentes para una comprensión completa.

#Unir todos los csv
indices_all<-cbind(indice_eficiencia[,1:4],
                   "Índice de uso"= indice_uso[,4], 
                   "PC 1 análisis considerando la producción y los gastos"= scores_pca_general[,4],
                   "PC 1 eficiencia (PBT/Gasto)"= scores_pca_df_eficiencia[,4], 
                   "PC 1 uso (Gasto/PBT)"= scores_pca_df_uso[,4])
colnames(indices_all)[4] <- "Índice de eficiencia"
fila_textos <- data.frame(matrix(c(
  "",
  "",
  "",
  "Considera el promedio de las relaciones de PBT/Gasto",
  "Considera el promedio de las relaciones de Gasto/PBT",
  "En promedio de los 3 años, 54% Varianza Explicada. Valores negativos altos de PC1 implican actividades con mayores producciones, consumos de agua, energía, etc.",
  "En promedio de los 3 años, 52.1% Varianza Explicada. Valores negativos altos de PC1 implican una mayor eficiencia (PBT/Gasto) en el uso de agua, energía, combustibles, empaques y papelería.",
  "En promedio de los 3 años, 32.9% Varianza Explicada. Debido a su baja explicación este componente no puede considerarse como una medida general suficientemente representativa del uso de recursos en las actividades."),
  nrow=1))
colnames(fila_textos) <- colnames(indices_all)
indices_all <- rbind(fila_textos, indices_all)

write.xlsx(indices_all, file = "indices_all.xlsx", rowNames = FALSE)