ÁRBOLES DE DECISIÓN

📐 Fundamento Teórico Un árbol de decisión es un grafo dirigido acíclico que modela problemas de decisión secuencial. A diferencia de la tabla de pagos (estática, una sola etapa), el árbol captura la temporalidad: primero decides, luego observas la naturaleza, luego vuelves a decidir. Es el modelo estándar cuando el decisor puede recibir información entre decisiones.

🟦 Nodo de Decisión Cuadrado azul. El decisor elige qué rama tomar 🔀. Se resuelve tomando la alternativa de máximo VME 🔝. Las ramas rechazadas se “podan” (∥) para limpiar el camino hacia la mejor opción ✂️.

🟠 Nodo de Azar Círculo naranja. La naturaleza determina el resultado 🎲. Cada rama lleva su probabilidad 📊. Su valor es igual al VME ponderado de sus ramas (la suma de resultados por sus chances) ⚖️.

🟩 Nodo Terminal Triángulo/Rectángulo verde al final. Representa el payoff final o resultado económico ($) 💰. Es el punto de partida del backward induction: el análisis se realiza de derecha a izquierda ⬅️.

⏸️ Poda (Pruning) Marca de doble barra en ramas no óptimas de nodos de decisión 🚫. La rama óptima queda “viva” ✅. Es el equivalente visual a aplicar la regla de maximización en cada paso del proceso.

Algoritmo de Backward Induction (Plegado del Árbol)

Principio de Optimalidad de Bellman: Una estrategia óptima tiene la propiedad de que, cualquiera que sea el estado inicial y la decisión inicial, las decisiones restantes deben formar una estrategia óptima con respecto al estado resultante de la primera decisión.

Pasos del algortimo

1 Construir el árbol (izquierda → derecha) Raíz = primera decisión. Expandir alternativas → nodos de azar con probabilidades → nodos terminales con payoffs.

2 Evaluar nodos terminales Los payoffs ya están definidos. Son los valores “hoja” del árbol. No requieren cálculo adicional.

3 Retroceder: nodos de AZAR → calcular VME VME(nodo) = Σⱼ pⱼ × valor(ramaⱼ). Propagar este valor hacia la izquierda.

4 Retroceder: nodos de DECISIÓN → podar Elegir max VME entre las ramas disponibles. Marcar las demás con ∥. Propagar el valor óptimo hacia la izquierda.

5 Leer la estrategia óptima El VME de la raíz es el valor esperado del plan óptimo. La secuencia de ramas no podadas define qué hacer en cada escenario

Ejemplo: CASO REAL 2

Startup de Tecnología — Lanzar vs. Pivotar vs. Cerrar

Una startup tiene 3 opciones: Lanzar nacional (inversión $200k), Lanzar piloto (60k, si exitoso puede escalar), o Cerrar (0). El mercado puede ser Grande (p=0.30), Medio (p=0.50) o Pequeño (p=0.20). El piloto tiene 55% de éxito; si falla se recuperan 10k.

Definición del Escenario Una startup tecnológica se enfrenta a tres rutas estratégicas. El objetivo es maximizar el Valor Monetario Esperado (VME) considerando la incertidumbre del mercado.

Opciones: Lanzar Nacional, Lanzar Piloto o Cerrar.

Incertidumbre: Mercado Grande (30%), Medio (50%) o Pequeño (20%).

El Piloto: Tiene un costo inicial, pero permite observar el éxito antes de escalar.

Implementación del Modelo en R Definimos los parámetros y la función lógica para evaluar el árbol de decisión.

PARÁMETROS

# ---------------- PARÁMETROS ----------------
inv_nac    <- 200000
inv_piloto <-  60000
p_mer      <- c(0.30, 0.50, 0.20)  # Grande, Medio, Pequeño
payoff_mer <- c(800000, 300000, -50000)
p_exito    <- 0.55
recup_fall <- 10000

# ---------------- FUNCIÓN DEL ÁRBOL ----------------
eval_arbol <- function(p_ex = 0.55, p_gr = 0.30) {
  p_mid <- 0.50
  p_bad <- 1 - p_gr - p_mid
  
  if (p_bad < 0) stop("Probabilidades inválidas")
  
  pm <- c(p_gr, p_mid, p_bad)
  
  # Cálculo VME
  vme_nac   <- sum(payoff_mer * pm) - inv_nac
  vme_escal <- vme_nac
  
  vme_piloto <- p_ex * vme_escal + (1 - p_ex) * (recup_fall - inv_piloto)
  # Nota: Se ajustó la lógica de recuperación para restar la inversión inicial
  
  valores <- c(vme_nac, vme_piloto, 0)
  
  list(
    Nacional = vme_nac,
    Piloto   = vme_piloto,
    Cerrar   = 0,
    Optima   = max(valores),
    Decision = c("Nacional","Piloto","Cerrar")[which.max(valores)]
  )
}

base <- eval_arbol()
  1. Resultados del Caso Base Calculamos los valores esperados para las condiciones actuales del mercado.
cat("VME Nacional:  $", format(round(base$Nacional), big.mark=","), "\n")
## VME Nacional:  $ 180,000
cat("VME Piloto:    $", format(round(base$Piloto), big.mark=","), "\n")
## VME Piloto:    $ 76,500
cat("Decisión Óptima:", base$Decision, "($", format(round(base$Optima), big.mark=","), ")")
## Decisión Óptima: Nacional ($ 180,000 )

Interpretación: El análisis muestra que el Lanzamiento Nacional es la opción superior con un VME de $180,000. Aunque el piloto reduce el riesgo de pérdida, su costo y el hecho de que solo tiene un 55% de probabilidad de éxito “frenan” el potencial de ganancias inmediatas que el mercado (en su estado actual) ofrece para una expansión total.

  1. Visualización del Árbol de Decisión
arbol <- Node$new("Decisión Startup")
nac <- arbol$AddChild(sprintf("Lanzar Nacional\nVME=%sk", round(base$Nacional/1000)))
pil <- arbol$AddChild(sprintf("Piloto\nVME=%sk", round(base$Piloto/1000)))
exito <- pil$AddChild(sprintf("Éxito (p=%.2f)", p_exito))
exito$payoff <- base$Nacional
fracaso <- pil$AddChild(sprintf("Fracaso (p=%.2f)", 1 - p_exito))
fracaso$payoff <- recup_fall - inv_piloto
cerrar <- arbol$AddChild("Cerrar")
cerrar$payoff <- 0

print(arbol, "payoff")
##                       levelName payoff
## 1 Decisión Startup                  NA
## 2  ¦--Lanzar Nacional\nVME=180k     NA
## 3  ¦--Piloto\nVME=77k               NA
## 4  ¦   ¦--Éxito (p=0.55)        180000
## 5  ¦   °--Fracaso (p=0.45)      -50000
## 6  °--Cerrar                         0
  1. Análisis de Sensibilidad
p_exitos <- seq(0.10, 0.90, 0.02)
sens <- lapply(p_exitos, function(p) {
  res <- eval_arbol(p_ex = p)
  data.frame(p_exito = p, Nacional = res$Nacional, Piloto = res$Piloto, Cerrar = 0)
}) |> bind_rows()

sens_long <- pivot_longer(sens, -p_exito, names_to = "Alternativa", values_to = "VME")

ggplot(sens_long, aes(x = p_exito, y = VME/1000, color = Alternativa)) +
  geom_line(linewidth = 1.2) +
  scale_color_manual(values = c(
    "Nacional" = "#3a7fbd",
    "Piloto"   = "#d97706",
    "Cerrar"   = "#8a9ab5"
  )) +
  scale_x_continuous(labels = percent) +
  labs(
    title = "Analisis de Sensibilidad",
    x = "Probabilidad de Exito del Piloto",
    y = "VME (miles $)"
  ) +
  theme_minimal()

Interpretación de Sensibilidad:

Dominancia de Lanzamiento Nacional: Bajo las condiciones actuales de rentabilidad del mercado, la línea azul (Nacional) se mantiene por encima de las demás. Esto indica que la estrategia es robusta; incluso si el piloto fuera extremadamente exitoso, el costo de oportunidad de no lanzar nacionalmente desde el inicio es alto.

Punto de Indiferencia: En este modelo específico, no existe un punto de cruce. El “Lanzamiento Nacional” domina porque el beneficio esperado del mercado compensa el riesgo de fracaso sin necesidad de la etapa de prueba del piloto.

Opción de Cerrar: Esta opción (VME = 0) solo sería atractiva si el mercado empeorara drásticamente hasta que el VME nacional fuera negativo.