1 Introducción y Metodología

Este informe analiza la variable Longitud Base (longitude_base_dd) en pozos petroleros de Brasil (2018). La muestra se dividió en sector continental (Tramo 1: -55° a -41°) y marítimo (Tramo 2: -41° a -35°). Utilizando los test de Pearson y Chi-cuadrado, se demuestra que la Distribución Beta es el modelo ideal para describir con precisión la densidad de pozos en ambos tramos.

2 Tabla de Distribución de Frecuencia

Dado que las cuencas sedimentarias de Brasil abarcan una vasta extensión geográfica, los datos reflejan una dispersión longitudinal considerable. Agrupamos los datos en intervalos de 2 grados para capturar de manera óptima la distribución global de la infraestructura petrolera del país según los datos oficiales.

library(tidyverse)
library(gt)
library(MASS)
if(!require(janitor)) install.packages("janitor", quiet = TRUE)
library(janitor)

# 1. Carga de datos
Datos_Brutos <- read.csv(
  "C:/Users/LEO/Documents/ESTA/R/Inferencial/tabela_de_pocos_janeiro_2018.csv",
  header       = TRUE,
  sep          = ",",
  dec          = ".", 
  fileEncoding = "UTF-8"
)

# Limpieza: Reemplazamos la coma por el punto para la conversión numérica y filtramos el rango real de Brasil en el dataset
Datos <- Datos_Brutos %>%
  clean_names() %>% 
  mutate(longitude_base_dd = as.numeric(gsub(",", ".", as.character(longitude_base_dd)))) %>%
  filter(!is.na(longitude_base_dd) & longitude_base_dd >= -55 & longitude_base_dd <= -35)

X <- Datos$longitude_base_dd

# TABLA DE FRECUENCIAS GENERAL
breaks_long <- seq(-55, -35, by = 2)
h_total     <- hist(X, breaks = breaks_long, plot = FALSE)

TDF_General <- data.frame(
  Rango = paste(head(breaks_long, -1), tail(breaks_long, -1), sep = " a "),
  ni    = h_total$counts,
  hi    = round((h_total$counts / sum(h_total$counts)) * 100, 2)
)

totales_simplificados <- data.frame(
  Rango = "TOTAL",
  ni    = sum(TDF_General$ni),
  hi    = 100.00
)

TDF_Show_Simple <- rbind(TDF_General, totales_simplificados)

TDF_Show_Simple %>%
  gt() %>%
  tab_header(
    title    = md("TABLA DE FRECUENCIAS: INFERENCIA ESTADÍSTICA"),
    subtitle = md("Variable: **Longitud Base (Grados Decimales)**")
  ) %>%
  tab_source_note(source_note = "Fuente: Tabela de Poços 2018") %>%
  cols_label(
    Rango = "Longitud Base (DD)",
    ni    = "Frecuencia Absoluta (ni)",
    hi    = "Frecuencia Relativa (hi%)"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style = list(cell_fill(color = "#2E4053"), cell_text(color = "white", weight = "bold")),
    locations = cells_title(groups = c("title", "subtitle"))
  ) %>%
  tab_style(
    style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
    locations = cells_column_labels()
  )
TABLA DE FRECUENCIAS: INFERENCIA ESTADÍSTICA
Variable: Longitud Base (Grados Decimales)
Longitud Base (DD) Frecuencia Absoluta (ni) Frecuencia Relativa (hi%)
-55 a -53 25 0.09
-53 a -51 92 0.32
-51 a -49 100 0.35
-49 a -47 77 0.27
-47 a -45 256 0.88
-45 a -43 426 1.47
-43 a -41 678 2.34
-41 a -39 5294 18.26
-39 a -37 14283 49.28
-37 a -35 7754 26.75
TOTAL 28985 100.00
Fuente: Tabela de Poços 2018

3 Gráficas

3.1 Diagrama de Barras (Escala Local)

A continuación, presentamos el histograma de frecuencias.

col_barras <- "#5D6D7E"
col_ejes   <- "#2E4053"

par(mar = c(6, 5, 4, 2))

vals_x   <- TDF_General$Rango
vals_y   <- TDF_General$ni
ylim_max <- max(vals_y) * 1.1

bp <- barplot(
  vals_y,
  main      = "Gráfica N°1: Distribución Geográfica de Pozos en Brasil",
  cex.main  = 0.9,
  ylab      = "Cantidad de Pozos",
  col       = col_barras, border = "white",
  axes      = FALSE, ylim = c(0, ylim_max), axisnames = FALSE
)
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = bp, labels = vals_x, col = col_ejes, col.axis = col_ejes, las = 2, cex.axis = 0.8)
title(xlab = "Intervalos de Longitud Base (DD)", line = 5)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
box(bty = "l", col = col_ejes)

Al observar la Gráfica N°1, se evidencia que la longitud geográfica cuenta con una distribución bimodal o desplazada, reflejando las dos grandes realidades geológicas y de explotación de la industria brasileña:

  • Fase Continental / Interior (-55° a -41°): Concentra pozos de menor dispersión ubicados en las cuencas terrestres históricas del país.

  • Fase Marítima / Margen Atlántico (-41° a -35°): Representa un volumen masivo de pozos perforados costa afuera (offshore), concentrados fuertemente en las plataformas continentales más productivas de las cuencas del sureste.

Fijamos el límite de segmentación operacional e industrial en los -41° de longitud para aislar ambos comportamientos espaciales.

4 Agrupación 1 (-55° a -41°)

En este bloque analizamos si las longitudes geográficas de pozos terrestres siguen un comportamiento ajustado a la Distribución Beta. Debido a la fluctuación bimodal interna que presenta la muestra continental en este rango, se aprovecha la altísima versatilidad matemática de la distribución Beta, aplicada mediante la normalización del intervalo [-55, -41], logrando moldear de forma óptima los picos de frecuencia del bloque.

X1 <- X[!is.na(X) & X <= -41]

if(length(X1) > 0) {

hist(
    X1,
    breaks = seq(-55, -41, by = 2),
    col    = col_barras,
    border = "white",
    main   = "Histograma Sección 1 (-55° a -41°)",
    xlab   = "Longitud Base (DD)",
    ylab   = "Frecuencia"
  )
  
} else {
  print("¡Cuidado! No hay datos en el rango seleccionado después de la limpieza.")
}

4.1 Conjetura del Modelo

Normalizamos los datos al rango [0,1] para estimar los parámetros de forma (shape1, shape2) de la distribución Beta mediante máxima verosimilitud en este primer tramo estructural.

if(length(X1) > 1) {
  # Escalamos los datos al rango estricto (0, 1) para evitar indeterminaciones matemáticas
  X1_norm <- (X1 - (-55)) / (-41 - (-55))
  X1_norm <- pmax(pmin(X1_norm, 0.999), 0.001)
  
  fit_beta1 <- suppressWarnings(fitdistr(X1_norm, "beta", start = list(shape1 = 1, shape2 = 1)))
  s1_b1     <- fit_beta1$estimate["shape1"]
  s2_b1     <- fit_beta1$estimate["shape2"]
  
  breaks_s1 <- seq(-55, -41, by = 2)
  h1  <- hist(X1, breaks = breaks_s1, plot = FALSE)
  Fo1 <- h1$counts / sum(h1$counts)
  
  # Calculamos las probabilidades teóricas usando los límites normalizados del Tramo 1
  breaks_norm1 <- (breaks_s1 - (-55)) / (-41 - (-55))
  Fe1          <- diff(pbeta(breaks_norm1, shape1 = s1_b1, shape2 = s2_b1))
  Fe1          <- Fe1 / sum(Fe1)
  
  barplot(
    rbind(Fo1, Fe1),
    beside    = TRUE,
    col       = c(col_barras, "#F2F3F4"),
    border    = "black",
    names.arg = paste0(head(breaks_s1, -1), " a ", tail(breaks_s1, -1)),
    main      = "Gráfica N°2: Modelo Beta de Longitud Continental (-55° a -41°)",
    cex.main  = 1.2,
    ylab      = "Probabilidad",
    xlab      = "Rangos de Longitud (DD)",
    las       = 2,
    cex.names = 0.55
  )
  legend("topleft", legend = c("Real", "Modelo Beta"),
          fill = c(col_barras, "#F2F3F4"), border = "white", bty = "n")
  
} else {
  message("No hay datos suficientes en el Tramo 1 para calcular el modelo.")
}

4.2 Test de Pearson

Evaluamos el ajuste calculando el coeficiente de correlación lineal entre las proporciones de frecuencia empíricas observadas y las esperadas analíticamente por el modelo Beta calibrado.

plot(
  Fo1, Fe1,
  main = "Gráfica N°3: Correlación de Pearson — Sección 1 (Beta)",
  xlab = "Frecuencia Observada",
  ylab = "Frecuencia Esperada",
  pch  = 19, col = col_barras,
  xlim = c(0, max(Fo1) * 1.05),
  ylim = c(0, max(Fe1) * 1.05)
)
abline(lm(Fe1 ~ Fo1 + 0), col = "red", lwd = 2)

cor1 <- cor(Fo1, Fe1) * 100
cor1
## [1] 97.60914

4.3 Test de Chi-Cuadrado

Aplicamos la prueba de bondad de ajuste de Chi-Cuadrado (χ²) para comprobar la validez estadística del modelo Gamma adaptado a este tramo terrestre.

x2_1 <- sum((Fo1 - Fe1)^2 / Fe1)
x2_1
## [1] 0.05690925
vc1  <- qchisq(0.95, length(Fo1) - 1)
vc1
## [1] 12.59159

4.4 Tabla Resumen de Test

tabla_1 <- data.frame(
  Modelo       = "Beta",
  Pearson      = round(cor1, 2),
  Chi_Cuadrado = round(x2_1, 4),
  Umbral       = round(vc1, 4),
  Decision     = ifelse(x2_1 < vc1, "Modelo aceptado", "Modelo rechazado")
)

gt(tabla_1) %>%
  tab_header(title = md("**Tabla N°2: Resumen Bondad de Ajuste Sección 1 (Beta)**")) %>%
  tab_source_note(source_note = "Autor: Leonardo Ruiz") %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style = list(cell_fill(color = "#2E4053"), cell_text(color = "white", weight = "bold")),
    locations = cells_title()
  ) %>%
  tab_style(
    style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
    locations = cells_column_labels()
  ) %>%
  tab_options(
    table.border.top.color = "#2E4053",
    table.border.bottom.color = "#2E4053",
    column_labels.border.bottom.color = "#2E4053",
    data_row.padding = px(6))
Tabla N°2: Resumen Bondad de Ajuste Sección 1 (Beta)
Modelo Pearson Chi_Cuadrado Umbral Decision
Beta 97.61 0.0569 12.5916 Modelo aceptado
Autor: Leonardo Ruiz

4.5 Cálculo de Probabilidades

¿Cuál es la probabilidad matemática estimada de que un pozo de esta sección continental cuente con una longitud base menor (más al oeste) a los -45°?

lim_45_norm <- (-45 - (-55)) / (-41 - (-55))

p_45 <- pbeta(lim_45_norm, shape1 = s1_b1, shape2 = s2_b1)
p_45
## [1] 0.4077357

La probabilidad es del 40.77%.

5 Agrupación 2 (-41° a -35°)

Analizamos la segunda etapa estructural aplicando un ajuste a la Distribución Beta. Debido a que la muestra costera y marina presenta un fuerte repunte y sesgo hacia el este debido a la forma geográfica de la plataforma brasileña, se requiere la flexibilidad de la distribución Beta, aplicada mediante la normalización del intervalo [-41, -35], para modelar con precisión esta marcada asimetría costera.

X2 <- X[X > -41 & X <= -35]
X2 <- X2[!is.na(X2)]

breaks_seccion2 <- seq(-41, -35, by = 1)

hist(
  X2,
  breaks = breaks_seccion2,
  col    = col_barras,
  border = "white",
  main   = "Histograma Sección 2 (-41° a -35°)",
  xlab   = "Longitud Base (DD)",
  ylab   = "Frecuencia"
)

5.1 Conjetura del Modelo

Normalizamos los datos al rango [0,1] para estimar los parámetros de forma (shape1, shape2) de la distribución Beta mediante máxima verosimilitud, permitiendo capturar el fuerte sesgo del tramo marítimo profundo.

X2_norm <- (X2 - (-41)) / (-35 - (-41))
X2_norm <- pmax(pmin(X2_norm, 0.999), 0.001)

fit_beta2 <- suppressWarnings(fitdistr(X2_norm, "beta", start = list(shape1 = 1, shape2 = 1)))
s1_b2     <- fit_beta2$estimate["shape1"]
s2_b2     <- fit_beta2$estimate["shape2"]

h2  <- hist(X2, breaks = breaks_seccion2, plot = FALSE)
Fo2 <- h2$counts / sum(h2$counts)

# Calculamos las probabilidades teóricas usando los límites normalizados
breaks_norm <- (breaks_seccion2 - (-41)) / (-35 - (-41))
Fe2          <- diff(pbeta(breaks_norm, shape1 = s1_b2, shape2 = s2_b2))
Fe2          <- Fe2 / sum(Fe2) 

etiquetas_prof2 <- paste0(head(breaks_seccion2, -1), " a ", tail(breaks_seccion2, -1))

barplot(
  rbind(Fo2, Fe2),
  beside    = TRUE,
  col       = c(col_barras, "#F2F3F4"),
  border    = "black",
  names.arg = etiquetas_prof2,
  main      = "Gráfica N°5: Modelo Beta de Longitud Base (-41° a -35°)",
  cex.main  = 0.85,
  ylab      = "Probabilidad",
  las       = 2,
  cex.names = 0.7
)
legend("topleft", legend = c("Real", "Modelo Beta"),
       fill = c(col_barras, "#F2F3F4"), border = "white", bty = "n")

5.2 Test de Pearson

Evaluamos la Correlación de Pearson para cuantificar la relación lineal entre las frecuencias observadas y las probabilidades teóricas generadas por la distribución Beta.

plot(
  Fo2, Fe2,
  main = "Gráfica N°6: Correlación de Pearson — Sección 2 (Beta)",
  xlab = "Frecuencia Observada",
  ylab = "Frecuencia Esperada",
  pch  = 19, col = col_barras,
  xlim = c(0, max(Fo2) * 1.05),
  ylim = c(0, max(Fe2) * 1.05)
)
abline(lm(Fe2 ~ Fo2 + 0), col = "red", lwd = 2)

cor2 <- cor(Fo2, Fe2) * 100
cor2
## [1] 85.64989

5.3 Test de Chi-Cuadrado

Aplicamos la prueba de bondad de ajuste Chi-Cuadrado (χ²) para validar estadísticamente el modelo con un 95% de confianza.

x2_2 <- sum((Fo2 - Fe2)^2 / Fe2)
x2_2
## [1] 0.1110824
vc2  <- qchisq(0.95, length(Fo2) - 1)
vc2
## [1] 11.0705

5.4 Tabla Resumen de Test

tabla_2 <- data.frame(
  Modelo       = "Beta",
  Pearson      = round(cor2, 2),
  Chi_Cuadrado = round(x2_2, 4),
  Umbral       = round(vc2, 4),
  Decision     = ifelse(x2_2 < vc2, "Modelo aceptado", "Modelo rechazado")
)

gt(tabla_2) %>%
  tab_header(title = md("**Tabla N°3: Resumen Bondad de Ajuste Sección 2 (Beta)**")) %>%
  tab_source_note(source_note = "Autor: Leonardo Ruiz") %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style = list(cell_fill(color = "#2E4053"), cell_text(color = "white", weight = "bold")),
    locations = cells_title()
  ) %>%
  tab_style(
    style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
    locations = cells_column_labels()
  ) %>%
  tab_options(
    table.border.top.color = "#2E4053",
    table.border.bottom.color = "#2E4053",
    column_labels.border.bottom.color = "#2E4053",
    data_row.padding = px(6))
Tabla N°3: Resumen Bondad de Ajuste Sección 2 (Beta)
Modelo Pearson Chi_Cuadrado Umbral Decision
Beta 85.65 0.1111 11.0705 Modelo aceptado
Autor: Leonardo Ruiz

5.5 Cálculo de Probabilidades

De cada 1,000 pozos marítimos analizados en este segundo tramo estructural (-41° a -35°), ¿cuántos se estimó matemáticamente que pertenecen al intervalo geográfico crítico entre los -40° y -38° de longitud base?

lim_inf_norm <- (-40 - (-41)) / (-35 - (-41))
lim_sup_norm <- (-38 - (-41)) / (-35 - (-41))

p_critica <- pbeta(lim_sup_norm, shape1 = s1_b2, shape2 = s2_b2) - pbeta(lim_inf_norm, shape1 = s1_b2, shape2 = s2_b2)
p_critica
## [1] 0.4428549
cantidad_estimada <- round(p_critica * 1000, 0)

El modelo Beta estimó que, por cada 1,000 pozos marinos, aproximadamente 443 se encuentran en el intervalo geográfico de alta densidad operativa entre los -40° y -38° de longitud.

6 Conclusiones

El análisis segmentado e inferencial de la variable Longitud Base de pozos petroleros nos permite concluir lo siguiente:

  • Tramo -55° a -41°: Al implementar la distribución Beta mediante normalización previa de rango, el modelo matemático asimiló con éxito la naturaleza fluctuante y bimodal de los pozos en el bloque continental. La plasticidad de sus parámetros permitió trazar los picos operacionales en tierra, optimizando drásticamente la correlación lineal de Pearson por encima del umbral de control exigido.

  • Tramo -41° a -35°: Para describir la muestra orientada a los grandes yacimientos del margen atlántico, la distribución Beta (aplicada igualmente mediante normalización de rango) demostró ser el modelo idóneo. Al poseer una estructura matemática flexible, asimiló la naturaleza asimétrica de la distribución costera caracterizada por la drástica densidad de pozos en las proximidades de las cuencas del sureste y su posterior dispersión en aguas profundas, optimizando sustancialmente el coeficiente de Pearson y la validez del ajuste estadístico.