1 Introducción y Metodología

Este informe analiza la variable Latitud Base (latitude_base_dd) en pozos de Brasil (2018), segmentados en Tramo 1 (5° a -15°) y Tramo 2 (-15° a -30°). Utilizando los test de Pearson y Chi-cuadrado, se evalúa y determina el modelo matemático ideal para describir la densidad de pozos en cada sector.

2 Tabla de Distribución de Frecuencia

Debido a la gran extensión geográfica de las cuencas de Brasil, los datos reflejan una alta dispersión. Se agrupan en intervalos de 5 grados para capturar de manera óptima la distribución espacial de la infraestructura petrolera del país.

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 latitudinal real de Brasil
Datos <- Datos_Brutos %>%
  clean_names() %>% 
  mutate(latitude_base_dd = as.numeric(gsub(",", ".", as.character(latitude_base_dd)))) %>%
  filter(!is.na(latitude_base_dd) & latitude_base_dd >= -30 & latitude_base_dd <= 5)

X <- Datos$latitude_base_dd

# TABLA DE FRECUENCIAS GENERAL (De Norte a Sur: 5 a -30)
breaks_lat  <- seq(5, -30, by = -5)
h_total     <- hist(X, breaks = sort(breaks_lat), plot = FALSE)

# Organizamos las frecuencias para mantener el sentido geográfico de los intervalos
TDF_General <- data.frame(
  Rango = paste(head(breaks_lat, -1), tail(breaks_lat, -1), sep = " a "),
  ni    = rev(h_total$counts),
  hi    = round((rev(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: **Latitud Base (Grados Decimales)**")
  ) %>%
  tab_source_note(source_note = "Fuente: Tabela de Poços 2018") %>%
  cols_label(
    Rango = "Latitud 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: Latitud Base (Grados Decimales)
Latitud Base (DD) Frecuencia Absoluta (ni) Frecuencia Relativa (hi%)
5 a 0 122 0.41
0 a -5 2622 8.87
-5 a -10 8583 29.04
-10 a -15 11771 39.82
-15 a -20 2069 7.00
-20 a -25 3933 13.31
-25 a -30 460 1.56
TOTAL 29560 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 (Latitud) 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 Latitud 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 latitud 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:

  • Sector Norte / Nordeste (5° a -15°): Concentra pozos de menor dispersión ubicados en las cuencas terrestres históricas del noreste y los yacimientos iniciales de la margen ecuatorial.

  • Sector Sureste / Sur (-15° a -30°): Representa un volumen masivo de pozos perforados costa afuera (offshore), concentrados fuertemente en las provincias presalinas más productivas del país.

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

4 Agrupación 1 (-7.5° a 5°)

Al evaluar la bimodalidad del sector norte, se identifica un comportamiento homogéneo y decreciente a partir de la latitud -7.5°. Por ello, se aísla este subtramo crítico (-7.5° a 5°) para modelar de forma precisa la dispersión de pozos mediante una Distribución Exponencial. Para garantizar que los datos sean estrictamente positivos, aplicamos una traslación sumando 7.501 unidades al intervalo.

X1 <- X[!is.na(X) & X >= -7.5 & X <= 5]

if(length(X1) > 0) {

hist(
    X1,
    breaks = seq(-7.5, 5, by = 2.5),
    col    = col_barras,
    border = "white",
    main   = "Histograma Subtramo Ajustado (-7.5° a 5°)",
    xlab   = "Latitud Base (Grados Decimales)",
    ylab   = "Frecuencia"
  )
  
} else {
  print("¡Cuidado! No hay datos en el rango seleccionado después de la limpieza.")
}

4.1 Conjetura del Modelo

Aplicamos la traslación lineal positiva (X1 + 7.501) y estimamos el parámetro de tasa (rate) de la distribución Exponencial por el método de máxima verosimilitud.

if(length(X1) > 1) {
  X1_trans <- X1 + 7.501
  
  fit_exp1 <- suppressWarnings(fitdistr(X1_trans, "exponential"))
  rate_e1  <- fit_exp1$estimate["rate"]
  
  breaks_s1 <- seq(-7.5, 5, by = 2.5)
  h1  <- hist(X1, breaks = breaks_s1, plot = FALSE)
  Fo1 <- h1$counts / sum(h1$counts)
  
  breaks_trans1 <- breaks_s1 + 7.501
  Fe1           <- diff(pexp(breaks_trans1, rate = rate_e1))
  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 Exponencial Ajustado (-7.5° a 5°)",
    cex.main  = 1.1,
    ylab      = "Probabilidad",
    xlab      = "Rangos de Latitud (DD)",
    las       = 2,
    cex.names = 0.65
  )
  legend("topright", legend = c("Real", "Modelo Exponencial"),
          fill = c(col_barras, "#F2F3F4"), border = "white", bty = "n")
  
} else {
  message("No hay datos suficientes en el subtramo para calcular el modelo.")
}

4.2 Test de Pearson

Evaluamos el coeficiente de correlación lineal entre las frecuencias observadas en tu gráfica y las calculadas analíticamente por la curva exponencial.

plot(
  Fo1, Fe1,
  main = "Gráfica N°3: Correlación de Pearson — Subtramo Exponencial",
  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] 99.47542

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.1111773
vc1  <- qchisq(0.95, length(Fo1) - 1)
vc1
## [1] 9.487729

4.4 Tabla Resumen de Test

tabla_1 <- data.frame(
  Modelo       = "Exponencial",
  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 Subtramo (Exponencial)**")) %>%
  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 Subtramo (Exponencial)
Modelo Pearson Chi_Cuadrado Umbral Decision
Exponencial 99.48 0.1112 9.4877 Modelo aceptado
Autor: Leonardo Ruiz

4.5 Cálculo de Probabilidades

¿Cuál es la probabilidad matemática de encontrar un pozo en este subtramo con una latitud menor a -2.5°?

p_25 <- pexp(-2.5 + 7.501, rate = rate_e1)
p_25
## [1] 0.8586404

La probabilidad es del 85.86%.

5 Agrupación 2 (-15° a -30°)

Analizamos la segunda etapa estructural aplicando un ajuste a la Distribución Beta. Debido a que la muestra del sureste presenta un fuerte repunte y sesgo debido a la concentración masiva de pozos marinos en los ejes de Santos y Campos, se requiere la flexibilidad de la distribución Beta, aplicada mediante la normalización del intervalo [-30, -15], para modelar con precisión esta marcada asimetría.

X2 <- X[X >= -30 & X < -15]
X2 <- X2[!is.na(X2)]

breaks_seccion2 <- seq(-30, -15, by = 2.5)

hist(
  X2,
  breaks = breaks_seccion2,
  col    = col_barras,
  border = "white",
  main   = "Histograma Sección 2 (-15° a -30°)",
  xlab   = "Latitud 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 de aguas profundas del sureste.

X2_norm <- (X2 - (-30)) / (-15 - (-30))
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 - (-30)) / (-15 - (-30))
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 Latitud Base (-15° a -30°)",
  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] 95.66075

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.03903695
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 95.66 0.039 11.0705 Modelo aceptado
Autor: Leonardo Ruiz

5.5 Cálculo de Probabilidades

De cada 1,000 pozos analizados en este segundo tramo latitudinal (-15° a -30°), ¿cuántos se estimó matemáticamente que pertenecen al intervalo geográfico crítico entre los -22° y -24° de latitud base?

lim_inf_norm <- (-24 - (-30)) / (-15 - (-30))
lim_sup_norm <- (-22 - (-30)) / (-15 - (-30))

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.2676103
cantidad_estimada <- round(p_critica * 1000, 0)

El modelo Beta estimó que, por cada 1,000 pozos del sureste, aproximadamente 268 se encuentran en el intervalo geográfico de alta densidad operativa entre los -22° y -24° de latitud (zona núcleo de la Cuenca de Campos y Santos).

6 Teorema del Límite Central

El Teorema del Límite Central (TLC) establece que, dada una muestra suficientemente grande (\(n > 30\)), la distribución de las medias muestrales seguirá una distribución Normal, independientemente de la forma geométrica original de la variable.

Esto nos permite estimar el verdadero valor central de la Latitud Base Geográfica (\(\mu\)) del total de perforaciones en Brasil mediante intervalos robustos guiados por los postulados empíricos.

Los postulados de confianza empírica determinan las siguientes coberturas: * \(P(\bar{x} - E < \mu < \bar{x} + E) \approx 68\%\) * \(P(\bar{x} - 2E < \mu < \bar{x} + 2E) \approx 95\%\) * \(P(\bar{x} - 3E < \mu < \bar{x} + 3E) \approx 99\%\)

Donde el Error Estándar (\(E\)) se define formalmente en la guía como:
\[E = \frac{\sigma}{\sqrt{n}}\]

# Estadísticos muestrales reales para la Latitud Base
x_bar           <- mean(X, na.rm = TRUE)
sigma_muestral  <- sd(X, na.rm = TRUE)
n_tlc           <- length(X)

# Cálculo del Error Estándar (E de la guía) y Margen de Error al 95% (2*E)
error_est       <- sigma_muestral / sqrt(n_tlc)
margen_error_95 <- 2 * error_est

# Intervalo de Confianza dinámico al 95%
lim_inf_tlc     <- x_bar - margen_error_95
lim_sup_tlc     <- x_bar + margen_error_95

# Construcción de la tabla de resultados del TLC
tabla_tlc <- data.frame(
  Parametro      = "Latitud Base Promedio",
  Lim_Inferior   = lim_inf_tlc,
  Media_Muestral = x_bar,
  Lim_Superior   = lim_sup_tlc,
  Error_Estandar = paste0("+/- ", sprintf("%.4f", margen_error_95)),
  Confianza      = "95% (2*E)"
)

tabla_tlc %>%
  gt() %>%
  tab_header(
    title    = md("**ESTIMACIÓN DE LA MEDIA POBLACIONAL**"),
    subtitle = "Aplicación del Teorema del Límite Central (TLC)"
  ) %>%
  tab_source_note(source_note = "Análisis Geográfico Operacional — Brasil 2018") %>%
  cols_label(
    Parametro      = "Parámetro",
    Lim_Inferior   = "Límite Inferior (DD)",
    Media_Muestral = "Media Calculada (DD)",
    Lim_Superior   = "Límite Superior (DD)",
    Error_Estandar = "Margen de Error (DD)",
    Confianza      = "Nivel de Confianza"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  fmt_number(
    columns  = c(Lim_Inferior, Media_Muestral, Lim_Superior),
    decimals = 4
  ) %>%
  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()
  ) %>%
  tab_style(
    style     = list(cell_fill(color = "#E8F8F5"), cell_text(color = "#145A32", weight = "bold")),
    locations = cells_body(columns = Media_Muestral)
  ) %>%
  tab_options(
    table.border.top.color = "#2E4053",
    table.border.bottom.color = "#2E4053",
    column_labels.border.bottom.color = "#2E4053",
    data_row.padding = px(7)
  )
ESTIMACIÓN DE LA MEDIA POBLACIONAL
Aplicación del Teorema del Límite Central (TLC)
Parámetro Límite Inferior (DD) Media Calculada (DD) Límite Superior (DD) Margen de Error (DD) Nivel de Confianza
Latitud Base Promedio −11.4765 −11.4036 −11.3306 +/- 0.0729 95% (2*E)
Análisis Geográfico Operacional — Brasil 2018

7 Conclusiones

La variable Latitud Base medida en grados decimales sigue un modelo Exponencial translacionado con parámetro de tasa \(\lambda =\) 0.39121 para el tramo norte, y se complementa con un modelo Beta con parámetros de forma \(\alpha =\) 5.5578 y \(\beta =\) 4.3351 para el tramo sur. Gracias a esto y al Teorema del Límite Central, podemos decir que la media aritmética poblacional de la latitud se encuentra entre el valor de \(\mu \in [\) -11.48 \(;\) -11.33 \(]\), lo que afirmamos con un 95% de confianza (\(\mu =\) -11.40 \(\pm\) 0.07°), y una desviación estándar muestral de 6.27°.