Para iniciar el procesamiento estadístico, se verifica la estructura global del conjunto de datos correspondientes a los bloques contractuales y arrendamientos de hidrocarburos en el estado de Kansas.
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 (filas):", nrow(datos), "\n")
## Total de registros (filas): 47757
Se realiza el aislamiento de la variable cuantitativa discreta TOWNSHIP, que representa la división norte-sur del sistema de agrimensura rectangular de Kansas. Sus valores son números enteros contables en el rango 1–35. Se filtran únicamente los valores válidos dentro de ese rango.
x_raw <- datos %>%
mutate(TWP = suppressWarnings(as.integer(TOWNSHIP))) %>%
filter(!is.na(TWP), TWP >= 1, TWP <= 35) %>%
pull(TWP)
n_unique <- length(unique(x_raw))
cat("Observaciones válidas:", length(x_raw), "\n")
## Observaciones válidas: 47757
cat("Valores únicos:", n_unique, "\n")
## Valores únicos: 35
cat("Como hay", n_unique, "> 10 valores únicos, se agrupa en intervalos de clase (máx. 10).\n")
## Como hay 35 > 10 valores únicos, se agrupa en intervalos de clase (máx. 10).
Se aplica el criterio de máximo 10 intervalos para variables discretas agrupadas. Los intervalos se construyen con notación \([L_i, L_s)\) —cerrado a la izquierda, abierto a la derecha—, excepto el último que se cierra en ambos extremos.
\[k = 10 \quad \text{(máximo permitido)} \qquad c = \left\lceil \frac{\max - \min}{k} \right\rceil\]
x <- x_raw
n <- length(x)
x_min <- min(x)
x_max <- max(x)
rango_val <- x_max - x_min
k <- 10
c_amp <- ceiling(rango_val / k)
cat("n =", n, "| k =", k, "| Rango =", rango_val, "| Amplitud c =", c_amp, "\n")
## n = 47757 | k = 10 | Rango = 34 | Amplitud c = 4
lim_inf <- x_min + (0:(k - 1)) * c_amp
lim_sup <- lim_inf + c_amp
lim_sup[k] <- x_max + 1
mc <- floor((lim_inf + lim_sup) / 2)
breaks_vec <- c(lim_inf, lim_sup[k])
Se calcula la distribución de frecuencias absolutas y relativas para la variable cuantitativa discreta agrupada Township, correspondiente a los arrendamientos de hidrocarburos registrados en Kansas, EE.UU.
intervalos_cut <- cut(x, breaks = breaks_vec, right = FALSE, include.lowest = TRUE)
freq_abs <- as.integer(table(intervalos_cut))
li <- lim_inf
ls <- lim_sup
hi_dec <- freq_abs / n
Ni_asc <- cumsum(freq_abs)
Hi_asc <- cumsum(hi_dec)
Ni_desc <- n - c(0, head(Ni_asc, -1))
Hi_desc <- 1 - c(0, head(Hi_asc, -1))
etiq_intervalo <- paste0("[", li, " – ", ls, ")")
etiq_intervalo[k] <- paste0("[", li[k], " – ", ls[k] - 1, "]")
tabla_df <- data.frame(
Intervalo = etiq_intervalo,
MC = as.integer(mc),
ni = freq_abs,
hi_pct = round(hi_dec * 100, 2),
hi_real = round(hi_dec, 4),
Ni_a = Ni_asc,
Hi_a = round(Hi_asc, 4),
Ni_d = Ni_desc,
Hi_d = round(Hi_desc, 4),
stringsAsFactors = FALSE
)
total_row <- data.frame(
Intervalo = "TOTAL",
MC = NA_integer_,
ni = sum(freq_abs),
hi_pct = round(sum(hi_dec) * 100, 2),
hi_real = round(sum(hi_dec), 4),
Ni_a = max(Ni_asc),
Hi_a = round(max(Hi_asc), 4),
Ni_d = max(Ni_desc),
Hi_d = round(max(Hi_desc), 4),
stringsAsFactors = FALSE
)
tabla_final_freq <- bind_rows(tabla_df, total_row)
tabla_final_freq %>%
gt() %>%
tab_header(
title = md("**Tabla N°1: Distribución de Frecuencias**"),
subtitle = md(paste0(
"*Variable Cuantitativa Discreta Agrupada: Township, ",
"arrendamientos de hidrocarburos, Kansas, EE.UU. (n = ",
format(n, big.mark = ","), " registros válidos)*"
))
) %>%
cols_label(
Intervalo = md("**Intervalo [Li – Ls)**"),
MC = md("**Marca de Clase**"),
ni = md("**ni (FA)**"),
hi_pct = md("**hi %**"),
hi_real = md("**hi (decimal)**"),
Ni_a = md("**Ni ↑ (FAAa)**"),
Hi_a = md("**Hi ↑ (FRAa)**"),
Ni_d = md("**Ni ↓ (FAAd)**"),
Hi_d = md("**Hi ↓ (FRAd)**")
) %>%
tab_spanner(label = md("**Frecuencia Relativa**"), columns = c(hi_pct, hi_real)) %>%
tab_spanner(label = md("**Acumulada ↑**"), columns = c(Ni_a, Hi_a)) %>%
tab_spanner(label = md("**Acumulada ↓**"), columns = c(Ni_d, Hi_d)) %>%
tab_style(
style = list(
cell_fill(color = "#2C2C2C"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_labels()
) %>%
tab_style(
style = list(
cell_fill(color = "#2C2C2C"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_spanners()
) %>%
tab_style(
style = cell_fill(color = "#F5F5F5"),
locations = cells_body(rows = seq(1, nrow(tabla_final_freq), by = 2))
) %>%
tab_style(
style = list(
cell_fill(color = "#D6D6D6"),
cell_text(weight = "bold")
),
locations = cells_body(
rows = Intervalo == "TOTAL",
columns = everything()
)
) %>%
fmt_missing(columns = everything(), missing_text = "—") %>%
tab_source_note(source_note = md("*Autor: Leslye Quinchiguango*")) %>%
tab_options(
table.width = pct(100),
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 Cuantitativa Discreta Agrupada: Township, arrendamientos de hidrocarburos, Kansas, EE.UU. (n = 47,757 registros válidos) | ||||||||
| Intervalo [Li – Ls) | Marca de Clase | ni (FA) |
Frecuencia Relativa
|
Acumulada ↑
|
Acumulada ↓
|
|||
|---|---|---|---|---|---|---|---|---|
| hi % | hi (decimal) | Ni ↑ (FAAa) | Hi ↑ (FRAa) | Ni ↓ (FAAd) | Hi ↓ (FRAd) | |||
| [1 – 5) | 3 | 1299 | 2.72 | 0.0272 | 1299 | 0.0272 | 47757 | 1.0000 |
| [5 – 9) | 7 | 1700 | 3.56 | 0.0356 | 2999 | 0.0628 | 46458 | 0.9728 |
| [9 – 13) | 11 | 3292 | 6.89 | 0.0689 | 6291 | 0.1317 | 44758 | 0.9372 |
| [13 – 17) | 15 | 5190 | 10.87 | 0.1087 | 11481 | 0.2404 | 41466 | 0.8683 |
| [17 – 21) | 19 | 6084 | 12.74 | 0.1274 | 17565 | 0.3678 | 36276 | 0.7596 |
| [21 – 25) | 23 | 5826 | 12.20 | 0.1220 | 23391 | 0.4898 | 30192 | 0.6322 |
| [25 – 29) | 27 | 6449 | 13.50 | 0.1350 | 29840 | 0.6248 | 24366 | 0.5102 |
| [29 – 33) | 31 | 10227 | 21.41 | 0.2141 | 40067 | 0.8390 | 17917 | 0.3752 |
| [33 – 37) | 35 | 7690 | 16.10 | 0.1610 | 47757 | 1.0000 | 7690 | 0.1610 |
| [37 – 35] | 36 | 0 | 0.00 | 0.0000 | 47757 | 1.0000 | 0 | 0.0000 |
| TOTAL | — | 47757 | 100.00 | 1.0000 | 47757 | 1.0000 | 47757 | 1.0000 |
| Autor: Leslye Quinchiguango | ||||||||
Se presentan cuatro gráficas en escala de grises que permiten analizar visualmente la distribución de la variable cuantitativa discreta agrupada Township.
grises <- gray(seq(0.25, 0.80, length.out = k))
h_obj <- hist(x, breaks = breaks_vec, plot = FALSE)
par(mar = c(5, 6, 6, 2))
plot(h_obj,
col = grises,
border = "black",
freq = TRUE,
main = "",
xlab = "",
ylab = "",
las = 1,
xaxt = "n")
axis(1, at = breaks_vec, labels = breaks_vec, las = 1, cex.axis = 0.9)
mtext("Frecuencia Absoluta (ni)", side = 2, line = 4.5, cex = 1)
mtext("Township", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°1: Histograma de Frecuencias Absolutas de la Variable Township,\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
mc_ext <- c(mc[1] - c_amp, mc, mc[k] + c_amp)
ni_ext <- c(0, freq_abs, 0)
grises <- gray(seq(0.25, 0.80, length.out = k))
h_obj <- hist(x, breaks = breaks_vec, plot = FALSE)
par(mar = c(5, 6, 6, 2))
plot(h_obj,
col = grises,
border = "black",
freq = TRUE,
main = "",
xlab = "",
ylab = "",
las = 1,
xaxt = "n",
ylim = c(0, max(freq_abs) * 1.20))
axis(1, at = breaks_vec, labels = breaks_vec, las = 1, cex.axis = 0.9)
lines(mc_ext, ni_ext, col = "black", lwd = 2, lty = 1)
points(mc_ext, ni_ext, pch = 16, col = "black", cex = 0.9)
mtext("Frecuencia Absoluta (ni)", side = 2, line = 4.5, cex = 1)
mtext("Township", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°2: Polígono de Frecuencias de la Variable Township,\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
legend("topright",
legend = c("Histograma", "Polígono de frecuencias"),
fill = c("gray60", NA), border = c("black", NA),
lty = c(NA, 1), pch = c(NA, 16),
lwd = c(NA, 2), col = c(NA, "black"),
bty = "n", cex = 0.85)
# Calcular indicadores necesarios para el boxplot
media <- mean(x)
mediana <- median(x)
desv_std <- sd(x)
q1 <- as.numeric(quantile(x, 0.25))
q3 <- as.numeric(quantile(x, 0.75))
par(mar = c(5, 4, 6, 2))
boxplot(x,
col = "gray75", border = "black",
horizontal = TRUE, outline = TRUE, pch = 16, cex = 0.5,
main = "", xlab = "", ylab = "")
mtext("Township", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°3: Boxplot de la Variable Township,\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
text(q1, 1.38, labels = paste0("Q1=", q1), cex = 0.8)
text(mediana, 0.62, labels = paste0("Me=", mediana), cex = 0.8)
text(q3, 1.38, labels = paste0("Q3=", q3), cex = 0.8)
x_asc <- c(li[1], ls)
y_asc <- c(0, Ni_asc)
x_desc <- c(li[1], ls)
y_desc <- c(n, Ni_desc)
par(mar = c(5, 7, 6, 2))
plot(x_asc, y_asc,
type = "b", pch = 16, lwd = 2, col = "black",
ylim = c(0, n * 1.10),
xlim = c(min(x_asc) - 1, max(x_asc) + 1),
xlab = "", ylab = "", main = "",
las = 1, xaxt = "n")
axis(1, at = breaks_vec, labels = breaks_vec, las = 1, cex.axis = 0.9)
lines(x_desc, y_desc,
type = "b", pch = 17, lwd = 2, col = "gray40", lty = 2)
grid(col = "gray85", lty = "dotted")
y_cruce <- n / 2
abline(h = y_cruce, col = "gray50", lty = 3, lwd = 1.2)
abline(v = mediana, col = "gray50", lty = 3, lwd = 1.2)
text(mediana + 0.5, y_cruce + (n * 0.04),
labels = paste0("Cruce \u2248 Me = ", mediana),
cex = 0.82, col = "black", font = 3)
legend("right",
legend = c("Ojiva Creciente (Ni \u2191)", "Ojiva Decreciente (Ni \u2193)"),
col = c("black", "gray40"), lty = c(1, 2), pch = c(16, 17),
lwd = 2, bty = "n", cex = 0.9)
mtext("Frecuencia Absoluta Acumulada (Ni)", side = 2, line = 5, cex = 1)
mtext("Township", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°4: Ojivas Creciente y Decreciente de la Variable Township,\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
Para la variable cuantitativa discreta agrupada Township, se calculan todos los indicadores de tendencia central, dispersión y forma.
moda_val <- as.integer(names(sort(table(x), decreasing = TRUE)[1]))
cv <- (desv_std / media) * 100
iqr_val <- IQR(x)
asimetria <- (3 * (media - mediana)) / desv_std
curtosis_val <- (sum((x - media)^4) / length(x)) / (desv_std^4)
lim_inf_out <- q1 - 1.5 * iqr_val
lim_sup_out <- q3 + 1.5 * iqr_val
outliers <- sort(unique(x[x < lim_inf_out | x > lim_sup_out]))
outliers_str <- if (length(outliers) == 0) "Sin valores atípicos" else paste(outliers, collapse = ", ")
indicadores <- data.frame(
Indicador = c(
"Tamaño muestral (n)",
"Mínimo",
"Máximo",
"Rango",
"Media",
"Mediana",
"Moda",
"Varianza (s²)",
"Desviación estándar (s)",
"Coef. de variación (CV%)",
"Cuartil 1 (Q1)",
"Cuartil 3 (Q3)",
"Rango intercuartílico (IQR)",
"Asimetría de Pearson",
"Curtosis"
),
Valor = c(
format(n, big.mark = ","),
as.character(x_min),
as.character(x_max),
as.character(rango_val),
as.character(round(media)),
as.character(round(mediana)),
as.character(moda_val),
as.character(round(desv_std^2, 2)),
as.character(round(desv_std, 2)),
paste0(round(cv, 2), "%"),
as.character(round(q1)),
as.character(round(q3)),
as.character(round(iqr_val)),
as.character(round(asimetria, 4)),
as.character(round(curtosis_val, 4))
),
stringsAsFactors = FALSE
)
indicadores %>%
gt() %>%
tab_header(
title = md("**Tabla N°2: Indicadores Estadísticos**"),
subtitle = md("*Variable Cuantitativa Discreta Agrupada: Township*")
) %>%
cols_label(
Indicador = md("**Indicador**"),
Valor = md("**Valor**")
) %>%
cols_align(align = "left", columns = Indicador) %>%
cols_align(align = "right", columns = Valor) %>%
tab_style(
style = list(
cell_fill(color = "#2C2C2C"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_labels()
) %>%
tab_style(
style = cell_borders(sides = "bottom", color = "#E0E0E0", weight = px(1)),
locations = cells_body(rows = everything())
) %>%
tab_style(
style = list(
cell_fill(color = "#F0F0F0"),
cell_text(weight = "bold")
),
locations = cells_body(
rows = Indicador == "Media",
columns = everything()
)
) %>%
tab_source_note(source_note = md("*Autor: Leslye Quinchiguango*")) %>%
tab_options(
table.width = pct(45),
heading.title.font.size = px(15),
heading.subtitle.font.size = px(11),
table.font.size = px(12),
data_row.padding = px(4),
column_labels.border.top.width = px(2),
column_labels.border.bottom.width = px(2),
table_body.border.bottom.width = px(2),
table.border.top.style = "hidden",
table.border.bottom.style = "hidden"
)
| Tabla N°2: Indicadores Estadísticos | |
| Variable Cuantitativa Discreta Agrupada: Township | |
| Indicador | Valor |
|---|---|
| Tamaño muestral (n) | 47,757 |
| Mínimo | 1 |
| Máximo | 35 |
| Rango | 34 |
| Media | 23 |
| Mediana | 25 |
| Moda | 34 |
| Varianza (s²) | 75.07 |
| Desviación estándar (s) | 8.66 |
| Coef. de variación (CV%) | 37.17% |
| Cuartil 1 (Q1) | 17 |
| Cuartil 3 (Q3) | 31 |
| Rango intercuartílico (IQR) | 14 |
| Asimetría de Pearson | -0.585 |
| Curtosis | 2.3353 |
| Autor: Leslye Quinchiguango | |
La variable Township fluctúa entre 1 y 35 (rango = 34 townships) y sus valores varían en torno a 25, con una desviación estándar de 8.66 townships, siendo un grupo de valores heterogéneo (CV = 37.17%), sin presencia de valores atípicos. El conjunto de valores se concentra a la izquierda (As = -0.58), con mayor concentración de arrendamientos en los townships del sur. Por lo tanto, el comportamiento es medianamente favorable, dado que los arrendamientos se distribuyen a lo largo de una amplia extensión territorial, implicando mayores costos logísticos y operativos para la industria.
Autor: Leslye Quinchiguango