Introducción En este caso se utiliza el teorema de Bayes junto con el Valor Esperado de la Información Imperfecta (VEII) para apoyar la toma de decisiones bajo incertidumbre.
La empresa TechParts S.A. debe decidir el tamaño de una planta considerando distintos niveles de demanda. Se dispone de probabilidades previas y de un estudio de mercado con información imperfecta.
Mediante Bayes se actualizan las probabilidades cuando el estudio resulta favorable o desfavorable. Luego se calcula el Valor Monetario Esperado (VME) para cada alternativa y finalmente el VEII para determinar cuánto vale la información.
Se cargan las librerías necesarias.
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
Se define la tabla de pagos.
pagos <- matrix(c(
-200000, 100000, 500000,
-50000, 200000, 300000,
100000, 150000, 180000,
50000, 50000, 50000
), nrow=4, byrow=TRUE)
Se asignan los nombres de las alternativas.
rownames(pagos) <- c("Grande","Mediana","Pequeña","NoConstr")
Se asignan los estados de la naturaleza.
colnames(pagos) <- c("Baja","Media","Alta")
Probabilidades previas y verosimilitudes Se definen las probabilidades previas.
prior <- c(0.20, 0.45, 0.35)
Se definen las probabilidades del estudio favorable.
likel_F <- c(0.10, 0.40, 0.90)
Se calculan las probabilidades desfavorables.
likel_D <- 1 - likel_F
Se crea la función bayesiana. Definir la función Se crea una función llamada actualizar Recibe dos argumentos: prior → probabilidades a priori (antes de ver la evidencia) likel → verosimilitudes P(E∣H) Calcular probabilidades conjuntas
actualizar <- function(prior, likel) {
conj <- prior * likel
list(post = conj/sum(conj), P_E = sum(conj))
}
Se actualizan probabilidades si el estudio es favorable.
bayes_F <- actualizar(prior, likel_F)
Se actualizan probabilidades si el estudio es desfavorable.
bayes_D <- actualizar(prior, likel_D)
Se imprimen las probabilidades posteriores.
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
Se crea la función para calcular el VME Definir función Se crea la función mejor_vme Recibe: prob → vector de probabilidades de los estados de la naturaleza
Calcular VME \[VME = \sum_{j} Pago_{ij} \cdot P(E_{j})\] pagos = matriz de pagos %*% = multiplicación matricial Resultado = VME de cada alternativa
Encontrar el mejor
idx <- which.max(vme)
Busca el valor máximo Devuelve la posición del mayor VME
Devolver resultados alternativa valor todos
mejor_vme <- function(prob) {
vme <- pagos %*% prob
idx <- which.max(vme)
list(alternativa = rownames(pagos)[idx], valor = vme[idx], todos = vme)
}
Se calcula el VME sin información.
Busca el mayor VME Devuelve: alternativa óptima valor máximo todos los VME
opt_sin_info <- mejor_vme(prior)
Se calcula el VME con información favorable.
opt_fav <- mejor_vme(bayes_F$post)
Se calcula el VME con información desfavorable.
opt_desf <- mejor_vme(bayes_D$post)
Se calcula el VME con información imperfecta.
vme_con_info <- bayes_F$P_E * opt_fav$valor +
bayes_D$P_E * opt_desf$valor
Se calcula el valor esperado con información perfecta.
vecp <- sum(apply(pagos, 2, max) * prior)
Se calcula el valor esperado de información perfecta.
veip <- vecp - opt_sin_info$valor
Se calcula el valor esperado de información imperfecta.
veii <- vme_con_info - opt_sin_info$valor
Se imprimen los resultados.
cat("\n===== RESUMEN DECISIONAL =====\n")
##
## ===== RESUMEN DECISIONAL =====
Se muestra la mejor decisión sin información.
cat(sprintf("Sin info → %s: $%s\n",
opt_sin_info$alternativa, format(round(opt_sin_info$valor), big.mark=",")))
## Sin info → Mediana: $185,000
Se muestra la decisión con estudio favorable.
cat(sprintf("Si Fav → %s: $%s\n",
opt_fav$alternativa, format(round(opt_fav$valor), big.mark=",")))
## Si Fav → Grande: $333,010
Se muestra la decisión con estudio desfavorable.
cat(sprintf("Si Desf → %s: $%s\n",
opt_desf$alternativa, format(round(opt_desf$valor), big.mark=",")))
## Si Desf → Pequeña: $133,608
Se imprime el VME con información.
cat(sprintf("VME con info imperfecta: $%s\n", format(round(vme_con_info), big.mark=",")))
## VME con info imperfecta: $236,300
Se imprime el VECP.
cat(sprintf("VECP: $%s\n", format(round(vecp), big.mark=",")))
## VECP: $285,000
Se imprime el VEIP.
cat(sprintf("VEIP: $%s\n", format(round(veip), big.mark=",")))
## VEIP: $1e+05
Se imprime el VEII.
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)
Se crea la tabla para el gráfico. Este código crea un data frame con los valores monetarios esperados para distintos escenarios de decisión. Se crea una tabla llamada df_vme Tendrá 3 columnas: Escenario, VME y Tipo c() crea un vector de texto Cada elemento es un escenario de decisión sirve para salto de línea en gráficos Aquí se guardan los valores monetarios esperados
opt_sin_info\(valor → mejor sin información opt_fav\)valor → mejor si favorable opt_desf$valor → mejor si desfavorable vme_con_info → VME con información muestral vecp → valor esperado con certeza perfecta Columna Tipo categoría para análisis/gráfico
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")
)
Se define el orden de los escenarios.
df_vme$Escenario <- factor(df_vme$Escenario, levels=df_vme$Escenario)
Se genera el gráfico de comparación. Crear gráfico base ggplot(df_vme, …) → usa la tabla df_vme x = Escenario → eje horizontal y = VME/1000 → divide entre 1000 (mostrar en miles) fill = Tipo → color según tipo Dibujar barras geom_col() → crea barras width=0.6 → ancho barras show.legend=FALSE → quita leyenda Agregar etiquetas arriba de las barras paste0() → crea texto round(VME/1000,0) → redondea “k” → miles vjust=-0.4 → arriba de la barra fontface=“bold” → negrita Colores manuales Base → azul Info → naranja Esperado → verde Perfecto → rojo vino Títulos del gráfico title → título principal subtitle → subtítulo x=NULL → quita nombre eje X y → nombre eje Y Tema visual Aplica estilo minimalista Línea horizontal (VME sin información)
Dibuja una línea punteada:
desde barra 1 a 4 altura = VME sin info sirve como referencia
Etiqueta del VEII Agrega cuadro con: \[ VEII = VME_{\text{con info}} - VME_{\text{sin info}} \] x=2.5 → posición horizontal y=… → misma altura línea fill → color fondo color → color texto
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)
Las probabilidades posteriores obtenidas con el teorema de Bayes muestran que el estudio de mercado modifica la decisión óptima. Sin información adicional, el mayor Valor Monetario Esperado (VME) corresponde a la planta mediana, por lo que esta sería la decisión inicial.
Cuando el estudio resulta favorable, el mayor VME corresponde a la planta grande, indicando que es conveniente invertir más ante una posible alta demanda. En cambio, cuando el estudio es desfavorable, el mayor VME corresponde a la planta pequeña, lo que reduce el riesgo ante una demanda baja.
Los resultados muestran que la información imperfecta mejora la toma de decisiones, ya que el VME con información es mayor que el VME sin información. La diferencia entre estos valores corresponde al VEII, que representa el beneficio adicional esperado por utilizar el estudio de mercado.
En base a estos resultados se recomienda: - Construir la planta
mediana si no se realiza el estudio
- Construir la planta grande si el estudio es favorable
- Construir la planta pequeña si el estudio es desfavorable
- Contratar el estudio solo si su costo es menor que el VEII
- Utilizar la información del estudio para reducir el riesgo de
inversión
El teorema de Bayes permite actualizar las probabilidades de demanda a partir de un estudio de mercado y mejorar la toma de decisiones bajo incertidumbre. El análisis del Valor Monetario Esperado muestra que la alternativa óptima depende del resultado del estudio, mientras que el VEII indica el valor económico de la información. Con estos resultados, la empresa puede seleccionar el tamaño de planta más conveniente y reducir el riesgo asociado a la inversión.