TechParts S.A. — Consultora de Mercado + Árbol Bayesiano

Retomamos TechParts. La consultora emite un dictamen: Favorable (F) o Desfavorable (D). Calculamos primero las posteriors para cada dictamen, luego determinamos el VEII.

BAYES + VEII — TechParts S.A.

library(ggplot2)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)

# -------------------------------
# Tabla de pagos
# -------------------------------
pagos <- matrix(c(
  -200000, 100000, 500000,
   -50000, 200000, 300000,
   100000, 150000, 180000,
    50000,  50000,  50000
), nrow=4, byrow=TRUE)

rownames(pagos) <- c("Grande","Mediana","Pequena","NoConstr")
colnames(pagos) <- c("Baja","Media","Alta")

Probabilidades

prior   <- c(0.20, 0.45, 0.35)
likel_F <- c(0.10, 0.40, 0.90)  # P(Fav | S)
likel_D <- 1 - likel_F          # P(Desf | S)

Función Bayes

actualizar <- function(prior, likel) {
  conj <- prior * likel
  list(
    post = conj / sum(conj),
    P_E  = sum(conj)
  )
}

Actualización Bayesiana

bayes_F <- actualizar(prior, likel_F)
bayes_D <- actualizar(prior, likel_D)

cat("Posterior si FAVORABLE:    ", round(bayes_F$post, 3), "\n")
## Posterior si FAVORABLE:     0.039 0.35 0.612
cat("Posterior si DESFAVORABLE: ", round(bayes_D$post, 3), "\n")
## Posterior si DESFAVORABLE:  0.371 0.557 0.072

Función VME

mejor_vme <- function(prob) {
  vme <- pagos %*% prob
  idx <- which.max(vme)
  
  list(
    alternativa = rownames(pagos)[idx],
    valor = as.numeric(vme[idx]),   # 🔥 conversión clave
    todos = as.numeric(vme)
  )
}

Evaluaciones

opt_sin_info <- mejor_vme(prior)
opt_fav      <- mejor_vme(bayes_F$post)
opt_desf     <- mejor_vme(bayes_D$post)

VME con información imperfecta

vme_con_info <- bayes_F$P_E * opt_fav$valor +
                bayes_D$P_E * opt_desf$valor

# -------------------------------
# VECP, VEIP, VEII
# -------------------------------
vecp <- sum(apply(pagos, 2, max) * prior)
veip <- vecp - opt_sin_info$valor
veii <- vme_con_info - opt_sin_info$valor
# -------------------------------
# Resultados
# -------------------------------
cat("\n===== RESUMEN DECISIONAL =====\n")
## 
## ===== RESUMEN DECISIONAL =====
cat(sprintf("Sin info → %s: $%s\n",
            opt_sin_info$alternativa,
            format(round(opt_sin_info$valor), big.mark=",")))
## Sin info → Mediana: $185,000
cat(sprintf("Si Fav   → %s: $%s\n",
            opt_fav$alternativa,
            format(round(opt_fav$valor), big.mark=",")))
## Si Fav   → Grande: $333,010
cat(sprintf("Si Desf  → %s: $%s\n",
            opt_desf$alternativa,
            format(round(opt_desf$valor), big.mark=",")))
## Si Desf  → Pequena: $133,608
cat(sprintf("VME con info imperfecta:  $%s\n",
            format(round(vme_con_info), big.mark=",")))
## VME con info imperfecta:  $236,300
cat(sprintf("VECP:  $%s\n",
            format(round(vecp), big.mark=",")))
## VECP:  $285,000
cat(sprintf("VEIP:  $%s\n",
            format(round(veip), big.mark=",")))
## VEIP:  $1e+05
cat(sprintf("VEII:  $%s  (máx a pagar por la consultora)\n",
            format(round(veii), big.mark=",")))
## VEII:  $51,300  (máx a pagar por la consultora)

Interpretación:

La mejor decisión es construir la planta mediana, con un valor monetario esperado (VME) de $185,000. Esta elección refleja un equilibrio entre riesgo y retorno bajo la distribución a priori de la demanda. Es, en esencia, la decisión óptima cuando no se dispone de señales adicionales del mercado.

La incorporación del dictamen de la consultora modifica sustancialmente las probabilidades mediante el Teorema de Bayes. Ante un informe favorable, la probabilidad de una demanda alta aumenta de manera significativa (posterior ≈ 61.2%), lo que justifica adoptar la alternativa más agresiva: construir una planta grande, alcanzando un VME de aproximadamente 333,010 dolares Por el contrario, un informe desfavorable desplaza la probabilidad hacia escenarios de baja y media demanda, haciendo óptima la alternativa conservadora (planta pequeña), con un VME de $133,608. Este comportamiento evidencia coherencia entre la señal informativa y la decisión óptima.

Al ponderar ambos escenarios por la probabilidad de ocurrencia del dictamen, se obtiene un VME con información imperfecta de 236,300 dolares, superior al caso sin información. La diferencia entre ambos valores define el Valor Esperado de la Información Imperfecta (VEII), que asciende a $51,300. Este monto representa el beneficio económico esperado de incorporar el estudio de la consultora, y por tanto establece un umbral racional máximo a pagar por dicho servicio.

Adicionalmente, el análisis del Valor Esperado con Información Perfecta (VECP), estimado en 285,000 dolares, permite contextualizar la calidad de la información disponible. La brecha entre VECP y el VME sin información ($100,000) corresponde al valor máximo teórico de eliminar completamente la incertidumbre (VEIP). En este caso, la información imperfecta captura aproximadamente la mitad de ese valor potencial (51.3%), lo cual sugiere que, si bien la consultora aporta valor, su capacidad predictiva es limitada.

Gráfico

#Data para gráfico
df_vme <- data.frame(
  Escenario = c("Sin info\n(A₂ Mediana)",
                "Si Favorable\n(A₁ Grande)",
                "Si Desfav.\n(A₃ Pequena)",
                "Con info\n(esperado)",
                "Cert. Perfecta\n(VECP)"),
  
  VME = as.numeric(c(opt_sin_info$valor,
                     opt_fav$valor,
                     opt_desf$valor,
                     vme_con_info,
                     vecp)),
  
  Tipo = c("Base","Info","Info","Esperado","Perfecto")
)

df_vme$Escenario <- factor(df_vme$Escenario, levels = df_vme$Escenario)

ggplot(df_vme, aes(x=Escenario, y=VME/1000, fill=Tipo)) +
  geom_col(width=0.6, show.legend=FALSE) +
  
  geom_text(aes(label=paste0("$", round(VME/1000,0), "k")),
            vjust=-0.4, size=3.8, fontface="bold") +
  
  scale_fill_manual(values=c(
    Base="#3a7fbd",
    Info="#d97706",
    Esperado="#0f7a52",
    Perfecto="#b0305a"
  )) +
  
  labs(
    title="Comparacion de VME por Nivel de Informacion",
    subtitle="TechParts S.A. — VEII = VME(con info) − VME(sin info)",
    x=NULL,
    y="VME (miles de $)"
  ) +
  
  theme_minimal() +
  
  annotate("segment",
           x=1, xend=4,
           y=opt_sin_info$valor/1000,
           yend=opt_sin_info$valor/1000,
           linetype="dashed",
           color="#3a7fbd",
           linewidth=0.7) +
  
  annotate("label",
           x=2.5,
           y=opt_sin_info$valor/1000,
           label=paste0("VEII = $", round(veii/1000,1), "k"),
           fill="#edf2f7",
           color="#3a7fbd",
           size=3.5)

Interpretación:

El gráfico muestra la jerarquía de decisiones bajo distintos niveles de información. Se observa cómo la información desplaza el VME hacia arriba, acercándolo al escenario ideal de información perfecta, pero sin alcanzarlo. Asimismo, ilustra claramente que las decisiones óptimas son contingentes al estado informativo, no estáticas.

En conclusión, el ejercicio demuestra que la información, aun siendo imperfecta, tiene un valor económico tangible y puede mejorar significativamente la toma de decisiones. Sin embargo, su adquisición debe evaluarse en función de su costo relativo al VEII. Desde una perspectiva estadística, este caso ejemplifica de manera sólida la integración entre inferencia bayesiana y análisis de decisiones bajo incertidumbre.