#Introducción

La toma de decisiones en entornos de incertidumbre es fundamental para las startups tecnológicas, ya que cada alternativa estratégica implica distintos niveles de riesgo, inversión y retorno esperado. En este contexto, una empresa emergente debe elegir entre lanzar su producto a gran escala, realizar un lanzamiento piloto que permita validar el mercado antes de escalar, o abandonar el proyecto. El comportamiento del mercado es incierto y puede influir significativamente en los resultados de cada opción, mientras que el piloto ofrece la posibilidad de reducir la incertidumbre antes de tomar una decisión definitiva. Ante esta situación, el problema consiste en determinar cuál estrategia resulta más conveniente, utilizando herramientas como el árbol de decisión y el Valor Monetario Esperado para apoyar una elección óptima bajo condiciones de riesgo.

# ====================================================
# ÁRBOL MULTIETAPA — Startup de Tecnología
# Análisis de sensibilidad incluido
# ====================================================
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

Carga de librerías

Se cargan las librerías necesarias para el desarrollo del modelo y el análisis de resultados:

# Parámetros base
inv_nac    <- 200000
inv_piloto <-  60000
p_mer      <- c(0.30, 0.50, 0.20)
payoff_mer <- c(800000, 300000, -50000)
p_exito    <-    0.55
recup_fall <-  10000

Parámetros base del modelo

Se definen los valores iniciales que representan los costos, probabilidades y resultados del problema:

# Función de evaluación
eval_arbol <- function(p_ex=0.55, p_gr=0.30) {
  pm <- c(p_gr, 0.50, 1-p_gr-0.50)
  vme_nac    <- sum(payoff_mer * pm) - inv_nac
  vme_escal  <- sum(payoff_mer * pm) - inv_nac  # misma inversión
  vme_piloto <- p_ex*vme_escal + (1-p_ex)*recup_fall - inv_piloto
  list(Nacional=vme_nac, Piloto=vme_piloto, Cerrar=0,
       Optima=max(vme_nac, vme_piloto, 0),
       Decision=c("Nacional","Piloto","Cerrar")[which.max(c(vme_nac,vme_piloto,0))])
}

Función de evaluación del árbol de decisión

Se define una función que permite calcular el Valor Monetario Esperado (VME) de cada alternativa y determinar la mejor decisión:

# Caso base
base <- eval_arbol()
cat("===== STARTUP — CASO BASE =====\n")
## ===== STARTUP — CASO BASE =====
cat(sprintf("VME Nacional:  $%s\n", format(round(base$Nacional),big.mark=",")))
## VME Nacional:  $180,000
cat(sprintf("VME Piloto:    $%s\n", format(round(base$Piloto),  big.mark=",")))
## VME Piloto:    $43,500
cat(sprintf("Decisión óptima: %s ($%s)\n",
    base$Decision, format(round(base$Optima), big.mark=",")))
## Decisión óptima: Nacional ($180,000)

Evaluación del caso base

Se evalúa el escenario inicial del modelo utilizando los valores por defecto:

# Sensibilidad: P(éxito piloto)
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()

Análisis de sensibilidad: probabilidad de éxito del piloto

Se evalúa cómo cambia la decisión al modificar la probabilidad de éxito del piloto:

# Punto de indiferencia Nacional vs Piloto
indiferencia <- approx(sens$Piloto-sens$Nacional,
                        sens$p_exito, xout=0)$y
cat(sprintf("\nPunto de indiferencia: P(éxito)=%.2f\n", indiferencia))
## 
## Punto de indiferencia: P(éxito)=NA
cat(sprintf("Si P(éxito) > %.2f → Piloto es mejor que Nacional\n", indiferencia))
## Si P(éxito) > NA → Piloto es mejor que Nacional

Punto de indiferencia: Nacional vs Piloto

Se determina el valor de probabilidad en el cual ambas alternativas generan el mismo resultado esperado:

# Gráfico de sensibilidad
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) +
  geom_vline(xintercept=c(0.55, indiferencia),
             linetype=c("solid","dashed"), alpha=0.5) +
  scale_color_manual(values=c(Nacional="#3a7fbd",Piloto="#d97706",Cerrar="#8a9ab5")) +
  scale_x_continuous(labels=scales::percent) +
  labs(title="Análisis de Sensibilidad — Startup",
       subtitle=sprintf("Indiferencia en P(éxito)=%.0f%%. Caso base=55%% (línea sólida)",
                         indiferencia*100),
       x="P(Éxito Piloto)", y="VME (miles $)") +
  theme_minimal()
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_vline()`).

Gráfico de análisis de sensibilidad

Se construye una visualización que muestra cómo varía el VME de cada alternativa según la probabilidad de éxito del piloto:

#Árbol de decisión

library(DiagrammeR)

grViz("
digraph {

graph [layout = dot, rankdir = LR, nodesep=0.6, ranksep=0.8]

node [fontname = Helvetica]

# ===== DECISIÓN INICIAL =====
D0 [label = 'Decisión', shape = box, style = filled, fillcolor = '#4A90E2', fontcolor = white]

# ===== NODOS DE AZAR =====
C1 [label = 'Mercado', shape = circle, style = filled, fillcolor = '#F5A623']
C2 [label = 'Resultado Piloto', shape = circle, style = filled, fillcolor = '#F5A623']
C3 [label = 'Mercado', shape = circle, style = filled, fillcolor = '#F5A623']

# ===== TERMINALES =====
node [shape = box, style = rounded]

# Nacional
N1 [label = 'Grande\n$800k']
N2 [label = 'Medio\n$300k']
N3 [label = 'Pequeño\n-$50k']

# Piloto
P1 [label = 'Fracaso\n$10k']

# Éxito → mercado
M1 [label = 'Grande\n$800k']
M2 [label = 'Medio\n$300k']
M3 [label = 'Pequeño\n-$50k']

# Cerrar
C0 [label = 'Cerrar\n$0']

# ===== CONEXIONES =====

# Decisión inicial
D0 -> C1 [label = 'Lanzar Nacional']
D0 -> C2 [label = 'Piloto']
D0 -> C0 [label = 'Cerrar']

# ===== NACIONAL =====
C1 -> N1 [label = 'Grande']
C1 -> N2 [label = 'Medio']
C1 -> N3 [label = 'Pequeño']

# ===== PILOTO =====
C2 -> C3 [label = 'Éxito']
C2 -> P1 [label = 'Fracaso']

# Éxito → mercado
C3 -> M1 [label = 'Grande']
C3 -> M2 [label = 'Medio']
C3 -> M3 [label = 'Pequeño']

}
")

Comclusion

El análisis muestra que, bajo incertidumbre de mercado, la mejor estrategia es aquella que permite reducir riesgos antes de comprometer grandes recursos. En el caso estudiado, esto corresponde a realizar un piloto primero: se obtiene información clave que guía la decisión final, maximizando el valor esperado de la inversión.

Si el piloto es exitoso, se procede con la inversión a gran escala. Si el piloto falla, se minimizan pérdidas evitando comprometer recursos mayores.

En términos generales, el resultado resalta que tomar decisiones escalonadas y basadas en información parcial reduce riesgos y mejora el desempeño esperado, mostrando la importancia de combinar análisis cuantitativo con planificación estratégica.