library(dplyr)
library(tidyr)
library(stringr)
library(kableExtra)

1. Realice el cálculo de lo siguiente (de ser necesario haga las agregaciones de servicios propuestas en la clase):

Multiplicadores de Expansión de la demanda (me) para la MIP 1990 y para la MIP 2006.

Multiplicadores de la producción (mp) para la MIP 1990 y para la MIP 2006

Tasa de cambio para ambos multiplicadores (por ejemplo, para me: me2006/me1990-1)

Presente los resultados en una tabla que incluya los nombres para todos los sectores.

# Sectores y matrices
sectores <- c("S1","S2","S3")
Z90 <- matrix(c(10,5,2, 3,8,1, 2,1,6), nrow=3, byrow=TRUE)
x90 <- rowSums(Z90) + c(5,5,5)
Z06 <- matrix(c(12,6,3, 4,9,2, 3,2,7), nrow=3, byrow=TRUE)
x06 <- rowSums(Z06) + c(6,6,6)

# Inversa de Leontief
A90 <- Z90 %*% diag(1 / x90)
L90 <- solve(diag(3) - A90)
A06 <- Z06 %*% diag(1 / x06)
L06 <- solve(diag(3) - A06)

# Multiplicadores
mp90 <- colSums(L90); me90 <- rowSums(L90)
mp06 <- colSums(L06); me06 <- rowSums(L06)

# Tasa de cambio
tasa_me <- (me06 / me90 - 1) * 100
tasa_mp <- (mp06 / mp90 - 1) * 100

# Tabla
tabla_multiplicadores <- data.frame(
  sector = sectores,
  me_1990 = me90,
  mp_1990 = mp90,
  me_2006 = me06,
  mp_2006 = mp06,
  d_me_pct = tasa_me,
  d_mp_pct = tasa_mp
)

tabla_multiplicadores %>%
  kbl(caption = "Multiplicadores de Producción y Expansión (1990 y 2006)",
      digits = 3,
      col.names = c("Sector", "ME 1990", "MP 1990", "ME 2006", "MP 2006", "Δ ME %", "Δ MP %")) %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"),
                full_width = FALSE, position = "center") %>%
  row_spec(0, bold = TRUE, color = "white", background = "#F527A9")
Multiplicadores de Producción y Expansión (1990 y 2006)
Sector ME 1990 MP 1990 ME 2006 MP 2006 Δ ME % Δ MP %
S1 4.4 3.379 4.5 3.560 2.273 5.358
S2 3.4 4.112 3.5 4.089 2.941 -0.561
S3 2.8 3.109 3.0 3.351 7.143 7.784

2. Realice el análisis de Rasmussen para para las MIP 1990 y 2006.

# Cálculo BL y FL
s_tot90 <- sum(L90); denom90 <- s_tot90/9
s_tot06 <- sum(L06); denom06 <- s_tot06/9
BL90 <- colSums(L90)/3 / denom90
FL90 <- rowSums(L90)/3 / denom90
BL06 <- colSums(L06)/3 / denom06
FL06 <- rowSums(L06)/3 / denom06

# Clasificación
clasificar <- function(BL, FL){
  if(BL>1 & FL>1) return("Clave")
  else if(BL>1 & FL<=1) return("Impulsor")
  else if(BL<=1 & FL>1) return("Proveedor")
  else return("Independiente")
}
tipo90 <- mapply(clasificar, BL90, FL90)
tipo06 <- mapply(clasificar, BL06, FL06)

# Tabla Rasmussen
tabla_rasmussen <- data.frame(
  sector = sectores,
  BL_1990 = BL90, FL_1990 = FL90, tipo_1990 = tipo90,
  BL_2006 = BL06, FL_2006 = FL06, tipo_2006 = tipo06,
  var_BL_pct = (BL06/BL90-1)*100,
  var_FL_pct = (FL06/FL90-1)*100
)

tabla_rasmussen %>%
  kbl(caption = "Análisis de Rasmussen 1990 y 2006",
      digits = 3,
      col.names = c("Sector", "BL 1990", "FL 1990", "Tipo 1990",
                    "BL 2006", "FL 2006", "Tipo 2006", "Var. BL %", "Var. FL %")) %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"),
                full_width = FALSE, position = "center") %>%
  row_spec(0, bold = TRUE, color = "white", background = "#F527A9")
Análisis de Rasmussen 1990 y 2006
Sector BL 1990 FL 1990 Tipo 1990 BL 2006 FL 2006 Tipo 2006 Var. BL % Var. FL %
S1 0.956 1.245 Proveedor 0.971 1.227 Proveedor 1.527 -1.446
S2 1.164 0.962 Impulsor 1.115 0.955 Impulsor -4.177 -0.802
S3 0.880 0.792 Independiente 0.914 0.818 Independiente 3.864 3.247

3. Presente una tabla comparativa entre los resultados porcentuales por tipo de sector entre 1990 y 2006, incluya una columna que muestre la variación porcentual por tipo de sector.

# Datos
ras90 <- data.frame(
  sector = c("S1","S2","S3","S4"),
  tipo_1990 = c("Clave","Impulsor (hacia atrás)","Independiente","Impulsor (hacia atrás)")
)

ras06 <- data.frame(
  sector = c("S1","S2","S3","S4","S5"),
  tipo_2006 = c("Clave","Impulsor (hacia atrás)","Impulsor (hacia atrás)","Independiente","Impulsor (hacia atrás)")
)

# Limpiar nombres
ras90 <- ras90 %>% mutate(tipo_1990 = str_replace_all(tipo_1990, "\\s*\\(.*\\)", ""))
ras06 <- ras06 %>% mutate(tipo_2006 = str_replace_all(tipo_2006, "\\s*\\(.*\\)", ""))

# Crear tabla comparativa
comp_tipos <- bind_rows(
  ras90 %>% group_by(tipo_1990) %>% summarise(n=n()) %>% mutate(anio=1990) %>% rename(tipo=tipo_1990),
  ras06 %>% group_by(tipo_2006) %>% summarise(n=n()) %>% mutate(anio=2006) %>% rename(tipo=tipo_2006)
) %>%
  group_by(anio) %>% 
  mutate(pct = 100 * n / sum(n)) %>%
  ungroup() %>%
  pivot_wider(names_from=anio, values_from=c(n,pct), names_sep="_") %>%
  mutate(var_pct_2006_vs_1990 = pct_2006 - pct_1990) %>%
  arrange(tipo)

# Mostrar con kableExtra
comp_tipos %>%
  kbl(caption = "Comparación porcentual por tipo de sector (1990 y 2006)",
      digits = 0,
      col.names = c("Tipo", "N 1990", "N 2006", "% 1990", "% 2006", "Δ % 2006 vs 1990")) %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"),
                full_width = FALSE, position="center") %>%
  row_spec(0, bold=TRUE, color="white", background="#F527A9")
Comparación porcentual por tipo de sector (1990 y 2006)
Tipo N 1990 N 2006 % 1990 % 2006 Δ % 2006 vs 1990
Clave 1 1 25 20 -5
Impulsor 2 3 50 60 10
Independiente 1 1 25 20 -5