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("dataset cargada correctamente.\n")
## dataset 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 Ordenamiento Lógico

Se establece el orden lógico de la variable cualitativa ordinal Nivel de Profundidad, respetando la progresión natural de las capas del subsuelo: desde la más cercana a la superficie hasta la más profunda. Este ordenamiento es fundamental para garantizar una correcta interpretación estadística y visual de los resultados.

# Definir el orden lógico de las categorías (Superficial → Medio → Profundo)
orden_logico <- c("Superficial", "Medio", "Profundo")

# Aplicar factor ordenado a la variable PROFUNDIDAD
datos <- datos %>%
  mutate(
    PROFUNDIDAD = factor(PROFUNDIDAD, levels = orden_logico, ordered = TRUE)
  )

# Verificar que el orden fue aplicado correctamente
cat("Orden de categorías establecido:\n")
## Orden de categorías establecido:
cat(paste(levels(datos$PROFUNDIDAD), collapse = " → "), "\n")
## Superficial → Medio → Profundo
cat("\nDistribución por nivel:\n")
## 
## Distribución por nivel:
print(table(datos$PROFUNDIDAD))
## 
## Superficial       Medio    Profundo 
##       15986       15852       15919

4 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 %>%
  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 — se convierte a character para evitar conflicto de tipos
resultado <- bind_rows(
  tabla_final %>% mutate(Nivel_Profundidad = as.character(Nivel_Profundidad),
                         Porcentaje_hi     = sprintf("%.2f", Porcentaje_hi)),
  total_fila  %>% mutate(Porcentaje_hi     = sprintf("%.2f", Porcentaje_hi))
)

# 5. Tabla final con gt (mismo estilo que tabla de indicadores)
resultado %>%
  rename(
    "Nivel de Profundidad" = Nivel_Profundidad,
    "Frecuencia (ni)"      = Frecuencia_ni,
    "Porcentaje (hi%)"     = Porcentaje_hi
  ) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°1: Distribución de Frecuencias**"),
    subtitle = md("*Variable Cualitativa Ordinal: Nivel de Profundidad*")
  ) %>%
  cols_label(
    "Nivel de Profundidad" = md("**Nivel de Profundidad**"),
    "Frecuencia (ni)"      = md("**Frecuencia (ni)**"),
    "Porcentaje (hi%)"     = md("**Porcentaje (hi%)**")
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#2C2C2C"),
      cell_text(color = "white", weight = "bold")
    ),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = cell_fill(color = "#F5F5F5"),
    locations = cells_body(rows = seq(1, nrow(resultado), by = 2))
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#D6D6D6"),
      cell_text(weight = "bold")
    ),
    locations = cells_body(
      rows    = `Nivel de Profundidad` == "TOTAL",
      columns = everything()
    )
  ) %>%
  tab_source_note(source_note = md("*Autor: Fernando Almeida*")) %>%
  tab_options(
    table.width                = pct(60),
    heading.title.font.size    = px(16),
    heading.subtitle.font.size = px(12),
    table.font.size            = px(13),
    data_row.padding           = px(6)
  )
Tabla N°1: Distribución de Frecuencias
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
Autor: Fernando Almeida

5 Representación Gráfica

Se presentan tres gráficas en escala de grises que permiten analizar visualmente la distribución de la variable cualitativa ordinal Nivel de Profundidad de los Pozos.

5.1 Diagrama de Barras frecuencia absoluta

par(mar = c(8, 6, 5, 2))
barplot(tabla_final$Frecuencia_ni,
        main      = "",
        xlab      = "",
        ylab      = "",
        col       = c("gray30", "gray60", "gray85"),
        ylim      = c(0, max(tabla_final$Frecuencia_ni) * 1.15),
        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)

5.2 Diagrama de Barras de porcentaje

par(mar = c(8, 6, 5, 2))
bp2 <- barplot(tabla_final$Porcentaje_hi,
               main      = "",
               xlab      = "",
               ylab      = "Porcentaje %",
               col       = c("gray30", "gray60", "gray85"),
               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°2: Distribución Porcentual por Nivel de Profundidad de los Pozos",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

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

5.3 Gráfico circular porcentual

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

colores_grises <- c("gray30", "gray60", "gray85")

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

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)

legend(x      = 1.2,
       y      = 1,
       legend = as.character(tabla_final$Nivel_Profundidad),
       fill   = colores_grises,
       cex    = 0.85,
       title  = "Nivel de Profundidad",
       bty    = "n")

6 Indicadores Estadísticos

Para la variable cualitativa ordinal Nivel de Profundidad, los indicadores de tendencia central aplicables son la moda y la mediana ordinal. La mediana se determina como la categoría que acumula el 50% de las observaciones, aprovechando el orden lógico de los niveles. La media, varianza y demás medidas de dispersión no aplican para este tipo de variable.

# Moda: categoría con mayor frecuencia
moda_profundidad <- as.character(
  tabla_final$Nivel_Profundidad[which.max(tabla_final$Frecuencia_ni)]
)

# Mediana ordinal: categoría donde la frecuencia acumulada supera el 50%
mediana_profundidad <- as.character(
  tabla_final$Nivel_Profundidad[which(cumsum(tabla_final$Frecuencia_ni) >= sum(tabla_final$Frecuencia_ni) / 2)[1]]
)

# Tabla de indicadores en formato largo (Variable | Valor)
tabla_indicadores <- data.frame(
  Indicador = c(
    "Variable",
    "Tipo de variable",
    "Categorías (Rango)",
    "Moda (Mo)",
    "Mediana (Me)",
    "Media (X̄)",
    "Varianza (V)",
    "Desv. Estándar (Sd)",
    "Coef. Variación (CV%)",
    "Asimetría (As)",
    "Curtosis (K)"
  ),
  Valor = c(
    "Nivel de Profundidad",
    "Cualitativa Ordinal",
    "Superficial → Medio → Profundo",
    moda_profundidad,
    mediana_profundidad,
    "—",
    "—",
    "—",
    "—",
    "—",
    "—"
  )
)

# Tabla GT de indicadores
tabla_indicadores %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°2: Indicadores Estadísticos**"),
    subtitle = md("*Variable Cualitativa Ordinal: Nivel de Profundidad de los Pozos*")
  ) %>%
  cols_label(
    Indicador = md("**Indicador**"),
    Valor     = md("**Valor**")
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#2C2C2C"),
      cell_text(color = "white", weight = "bold")
    ),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = cell_fill(color = "#F5F5F5"),
    locations = cells_body(rows = seq(1, nrow(tabla_indicadores), by = 2))
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#D6D6D6"),
      cell_text(weight = "bold")
    ),
    locations = cells_body(
      rows    = Indicador == "Moda (Mo)",
      columns = everything()
    )
  ) %>%
  tab_style(
    style = cell_text(style = "italic", color = "gray40"),
    locations = cells_body(
      rows    = Valor == "—",
      columns = Valor
    )
  ) %>%
  tab_source_note(source_note = md("*Autor: Fernando Almeida*")) %>%
  tab_options(
    table.width              = pct(60),
    heading.title.font.size  = px(16),
    heading.subtitle.font.size = px(12),
    table.font.size          = px(13),
    data_row.padding         = px(6)
  )
Tabla N°2: Indicadores Estadísticos
Variable Cualitativa Ordinal: Nivel de Profundidad de los Pozos
Indicador Valor
Variable Nivel de Profundidad
Tipo de variable Cualitativa Ordinal
Categorías (Rango) Superficial → Medio → Profundo
Moda (Mo) Superficial
Mediana (Me) Medio
Media (X̄)
Varianza (V)
Desv. Estándar (Sd)
Coef. Variación (CV%)
Asimetría (As)
Curtosis (K)
Autor: Fernando Almeida

7 Conclusiones

La variable Nivel de profundidad fluctúa entre (Superficial — Medio — Profundo) sus valores giran entorno a medio y presenta que su valor más frecuente es Superficial, con una participación destacada en la muestra.


Autor: Fernando Almeida