En este reporte aplicamos el Modelo de Poisson para analizar la frecuencia de perforación de pozos agrupada por décadas.
El objetivo es determinar si el número de perforaciones por década sigue una distribución de Poisson con una tasa media constante (\(\lambda\)), o si existen variaciones significativas que sugieran otro tipo de distribución.
# --- CARGA INTELIGENTE DEL ARCHIVO ---
posibles_rutas <- c("Petroleo_Ontaro.csv", "/cloud/project/datos/Petroleo_Ontaro.csv")
ruta_valida <- ""
for (ruta in posibles_rutas) { if (file.exists(ruta)) { ruta_valida <- ruta; break } }
if (ruta_valida == "") { stop("ERROR: No se encuentra el archivo 'Petroleo_Ontaro.csv'.") }
datos <- read.csv(ruta_valida, header = TRUE, sep = ";", dec = ".", fill = TRUE)
# --- CONVERSIÓN DE FECHAS ---
# Usamos SPUD_DATE que es la columna estándar del archivo
datos$Fecha_Format <- tryCatch({
as.POSIXct(datos$SPUD_DATE, format = "%Y/%m/%d %H:%M:%S", tz = "UTC")
}, error = function(e) {
as.POSIXct(datos$SPUD_DATE, tryFormats = c("%Y-%m-%d", "%d/%m/%Y"), tz = "UTC")
})
# Eliminar fechas inválidas
datos <- datos[!is.na(datos$Fecha_Format), ]
# Extraer Año y filtrar rango 1980-2020
datos$Year <- as.numeric(format(datos$Fecha_Format, "%Y"))
datos <- datos[datos$Year >= 1980 & datos$Year <= 2020, ]
# Crear Variable "Década"
datos$Decade <- floor(datos$Year / 10) * 10Agrupamos los datos para contar cuántos pozos se perforaron en cada década y estimamos el parámetro Lambda (\(\lambda\)).
# 1. Conteo de pozos por década
conteo_decadas <- as.data.frame(table(datos$Decade))
colnames(conteo_decadas) <- c("Decada", "N_Pozos")
# Vector de eventos observados (k = número de pozos en cada década)
k <- conteo_decadas$N_Pozos
# 2. Cálculo de Lambda (Promedio de pozos por década)
lambda <- mean(k)
# 3. Probabilidades Observadas vs Teóricas
# Creamos una tabla de frecuencias de los conteos
tabla_k <- as.data.frame(table(k))
colnames(tabla_k) <- c("k", "Freq")
tabla_k$k <- as.numeric(as.character(tabla_k$k))
# Probabilidad Observada (hi)
tabla_k$hi <- tabla_k$Freq / sum(tabla_k$Freq)
# Probabilidad Poisson Teórica (dpois)
# Calculamos la probabilidad de observar exactamente 'k' pozos dado lambda
tabla_k$P_poisson <- dpois(tabla_k$k, lambda)
# Normalizamos la probabilidad teórica para comparar (ajuste de escala)
tabla_k$P_poisson <- tabla_k$P_poisson / sum(tabla_k$P_poisson)
# Mostrar resumen
print(conteo_decadas)## Decada N_Pozos
## 1 1980 2067
## 2 1990 958
## 3 2000 828
## 4 2010 121
Parámetro Estimado: \(\lambda =\) 993.5 pozos promedio por década.
Evaluamos qué tan bien se ajusta el modelo de Poisson a los datos reales utilizando correlación y Chi-cuadrado.
# Variables para facilitar cálculo
hi <- tabla_k$hi
P_poisson <- tabla_k$P_poisson
# 1. Correlación de Pearson
cor_poisson <- cor(hi, P_poisson) * 100
# 2. Prueba Chi-cuadrado
x2_poisson <- sum((hi - P_poisson)^2 / P_poisson)
gl <- length(tabla_k$k) - 1
vc_poisson <- qchisq(0.95, df = gl)
# Decisión
aceptado <- x2_poisson < vc_poissonpar(mar = c(5, 5, 4, 2))
barplot(
rbind(hi, P_poisson),
beside = TRUE,
col = c("skyblue", "orange"),
names.arg = tabla_k$k,
main = "Ajuste Poisson: Perforaciones por Década (1980–2020)",
xlab = "Cantidad de Pozos (k)",
ylab = "Probabilidad Relativa",
legend.text = c("Observado", "Teórico Poisson"),
args.legend = list(x = "topright", bty = "n")
)Utilizando el modelo calibrado, respondemos a la pregunta: ¿Cuál es la probabilidad de que en una década futura se perforen exactamente 1000 pozos?
Respuesta: La probabilidad es extremadamente baja, de aproximadamente 1.235e+00 %.
(Nota: Dado que el promedio \(\lambda\) es 994, un valor de 1000 está muy alejado de la media, por lo que la probabilidad es prácticamente cero en un modelo Poisson puro).