1. Carga de Librerías

library(tidyverse)
library(knitr)
library(kableExtra)
library(scales)

2. Carga de Data Set

datos_originales <- read_csv2("C:/Users/cordo/OneDrive/Desktop/ESTADISITCA/Oil__Gas____Other_Regulated_Wells__Beginning_1860.csv")

names(datos_originales) <- trimws(toupper(names(datos_originales)))

3. Extracción y Limpieza de la Variable

La variable Map Symbol registra la representación gráfica o símbolo asignado a cada pozo en el sistema cartográfico. Se ha realizado un análisis de todas las categorías registradas, preservando la totalidad de los datos para garantizar una interpretación precisa de la simbología utilizada en la cartografía técnica.

col_nombre <- grep("MAP.*SYMBOL", names(datos_originales), value = TRUE)[1]

df_clean <- datos_originales %>%
  select(Map_Symbols = all_of(col_nombre)) %>%
  filter(!is.na(Map_Symbols)) %>%
  mutate(Map_Symbols = as.character(Map_Symbols))

tabla_frec <- df_clean %>%
  count(MAP_SYMBOL = Map_Symbols, name = "Frecuencia_Absoluta") %>%
  mutate(
    Frecuencia_Relativa = Frecuencia_Absoluta / sum(Frecuencia_Absoluta),
    Porcentaje = Frecuencia_Relativa * 100,
    Frecuencia_Acumulada = cumsum(Frecuencia_Absoluta)
  ) %>%
  arrange(desc(Frecuencia_Absoluta))

4. Tabla de Distribución de Frecuencias

fila_total <- tibble(
  MAP_SYMBOL = "Total",
  Frecuencia_Absoluta = sum(tabla_frec$Frecuencia_Absoluta),
  Porcentaje = sum(tabla_frec$Porcentaje)
)

tabla_frec_con_total <- bind_rows(
  tabla_frec %>% mutate(Porcentaje = Porcentaje),
  fila_total
)

tabla_frec_con_total %>%
  mutate(Porcentaje = round(Porcentaje, 2)) %>%
  select(Símbolo = MAP_SYMBOL, `ni (Absoluta)` = Frecuencia_Absoluta, `hi % (Relativa)` = Porcentaje) %>%
  kable(caption = "Tabla N°1: Tabla Completa de Distribución de Frecuencias",
        align = c("l", "c", "c")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
                full_width = FALSE, 
                position = "center") %>%
  row_spec(0, background = "#1D4E73", color = "white", bold = TRUE) %>%
  row_spec(nrow(tabla_frec_con_total), bold = TRUE, background = "#EAF4FD") %>%
  footnote(general = "Fuente: Oil, Gas & Other Regulated Wells - NY State",
           general_title = "",
           footnote_as_chunk = TRUE)
Tabla N°1: Tabla Completa de Distribución de Frecuencias
Símbolo ni (Absoluta) hi % (Relativa)
OWP 10058 21.22
GW 8737 18.44
O 8156 17.21
OW 7975 16.83
OP 5561 11.74
DP 2238 4.72
GWP 2156 4.55
S 961 2.03
SMP 597 1.26
DH 593 1.25
SM 172 0.36
SP 170 0.36
CON 14 0.03
Total 47388 100.00
Fuente: Oil, Gas & Other Regulated Wells - NY State

5. Análisis Gráfico

tema_vertical <- theme_minimal() + 
  theme(
    plot.title = element_text(face = "bold", color = "#1D4E73", size = 12, hjust = 0.5),
    panel.grid.major.x = element_blank(), 
    panel.grid.minor.x = element_blank(),
    axis.text.x = element_text(angle = 0, hjust = 0.5, vjust = 0.5, size = 10, face = "bold")
  )

5.1 Diagrama de Barras — Frecuencia Absoluta

ggplot(tabla_frec, aes(x = reorder(MAP_SYMBOL, -Frecuencia_Absoluta), y = Frecuencia_Absoluta, fill = MAP_SYMBOL)) +
  geom_col(show.legend = FALSE) +
  scale_fill_manual(values = colorRampPalette(paleta_colores)(nrow(tabla_frec))) +
  geom_text(aes(label = Frecuencia_Absoluta), vjust = -0.5, size = 3.5, fontface = "bold") +
  tema_vertical +
  labs(
    title = "Gráfica N°1: Frecuencia Absoluta por Símbolo del Mapa",
    x = "Símbolo del Mapa",
    y = "Frecuencia Absoluta (ni)",
    caption = "Fuente: Oil, Gas & Other Regulated Wells - NY State"
  ) +
  ylim(0, max(tabla_frec$Frecuencia_Absoluta) * 1.15)

5.2 Diagrama de Barras — Frecuencia Relativa / Porcentajes

ggplot(tabla_frec, aes(x = reorder(MAP_SYMBOL, -Porcentaje), y = Porcentaje, fill = MAP_SYMBOL)) +
  geom_col(show.legend = FALSE) +
  scale_fill_manual(values = colorRampPalette(paleta_colores)(nrow(tabla_frec))) +
  geom_text(aes(label = paste0(round(Porcentaje, 1), "%")), vjust = -0.5, size = 3.5, fontface = "bold") +
  tema_vertical +
  labs(
    title = "Gráfica N°2: Porcentajes por Símbolo del Mapa",
    x = "Símbolo del Mapa",
    y = "Porcentaje (%)",
    caption = "Fuente: Oil, Gas & Other Regulated Wells - NY State"
  ) +
  ylim(0, max(tabla_frec$Porcentaje) * 1.15)

6. Conjetura de Modelo Geométrico

conteo_modelo <- tabla_frec %>%
  mutate(MAP_SYMBOL = as.character(MAP_SYMBOL)) %>%
  arrange(desc(Frecuencia_Absoluta))

p_est <- conteo_modelo$Porcentaje[1] / 100
k_categorias <- nrow(conteo_modelo)
x_vals <- 1:k_categorias

prob_geom <- p_est * ((1 - p_est)^(x_vals - 1))
prob_geom_norm <- prob_geom / sum(prob_geom)

conteo_modelo$hi_pct <- round(conteo_modelo$Porcentaje, 2)
conteo_modelo$hi_modelo_pct <- round(prob_geom_norm * 100, 2)

Gráfica comparativa de los valores observados y estimados

df_comparativo <- conteo_modelo %>%
  select(MAP_SYMBOL, hi_pct, hi_modelo_pct) %>%
  pivot_longer(cols = c(hi_pct, hi_modelo_pct),
               names_to = "Origen", values_to = "Valor") %>%
  mutate(Origen = ifelse(Origen == "hi_pct", "Realidad", "Modelo Geométrico"))

df_comparativo$MAP_SYMBOL <- factor(df_comparativo$MAP_SYMBOL, levels = conteo_modelo$MAP_SYMBOL)

ggplot(df_comparativo, aes(x = MAP_SYMBOL, y = Valor, fill = Origen)) +
  geom_bar(stat = "identity", position = "dodge", color = "white") +
  scale_fill_manual(values = c("Modelo Geométrico" = "#7ABDEF", "Realidad" = "#1D4E73")) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", color = "#1D4E73", size = 13, hjust = 0.5),
    plot.subtitle = element_text(hjust = 0.5),
    axis.text.x = element_text(angle = 0, hjust = 0.5, vjust = 0.5, size = 10, face = "bold")
  ) +
  labs(
    title    = "Gráfica N°3: Modelo Geométrico comparado con la Realidad",
    x        = "Símbolo del Mapa",
    y        = "Probabilidad (%)",
    fill     = "Origen"
  )

7. Test de Bondad

7.1 Test de Pearson

cat("Correlación de Pearson (%):", round(r_pearson, 4), "\n")
## Correlación de Pearson (%): 95.761
plot(Fo, Fe,
     xlab = "Frecuencia Observada (hi %)",
     ylab = "Frecuencia Esperada (hi modelo %)",
     pch  = 19,
     col  = "#1D4E73",
     cex.main = 1.1,
     font.main = 2,
     col.main = "#1D4E73")
title(main = "Gráfica N°4: Correlación Modelo Observado y Esperado", line = 2.5, adj = 0.5)
abline(lm(Fe ~ Fo), col = "red", lwd = 2)
legend("topleft",
       legend = paste0("r = ", round(r_pearson, 2), "%"),
       bty    = "n")

7.2 Test Chi-Cuadrado (\(\chi^2\))

cat("Chi-Cuadrado calculado:", round(chi2_calc, 4), "\n")
## Chi-Cuadrado calculado: 12.7623
cat("Valor Crítico (95% confianza):", round(chi2_crit, 4), "\n")
## Valor Crítico (95% confianza): 21.0261
cat("¿El modelo geométrico es aceptado?:", chi2_calc < chi2_crit, "\n")
## ¿El modelo geométrico es aceptado?: TRUE

Tabla Resumen del Test

tabla_test <- data.frame(
  Variable          = "Símbolos del Mapa (Map Symbols)",
  `Modelo Teórico`  = "Modelo Geométrico",
  `Test Pearson (%)`= round(r_pearson, 2),
  `Chi Cuadrado`    = round(chi2_calc, 2),
  `Umbral de Aceptación` = round(chi2_crit, 2),
  Resultado         = ifelse(chi2_calc < chi2_crit, "Modelo Aceptado", "Modelo Rechazado"),
  check.names = FALSE
)

tabla_test %>%
  kable(caption = "Tabla N°2: Resumen del Test de Bondad al Modelo Geométrico",
        align = c("c", "c", "c", "c", "c", "c")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
                full_width = FALSE, 
                position = "center") %>%
  row_spec(0, background = "#1D4E73", color = "white", bold = TRUE) %>%
  footnote(general = "Autor: Jennifer Cordones",
           general_title = "",
           footnote_as_chunk = TRUE)
Tabla N°2: Resumen del Test de Bondad al Modelo Geométrico
Variable Modelo Teórico Test Pearson (%) Chi Cuadrado Umbral de Aceptación Resultado
Símbolos del Mapa (Map Symbols) Modelo Geométrico 95.76 12.76 21.03 Modelo Aceptado
Autor: Jennifer Cordones

8. Cálculo de Probabilidades

prob_principal <- (conteo_modelo$Frecuencia_Absoluta[1] / sum(tabla_frec$Frecuencia_Absoluta)) * 100
simbolo_principal <- as.character(conteo_modelo$MAP_SYMBOL[1])

cat("Probabilidad de estar en el símbolo más frecuente (", simbolo_principal, "):",
    round(prob_principal, 2), "%\n")
## Probabilidad de estar en el símbolo más frecuente ( OWP ): 21.22 %
pozos_top2 <- sum(conteo_modelo$Frecuencia_Absoluta[1:min(2, nrow(conteo_modelo))])
simbolos_top2 <- paste(conteo_modelo$MAP_SYMBOL[1:min(2, nrow(conteo_modelo))], collapse = " y ")

cat("Pozos en las principales concentraciones de símbolos (", simbolos_top2, "):", pozos_top2, "\n")
## Pozos en las principales concentraciones de símbolos ( OWP y GW ): 18795

¿Cuál es la probabilidad de que un pozo seleccionado al azar se encuentre en el símbolo con mayor concentración (OWP)? La probabilidad estimada indica que aproximadamente el 21.22% de los pozos regulados corresponden al símbolo OWP, siendo la representación cartográfica más frecuente en el registro.

¿Cuántos pozos se encuentran ubicados entre las principales concentraciones de símbolos (OWP y GW)? En la base de datos analizada, un total de 18795 pozos se agrupan en estas tipologías principales, lo que representa una parte esencial del inventario total evaluado.

9. Conclusión

Tras analizar la variable Map Symbol del dataset, se evaluó la conjetura del Modelo Geométrico mediante las pruebas de bondad de ajuste correspondientes.

Los resultados obtenidos muestran una correlación de Pearson del 95.76% entre las frecuencias observadas y las esperadas por el modelo teórico. Asimismo, al contrastar el estadístico Chi-Cuadrado calculado (12.76) frente al valor crítico (21.03), se concluye que el modelo geométrico es aceptado como una aproximación válida para describir la distribución de los símbolos cartográficos de los pozos registrados.


Autor: Jennifer Cordones | Análisis Estadístico — Oil, Gas & Other Regulated Wells - NY State