La toma de decisiones es un proceso fundamental en diferentes áreas como economía, ingeniería y administración. Dependiendo de la información disponible, las decisiones pueden clasificarse en condiciones de riesgo o incertidumbre.
Se dice que una decisión se toma bajo riesgo cuando se conocen las probabilidades de los posibles resultados.
Existen varios escenarios posibles.
Se conocen las probabilidades de ocurrencia.
Se puede calcular el Valor Monetario Esperado (VME).
Se utilizan herramientas como árboles de decisión y análisis probabilístico.
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. (Análisis Completo)
# ====================================================
#install.packages(c("dplyr","tidyr"))
library(ggplot2); library(dplyr); library(tidyr)
##
## 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
# -------------------------------
# MATRIZ DE PAGOS
# -------------------------------
# Filas = alternativas (decisiones)
# Columnas = estados de la naturaleza (demanda)
pagos <- matrix(c(
-200000, 100000, 500000,
-50000, 200000, 300000,
100000, 150000, 180000,
50000, 50000, 50000
), nrow=4, byrow=TRUE)
# Asignar nombres a filas y columnas
rownames(pagos) <- c("Grande","Mediana","Pequeña","NoConstr")
colnames(pagos) <- c("Baja","Media","Alta")
# -------------------------------
# PROBABILIDADES Y VEROSIMILITUDES
# -------------------------------
prior <- c(0.20, 0.45, 0.35) # Probabilidades previas de los estados
likel_F <- c(0.10, 0.40, 0.90) # P(Favorable | estado)
likel_D <- 1 - likel_F # P(Desfavorable | estado)
# -------------------------------
# FUNCIÓN DE ACTUALIZACIÓN BAYESIANA
# -------------------------------
actualizar <- function(prior, likel) {
conj <- prior * likel # Probabilidad conjunta
list(
post = conj/sum(conj), # Probabilidad posterior (Bayes)
P_E = sum(conj) # Probabilidad del evento (Fav o Desf)
)
}
# Aplicar Bayes para ambos escenarios
bayes_F <- actualizar(prior, likel_F) # Si dictamen favorable
bayes_D <- actualizar(prior, likel_D) # Si dictamen desfavorable
# 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 OBTENER EL MEJOR VME
# -------------------------------
mejor_vme <- function(prob) {
vme <- pagos %*% prob # Calcula VME de cada alternativa
idx <- which.max(vme) # Identifica la mejor opción
list(
alternativa = rownames(pagos)[idx],
valor = vme[idx],
todos = vme # Guarda todos los VME
)
}
# -------------------------------
# DECISIONES
# -------------------------------
opt_sin_info <- mejor_vme(prior) # Sin información
opt_fav <- mejor_vme(bayes_F$post) # Si favorable
opt_desf <- mejor_vme(bayes_D$post) # Si desfavorable
# -------------------------------
# VME CON INFORMACIÓN IMPERFECTA
# -------------------------------
vme_con_info <- bayes_F$P_E * opt_fav$valor +
bayes_D$P_E * opt_desf$valor
# -------------------------------
# VALORES DE INFORMACIÓN
# -------------------------------
vecp <- sum(apply(pagos, 2, max) * prior) # Valor esperado con info perfecta
veip <- vecp - opt_sin_info$valor # Valor info perfecta
veii <- vme_con_info - opt_sin_info$valor # Valor info imperfecta
# -------------------------------
# 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 → 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 (máx a pagar por la consultora)\n",
format(round(veii), big.mark=",")))
## VEII: $51,300 (máx a pagar por la consultora)
# -------------------------------
# GRÁFICO COMPARATIVO
# -------------------------------
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")
)
# Orden de los escenarios
df_vme$Escenario <- factor(df_vme$Escenario, levels=df_vme$Escenario)
# Gráfico
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") +
annotate("label", x=2.5, y=opt_sin_info$valor/1000,
label=paste0("VEII = $",round(veii/1000,1),"k"),
fill="#edf2f7", color="#3a7fbd")
La gráfica muestra cómo cambia el Valor Monetario Esperado (VME) según el nivel de información disponible en la toma de decisiones de TechParts S.A.
En primer lugar, sin información adicional, la mejor decisión es elegir la alternativa Mediana, con un VME de aproximadamente $185k. Sin embargo, al incorporar información imperfecta (consultora), el VME esperado aumenta a $236k, lo que evidencia una mejora en la calidad de la decisión.
Además, el análisis muestra que:
Si el dictamen es favorable, la mejor opción pasa a ser Grande, con un VME mucho mayor ($333k).
Si el dictamen es desfavorable, la mejor decisión cambia a Pequeña, con un VME de $134k.
La diferencia entre el VME con información y sin información corresponde al Valor Esperado de la Información Imperfecta (VEII ≈ $51.3k), lo que representa el beneficio económico de contar con la consultora. Esto indica el máximo que la empresa debería estar dispuesta a pagar por dicha información