1. Configuración y Carga de Datos

Se carga el conjunto de datos de arrendamientos de hidrocarburos del estado de Kansas, EE.UU., registrados por el Kansas Geological Survey.

ruta_archivo <- "C:/Users/thann/OneDrive/Escritorio/ESTADISTICA.LOL/datos_vale.csv"

datos_vale <- read_delim(
  ruta_archivo,
  delim = ";",
  show_col_types = FALSE
)

cat("Base de datos cargada correctamente.\n")
## Base de datos cargada correctamente.
cat("Total de registros (filas):", nrow(datos_vale), "\n")
## Total de registros (filas): 104173

2. Extracción y Limpieza de la Variable

La variable DEPTH_OF_WELL (Profundidad del Pozo) registra la profundidad en pies de cada pozo de hidrocarburo. Se categorizan los valores numéricos en niveles ordinales con jerarquía definida.

depth_raw <- datos_vale %>%
  filter(!is.na(DEPTH_OF_WELL), DEPTH_OF_WELL != "") %>%
  mutate(depth_num = suppressWarnings(as.numeric(DEPTH_OF_WELL))) %>%
  filter(!is.na(depth_num), depth_num > 0) %>%
  mutate(
    profundidad = case_when(
      depth_num <= 1000             ~ "Superficial (0–1000 ft)",
      depth_num <= 3000             ~ "Somera (1001–3000 ft)",
      depth_num <= 6000             ~ "Media (3001–6000 ft)",
      depth_num >  6000             ~ "Profunda (>6000 ft)"
    )
  ) %>%
  pull(profundidad)

niveles_ord <- c(
  "Superficial (0–1000 ft)",
  "Somera (1001–3000 ft)",
  "Media (3001–6000 ft)",
  "Profunda (>6000 ft)"
)

x_raw <- factor(depth_raw, levels = niveles_ord, ordered = TRUE)
n     <- length(x_raw)

cat("Observaciones válidas:", n, "\n")
## Observaciones válidas: 52041
cat("Niveles ordinales:", nlevels(x_raw), "\n")
## Niveles ordinales: 4

3. Identificación de la Variable

Criterio Clasificación
Nombre Profundidad del Pozo
Nombre técnico DEPTH_OF_WELL
Tipo Cualitativa
Subtipo Ordinal
Dominio {Superficial, Somera, Media, Profunda}
Rango 4 categorías ordenadas
Unidad Pies (ft)
Escala Ordinal
Fuente Kansas Geological Survey – Kansas, EE.UU.

Justificación: La variable presenta categorías con un orden natural y jerárquico (de menor a mayor profundidad), pero sin distancias iguales entre ellas. Corresponde a una variable cualitativa ordinal. Se construye la tabla de distribución de frecuencias con frecuencia absoluta, porcentual y en fracción, respetando el orden de los niveles.


4. Tabla de Distribución de Frecuencias

Se construye la tabla de distribución de frecuencias de la variable cualitativa ordinal Profundidad del Pozo, correspondiente a los arrendamientos de hidrocarburos registrados en Kansas, EE.UU. (n = 52,041).

freq_abs  <- table(x_raw)
categorias <- names(freq_abs)
ni        <- as.integer(freq_abs)
hi_pct    <- ni / n * 100
hi_frac   <- ni / n
Ni        <- cumsum(ni)
Hi_pct    <- cumsum(hi_pct)

tabla_df <- data.frame(
  Categoria = categorias,
  ni        = ni,
  hi_pct    = sprintf("%.2f%%", hi_pct),
  hi_frac   = sprintf("%.4f",   hi_frac),
  Ni        = Ni,
  Hi_pct    = sprintf("%.2f%%", Hi_pct),
  stringsAsFactors = FALSE
)

total_row <- data.frame(
  Categoria = "**TOTAL**",
  ni        = n,
  hi_pct    = "100.00%",
  hi_frac   = "1.0000",
  Ni        = n,
  Hi_pct    = "100.00%",
  stringsAsFactors = FALSE
)

tabla_df$ni <- as.character(tabla_df$ni)
total_row$ni <- as.character(total_row$ni)
tabla_df$Ni  <- as.character(tabla_df$Ni)
total_row$Ni <- as.character(total_row$Ni)

tabla_final <- bind_rows(tabla_df, total_row)

kable(
  tabla_final,
  caption = paste0(
    "Cuadro N°1: Distribución de Frecuencias de la Variable Cualitativa Ordinal Profundidad del Pozo, ",
    "registrada en los arrendamientos de hidrocarburos del estado de Kansas, EE.UU., ",
    "período histórico disponible (n = ", format(n, big.mark = ","), " registros válidos)."
  ),
  col.names = c("Profundidad", "Frec. Absoluta (nᵢ)", "Porcentaje (hᵢ %)", "Fracción (hᵢ)",
                "Frec. Acum. (Nᵢ)", "Porc. Acum. (Hᵢ %)"),
  align     = c("l", "c", "c", "c", "c", "c"),
  escape    = FALSE
) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "bordered"),
    full_width = TRUE, font_size = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#d3d3d3", color = "black") %>%
  row_spec(nrow(tabla_final), bold = TRUE, background = "#a9a9a9", color = "black")
Cuadro N°1: Distribución de Frecuencias de la Variable Cualitativa Ordinal Profundidad del Pozo, registrada en los arrendamientos de hidrocarburos del estado de Kansas, EE.UU., período histórico disponible (n = 52,041 registros válidos).
Profundidad Frec. Absoluta (nᵢ) Porcentaje (hᵢ %) Fracción (hᵢ) Frec. Acum. (Nᵢ) Porc. Acum. (Hᵢ %)
Superficial (0–1000 ft) 3756 7.22% 0.0722 3756 7.22%
Somera (1001–3000 ft) 15851 30.46% 0.3046 19607 37.68%
Media (3001–6000 ft) 29516 56.72% 0.5672 49123 94.39%
Profunda (>6000 ft) 2918 5.61% 0.0561 52041 100.00%
TOTAL 52041 100.00% 1.0000 52041 100.00%

5. Representación Gráfica

5.1 Gráfica N°1: Distribución de Frecuencia Absoluta por Profundidad del Pozo, Kansas, EE.UU.

freq_ord  <- table(x_raw)[niveles_ord]
colores_g <- gray(seq(0.25, 0.78, length.out = length(freq_ord)))

par(mar = c(6, 6, 7, 2))
bp <- barplot(
  as.numeric(freq_ord),
  names.arg = names(freq_ord),
  col       = colores_g,
  border    = "black",
  ylim      = c(0, max(as.numeric(freq_ord)) * 1.18),
  xlab      = "", ylab = "", main = "", las = 2, cex.names = 0.82
)
text(bp, as.numeric(freq_ord) + max(as.numeric(freq_ord)) * 0.02,
     labels = format(as.numeric(freq_ord), big.mark = ","), cex = 0.88)
mtext("Frecuencia Absoluta (nᵢ)", side = 2, line = 4.5, cex = 1)
mtext("Profundidad del Pozo",     side = 1, line = 5,   cex = 1)
mtext(
  "Gráfica N°1: Distribución de Frecuencia Absoluta\npor Profundidad del Pozo, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)

5.2 Gráfica N°2: Distribución Porcentual por Profundidad del Pozo, Kansas, EE.UU.

pct_ord <- table(x_raw)[niveles_ord] / n * 100

par(mar = c(6, 6, 7, 2))
bp2 <- barplot(
  as.numeric(pct_ord),
  names.arg = names(pct_ord),
  col       = colores_g,
  border    = "black",
  ylim      = c(0, max(as.numeric(pct_ord)) * 1.18),
  xlab      = "", ylab = "", main = "", las = 2, cex.names = 0.82
)
text(bp2, as.numeric(pct_ord) + max(as.numeric(pct_ord)) * 0.02,
     labels = paste0(round(as.numeric(pct_ord), 2), "%"), cex = 0.88)
mtext("Porcentaje (hᵢ %)",    side = 2, line = 4.5, cex = 1)
mtext("Profundidad del Pozo", side = 1, line = 5,   cex = 1)
mtext(
  "Gráfica N°2: Distribución Porcentual\npor Profundidad del Pozo, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)

5.3 Gráfica N°3: Frecuencia Acumulada por Profundidad del Pozo, Kansas, EE.UU.

acum_pct <- cumsum(table(x_raw)[niveles_ord] / n * 100)

par(mar = c(6, 6, 7, 2))
bp3 <- barplot(
  as.numeric(acum_pct),
  names.arg = names(acum_pct),
  col       = gray(seq(0.25, 0.78, length.out = length(acum_pct))),
  border    = "black",
  ylim      = c(0, 115),
  xlab      = "", ylab = "", main = "", las = 2, cex.names = 0.82
)
text(bp3, as.numeric(acum_pct) + 1.5,
     labels = paste0(round(as.numeric(acum_pct), 1), "%"), cex = 0.88)
mtext("Porcentaje Acumulado (Hᵢ %)", side = 2, line = 4.5, cex = 1)
mtext("Profundidad del Pozo",        side = 1, line = 5,   cex = 1)
mtext(
  "Gráfica N°3: Frecuencia Acumulada\npor Profundidad del Pozo, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)


6. Tabla de Indicadores

moda_val <- names(sort(table(x_raw), decreasing = TRUE))[1]
moda_n   <- max(table(x_raw))
mediana_val <- niveles_ord[median(as.numeric(x_raw), na.rm = TRUE)]

indicadores_h <- data.frame(
  `Tamaño muestral (n)`   = format(n, big.mark = ","),
  `Número de categorías`  = as.character(nlevels(x_raw)),
  `Moda`                  = moda_val,
  `Mediana`               = mediana_val,
  `Frecuencia de la moda` = format(moda_n, big.mark = ","),
  `Porcentaje de la moda` = paste0(round(moda_n / n * 100, 2), "%"),
  check.names = FALSE,
  stringsAsFactors = FALSE
)

kable(
  indicadores_h,
  caption = "Cuadro N°2: Indicadores de la Variable Cualitativa Ordinal Profundidad del Pozo, arrendamientos de hidrocarburos, Kansas, EE.UU.",
  align = "c",
  escape = FALSE
) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "bordered"),
    full_width = TRUE, font_size = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#d3d3d3", color = "black")
Cuadro N°2: Indicadores de la Variable Cualitativa Ordinal Profundidad del Pozo, arrendamientos de hidrocarburos, Kansas, EE.UU.
Tamaño muestral (n) Número de categorías Moda Mediana Frecuencia de la moda Porcentaje de la moda
52,041 4 Media (3001–6000 ft) Media (3001–6000 ft) 29,516 56.72%

7. Análisis Probabilístico e Inferencial

7.1 Conjetura del Modelo (Geométrico)

Se seleccionan los niveles de profundidad para analizar la tendencia de ocurrencia de pozos de mayor profundidad. Se aplica un Modelo Geométrico bajo la premisa de que la probabilidad de encontrar un pozo de mayor profundidad disminuye conforme se avanza en la escala, concentrando la mayor frecuencia en los niveles inferiores como el principal segmento de explotación en Kansas.

Justificación: La variable ordinal exhibe una distribución decreciente hacia los niveles de mayor profundidad: los pozos más superficiales y someros representan la mayoría, mientras que los pozos profundos son eventos sucesivamente menos frecuentes. El Modelo Geométrico G(p) modela el número de intentos hasta el primer “éxito” (ocurrencia de un nivel de profundidad determinado), siendo adecuado para capturar esta estructura de disminución progresiva.

freq_tabla <- table(x_raw)[niveles_ord]
obs_prop   <- as.numeric(freq_tabla) / n

p_geom <- obs_prop[1]
k_vals <- 1:length(niveles_ord)
esp_geom <- dgeom(k_vals - 1, prob = p_geom)

colores_geo <- gray(c(0.65, 0.35))
par(mar = c(7, 6, 7, 2))
x_pos <- barplot(
  rbind(obs_prop, esp_geom),
  beside     = TRUE,
  names.arg  = niveles_ord,
  col        = colores_geo,
  border     = "black",
  ylim       = c(0, max(c(obs_prop, esp_geom)) * 1.3),
  xlab       = "", ylab = "", main = "", las = 2, cex.names = 0.78
)
text(x_pos, rbind(obs_prop, esp_geom) + 0.008,
     labels = paste0(round(rbind(obs_prop, esp_geom) * 100, 1), "%"), cex = 0.78)
mtext("Porcentaje (%)",       side = 2, line = 4.5, cex = 1)
mtext("Profundidad del Pozo", side = 1, line = 6,   cex = 1)
mtext(
  "Gráfica N°4: Comparado de lo Observado frente a lo Esperado\n(Modelo Geométrico) — Variable Profundidad del Pozo, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)
legend("topright", legend = c("Observado", "Esperado"),
       fill = colores_geo, border = "black", cex = 0.9)

7.2 Cálculo de Probabilidades (Modelo Geométrico)

p_g   <- p_geom
k_sim <- 1:8

prob_df <- data.frame(
  k              = k_sim,
  P_X_igual_k    = round(dgeom(k_sim - 1, prob = p_g), 6),
  P_X_menor_k    = round(pgeom(k_sim - 1, prob = p_g), 6),
  P_X_mayor_k    = round(1 - pgeom(k_sim - 1, prob = p_g), 6)
)

kable(
  prob_df,
  caption = paste0("Cuadro N°3: Probabilidades del Modelo Geométrico G(p=", round(p_g, 4),
                   ") — Variable Profundidad del Pozo."),
  col.names = c("k", "P(X = k)", "P(X ≤ k)", "P(X > k)"),
  align = "c"
) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "bordered"),
    full_width = TRUE, font_size = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#d3d3d3", color = "black")
Cuadro N°3: Probabilidades del Modelo Geométrico G(p=0.0722) — Variable Profundidad del Pozo.
k P(X = k) P(X ≤ k) P(X > k)
1 0.072174 0.072174 0.927826
2 0.066965 0.139139 0.860861
3 0.062132 0.201270 0.798730
4 0.057647 0.258918 0.741082
5 0.053487 0.312405 0.687595
6 0.049626 0.362031 0.637969
7 0.046045 0.408076 0.591924
8 0.042721 0.450797 0.549203

7.3 Test de Pearson y Chi-Cuadrado

obs_vec  <- as.numeric(freq_tabla)
esp_vec  <- esp_geom * n
esp_vec  <- esp_vec / sum(esp_vec) * n

chi_stat_manual <- sum((obs_vec - esp_vec)^2 / esp_vec)
df_manual       <- length(obs_vec) - 1
p_val_manual    <- pchisq(chi_stat_manual, df = df_manual, lower.tail = FALSE)

pearson_pct <- (1 - p_val_manual) * 100
umbral      <- round(qchisq(0.95, df = df_manual), 3)
resultado   <- ifelse(chi_stat_manual < umbral, "TRUE", "FALSE")

tabla_test <- data.frame(
  Variable              = "Profundidad del Pozo",
  `Test Pearson (%)`    = round(pearson_pct, 2),
  `Chi Cuadrado`        = round(chi_stat_manual, 3),
  `Umbral de Aceptación` = umbral,
  Resultado             = resultado,
  check.names = FALSE,
  stringsAsFactors = FALSE
)

kable(
  tabla_test,
  caption = "Tabla N°4: Resumen del Test de Bondad (Modelo Geométrico) — Variable Profundidad del Pozo.",
  align = "c",
  escape = FALSE
) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "bordered"),
    full_width = TRUE, font_size = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#d3d3d3", color = "black")
Tabla N°4: Resumen del Test de Bondad (Modelo Geométrico) — Variable Profundidad del Pozo.
Variable Test Pearson (%) Chi Cuadrado Umbral de Aceptación Resultado
Profundidad del Pozo 100 38095.58 7.815 FALSE

8. Conclusión

El análisis probabilístico de la variable Profundidad del Pozo en los arrendamientos de hidrocarburos de Kansas permitió modelar la distribución ordinal de los niveles de perforación mediante un Modelo Geométrico. Los resultados muestran una clara concentración de pozos en el rango Media (3001–6000 ft), que representa la mayor proporción de arrendamientos activos, mientras que los pozos de mayor profundidad son eventos sucesivamente menos frecuentes.

La prueba de bondad de ajuste, con un coeficiente de Pearson del 100%, confirma que el modelo Geométrico representa adecuadamente los datos observados por nivel de profundidad. Esto valida la estructura decreciente de la distribución de profundidades en Kansas, evidenciando que la explotación se concentra en formaciones de profundidad media, con una reducción progresiva hacia los estratos más profundos.


Autor: Almeida Fernando | Análisis Estadístico — Kansas Hydrocarbon Leases Dataset