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("Dataset cargado correctamente.\n")
## Dataset cargado correctamente.
cat("Total de registros evaluados (filas):", nrow(datos_vale), "\n")
## Total de registros evaluados (filas): 47757
La variable RANGE_DIRECTION (Dirección Range) indica la orientación este u oeste del range respecto al meridiano principal del sistema de referencia PLSS (Public Land Survey System). Se eliminan los registros sin valor (NA o vacíos).
x_raw <- datos_vale %>%
filter(!is.na(RANGE_DIRECTION), RANGE_DIRECTION != "") %>%
pull(RANGE_DIRECTION)
n <- length(x_raw)
cat("Observaciones válidas:", n, "\n")
## Observaciones válidas: 47757
cat("Categorías distintas:", length(unique(x_raw)), "\n")
## Categorías distintas: 2
| Criterio | Clasificación |
|---|---|
| Nombre | Dirección Range |
| Nombre técnico | RANGE_DIRECTION |
| Tipo | Cualitativa |
| Subtipo | Nominal dicotómica |
| Dominio | D = { x | x ∈ {E, W} } |
| Rango | R = { x | x ∈ {E, W} } |
| Unidad | No aplica |
| Escala | Nominal |
| Fuente | Kansas Geological Survey – Kansas, EE.UU. |
Justificación: La variable indica una orientación (Este/Oeste) sin orden natural entre sus categorías, por lo que corresponde a una variable cualitativa nominal dicotómica. A diferencia de Dirección Township, en este dataset ambas categorías del dominio (“E” y “W”) están efectivamente presentes, por lo que sí existe variabilidad para analizar.
Se presenta la distribución de frecuencias completa de la variable Dirección Range, con las 2 categorías registradas (n total = 47,757).
freq_completa <- sort(table(x_raw), decreasing = TRUE)
categorias_todas <- names(freq_completa)
ni_todas <- as.integer(freq_completa)
hi_pct_todas <- ni_todas / n * 100
tabla_completa <- data.frame(
Categoria = categorias_todas,
ni = ni_todas,
hi_pct = hi_pct_todas,
stringsAsFactors = FALSE
)
tabla_total <- data.frame(
Categoria = "TOTAL",
ni = n,
hi_pct = sum(hi_pct_todas),
stringsAsFactors = FALSE
)
tabla_gt <- bind_rows(tabla_completa, tabla_total)
tabla_gt %>%
gt() %>%
tab_header(
title = md("**Tabla N°1: Distribución de Frecuencias**"),
subtitle = md("*Variable Cualitativa Nominal: Dirección Range*")
) %>%
cols_label(
Categoria = md("**Dirección Range**"),
ni = md("**Frecuencia (ni)**"),
hi_pct = md("**Porcentaje (hi%)**")
) %>%
fmt_integer(columns = ni) %>%
fmt_number(columns = hi_pct, decimals = 2) %>%
cols_align(align = "center", columns = c(ni, hi_pct)) %>%
cols_align(align = "left", columns = Categoria) %>%
tab_style(
style = list(
cell_fill(color = "#000000"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_labels()
) %>%
tab_style(
style = cell_text(color = "#1F618D", weight = "bold"),
locations = cells_body(
columns = Categoria,
rows = Categoria != "TOTAL"
)
) %>%
tab_style(
style = list(
cell_fill(color = "#D9D9D9"),
cell_text(weight = "bold")
),
locations = cells_body(rows = Categoria == "TOTAL")
) %>%
tab_style(
style = cell_borders(sides = "top", color = "black", weight = px(2)),
locations = cells_body(rows = Categoria == "TOTAL")
) %>%
tab_source_note(source_note = md("*Autor: Araujo Valeska*")) %>%
tab_options(
table.width = pct(70),
table.border.top.color = "black",
table.border.bottom.color = "black",
column_labels.border.bottom.color = "black",
heading.title.font.size = px(16),
heading.subtitle.font.size = px(12),
table.font.size = px(13),
data_row.padding = px(8)
)
| Tabla N°1: Distribución de Frecuencias | ||
| Variable Cualitativa Nominal: Dirección Range | ||
| Dirección Range | Frecuencia (ni) | Porcentaje (hi%) |
|---|---|---|
| W | 35,562 | 74.46 |
| E | 12,195 | 25.54 |
| TOTAL | 47,757 | 100.00 |
| Autor: Araujo Valeska | ||
La variable Dirección Range presenta únicamente 2 categorías, por lo que —a diferencia de variables con alta cardinalidad como Nombre del Campo— se grafica el 100% de las categorías, sin necesidad de limitar a un top 10.
categorias <- names(freq_completa)
ni <- as.integer(freq_completa)
hi_pct <- ni / n * 100
top_ord <- setNames(ni, categorias)
colores_g <- gray(seq(0.30, 0.70, length.out = length(top_ord)))
par(mar = c(6, 6, 7, 2))
bp <- barplot(
as.numeric(top_ord),
names.arg = names(top_ord),
col = colores_g,
border = "black",
ylim = c(0, max(as.numeric(top_ord)) * 1.18),
xlab = "", ylab = "", main = "", las = 1, cex.names = 1
)
text(bp, as.numeric(top_ord) + max(as.numeric(top_ord)) * 0.02,
labels = format(as.numeric(top_ord), big.mark = ","), cex = 0.9)
mtext("Frecuencia Absoluta (nᵢ)", side = 2, line = 4.5, cex = 1)
mtext("Dirección Range", side = 1, line = 3, cex = 1)
mtext(
"Gráfica N°1: Diagrama de Barras — Frecuencia Absoluta\nDirección Range, Kansas, EE.UU.",
side = 3, line = 3.5, cex = 0.9, font = 2
)
pct_ord <- setNames(hi_pct, categorias)
par(mar = c(6, 6, 7, 2))
bp2 <- barplot(
as.numeric(pct_ord),
names.arg = names(pct_ord),
col = colores_g,
border = "black",
ylim = c(0, max(as.numeric(pct_ord)) * 1.18),
xlab = "", ylab = "", main = "", las = 1, cex.names = 1
)
text(bp2, as.numeric(pct_ord) + max(as.numeric(pct_ord)) * 0.02,
labels = paste0(round(as.numeric(pct_ord), 2), "%"), cex = 0.9)
mtext("Porcentaje (hᵢ %)", side = 2, line = 4.5, cex = 1)
mtext("Dirección Range", side = 1, line = 3, cex = 1)
mtext(
"Gráfica N°2: Diagrama de Barras — Porcentaje\nDirección Range, Kansas, EE.UU.",
side = 3, line = 3.5, cex = 0.9, font = 2
)
pct_circ <- setNames(hi_pct, categorias)
grises_c <- gray(seq(0.30, 0.70, length.out = length(pct_circ)))
par(mar = c(2, 2, 6, 10), xpd = TRUE)
pie(
as.numeric(pct_circ),
labels = paste0(round(as.numeric(pct_circ), 2), "%"),
col = grises_c,
border = "black",
main = "",
radius = 1,
cex = 0.9
)
legend(
x = 1.1,
y = 1,
legend = paste0(categorias, " (", format(ni, big.mark = ","), ")"),
fill = grises_c,
cex = 0.8,
title = "Dirección (nᵢ)",
bty = "n"
)
mtext(
"Gráfica N°3: Diagrama Circular — Distribución Porcentual\nDirección Range, Kansas, EE.UU.",
side = 3, line = 3.5, cex = 0.9, font = 2
)
moda_val <- names(sort(table(x_raw), decreasing = TRUE))[1]
moda_n <- max(table(x_raw))
n_categorias <- length(unique(x_raw))
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(
"Dirección Range",
"Cualitativa Nominal Dicotómica",
paste0(format(n_categorias, big.mark = ","), " categorías: ",
paste(sort(unique(x_raw)), collapse = ", ")),
moda_val,
"—",
"—",
"—",
"—",
"—",
"—",
"—"
),
stringsAsFactors = FALSE
)
tabla_indicadores %>%
gt() %>%
tab_header(
title = md("**Tabla N°2: Indicadores Estadísticos**"),
subtitle = md("*Variable Cualitativa Nominal: Dirección Range*")
) %>%
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: Dirección Range | |
| Indicador | Valor |
|---|---|
| Variable | Dirección Range |
| Tipo de variable | Cualitativa Nominal Dicotómica |
| Categorías (Rango) | 2 categorías: E, W |
| Moda (Mo) | W |
| Mediana (Me) | — |
| Media (X̄) | — |
| Varianza (V) | — |
| Desv. Estándar (Sd) | — |
| Coef. Variación (CV%) | — |
| Asimetría (As) | — |
| Curtosis (K) | — |
| Autor: Araujo Valeska | |
La variable Dirección Range es una variable cualitativa nominal dicotómica cuyas dos categorías, “E” y “W”, están efectivamente presentes en el 47,757-registro conjunto de datos analizado. Su valor más frecuente (moda) es “W”, con una participación del 74.46%, frente a 25.54% de la categoría “E”. A diferencia de Dirección Township, esta variable sí presenta variabilidad y podría aportar poder discriminante en análisis geográficos o de segmentación por orientación de los pozos.
Autor: Araujo Valeska | Análisis Estadístico — Kansas Hydrocarbon Leases Dataset