1 Configuración y Carga de Datos

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.

# Selección manual del archivo
datos <- read_csv(file.choose(), 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

2 Extraer Variable

Se realiza el aislamiento de la variable cualitativa ordinal Nivel de Profundidad (PROFUNDIDAD), clasificada en tres niveles: Superficial, Medio y Profundo, según los valores registrados en la columna DEPTH_LEVEL.

Clasificación en tres categorías ordinales:

datos <- datos %>%
  mutate(
    PROFUNDIDAD = case_when(
      DEPTH_LEVEL == "SHALLOW" ~ "Superficial",
      DEPTH_LEVEL == "MEDIUM"  ~ "Medio",
      DEPTH_LEVEL == "DEEP"    ~ "Profundo",
      TRUE                     ~ "No registrado"
    )
  ) %>%
  filter(PROFUNDIDAD != "No registrado")

3 Tabla de Distribución de Frecuencias

Se calcula la distribución de frecuencias absolutas (\(n_i\)) y porcentuales (\(h_i\%\)) para las tres categorías de la variable cualitativa ordinal, respetando la estructura de tres columnas estipulada por la cátedra.

# 1. Frecuencias absolutas
frecuencias_base <- datos %>%
  mutate(PROFUNDIDAD = factor(PROFUNDIDAD, levels = c("Superficial", "Medio", "Profundo"))) %>%
  group_by(Nivel_Profundidad = PROFUNDIDAD, .drop = FALSE) %>%
  summarise(Frecuencia_ni = n(), .groups = "drop") %>%
  arrange(Nivel_Profundidad)

# 2. Porcentaje
tabla_final <- frecuencias_base %>%
  mutate(Porcentaje_hi = (Frecuencia_ni / sum(Frecuencia_ni)) * 100)

# 3. Fila TOTAL
total_fila <- data.frame(
  Nivel_Profundidad = "TOTAL",
  Frecuencia_ni     = sum(tabla_final$Frecuencia_ni),
  Porcentaje_hi     = sum(tabla_final$Porcentaje_hi)
)

# 4. Formateo
resultado <- bind_rows(
  tabla_final %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi)),
  total_fila  %>% mutate(Porcentaje_hi = sprintf("%.2f", Porcentaje_hi))
)

# 5. Tabla final
kable(
  resultado,
  caption   = "Tabla N°1 de Distribución de Frecuencias de la Variable Cualitativa Ordinal: Nivel de Profundidad",
  col.names = c("Nivel de Profundidad", "Frecuencia (ni)", "Porcentaje (hi%)"),
  align     = c("l", "c", "c")
)
Tabla N°1 de Distribución de Frecuencias de la Variable Cualitativa Ordinal: Nivel de Profundidad
Nivel de Profundidad Frecuencia (ni) Porcentaje (hi%)
Superficial 15986 33.47
Medio 15852 33.19
Profundo 15919 33.33
TOTAL 47757 100.00

4 Representación Gráfica

Se presentan cinco gráficas que permiten analizar visualmente la distribución de frecuencias absolutas y porcentuales de la variable cualitativa ordinal Nivel de Profundidad de los Pozos.

4.1 Gráfica N°1 — Frecuencia absoluta (escala automática)

par(mar = c(8, 6, 5, 2))
barplot(tabla_final$Frecuencia_ni,
        main      = "",
        xlab      = "",
        ylab      = "",
        col       = "#AFA9EC",
        ylim      = c(0, max(tabla_final$Frecuencia_ni) * 1.1),
        names.arg = as.character(tabla_final$Nivel_Profundidad),
        cex.names = 0.9,
        las       = 2)

mtext("Frecuencia (ni)", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Nivel de Profundidad", side = 1, line = 6, cex = 1)
mtext("Gráfica N°1: Distribución de Frecuencias Absolutas por Nivel de Profundidad de los Pozos",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

4.2 Gráfica N°2 — Frecuencia absoluta (escala fija)

par(mar = c(8, 6, 5, 2))
barplot(tabla_final$Frecuencia_ni,
        main      = "",
        xlab      = "",
        ylab      = "",
        col       = "#AFA9EC",
        ylim      = c(0, 20000),
        names.arg = as.character(tabla_final$Nivel_Profundidad),
        cex.names = 0.9,
        las       = 2)

mtext("Frecuencia (ni)", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Nivel de Profundidad", side = 1, line = 6, cex = 1)
mtext("Gráfica N°2: Distribución de Frecuencias Absolutas por Nivel de Profundidad de los Pozos",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

4.3 Gráfica N°3 — Porcentaje (escala automática con etiquetas)

par(mar = c(8, 6, 5, 2))
bp3 <- barplot(tabla_final$Porcentaje_hi,
               main      = "",
               xlab      = "",
               ylab      = "Porcentaje %",
               col       = "#AFA9EC",
               ylim      = c(0, max(tabla_final$Porcentaje_hi) * 1.2),
               names.arg = as.character(tabla_final$Nivel_Profundidad),
               cex.names = 0.9,
               las       = 2)

mtext("Nivel de Profundidad", side = 1, line = 6, cex = 1)
mtext("Gráfica N°3: Distribución Porcentual por Nivel de Profundidad de los Pozos",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

text(x      = bp3,
     y      = tabla_final$Porcentaje_hi,
     labels = paste0(round(tabla_final$Porcentaje_hi, 2), "%"),
     pos    = 3, cex = 0.9, col = "black")

4.4 Gráfica N°4 — Porcentaje (escala fija 0–100% con etiquetas)

par(mar = c(8, 6, 5, 2))
bp4 <- barplot(tabla_final$Porcentaje_hi,
               main      = "",
               xlab      = "",
               ylab      = "Porcentaje %",
               col       = "#AFA9EC",
               ylim      = c(0, 100),
               names.arg = as.character(tabla_final$Nivel_Profundidad),
               cex.names = 0.9,
               las       = 2)

mtext("Nivel de Profundidad", side = 1, line = 6, cex = 1)
mtext("Gráfica N°4: Distribución Porcentual por Nivel de Profundidad de los Pozos",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

text(x      = bp4,
     y      = tabla_final$Porcentaje_hi,
     labels = paste0(round(tabla_final$Porcentaje_hi, 2), "%"),
     pos    = 3, cex = 0.9, col = "black")

4.5 Gráfica N°5 — Gráfico de pastel porcentual

par(mar = c(5, 6, 4, 10), xpd = TRUE)

tonos_base     <- c("#4A148C", "#7B1FA2", "#AB47BC", "#CE93D8", "#F3E5F5")
paleta_violeta <- colorRampPalette(tonos_base)
colores_finales <- paleta_violeta(nrow(tabla_final))

pie(tabla_final$Porcentaje_hi,
    main   = "",
    radius = 1,
    labels = paste0(round(tabla_final$Porcentaje_hi, 2), "%"),
    col    = colores_finales,
    cex    = 0.8)

mtext("Gráfica N°5: Distribución Porcentual por Nivel de Profundidad de los Pozos",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

legend(x      = 1.25,
       y      = 1,
       legend = as.character(tabla_final$Nivel_Profundidad),
       fill   = colores_finales,
       cex    = 0.8,
       title  = "Nivel de Profundidad",
       bty    = "n")


Autor: Grupo 6