1 IDENTIFICACIÓN Y JUSTIFICACIÓN DE LA VARIABLE

Variable de Estudio: Precisión de ubicación (Location accuracy).

Se determina que esta variable es Cualitativa Nominal, categorizada en dos niveles de precisión geográfica: Exacta (exact) y Aproximada (approximate). La precisión de la ubicación de cada yacimiento condiciona directamente la fiabilidad de los análisis espaciales, la planificación de infraestructura y la validez de los modelos geoespaciales del sector petrolero. Debido al patrón natural donde predominan fuertemente las ubicaciones exactas y disminuyen drásticamente las aproximadas, se opta por una Estrategia de Modelado Único:

Modelo Aceptado: Distribución Geométrica (validado mediante Test de Chi-cuadrado), lo que asegura un modelo confiable para describir la estructura de precisión geográfica de los yacimientos registrados.


2 CARGA DE DATOS

suppressPackageStartupMessages(library(tidyverse))
suppressPackageStartupMessages(library(readxl))

Datos <- read_excel(file.choose()) %>%
  filter(!is.na(`Location accuracy`), `Location accuracy` != "NA")

str(Datos)
## tibble [7,538 × 32] (S3: tbl_df/tbl/data.frame)
##  $ Unit ID                           : chr [1:7538] "OG0000001" "OG0000002" "OG0000006" "OG0000007" ...
##  $ Unit Name                         : chr [1:7538] "Matzen" "Abalone" "Aguilhada" "Agulha" ...
##  $ Unit name local script            : chr [1:7538] NA "Abalone" "Aguilhada" "Agulha" ...
##  $ Fuel type                         : chr [1:7538] "oil and gas" "oil and gas" "oil and gas" "oil and gas" ...
##  $ Unit type                         : chr [1:7538] "field" "field" "field" "field" ...
##  $ Country                           : chr [1:7538] "Austria" "Brazil" "Brazil" "Brazil" ...
##  $ Subnational unit (province, state): chr [1:7538] NA "Espírito Santo" "Sergipe" "Rio Grande do Norte" ...
##  $ Latitude                          : num [1:7538] 48.4 -21.4 -10.7 -4.9 -22.1 ...
##  $ Longitude                         : num [1:7538] 16.7 -39.6 -36.9 -36.3 -40 ...
##  $ Location accuracy                 : chr [1:7538] "approximate" "exact" "exact" "exact" ...
##  $ Status                            : chr [1:7538] "operating" "operating" "operating" "operating" ...
##  $ Status year                       : num [1:7538] 2023 2022 2022 2022 2022 ...
##  $ Discovery year                    : num [1:7538] 1949 2001 1966 1975 1984 ...
##  $ FID Year                          : chr [1:7538] NA NA NA NA ...
##  $ Production start year             : chr [1:7538] "1951" "2009" "1969" "1979" ...
##  $ Operator                          : chr [1:7538] "OMV" "Shell Brasil Petróleo Ltda." NA NA ...
##  $ Owner                             : chr [1:7538] "OMV (100%)" "Shell Brasil (50%);ONGC Campos (27%);Qatarenergy (23%)" "Petrobras (100%)" "Petrobras (100%)" ...
##  $ Parent                            : chr [1:7538] "OMV Aktiengesellschaft (100%)" "Shell plc (50%);Oil and Natural Gas Corporation (ONGC) (27%)" "Petróleo Brasileiro S.A. (100%)" "Petróleo Brasileiro S.A. (100%)" ...
##  $ Basin                             : chr [1:7538] NA NA NA NA ...
##  $ Concession / block                : chr [1:7538] NA NA NA NA ...
##  $ Project or complex                : chr [1:7538] "Matzen" NA NA NA ...
##  $ Government unit ID                : chr [1:7538] NA NA NA NA ...
##  $ Wiki URL                          : chr [1:7538] "https://www.gem.wiki/Matzen_Oil_and_Gas_Field_(Austria)" "https://www.gem.wiki/Abalone_Oil_and_Gas_Field_%28Esp%C3%ADrito_Santo%2C_Brazil%29" "https://www.gem.wiki/Aguilhada_Oil_and_Gas_Field_%28Sergipe%2C_Brazil%29" "https://www.gem.wiki/Agulha_Oil_and_Gas_Field_%28Rio_Grande_do_Norte%2C_Brazil%29" ...
##  $ Unit name2                        : logi [1:7538] NA NA NA NA NA NA ...
##  $ Production/reserves               : logi [1:7538] NA NA NA NA NA NA ...
##  $ Fuel description                  : logi [1:7538] NA NA NA NA NA NA ...
##  $ Reserves classification (original): logi [1:7538] NA NA NA NA NA NA ...
##  $ Quantity (original)               : logi [1:7538] NA NA NA NA NA NA ...
##  $ Units (original)                  : logi [1:7538] NA NA NA NA NA NA ...
##  $ Data year                         : logi [1:7538] NA NA NA NA NA NA ...
##  $ Quantity (converted)              : logi [1:7538] NA NA NA NA NA NA ...
##  $ Units (converted)                 : logi [1:7538] NA NA NA NA NA NA ...

3 EXTRAER VARIABLE

Extraemos la variable Location accuracy, omitimos las celdas en blanco y verificamos el tamaño muestral.

Loc_Vec <- factor(Datos$`Location accuracy`,
                  levels  = c("exact", "approximate"),
                  ordered = TRUE)

conteo_loc <- table(Loc_Vec)

cat("Categorías encontradas:", length(conteo_loc), "\n")
## Categorías encontradas: 2
cat("Total registros:", sum(conteo_loc), "\n")
## Total registros: 7538

4 TABLA DE DISTRIBUCIÓN DE FRECUENCIA

suppressPackageStartupMessages({
  library(gt)
  library(dplyr)
})

loc_vec        <- factor(Datos$`Location accuracy`,
                         levels = c("exact", "approximate"), ordered = TRUE)
conteo_loc_raw <- table(loc_vec)
ni_loc_val     <- as.numeric(conteo_loc_raw)
hi_loc_val     <- (ni_loc_val / sum(ni_loc_val)) * 100

df_loc_final <- data.frame(
  Asignacion = 1:2,
  Precision  = names(conteo_loc_raw),
  ni         = ni_loc_val,
  hi         = hi_loc_val
)

df_loc_final %>%
  gt() %>%
  tab_header(
    title = md("**TABLA N° 1: DISTRIBUCIÓN DE FRECUENCIAS DE LA PRECISIÓN DE UBICACIÓN**")
  ) %>%
  cols_label(
    Asignacion = "Asignación",
    Precision  = "Precisión de Ubicación",
    ni         = "ni",
    hi         = "hi (%)"
  ) %>%
  fmt_number(columns = hi, decimals = 2) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style     = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold")),
    locations = cells_column_labels()
  ) %>%
  tab_options(
    table.width                = pct(90),
    data_row.padding           = px(12),
    column_labels.padding      = px(15),
    table.border.top.style     = "solid",
    table.border.top.color     = "#2E4053",
    table.border.bottom.style  = "solid",
    table.border.bottom.color  = "#2E4053"
  )
TABLA N° 1: DISTRIBUCIÓN DE FRECUENCIAS DE LA PRECISIÓN DE UBICACIÓN
Asignación Precisión de Ubicación ni hi (%)
1 exact 6353 84.28
2 approximate 1185 15.72

5 ANÁLISIS GRÁFICO

5.1 DIAGRAMA DE BARRAS

par(mar = c(10, 4, 4, 2))

barplot(df_loc_final$hi,
        main      = "",
        ylab      = "Porcentaje (%)",
        col       = "#B0C4DE",
        names.arg = c("1", "2"),
        las       = 1,
        cex.names = 0.8,
        cex.axis  = 0.8,
        ylim      = c(0, max(df_loc_final$hi) + 10))

mtext("Precisión de Ubicación", side = 1, line = 8)
mtext("GRÁFICO N° 1: PORCENTAJE DE LA PRECISIÓN DE UBICACIÓN",
      side = 3, line = 2, adj = 0.5, cex = 0.85, font = 2)


6 CONJETURA DEL MODELO

Se aplicó el Modelo Geométrico porque describe perfectamente el patrón de decaimiento de la precisión de ubicación: una gran mayoría de registros con coordenadas exactas que disminuyen drásticamente al llegar a las coordenadas aproximadas.

X_indices_loc   <- 0:1
n_total_loc     <- sum(df_loc_final$ni)
media_obs_loc   <- sum(X_indices_loc * df_loc_final$ni) / n_total_loc
prob_p_geom_loc <- 1 / (media_obs_loc + 1)

P_Geometrica_Loc <- dgeom(X_indices_loc, prob = prob_p_geom_loc)
P_Geometrica_Loc <- (P_Geometrica_Loc / sum(P_Geometrica_Loc)) * 100

par(mar = c(9, 4, 4, 2))
max_y_loc <- max(max(df_loc_final$hi), max(P_Geometrica_Loc))

barplot(rbind(df_loc_final$hi, P_Geometrica_Loc),
        beside      = TRUE,
        main        = "",
        ylab        = "Porcentaje (%)",
        names.arg   = c("1", "2"),
        col         = c("#B0C4DE", "#AED6F1"),
        ylim        = c(0, max_y_loc + 20),
        las         = 1,
        cex.names   = 0.8,
        cex.main    = 0.85)

legend("topright",
       legend = c("Realidad", "Modelo Geom"),
       fill   = c("#B0C4DE", "#AED6F1"),
       bty    = "n", cex = 0.8)

mtext("Precisión de Ubicación (Location Accuracy)", side = 1, line = 7)
mtext("GRÁFICO N° 2: Comparado de lo Observado frente a lo Esperado",
      side = 3, line = 2, adj = 0.5, cex = 0.85, font = 2)


7 TEST DE PEARSON

Nota metodológica: La variable Location accuracy tiene únicamente 2 categorías, por lo que la función cor.test() no puede ejecutarse (requiere mínimo 3 observaciones para estimar el estadístico). En su lugar, se calcula la correlación de Pearson directamente entre las frecuencias observadas y esperadas, y se presenta la gráfica de dispersión con la línea de ajuste como evidencia visual del grado de concordancia entre el modelo y los datos.

Fo_Loc <- df_loc_final$hi
Fe_Loc <- P_Geometrica_Loc

# Correlación directa (cor() funciona con 2 puntos, cor.test() no)
Correlacion_Loc_Geom <- cor(Fo_Loc, Fe_Loc) * 100
r_valor_loc          <- round(Correlacion_Loc_Geom / 100, 4)

cat("Correlación de Pearson (%):", round(Correlacion_Loc_Geom, 2), "\n")
## Correlación de Pearson (%): 100
par(mar = c(5, 5, 4, 2))
plot(Fo_Loc, Fe_Loc,
     main     = "",
     cex.main = 0.85,
     xlab     = "Frecuencia Observada (%)",
     ylab     = "Frecuencia Esperada (%)",
     pch      = 19,
     col      = "#2E4053",
     cex      = 1.5,
     xlim     = c(0, max(Fo_Loc) * 1.2),
     ylim     = c(0, max(Fe_Loc) * 1.2))

abline(lm(Fe_Loc ~ Fo_Loc), col = "red", lwd = 2)

text(x      = min(Fo_Loc) + 2,
     y      = max(Fe_Loc),
     labels = paste("r =", r_valor_loc),
     pos    = 4, font = 2, col = "#2E4053")

mtext("GRÁFICO N° 3: CORRELACIÓN DEL MODELO GEOMÉTRICO (PRECISIÓN DE UBICACIÓN)",
      side = 3, line = 2, adj = 0.5, cex = 0.8, font = 2)

7.1 TEST DE CHI-CUADRADO

x2_Loc_Geom <- sum(((Fo_Loc - P_Geometrica_Loc)^2) / P_Geometrica_Loc)
gl_Loc      <- length(Fo_Loc) - 1
vc_Loc      <- qchisq(0.95, gl_Loc)

cat("Estadístico Chi-cuadrado (Calculado):", round(x2_Loc_Geom, 4), "\n")
## Estadístico Chi-cuadrado (Calculado): 1.3429
cat("Valor Crítico (Tabla):", round(vc_Loc, 4), "\n")
## Valor Crítico (Tabla): 3.8415
cat("¿Se acepta el modelo Geométrico? (Calculado < Crítico):", x2_Loc_Geom < vc_Loc, "\n")
## ¿Se acepta el modelo Geométrico? (Calculado < Crítico): TRUE

8 TABLA RESUMEN DE BONDAD DEL AJUSTE

tabla_resumen_Loc <- data.frame(
  Variable  = "Precisión de Ubicación",
  Pearson   = round(Correlacion_Loc_Geom, 2),
  Chi2      = round(x2_Loc_Geom, 4),
  Umbral    = round(vc_Loc, 2),
  Resultado = ifelse(x2_Loc_Geom < vc_Loc, "Modelo Aceptado", "Modelo Rechazado")
)

tabla_resumen_Loc %>%
  gt() %>%
  tab_header(
    title = md("**TABLA N° 2: RESUMEN DEL TEST DE BONDAD AL MODELO DE PROBABILIDAD (PRECISIÓN)**")
  ) %>%
  cols_label(
    Variable  = "Variable",
    Pearson   = "Test Pearson (%)",
    Chi2      = "Chi Cuadrado",
    Umbral    = "Umbral de Aceptación",
    Resultado = "Resultado Final"
  ) %>%
  tab_source_note(source_note = "Autor: Grupo 5") %>%
  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.width                       = pct(95),
    table.border.top.color            = "#2E4053",
    table.border.bottom.color         = "#2E4053",
    column_labels.border.bottom.color = "#2E4053",
    data_row.padding                  = px(10)
  )
TABLA N° 2: RESUMEN DEL TEST DE BONDAD AL MODELO DE PROBABILIDAD (PRECISIÓN)
Variable Test Pearson (%) Chi Cuadrado Umbral de Aceptación Resultado Final
Precisión de Ubicación 100 1.3429 3.84 Modelo Aceptado
Autor: Grupo 5

9 CÁLCULO DE PROBABILIDADES

1. ¿Cuál es la probabilidad de que un yacimiento seleccionado al azar presente una ubicación de tipo “Exacta”?

prob_exact <- df_loc_final$hi[df_loc_final$Precision == "exact"]
prob_exact
## [1] 84.27965

La probabilidad de encontrar un yacimiento con coordenadas exactas es del 84.28%. Este dato es fundamental para los análisis geoespaciales del sector petrolero, ya que garantiza que la gran mayoría de los registros del dataset cuentan con ubicaciones precisas, lo que reduce significativamente el margen de error en modelos de distribución espacial y planificación de infraestructura.

2. ¿Cuál es la probabilidad de que un yacimiento seleccionado al azar NO presente una ubicación exacta (es decir, sea aproximada)?

prob_aprox <- df_loc_final$hi[df_loc_final$Precision == "approximate"]
prob_aprox
## [1] 15.72035

La probabilidad de que un yacimiento tenga una ubicación aproximada es del 15.72%. Este resultado confirma que solo una pequeña fracción de los registros presenta incertidumbre geográfica, lo que valida la confiabilidad general del dataset GOGET para análisis espaciales a escala mundial.


10 CONCLUSIÓN

El modelo geométrico confirmó que predominan ampliamente los yacimientos con coordenadas exactas en el dataset GOGET. Dado que la variable cuenta con únicamente dos categorías, el ajuste del modelo se evaluó mediante el Test de Chi-cuadrado como prueba principal de bondad, complementado con la correlación directa de Pearson entre frecuencias observadas y esperadas. Los resultados validan estadísticamente que la distribución de la precisión de ubicación sigue un patrón geométrico decreciente, coherente con la naturaleza del proceso de registro de datos geoespaciales en el sector de extracción de petróleo y gas a nivel mundial.