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 ETAPA DE VIDA del arrendamiento se construye a partir de los campos CUMULATIVE_YEAR_STARTED y CUMULATIVE_YEAR_ENDED, que registran el año de inicio y el año de fin de producción acumulada de cada arrendamiento en Kansas. La duración en años se clasifica en cuatro etapas ordinales con jerarquía definida.

etapa_raw <- datos_vale %>%
  mutate(
    anio_inicio = suppressWarnings(as.numeric(CUMULATIVE_YEAR_STARTED)),
    anio_fin    = suppressWarnings(as.numeric(CUMULATIVE_YEAR_ENDED))
  ) %>%
  filter(!is.na(anio_inicio), !is.na(anio_fin),
         anio_fin >= anio_inicio) %>%
  mutate(
    duracion = anio_fin - anio_inicio,
    etapa = case_when(
      duracion <= 10  ~ "Inicial (0–10 años)",
      duracion <= 25  ~ "Crecimiento (11–25 años)",
      duracion <= 45  ~ "Madurez (26–45 años)",
      duracion >  45  ~ "Declive (>45 años)"
    )
  ) %>%
  pull(etapa)

niveles_ord <- c(
  "Inicial (0–10 años)",
  "Crecimiento (11–25 años)",
  "Madurez (26–45 años)",
  "Declive (>45 años)"
)

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

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

3. Identificación de la Variable

Criterio Clasificación
Nombre Etapa de Vida del Arrendamiento
Nombre técnico CUMULATIVE_YEAR_STARTED / CUMULATIVE_YEAR_ENDED
Tipo Cualitativa
Subtipo Ordinal
Dominio {Inicial, Crecimiento, Madurez, Declive}
Rango 4 categorías ordenadas
Unidad Años de producción acumulada
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 madurez del arrendamiento), 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 Etapa de Vida del Arrendamiento, correspondiente a los arrendamientos de hidrocarburos registrados en Kansas, EE.UU. (n = 89,034).

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 Etapa de Vida del Arrendamiento, ",
    "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("Etapa de Vida", "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 Etapa de Vida del Arrendamiento, registrada en los arrendamientos de hidrocarburos del estado de Kansas, EE.UU., período histórico disponible (n = 89,034 registros válidos).
Etapa de Vida Frec. Absoluta (nᵢ) Porcentaje (hᵢ %) Fracción (hᵢ) Frec. Acum. (Nᵢ) Porc. Acum. (Hᵢ %)
Inicial (0–10 años) 35834 40.25% 0.4025 35834 40.25%
Crecimiento (11–25 años) 25863 29.05% 0.2905 61697 69.30%
Madurez (26–45 años) 16140 18.13% 0.1813 77837 87.42%
Declive (>45 años) 11197 12.58% 0.1258 89034 100.00%
TOTAL 89034 100.00% 1.0000 89034 100.00%

5. Representación Gráfica

5.1 Gráfica N°1: Distribución de Frecuencia Absoluta por Etapa de Vida del Arrendamiento, 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(7, 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("Etapa de Vida del Arrendamiento",   side = 1, line = 6,   cex = 1)
mtext(
  "Gráfica N°1: Distribución de Frecuencia Absoluta\npor Etapa de Vida del Arrendamiento, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)

5.2 Gráfica N°2: Distribución Porcentual por Etapa de Vida del Arrendamiento, Kansas, EE.UU.

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

par(mar = c(7, 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("Etapa de Vida del Arrendamiento",  side = 1, line = 6,   cex = 1)
mtext(
  "Gráfica N°2: Distribución Porcentual\npor Etapa de Vida del Arrendamiento, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)

5.3 Gráfica N°3: Frecuencia Acumulada por Etapa de Vida del Arrendamiento, Kansas, EE.UU.

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

par(mar = c(7, 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("Etapa de Vida del Arrendamiento",   side = 1, line = 6,   cex = 1)
mtext(
  "Gráfica N°3: Frecuencia Acumulada\npor Etapa de Vida del Arrendamiento, 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 Etapa de Vida del Arrendamiento, 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 Etapa de Vida del Arrendamiento, 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
89,034 4 Inicial (0–10 años) Crecimiento (11–25 años) 35,834 40.25%

7. Análisis Probabilístico e Inferencial

7.1 Conjetura del Modelo (Geométrico)

Se aplica un Modelo Geométrico para modelar la distribución de las etapas de vida de los arrendamientos. La premisa es que la probabilidad de que un arrendamiento llegue a una etapa más avanzada (mayor madurez o declive) disminuye progresivamente, concentrando la mayor frecuencia en las etapas iniciales del ciclo de producción.

Justificación: La variable ordinal exhibe una estructura de disminución progresiva desde las etapas tempranas hacia las más avanzadas: la mayoría de los arrendamientos se concentran en las etapas de menor duración, mientras que aquellos en etapas de Madurez o Declive son eventos sucesivamente menos frecuentes bajo este esquema. El Modelo Geométrico G(p) modela el número de intentos hasta el primer “éxito” (alcanzar una etapa de vida determinada), siendo adecuado para capturar esta estructura de disminución progresiva a lo largo del ciclo de vida del arrendamiento.

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(8, 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.35),
  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("Etapa de Vida del Arrendamiento", side = 1, line = 7,   cex = 1)
mtext(
  "Gráfica N°4: Comparado de lo Observado frente a lo Esperado\n(Modelo Geométrico) — Variable Etapa de Vida del Arrendamiento, 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 Etapa de Vida del Arrendamiento."),
  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.4025) — Variable Etapa de Vida del Arrendamiento.
k P(X = k) P(X ≤ k) P(X > k)
1 0.402475 0.402475 0.597525
2 0.240489 0.642964 0.357036
3 0.143698 0.786662 0.213338
4 0.085863 0.872526 0.127474
5 0.051305 0.923831 0.076169
6 0.030656 0.954487 0.045513
7 0.018318 0.972805 0.027195
8 0.010945 0.983750 0.016250

7.3 Conjetura del Modelo (Poisson)

Adicionalmente, se aplica un Modelo de Poisson para modelar la tasa promedio de ocurrencia de arrendamientos activos por etapa de vida dentro del conjunto de datos. Se interpreta cada etapa como un conteo de eventos discretos sobre un dominio definido (el catálogo histórico de Kansas).

Justificación: El Modelo de Poisson P(λ) es adecuado cuando se modela la frecuencia de ocurrencia de eventos discretos en un espacio definido. En este contexto, el número de arrendamientos que alcanzan cada etapa de vida puede interpretarse como conteos sobre el total de registros del estado de Kansas. Se estima λ como el promedio de frecuencias absolutas por etapa.

# Lambda = media ponderada del índice de categoría (0-based) usando proporciones observadas
# Este es el estimador correcto para Poisson sobre una variable categórica ordinal
k_idx          <- 0:(length(niveles_ord) - 1)          # 0, 1, 2, 3
lambda_poisson <- sum(k_idx * obs_prop)                 # E[X] con pesos observados

# Probabilidades Poisson para cada índice de categoría
esp_pois_raw  <- dpois(k_idx, lambda = lambda_poisson)

# Normalizar para que sumen 1 (por si hay masa fuera del rango)
esp_pois_norm <- esp_pois_raw / sum(esp_pois_raw)

# Guardar ylim seguro
ylim_max <- max(c(obs_prop, esp_pois_norm), na.rm = TRUE) * 1.35
if (!is.finite(ylim_max) || ylim_max <= 0) ylim_max <- 1

colores_pois <- gray(c(0.65, 0.35))
par(mar = c(8, 6, 7, 2))
x_pos2 <- barplot(
  rbind(obs_prop, esp_pois_norm),
  beside     = TRUE,
  names.arg  = niveles_ord,
  col        = colores_pois,
  border     = "black",
  ylim       = c(0, ylim_max),
  xlab       = "", ylab = "", main = "", las = 2, cex.names = 0.78
)
text(x_pos2, rbind(obs_prop, esp_pois_norm) + 0.008,
     labels = paste0(round(rbind(obs_prop, esp_pois_norm) * 100, 1), "%"), cex = 0.78)
mtext("Porcentaje (%)",                   side = 2, line = 4.5, cex = 1)
mtext("Etapa de Vida del Arrendamiento", side = 1, line = 7,   cex = 1)
mtext(
  "Gráfica N°5: Comparado de lo Observado frente a lo Esperado\n(Modelo Poisson) — Variable Etapa de Vida del Arrendamiento, Kansas, EE.UU.",
  side = 3, line = 3.5, cex = 0.9, font = 2
)
legend("topright", legend = c("Observado", "Esperado"),
       fill = colores_pois, border = "black", cex = 0.9)

7.4 Cálculo de Probabilidades (Modelo Poisson)

k_sim_pois <- 0:6

prob_pois_df <- data.frame(
  k              = k_sim_pois,
  P_X_igual_k    = round(dpois(k_sim_pois, lambda = lambda_poisson), 6),
  P_X_menor_k    = round(ppois(k_sim_pois, lambda = lambda_poisson), 6),
  P_X_mayor_k    = round(1 - ppois(k_sim_pois, lambda = lambda_poisson), 6)
)

kable(
  prob_pois_df,
  caption = paste0("Cuadro N°4: Probabilidades del Modelo Poisson P(λ=", round(lambda_poisson, 4),
                   ") — Variable Etapa de Vida del Arrendamiento."),
  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°4: Probabilidades del Modelo Poisson P(λ=1.0303) — Variable Etapa de Vida del Arrendamiento.
k P(X = k) P(X ≤ k) P(X > k)
0 0.356891 0.356891 0.643109
1 0.367714 0.724604 0.275396
2 0.189432 0.914037 0.085963
3 0.065059 0.979096 0.020904
4 0.016758 0.995854 0.004146
5 0.003453 0.999307 0.000693
6 0.000593 0.999900 0.000100

7.5 Test de Pearson y Chi-Cuadrado

Modelo Geométrico

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

chi_stat_geom <- sum((obs_vec - esp_vec_geom)^2 / esp_vec_geom)
df_geom       <- length(obs_vec) - 1
p_val_geom    <- pchisq(chi_stat_geom, df = df_geom, lower.tail = FALSE)

pearson_pct_geom <- (1 - p_val_geom) * 100
umbral_geom      <- round(qchisq(0.95, df = df_geom), 3)
resultado_geom   <- ifelse(chi_stat_geom < umbral_geom, "TRUE", "FALSE")

tabla_test_geom <- data.frame(
  Variable               = "Etapa de Vida (Geométrico)",
  `Test Pearson (%)`     = round(pearson_pct_geom, 2),
  `Chi Cuadrado`         = round(chi_stat_geom, 3),
  `Umbral de Aceptación` = umbral_geom,
  Resultado              = resultado_geom,
  check.names = FALSE,
  stringsAsFactors = FALSE
)

kable(
  tabla_test_geom,
  caption = "Tabla N°5: Resumen del Test de Bondad (Modelo Geométrico) — Variable Etapa de Vida del Arrendamiento.",
  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°5: Resumen del Test de Bondad (Modelo Geométrico) — Variable Etapa de Vida del Arrendamiento.
Variable Test Pearson (%) Chi Cuadrado Umbral de Aceptación Resultado
Etapa de Vida (Geométrico) 100 1564.376 7.815 FALSE

Modelo Poisson

# esp_pois_norm ya está normalizado; escalar al total observado
esp_vec_pois <- esp_pois_norm * sum(obs_vec)

chi_stat_pois <- sum((obs_vec - esp_vec_pois)^2 / esp_vec_pois)
df_pois       <- length(obs_vec) - 1
p_val_pois    <- pchisq(chi_stat_pois, df = df_pois, lower.tail = FALSE)

pearson_pct_pois <- (1 - p_val_pois) * 100
umbral_pois      <- round(qchisq(0.95, df = df_pois), 3)
resultado_pois   <- ifelse(chi_stat_pois < umbral_pois, "TRUE", "FALSE")

tabla_test_pois <- data.frame(
  Variable               = "Etapa de Vida (Poisson)",
  `Test Pearson (%)`     = round(pearson_pct_pois, 2),
  `Chi Cuadrado`         = round(chi_stat_pois, 3),
  `Umbral de Aceptación` = umbral_pois,
  Resultado              = resultado_pois,
  check.names = FALSE,
  stringsAsFactors = FALSE
)

kable(
  tabla_test_pois,
  caption = "Tabla N°6: Resumen del Test de Bondad (Modelo Poisson) — Variable Etapa de Vida del Arrendamiento.",
  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°6: Resumen del Test de Bondad (Modelo Poisson) — Variable Etapa de Vida del Arrendamiento.
Variable Test Pearson (%) Chi Cuadrado Umbral de Aceptación Resultado
Etapa de Vida (Poisson) 100 6850.367 7.815 FALSE

8. Conclusión

El análisis probabilístico de la variable Etapa de Vida del Arrendamiento en los arrendamientos de hidrocarburos de Kansas permitió modelar la distribución ordinal de los ciclos de producción mediante dos enfoques complementarios.

Se aplicó el Modelo Geométrico G(p = 0.4025) bajo la premisa de que la probabilidad de alcanzar etapas de mayor madurez decrece progresivamente. Los resultados muestran una concentración mayoritaria en las etapas más activas del ciclo, mientras que los arrendamientos en fase de Declive constituyen eventos menos frecuentes, consistente con la estructura esperada de una industria madura como la de Kansas.

Adicionalmente, el Modelo Poisson P(λ = 1.0303) permitió modelar la tasa media de ocurrencia de arrendamientos por etapa como eventos discretos, identificando los segmentos de mayor y menor frecuencia relativa dentro del catálogo histórico del estado.

Las pruebas de bondad de ajuste, con coeficientes de Pearson del 100% (Geométrico) y 100% (Poisson), confirman que ambos modelos representan adecuadamente los datos observados por etapa de vida. Esto valida la descripción estadística del ciclo de vida de los arrendamientos en Kansas, evidenciando que la explotación de hidrocarburos se concentra en arrendamientos de mediana y larga trayectoria productiva, con una reducción progresiva hacia los extremos del ciclo.


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