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
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
| 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.
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")
| 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% |
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
)
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
)
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
)
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")
| 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% |
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)
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")
| 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 |
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")
| Variable | Test Pearson (%) | Chi Cuadrado | Umbral de Aceptación | Resultado |
|---|---|---|---|---|
| Profundidad del Pozo | 100 | 38095.58 | 7.815 | FALSE |
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