Para iniciar el procesamiento estadístico inferencial, se verifica la estructura global del conjunto de datos correspondientes a los bloques contractuales y arrendamientos de hidrocarburos en el estado de Kansas. Esto permite asegurar la integridad de los registros de forma eficiente.
datos <- read_csv("C:/Users/luisq/Downloads/oil_and_gas_leases_data.csv",
show_col_types = FALSE)
cat("Base de datos cargada correctamente.\n")
## Base de datos cargada correctamente.
cat("Total de registros evaluados (filas):", nrow(datos), "\n")
## Total de registros evaluados (filas): 47757
A partir de la base de datos consolidada, se realiza el aislamiento de la variable cualitativa ordinal Sección (SECCION), mapeada desde la columna técnica SECTION. Dado que esta variable presenta 36 categorías únicas (valores del 1 al 36), superior al límite de 10 categorías establecido por la cátedra, se aplica una estrategia de agrupación para facilitar el análisis estadístico.
datos <- datos %>%
filter(!is.na(SECTION)) %>%
mutate(SECCION = as.integer(SECTION))
variable_section <- datos %>% select(SECCION)
Se presentan dos versiones de agrupación para esta variable, ambas respetando la estructura de tres columnas estipulada por la cátedra.
Se agrupan las 36 secciones en 6 rangos de igual amplitud (6 secciones cada uno), siguiendo el orden natural del sistema PLSS.
# Agrupación en 6 rangos de igual amplitud
datos_a <- datos %>%
mutate(Grupo_Seccion = case_when(
SECCION >= 1 & SECCION <= 6 ~ "Secciones 1 - 6",
SECCION >= 7 & SECCION <= 12 ~ "Secciones 7 - 12",
SECCION >= 13 & SECCION <= 18 ~ "Secciones 13 - 18",
SECCION >= 19 & SECCION <= 24 ~ "Secciones 19 - 24",
SECCION >= 25 & SECCION <= 30 ~ "Secciones 25 - 30",
SECCION >= 31 & SECCION <= 36 ~ "Secciones 31 - 36"
)) %>%
mutate(Grupo_Seccion = factor(Grupo_Seccion, levels = c(
"Secciones 1 - 6", "Secciones 7 - 12", "Secciones 13 - 18",
"Secciones 19 - 24", "Secciones 25 - 30", "Secciones 31 - 36"
)))
frecuencias_a <- datos_a %>%
group_by(Seccion = Grupo_Seccion, .drop = FALSE) %>%
summarise(Frecuencia_ni = n(), .groups = "drop") %>%
arrange(Seccion)
tabla_a <- frecuencias_a %>%
mutate(Porcentaje_hi = (Frecuencia_ni / sum(Frecuencia_ni)) * 100)
total_a <- data.frame(
Seccion = "TOTAL",
Frecuencia_ni = sum(tabla_a$Frecuencia_ni),
Porcentaje_hi = sum(tabla_a$Porcentaje_hi)
)
resultado_a <- bind_rows(
tabla_a %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi),
Seccion = as.character(Seccion)),
total_a %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi))
)
kable(
resultado_a,
caption = "Tabla N°1A — Distribución de Frecuencias de Sección (Agrupación por Rangos)",
col.names = c("Sección (Rango)", "Frecuencia (ni)", "Porcentaje (hi%)"),
align = c("l", "c", "c")
)
| Sección (Rango) | Frecuencia (ni) | Porcentaje (hi%) |
|---|---|---|
| Secciones 1 - 6 | 8012 | 16.78 |
| Secciones 7 - 12 | 8050 | 16.86 |
| Secciones 13 - 18 | 8159 | 17.08 |
| Secciones 19 - 24 | 7916 | 16.58 |
| Secciones 25 - 30 | 7813 | 16.36 |
| Secciones 31 - 36 | 7807 | 16.35 |
| TOTAL | 47757 | 100.00 |
Se presentan las 10 secciones con mayor frecuencia y el resto se agrupa como “Otras secciones”.
# Top 10 secciones más frecuentes
top10_section <- datos %>%
count(SECCION, sort = TRUE) %>%
slice_head(n = 10) %>%
pull(SECCION)
datos_b <- datos %>%
mutate(Grupo_Seccion = ifelse(SECCION %in% top10_section,
paste0("Sección ", SECCION),
"Otras secciones")) %>%
mutate(Grupo_Seccion = factor(Grupo_Seccion,
levels = c(paste0("Sección ", top10_section),
"Otras secciones")))
frecuencias_b <- datos_b %>%
group_by(Seccion = Grupo_Seccion, .drop = FALSE) %>%
summarise(Frecuencia_ni = n(), .groups = "drop") %>%
arrange(Seccion)
tabla_b <- frecuencias_b %>%
mutate(Porcentaje_hi = (Frecuencia_ni / sum(Frecuencia_ni)) * 100)
total_b <- data.frame(
Seccion = "TOTAL",
Frecuencia_ni = sum(tabla_b$Frecuencia_ni),
Porcentaje_hi = sum(tabla_b$Porcentaje_hi)
)
resultado_b <- bind_rows(
tabla_b %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi),
Seccion = as.character(Seccion)),
total_b %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi))
)
kable(
resultado_b,
caption = "Tabla N°1B — Distribución de Frecuencias de Sección (Top 10 + Otros)",
col.names = c("Sección", "Frecuencia (ni)", "Porcentaje (hi%)"),
align = c("l", "c", "c")
)
| Sección | Frecuencia (ni) | Porcentaje (hi%) |
|---|---|---|
| Sección 3 | 1455 | 3.05 |
| Sección 15 | 1413 | 2.96 |
| Sección 4 | 1409 | 2.95 |
| Sección 27 | 1405 | 2.94 |
| Sección 34 | 1394 | 2.92 |
| Sección 22 | 1382 | 2.89 |
| Sección 8 | 1378 | 2.89 |
| Sección 16 | 1373 | 2.87 |
| Sección 11 | 1361 | 2.85 |
| Sección 17 | 1361 | 2.85 |
| Otras secciones | 33826 | 70.83 |
| TOTAL | 47757 | 100.00 |
Autor: Grupo 6