Introducción - Planteamiento del problema
La toma de decisiones bajo incertidumbre es clave en proyectos de inversión como la exploración petrolera, donde existen riesgos y beneficios variables. En este caso, una empresa debe elegir entre vender un terreno, perforar directamente o realizar un estudio sísmico que brinde información adicional, considerando que la probabilidad de encontrar petróleo es del 45%. Cada alternativa implica distintos costos y posibles ganancias, por lo que el problema consiste en determinar cuál opción maximiza el beneficio esperado mediante el uso de herramientas como el árbol de decisión y el Valor Monetario Esperado (VME).
library(data.tree)
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
Se definen los parámetros principales del problema de decisión:
p_petrol = 0.45: Probabilidad de que exista petróleo
en el terreno (45%).
ingreso = 600000: Ganancia obtenida en caso de
encontrar petróleo.
costo_perf = 100000: Costo de realizar la
perforación. Este valor se pierde si no se encuentra petróleo.
precio_venta = 90000: Valor de venta del terreno,
considerado como una opción segura sin riesgo.
costo_sismico = 30000: Costo asociado a la
realización del estudio sísmico.
p_pos_si = 0.80: Probabilidad de que el estudio
sísmico resulte positivo dado que sí existe petróleo (verdadero
positivo).
p_pos_no = 0.25: Probabilidad de que el estudio
sísmico resulte positivo dado que no existe petróleo (falso
positivo).
Se definen los valores del problema:
Se actualizan las probabilidades:
Esto aplica el Teorema de Bayes, reduciendo incertidumbre.
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_no_pos <- 1 - post_si_pos
post_si_neg <- ((1-p_pos_si) * p_petrol) / p_s_neg
post_no_neg <- 1 - post_si_neg
Se realizan los siguientes cálculos para actualizar la información luego del estudio sísmico:
p_no <- 1 - p_petrol
Se calcula la probabilidad de que no haya petróleo,
como complemento de la probabilidad inicial.
p_s_pos <- p_pos_si*p_petrol + p_pos_no*p_no
Se obtiene la probabilidad total de que el estudio salga
positivo, considerando tanto el caso en que sí hay
petróleo como cuando no lo hay (ley de probabilidad total).
p_s_neg <- 1 - p_s_pos
Se calcula la probabilidad de que el estudio salga
negativo, como complemento del caso positivo.
post_si_pos <- (p_pos_si * p_petrol) / p_s_pos
Se calcula la probabilidad de que sí haya petróleo dado que el
estudio salió positivo, aplicando el Teorema de Bayes.
post_no_pos <- 1 - post_si_pos
Se obtiene la probabilidad de que no haya petróleo dado un
resultado positivo, como complemento.
post_si_neg <- ((1-p_pos_si) * p_petrol) / p_s_neg
Se calcula la probabilidad de que sí haya petróleo dado que el
estudio salió negativo, usando nuevamente Bayes.
post_no_neg <- 1 - post_si_neg
Se obtiene la probabilidad de que no haya petróleo dado un
resultado negativo, como complemento.
Perforar directo: decisión sin información adicional
Con estudio:
Esto muestra una estrategia óptima condicionada
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
Se calcula el VME para cada alternativa y se determinan las decisiones óptimas:
vme_perf <- function(p_si)
Se define una función que calcula el VME de perforar,
en función de la probabilidad de encontrar petróleo
(p_si).
p_si*(ingreso-costo_perf) + (1-p_si)*(-costo_perf)
Fórmula del VME:
vme_directo <- vme_perf(p_petrol)
Se calcula el VME de perforar directamente, usando la
probabilidad inicial.
vme_perf_pos <- vme_perf(post_si_pos)
Se calcula el VME de perforar dado que el estudio salió
positivo.
vme_perf_neg <- vme_perf(post_si_neg)
Se calcula el VME de perforar dado que el estudio salió
negativo.
dec_pos <- max(vme_perf_pos, precio_venta)
Se elige la mejor decisión cuando el resultado es positivo:
perforar o vender, según cuál tenga mayor
valor.
dec_neg <- max(vme_perf_neg, precio_venta)
Se elige la mejor decisión cuando el resultado es negativo.
vme_estudio <- p_s_pos*dec_pos + p_s_neg*dec_neg - costo_sismico
Se calcula el VME total de realizar el estudio sísmico:
cat("===== ÁRBOL PETROLERO =====\n")
## ===== ÁRBOL PETROLERO =====
cat(sprintf("VME(Perforar directo): $%s\n", format(round(vme_directo), big.mark=",")))
## VME(Perforar directo): $170,000
cat(sprintf("VME(Vender): $%s\n", format(precio_venta, big.mark=",")))
## VME(Vender): $90,000
cat(sprintf("VME(Con estudio): $%s\n", format(round(vme_estudio), big.mark=",")))
## VME(Con estudio): $181,475
Se comparan las alternativas:
Se identifica cuál genera mayor ganancia esperada.
cat(sprintf(" Sísmico+: P(petróleo)=%.3f → %s\n",
post_si_pos, ifelse(dec_pos==vme_perf_pos,"Perforar","Vender")))
## Sísmico+: P(petróleo)=0.724 → Perforar
cat(sprintf(" Sísmico−: P(petróleo)=%.3f → %s\n",
post_si_neg, ifelse(dec_neg==vme_perf_neg,"Perforar","Vender")))
## Sísmico−: P(petróleo)=0.179 → Vender
Se adapta la decisión según la información.
opts <- c(vme_directo, precio_venta, vme_estudio)
noms <- c("Perforar directo","Vender","Contratar estudio")
noms[which.max(opts)]
## [1] "Contratar estudio"
La mejor alternativa es:
Contratar estudio sísmico
Porque:
arbol <- Node$new("Decisión\nPrincipal")
Se construye el árbol de decisión:
Permite visualizar todo el proceso de decisión.
ps <- seq(0.05, 0.95, 0.01)
Se analiza cómo cambia la decisión según la probabilidad de petróleo:
Los cruces en el gráfico indican cambios de estrategia.
Mejor decisión: realizar el estudio antes de actuar
``` r
library(DiagrammeR)
grViz("
digraph arbol {
graph [layout = dot, rankdir = LR, nodesep=0.6, ranksep=0.8]
node [fontname = Helvetica]
# ===== NODO DECISIÓN INICIAL =====
D0 [label = 'D', shape = box, style = filled, fillcolor = '#4A90E2', fontcolor = white]
# ===== NODOS DE AZAR =====
C1 [label = 'C', shape = circle, style = filled, fillcolor = '#F5A623']
C2 [label = 'C', shape = circle, style = filled, fillcolor = '#F5A623']
# ===== DECISIONES INTERNAS =====
Dpos [label = 'D', shape = box, style = filled, fillcolor = '#4A90E2', fontcolor = white]
Dneg [label = 'D', shape = box, style = filled, fillcolor = '#4A90E2', fontcolor = white]
# ===== NODOS TERMINALES =====
node [shape = box, style = rounded]
# Perforar directo
T1 [label = '$500k']
T2 [label = '-$100k']
# Estudio (decisiones)
T3 [label = 'Perforar\n$290,960']
T4 [label = 'Vender\n$90k ∥']
T5 [label = 'Perforar\n$20k ∥']
T6 [label = 'Vender\n$90k']
# Vender directo
T7 [label = '$90k ∥']
# ===== VME =====
V1 [label = 'VME = $170k', shape = box, color = red]
V2 [label = 'VME = $170,781 ★', shape = box, style = filled, fillcolor = '#D5F5E3']
V3 [label = 'VME = $90k', shape = box, color = red]
# ===== CONEXIONES =====
# Decisión inicial
D0 -> C1 [label = 'Perforar ∥']
D0 -> C2 [label = 'Estudio ★']
D0 -> T7 [label = 'Vender ∥']
# ===== PERFORAR =====
C1 -> T1 [label = '0.45']
C1 -> T2 [label = '0.55']
T1 -> V1
T2 -> V1
# ===== ESTUDIO =====
C2 -> Dpos [label = 'S+ (0.5525)']
C2 -> Dneg [label = 'S- (0.4475)']
# ===== DECISIÓN SI S+ =====
Dpos -> T3
Dpos -> T4
# ===== DECISIÓN SI S- =====
Dneg -> T5
Dneg -> T6
# ===== BACKWARD =====
T3 -> V2
T6 -> V2
}
")
Conclusión
La estrategia óptima para la empresa es contratar el estudio sísmico.
Si el estudio predice petróleo, perforar el terreno. Si el estudio predice ausencia de petróleo, vender el terreno.
Esta estrategia maximiza el valor esperado del proyecto y justifica pagar hasta $41,502 por la información que proporciona el estudio.