Caso TechParts S.A.
Cuando una empresa debe tomar decisiones importantes, muchas veces no
conoce con certeza qué ocurrirá en el futuro. Sin embargo, sí puede usar
la información disponible para reducir la incertidumbre y elegir la
mejor alternativa posible. En estos casos, herramientas como el Teorema
de Bayes y el análisis del valor de la información ayudan a tomar
decisiones mejor fundamentadas.
En este informe se analiza una situación de la empresa TechParts S.A.,
que evalúa distintas opciones de inversión frente a varios escenarios
del mercado. El objetivo es comparar qué decisión conviene más con y sin
información adicional, y cuánto valdría pagar por obtener esa
información.
# ====================================================
# BAYES + VEII — TechParts S.A. (Análisis Completo)
# ====================================================
library(ggplot2); library(dplyr); library(tidyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Primero, el código crea una tabla de pagos. Esta tabla muestra cuánto
dinero ganaría o perdería la empresa si elige una determinada
alternativa (construcción grande, mediana, pequeña o no construir) y
ocurre un tipo de mercado específico (bajo, medio o alto).
Esta tabla representa las consecuencias económicas de cada decisión
según el escenario que se presente.
# 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","Pequeña","NoConstr")
colnames(pagos) <- c("Baja","Media","Alta")
Luego, se definen las probabilidades previas, que indican qué tan
probable es cada escenario del mercado antes de contar con información
adicional. También se incluyen las probabilidades de recibir una señal
favorable o desfavorable desde una consultora externa, dependiendo del
estado real del mercado.
Estas probabilidades permiten modelar una fuente de información que no
es perfecta, pero que puede ayudar a tomar mejores decisiones.
# Probabilidades previas y verosimilitudes
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)
El código utiliza el Teorema de Bayes para actualizar las probabilidades del mercado cuando se recibe información de la consultora.
De esta manera, la empresa puede adaptar sus decisiones según el tipo de información que reciba.
# Función Bayesiana
actualizar <- function(prior, likel) {
conj <- prior * likel
list(post = conj/sum(conj), P_E = sum(conj))
}
# Actualización
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
Después, se calcula el Valor Monetario Esperado para cada
alternativa. Este valor representa el promedio de ganancia o pérdida que
se espera obtener al elegir una decisión, considerando las
probabilidades de cada escenario.
El código compara:
También se obtiene el valor esperado total cuando se utiliza información imperfecta.
# Función de mejor VME
mejor_vme <- function(prob) {
vme <- pagos %*% prob
idx <- which.max(vme)
list(alternativa = rownames(pagos)[idx], valor = vme[idx], todos = vme)
}
# VME sin información
opt_sin_info <- mejor_vme(prior)
# VME con info imperfecta
opt_fav <- mejor_vme(bayes_F$post)
opt_desf <- mejor_vme(bayes_D$post)
vme_con_info <- bayes_F$P_E * opt_fav$valor +
bayes_D$P_E * opt_desf$valor
#Valor de la información
El análisis no termina ahí. El código también calcula:
Este último valor indica cuánto dinero como máximo convendría pagar por la información, ya que pagar más haría que la decisión deje de ser conveniente.
# VECP y VEIP
vecp <- sum(apply(pagos, 2, max) * prior)
veip <- vecp - opt_sin_info$valor
veii <- vme_con_info - opt_sin_info$valor
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 → Pequeña: $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 (max a pagar por la consultora)\n",
format(round(veii), big.mark=",")))
## VEII: $51,300 (max a pagar por la consultora)
Finalmente, el código genera un gráfico que compara visualmente los
valores monetarios esperados en cada situación: sin información, con
información favorable, con información desfavorable, con información
imperfecta y con información perfecta.
El gráfico facilita la comprensión y muestra claramente el beneficio de
contar con más información antes de decidir.
# Gráfico: comparación VME bajo distintos escenarios
df_vme <- data.frame(
Escenario = c("Sin info\n(A₂ Mediana)",
"Si Favorable\n(A₁ Grande)",
"Si Desfav.\n(A₃ Pequeña)",
"Con info\n(esperado)",
"Cert. Perfecta\n(VECP)"),
VME = 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="Comparación de VME por Nivel de Información",
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)
Este análisis demuestra que contar con información adicional puede mejorar de forma significativa la calidad de las decisiones empresariales, incluso cuando dicha información no es perfecta. El Teorema de Bayes permite ajustar las probabilidades de manera lógica y el Valor Monetario Esperado traduce esas probabilidades en resultados económicos claros. Además, el cálculo del valor de la información ayuda a determinar cuánto conviene invertir para reducir la incertidumbre. En conjunto, estas herramientas permiten a la empresa tomar decisiones más informadas, racionales y alineadas con sus objetivos económicos.