09/06/2026Se 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
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
| 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.
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")
| 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% |
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
)
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
)
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
)
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")
| 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% |
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)
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")
| 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 |
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)
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")
| 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 |
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")
| Variable | Test Pearson (%) | Chi Cuadrado | Umbral de Aceptación | Resultado |
|---|---|---|---|---|
| Etapa de Vida (Geométrico) | 100 | 1564.376 | 7.815 | FALSE |
# 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")
| Variable | Test Pearson (%) | Chi Cuadrado | Umbral de Aceptación | Resultado |
|---|---|---|---|---|
| Etapa de Vida (Poisson) | 100 | 6850.367 | 7.815 | FALSE |
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