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.
# Carga de la base de datos de Kansas
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 Nivel de Producción (NIVEL_PROD), mapeada desde la columna técnica PROD_LEVEL. Esta columna clasifica el rendimiento productivo de cada pozo petrolero en categorías ordenadas, sirviendo como indicador operativo fundamental para la caracterización estadística. Se realiza la traducción formal de las categorías al idioma español.
# Traducción de categorías al español
datos <- datos %>%
mutate(
NIVEL_PROD = case_when(
PROD_LEVEL == "LOW" ~ "Bajo",
PROD_LEVEL == "MEDIUM" ~ "Medio",
PROD_LEVEL == "HIGH" ~ "Alto",
TRUE ~ "No registrado"
)
) %>%
filter(NIVEL_PROD != "No registrado")
# Aislamiento de la columna
variable_prod <- datos %>% select(NIVEL_PROD)
Se calcula la distribución de frecuencias absolutas (\(n_i\)) y porcentuales (\(h_i\%\)) para las categorías de la variable cualitativa ordinal, respetando estrictamente la estructura de tres columnas estipulada por la cátedra para este tipo de datos. El procesamiento incluye el manejo de categorías vacías mediante factores y el redondeo final a dos decimales para la expresión porcentual, cerrando el balance con la fila del total general calculado por sumatoria real.
# 1. Frecuencias absolutas en orden de menor a mayor (Bajo → Medio → Alto)
frecuencias_base <- datos %>%
mutate(NIVEL_PROD = factor(NIVEL_PROD, levels = c("Bajo", "Medio", "Alto"))) %>%
group_by(Nivel_Produccion = NIVEL_PROD, .drop = FALSE) %>%
summarise(Frecuencia_ni = n(), .groups = "drop") %>%
arrange(Nivel_Produccion)
# 2. Porcentaje estadístico real
tabla_final <- frecuencias_base %>%
mutate(Porcentaje_hi = (Frecuencia_ni / sum(Frecuencia_ni)) * 100)
# 3. Fila TOTAL
total_fila <- data.frame(
Nivel_Produccion = "TOTAL",
Frecuencia_ni = sum(tabla_final$Frecuencia_ni),
Porcentaje_hi = sum(tabla_final$Porcentaje_hi)
)
# 4. Formateo: porcentaje con 2 decimales
resultado <- bind_rows(
tabla_final %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi)),
total_fila %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi))
)
# 5. Tabla final — 3 columnas
kable(
resultado,
caption = "Tabla N°2 de Distribución de Frecuencias de la Variable Cualitativa Ordinal: Nivel de Producción",
col.names = c("Nivel de Producción", "Frecuencia (ni)", "Porcentaje (hi%)"),
align = c("l", "c", "c")
)
| Nivel de Producción | Frecuencia (ni) | Porcentaje (hi%) |
|---|---|---|
| Bajo | 15919 | 33.33 |
| Medio | 15919 | 33.33 |
| Alto | 15919 | 33.33 |
| TOTAL | 47757 | 100.00 |
Autor: Grupo 6