En contextos empresariales, la toma de decisiones bajo incertidumbre es un desafío clave. El Teorema de Bayes permite actualizar probabilidades a partir de nueva información, mientras que el Valor Esperado de la Información (VEI) permite cuantificar el beneficio económico de adquirir dicha información.
En este informe se analiza el caso de la empresa TechParts S.A., evaluando decisiones de inversión bajo distintos escenarios del mercado y considerando información imperfecta.
Aplicar el Teorema de Bayes y el análisis de valor esperado para:
# ====================================================
# BAYES + VEII — TechParts S.A. (Análisis Completo)
# ====================================================
# Cargar librerías necesarias para gráficos y manipulación de datos
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
Se utilizan librerías para análisis y visualización de datos.
# Tabla de pagos: representa ganancias/pérdidas
pagos <- matrix(c(
-200000, 100000, 500000,
-50000, 200000, 300000,
100000, 150000, 180000,
50000, 50000, 50000
), nrow=4, byrow=TRUE)
# Asignación de nombres a decisiones (filas) y estados (columnas)
rownames(pagos) <- c("Grande","Mediana","Pequeña","NoConstr")
colnames(pagos) <- c("Baja","Media","Alta")
Cada valor representa la ganancia o pérdida dependiendo de la decisión tomada y el estado del mercado.
# Probabilidades previas del estado del mercado
prior <- c(0.20, 0.45, 0.35)
# Verosimilitud de informe favorable dado el estado
likel_F <- c(0.10, 0.40, 0.90) # P(Fav | S)
# Verosimilitud de informe desfavorable
likel_D <- 1 - likel_F # P(Desf | S)
Se modela una fuente de información imperfecta que influye en la toma de decisiones.
# Función para actualizar probabilidades con Bayes
actualizar <- function(prior, likel) {
conj <- prior * likel # Probabilidad conjunta
list(post = conj/sum(conj), # Probabilidad posterior
P_E = sum(conj)) # Probabilidad de la evidencia
}
Permite actualizar probabilidades del mercado con nueva evidencia.
# Aplicación del Teorema de Bayes
bayes_F <- actualizar(prior, likel_F)
bayes_D <- actualizar(prior, likel_D)
# Mostrar resultados
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 para calcular el mejor VME
mejor_vme <- function(prob) {
vme <- pagos %*% prob # Valor esperado
idx <- which.max(vme) # Selección del máximo
list(alternativa = rownames(pagos)[idx],
valor = vme[idx],
todos = vme)
}
Permite elegir la mejor decisión basada en el valor esperado.
# VME sin información
opt_sin_info <- mejor_vme(prior)
# VME con información imperfecta
opt_fav <- mejor_vme(bayes_F$post)
opt_desf <- mejor_vme(bayes_D$post)
# Valor esperado con información
vme_con_info <- bayes_F$P_E * opt_fav$valor +
bayes_D$P_E * opt_desf$valor
Se comparan decisiones con y sin información.
# Valor esperado con información perfecta
vecp <- sum(apply(pagos, 2, max) * prior)
# Valor de la información perfecta
veip <- vecp - opt_sin_info$valor
# Valor de la información imperfecta
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\n",
format(round(veii), big.mark=",")))
## VEII: $51,300
# Gráfico de comparación de VME
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)
El gráfico muestra claramente cómo la información mejora la toma de decisiones.
La mejor decisión depende del escenario:
El valor de la información imperfecta (VEII) indica cuánto vale pagar por dicha información.
El análisis demuestra que el uso del Teorema de Bayes junto con el Valor Esperado de la Información permite optimizar decisiones bajo incertidumbre. La información adicional, incluso si es imperfecta, tiene un valor económico significativo.