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.
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 ...
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
## Total registros: 7538
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 |
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)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)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)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
## Valor Crítico (Tabla): 3.8415
## ¿Se acepta el modelo Geométrico? (Calculado < Crítico): TRUE
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 | ||||
1. ¿Cuál es la probabilidad de que un yacimiento seleccionado al azar presente una ubicación de tipo “Exacta”?
## [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)?
## [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.
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.