1 Configuración y Carga de Datos

Se carga el conjunto de datos de arrendamientos de hidrocarburos del estado de Kansas, EE.UU., registrados por el Kansas Geological Survey.

ruta_archivo <- file.choose()

datos_vale <- read_csv(
  ruta_archivo,
  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): 47757

2 Extracción y Limpieza de la Variable

Se realiza el aislamiento y limpieza de la variable cualitativa nominal dicotómica Produce Petróleo (PRODUCES_OIL), clasificada en dos categorías: Sí y No, según los valores registrados en la columna PRODUCES_OIL.

cat("Valores únicos originales en PRODUCES_OIL:\n")
## Valores únicos originales en PRODUCES_OIL:
print(unique(datos_vale$PRODUCES_OIL))
## [1] 1 0
x_raw <- datos_vale %>%
  mutate(PRODUCES_OIL_clean = trimws(toupper(as.character(PRODUCES_OIL)))) %>%
  filter(PRODUCES_OIL_clean %in% c("YES", "NO", "Y", "N", "TRUE", "FALSE", "1", "0")) %>%
  mutate(
    produce_petroleo = case_when(
      PRODUCES_OIL_clean %in% c("YES", "Y", "TRUE", "1") ~ "Sí",
      PRODUCES_OIL_clean %in% c("NO", "N", "FALSE", "0")  ~ "No"
    )
  ) %>%
  pull(produce_petroleo)

n <- length(x_raw)

if (n == 0) {
  stop("No se encontraron valores reconocibles en PRODUCES_OIL. Revisa los valores únicos impresos arriba y ajusta el filtro.")
}

orden_logico <- c("Sí", "No")
x_raw <- factor(x_raw, levels = orden_logico)

cat("Observaciones válidas:", n, "\n")
## Observaciones válidas: 47757
cat("Valores únicos:", length(unique(x_raw)), "\n")
## Valores únicos: 2

3 Identificación de la Variable

Se presenta la ficha técnica de identificación de la variable, especificando su naturaleza estadística y su fuente de origen.

tabla_id <- data.frame(
  Criterio = c(
    "Nombre", "Nombre técnico", "Tipo", "Subtipo",
    "Dominio", "Rango", "Unidad", "Escala", "Fuente"
  ),
  Clasificacion = c(
    "Produce Petróleo",
    "PRODUCES_OIL",
    "Cualitativa",
    "Nominal dicotómica",
    "{Sí, No}",
    "2 categorías",
    "No aplica",
    "Nominal",
    "Kansas Geological Survey – Kansas, EE.UU."
  )
)

tabla_id %>%
  gt() %>%
  tab_header(
    title = md("**Identificación de la Variable**")
  ) %>%
  cols_label(
    Criterio      = md("**Criterio**"),
    Clasificacion = md("**Clasificación**")
  ) %>%
  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_id), by = 2))
  ) %>%
  tab_source_note(source_note = md("*Autor: Araujo Valeska*")) %>%
  tab_options(
    table.width             = pct(60),
    heading.title.font.size = px(16),
    table.font.size         = px(13),
    data_row.padding        = px(6)
  )
Identificación de la Variable
Criterio Clasificación
Nombre Produce Petróleo
Nombre técnico PRODUCES_OIL
Tipo Cualitativa
Subtipo Nominal dicotómica
Dominio {Sí, No}
Rango 2 categorías
Unidad No aplica
Escala Nominal
Fuente Kansas Geological Survey – Kansas, EE.UU.
Autor: Araujo Valeska

Justificación: La variable toma únicamente dos valores posibles (Sí/No), sin orden natural entre ellos. Corresponde a una variable cualitativa nominal dicotómica. Se construye la tabla de distribución de frecuencias con frecuencia absoluta, porcentual y en fracción.

4 Tabla de Distribución de Frecuencias

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

# 1. Frecuencias absolutas
frecuencias_base <- data.frame(
  Produce_Petroleo = levels(x_raw),
  Frecuencia_ni    = as.integer(table(x_raw))
) %>%
  arrange(match(Produce_Petroleo, orden_logico))

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

# 3. Fila TOTAL
total_fila <- data.frame(
  Produce_Petroleo = "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 GT
resultado %>%
  rename(
    "Produce Petróleo" = Produce_Petroleo,
    "Frecuencia (ni)"  = Frecuencia_ni,
    "Porcentaje (hi%)" = Porcentaje_hi
  ) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°1: Distribución de Frecuencias**"),
    subtitle = md("*Variable Cualitativa Nominal: Produce Petróleo*")
  ) %>%
  cols_label(
    "Produce Petróleo" = md("**Produce Petróleo**"),
    "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    = `Produce Petróleo` == "TOTAL",
      columns = everything()
    )
  ) %>%
  tab_source_note(source_note = md("*Autor: Araujo Valeska*")) %>%
  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 Nominal: Produce Petróleo
Produce Petróleo Frecuencia (ni) Porcentaje (hi%)
32640 68.35
No 15117 31.65
TOTAL 47757 100.00
Autor: Araujo Valeska

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 nominal dicotómica Produce Petróleo.

5.1 Gráfica N°1 — Barras de frecuencia absoluta

par(mar = c(8, 6, 5, 2))
bp1 <- barplot(tabla_final$Frecuencia_ni,
        main      = "",
        xlab      = "",
        ylab      = "",
        col       = c("gray30", "gray72"),
        ylim      = c(0, max(tabla_final$Frecuencia_ni) * 1.15),
        names.arg = as.character(tabla_final$Produce_Petroleo),
        cex.names = 0.9,
        las       = 2)

mtext("Frecuencia (ni)",   side = 2, line = 4.5, cex = 1, font = 1)
mtext("Produce Petróleo",  side = 1, line = 6,   cex = 1)
mtext("Gráfica N°1: Distribución de Frecuencias Absolutas de la Variable Produce Petróleo",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

text(x      = bp1,
     y      = tabla_final$Frecuencia_ni,
     labels = format(tabla_final$Frecuencia_ni, big.mark = ","),
     pos    = 3, cex = 0.9, col = "black")

5.2 Gráfica N°2 — Barras de porcentaje

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

mtext("Produce Petróleo", side = 1, line = 6, cex = 1)
mtext("Gráfica N°2: Distribución Porcentual de la Variable Produce Petróleo",
      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áfica N°3 — Gráfico circular porcentual

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

colores_grises <- c("gray30", "gray72")

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 de la Variable Produce Petróleo",
      side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

legend(x      = 1.2,
       y      = 1,
       legend = as.character(tabla_final$Produce_Petroleo),
       fill   = colores_grises,
       cex    = 0.85,
       title  = "Produce Petróleo",
       bty    = "n")

6 Tabla de Indicadores

Para la variable cualitativa nominal dicotómica Produce Petróleo, el único indicador de tendencia central aplicable es la moda. La mediana, media, varianza y demás medidas de dispersión no aplican para este tipo de variable.

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

# Tabla de indicadores en formato largo
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(
    "Produce Petróleo",
    "Cualitativa Nominal Dicotómica",
    "Sí — No",
    moda_petroleo,
    "—",
    "—",
    "—",
    "—",
    "—",
    "—",
    "—"
  )
)

# Tabla GT de indicadores
tabla_indicadores %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°2: Indicadores Estadísticos**"),
    subtitle = md("*Variable Cualitativa Nominal: Produce Petróleo*")
  ) %>%
  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: Araujo Valeska*")) %>%
  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 Nominal: Produce Petróleo
Indicador Valor
Variable Produce Petróleo
Tipo de variable Cualitativa Nominal Dicotómica
Categorías (Rango) Sí — No
Moda (Mo)
Mediana (Me)
Media (X̄)
Varianza (V)
Desv. Estándar (Sd)
Coef. Variación (CV%)
Asimetría (As)
Curtosis (K)
Autor: Araujo Valeska

7 Conclusión

La variable Produce Petróleo es una variable cualitativa nominal dicotómica cuyas categorías son Sí y No. Su valor más frecuente (moda) es , con una participación del 68.35% en la muestra, lo que evidencia que la mayoría de los arrendamientos de hidrocarburos en Kansas corresponden a explotaciones con producción activa de petróleo.


Autor: Araujo Valeska