CASO REAL 1 — INDUSTRIA PETROLERA Exploración Petrolera — ¿Perforar, Vender o Hacer Estudio Sísmico? Una empresa posee un terreno que puede contener petróleo. Tiene tres opciones: Vender el terreno ahora por $90,000, Perforar directamente por $100,000 de inversión (si hay petróleo gana $600,000; si no, pierde los $100,000), o Contratar un estudio sísmico por $30,000 (que predice con cierta exactitud si hay petróleo). Probabilidad previa: P(petróleo) = 0.45.

# 2. Librerías
library(data.tree)
## Warning: package 'data.tree' was built under R version 4.5.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
library(tidyr)
library(scales)
library(DiagrammeR)
## Warning: package 'DiagrammeR' was built under R version 4.5.3
p_petrol      <- 0.45
ingreso       <- 600000
costo_perf    <- 100000
precio_venta  <- 90000
costo_sismico <- 30000
p_pos_si      <- 0.80
p_pos_no      <- 0.25

p_no    <- 1 - p_petrol
p_s_pos <- p_pos_si*p_petrol + p_pos_no*p_no
p_s_neg <- 1 - p_s_pos

post_si_pos <- (p_pos_si * p_petrol) / p_s_pos
post_si_neg <- ((1-p_pos_si) * p_petrol) / p_s_neg

post_si_pos
## [1] 0.7236181
post_si_neg
## [1] 0.1791045
vme_perf <- function(p_si){
  p_si*(ingreso-costo_perf) + (1-p_si)*(-costo_perf)
}

vme_directo   <- vme_perf(p_petrol)
vme_perf_pos  <- vme_perf(post_si_pos)
vme_perf_neg  <- vme_perf(post_si_neg)

dec_pos <- max(vme_perf_pos, precio_venta)
dec_neg <- max(vme_perf_neg, precio_venta)

vme_estudio <- p_s_pos*dec_pos + p_s_neg*dec_neg - costo_sismico

vme_directo
## [1] 170000
precio_venta
## [1] 90000
vme_estudio
## [1] 181475
cat("===== RESULTADOS =====\n")
## ===== RESULTADOS =====
cat("Perforar:", round(vme_directo), "\n")
## Perforar: 170000
cat("Vender:", precio_venta, "\n")
## Vender: 90000
cat("Estudio:", round(vme_estudio), "\n")
## Estudio: 181475
opts <- c(vme_directo, precio_venta, vme_estudio)
nombres <- c("Perforar", "Vender", "Estudio")

cat("Mejor decisión:", nombres[which.max(opts)])
## Mejor decisión: Estudio

Interpretación El VME permite elegir la mejor alternativa bajo incertidumbre. El estudio sísmico mejora la toma de decisiones.

arbol <- Node$new("Decisión Principal")

# Perforar
r1 <- arbol$AddChild("Perforar")

n1 <- r1$AddChild("Petróleo")
n1$payoff <- ingreso - costo_perf

n2 <- r1$AddChild("No petróleo")
n2$payoff <- -costo_perf

# Vender
v <- arbol$AddChild("Vender")
v$payoff <- precio_venta

# Estudio
r3 <- arbol$AddChild("Estudio")

sp <- r3$AddChild("Sísmico +")
sp1 <- sp$AddChild("Perforar")
sp1$es_optimo <- TRUE
sp2 <- sp$AddChild("Vender")
sp2$es_optimo <- FALSE

sn <- r3$AddChild("Sísmico -")
sn1 <- sn$AddChild("Perforar")
sn1$es_optimo <- FALSE
sn2 <- sn$AddChild("Vender")
sn2$es_optimo <- TRUE

print(arbol, "payoff", "es_optimo")
##               levelName payoff es_optimo
## 1  Decisión Principal       NA        NA
## 2   ¦--Perforar             NA        NA
## 3   ¦   ¦--Petróleo      5e+05        NA
## 4   ¦   °--No petróleo  -1e+05        NA
## 5   ¦--Vender            9e+04        NA
## 6   °--Estudio              NA        NA
## 7       ¦--Sísmico +        NA        NA
## 8       ¦   ¦--Perforar     NA      TRUE
## 9       ¦   °--Vender       NA     FALSE
## 10      °--Sísmico -        NA        NA
## 11          ¦--Perforar     NA     FALSE
## 12          °--Vender       NA      TRUE
library(DiagrammeR)
# Convertir data.tree → formato DiagrammeR
gr <- ToDiagrammeRGraph(arbol)
# Renderizar árbol
render_graph(gr)

Visualización clara del árbol de decisión con las opciones y ramas. Mejora la comunicación del análisis.

ps <- seq(0.05, 0.95, 0.01)

sens <- sapply(ps, function(p) {
  pn  <- 1-p
  sp  <- p_pos_si*p + p_pos_no*pn
  sn  <- 1-sp
  
  pp  <- p_pos_si*p/sp
  pn2 <- (1-p_pos_si)*p/sn
  
  dp  <- max(vme_perf(pp), precio_venta)
  dn  <- max(vme_perf(pn2), precio_venta)
  
  c(
    Perforar=vme_perf(p),
    Vender=precio_venta,
    Estudio=sp*dp+sn*dn-costo_sismico
  )
})

df_s <- as.data.frame(t(sens))
df_s$p_petrol <- ps

df_long <- pivot_longer(df_s, -p_petrol,
                        names_to="Alternativa",
                        values_to="VME")
ggplot(df_long,
       aes(x=p_petrol, y=VME/1000, color=Alternativa)) +
  geom_line(linewidth=1.2) +
  geom_vline(xintercept=p_petrol, linetype="dashed") +
  scale_x_continuous(labels=percent) +
  labs(title="Sensibilidad del VME",
       x="Probabilidad de petróleo",
       y="VME (miles)") +
  theme_minimal()

Conclusión La mejor decisión maximiza el VME. El estudio sísmico reduce incertidumbre. El enfoque bayesiano mejora decisiones. El análisis de sensibilidad valida la robustez.