Se carga el conjunto de datos de arrendamientos de hidrocarburos del estado de Kansas, EE.UU., registrados por el Kansas Geological Survey.
ruta_archivo <- "C:/Users/thann/OneDrive/Escritorio/ESTADISTICA.LOL/datos_vale.csv"
datos_vale <- read_delim(
ruta_archivo,
delim = ";",
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): 104173
La variable LONGITUDE (Longitud) registra la posición geográfica longitudinal de cada arrendamiento de hidrocarburos. Se conservan únicamente los registros con valores válidos dentro del rango territorial de Kansas (-102.5° – -94.0° O).
x_raw <- datos_vale %>%
mutate(LON = suppressWarnings(as.numeric(LONGITUDE))) %>%
filter(!is.na(LON), LON >= -102.5, LON <= -94.0) %>%
pull(LON)
n_unique <- length(unique(x_raw))
cat("Observaciones válidas:", length(x_raw), "\n")
## Observaciones válidas: 108
cat("Valores únicos:", n_unique, "\n")
## Valores únicos: 70
cat("Como hay", n_unique, "> 10 valores únicos, se agrupa en intervalos de clase.\n")
## Como hay 70 > 10 valores únicos, se agrupa en intervalos de clase.
x <- x_raw
n <- length(x)
rango <- max(x) - min(x)
k <- 10
c_amp <- rango / k
cat("\nn =", n, "| k =", k, "| Rango =", round(rango, 4), "| Amplitud c =", round(c_amp, 4), "\n")
##
## n = 108 | k = 10 | Rango = 6.726 | Amplitud c = 0.6726
lim_inf <- min(x) + (0:(k - 1)) * c_amp
lim_sup <- lim_inf + c_amp
lim_sup[k] <- max(x) + 0.001
mc <- (lim_inf + lim_sup) / 2
| Criterio | Clasificación |
|---|---|
| Nombre | Longitud |
| Nombre técnico | LONGITUDE |
| Tipo | Cuantitativa Continua (agrupada — más de 10 valores únicos) |
| Escala | De intervalo |
| Dominio | -102.04° – -95.31° O |
| Rango | 10 intervalos de clase |
| Unidad | Grados decimales (°O) |
| Fuente | Kansas Geological Survey – Kansas, EE.UU. |
Nota metodológica: La Regla de Sturges sugiere \(k = 1 + 3{,}322 \cdot \log_{10}(n)\); sin embargo, dado que la convención estadística establece un máximo de 10 intervalos para mantener la legibilidad de la tabla y las gráficas, se fija \(k = 10\), resultando una amplitud de 0.6726 grados por intervalo.
Se construye la tabla de distribución de frecuencias de la variable cuantitativa continua Longitud, correspondiente a los arrendamientos de hidrocarburos registrados en Kansas, EE.UU. (n = 108).
breaks_vec <- c(lim_inf, lim_sup[k])
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("[", round(li, 4), " – ", round(ls, 4), ")")
etiq_intervalo[k] <- paste0("[", round(li[k], 4), " – ", round(max(x), 4), "]")
tabla_df <- data.frame(
Intervalo = etiq_intervalo,
MC = round(mc, 4),
ni = freq_abs,
hi_pct = sprintf("%.2f%%", hi_dec * 100),
hi_real = sprintf("%.4f", hi_dec),
Ni_a = Ni_asc,
Hi_a = sprintf("%.4f", Hi_asc),
Ni_d = Ni_desc,
Hi_d = sprintf("%.4f", Hi_desc),
stringsAsFactors = FALSE
)
tabla_df2 <- tabla_df %>%
mutate(MC = as.character(MC), ni = as.character(ni),
Ni_a = as.character(Ni_a), Ni_d = as.character(Ni_d))
total_row <- data.frame(
Intervalo = "**TOTAL**", MC = "—",
ni = as.character(sum(freq_abs)),
hi_pct = sprintf("%.2f%%", sum(hi_dec) * 100),
hi_real = sprintf("%.4f", sum(hi_dec)),
Ni_a = as.character(max(Ni_asc)),
Hi_a = sprintf("%.4f", max(Hi_asc)),
Ni_d = as.character(max(Ni_desc)),
Hi_d = sprintf("%.4f", max(Hi_desc)),
stringsAsFactors = FALSE
)
tabla_final <- bind_rows(tabla_df2, total_row)
kable(
tabla_final,
caption = paste0(
"Cuadro N°1: Distribución de Frecuencias — Longitud (LONGITUDE), ",
"arrendamientos de hidrocarburos, Kansas, EE.UU. ",
"(n = ", format(n, big.mark = ","), " registros válidos)."
),
col.names = c("Intervalo [Li – Ls)", "Marca de Clase",
"ni (FA)", "hi %", "hi (decimal)",
"Ni ↑ (FAAa)", "Hi ↑ (FRAa)",
"Ni ↓ (FAAd)", "Hi ↓ (FRAd)"),
align = c("l", rep("c", 8)), escape = FALSE
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "bordered"),
full_width = TRUE, font_size = 12
) %>%
add_header_above(c(" " = 2, "Frecuencia Absoluta" = 1,
"Frecuencia Relativa" = 2,
"Acumulada ↑" = 2, "Acumulada ↓" = 2)) %>%
row_spec(0, bold = TRUE, background = "#d3d3d3", color = "black") %>%
row_spec(nrow(tabla_final), bold = TRUE, background = "#a9a9a9", color = "black")
| Intervalo [Li – Ls) | Marca de Clase | ni (FA) | hi % | hi (decimal) | Ni ↑ (FAAa) | Hi ↑ (FRAa) | Ni ↓ (FAAd) | Hi ↓ (FRAd) |
|---|---|---|---|---|---|---|---|---|
| [-102.035 – -101.3624) | -101.6987 | 17 | 15.74% | 0.1574 | 17 | 0.1574 | 108 | 1.0000 |
| [-101.3624 – -100.6898) | -101.0261 | 12 | 11.11% | 0.1111 | 29 | 0.2685 | 91 | 0.8426 |
| [-100.6898 – -100.0172) | -100.3535 | 11 | 10.19% | 0.1019 | 40 | 0.3704 | 79 | 0.7315 |
| [-100.0172 – -99.3446) | -99.6809 | 11 | 10.19% | 0.1019 | 51 | 0.4722 | 68 | 0.6296 |
| [-99.3446 – -98.672) | -99.0083 | 20 | 18.52% | 0.1852 | 71 | 0.6574 | 57 | 0.5278 |
| [-98.672 – -97.9994) | -98.3357 | 8 | 7.41% | 0.0741 | 79 | 0.7315 | 37 | 0.3426 |
| [-97.9994 – -97.3268) | -97.6631 | 9 | 8.33% | 0.0833 | 88 | 0.8148 | 29 | 0.2685 |
| [-97.3268 – -96.6542) | -96.9905 | 6 | 5.56% | 0.0556 | 94 | 0.8704 | 20 | 0.1852 |
| [-96.6542 – -95.9816) | -96.3179 | 1 | 0.93% | 0.0093 | 95 | 0.8796 | 14 | 0.1296 |
| [-95.9816 – -95.309] | -95.6448 | 13 | 12.04% | 0.1204 | 108 | 1.0000 | 13 | 0.1204 |
| TOTAL | — | 108 | 100.00% | 1.0000 | 108 | 1.0000 | 108 | 1.0000 |
par(mar = c(10, 5, 4, 2))
hist(x,
breaks = breaks_vec,
main = "",
xlab = "",
ylab = "Frecuencia Absoluta (ni)",
col = col_gris, border = "white",
axes = FALSE,
freq = TRUE)
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = breaks_vec, labels = round(breaks_vec, 3),
col = col_ejes, col.axis = col_ejes, las = 2, cex.axis = 0.75)
title(xlab = "Longitud (grados decimales °O)", line = 8)
mtext(
"Gráfica N°1: Histograma — Longitud (LONGITUDE),\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 1, cex = 0.9, font = 2
)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
box(bty = "l", col = col_ejes)
hi_den <- (freq_abs / n) / c_amp
par(mar = c(10, 5, 4, 2))
bp_h <- barplot(
hi_den,
col = col_gris, border = "white",
axes = FALSE,
ylim = c(0, max(hi_den) * 1.2),
space = 0,
main = ""
)
axis(2,
at = axTicks(2),
labels = paste0(round(axTicks(2) * c_amp * 100, 1), "%"),
col = col_ejes, col.axis = col_ejes)
axis(1, at = 0:k, labels = round(breaks_vec, 3),
col = col_ejes, col.axis = col_ejes, las = 2, cex.axis = 0.75)
title(xlab = "Longitud (grados decimales °O)", line = 8)
mtext(
"Gráfica N°2: Histograma Porcentual — Longitud (LONGITUDE),\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 1, cex = 0.9, font = 2
)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
box(bty = "l", col = col_ejes)
par(mar = c(10, 5, 4, 2))
plot(mc, freq_abs,
type = "o",
col = col_gris,
lwd = 2,
pch = 19,
main = "",
xlab = "",
ylab = "Frecuencia Absoluta (ni)",
axes = FALSE,
ylim = c(0, max(freq_abs) * 1.15))
axis(2, col = col_ejes, col.axis = col_ejes)
axis(1, at = mc, labels = round(mc, 3),
col = col_ejes, col.axis = col_ejes, las = 2, cex.axis = 0.75)
title(xlab = "Marca de Clase — Longitud (°O)", line = 8)
mtext(
"Gráfica N°3: Polígono de Frecuencia — Longitud (LONGITUDE),\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 1, cex = 0.9, font = 2
)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
box(bty = "l", col = col_ejes)
par(mar = c(5, 4, 6, 2))
boxplot(x,
col = col_gris,
border = "black",
horizontal = TRUE,
outline = TRUE,
outpch = 19,
outcol = "#C0392B",
pch = 16,
cex = 0.4,
boxwex = 0.5,
frame.plot = FALSE,
main = "",
xlab = "",
ylab = "",
xlim = c(min(x) - 0.3, max(x) + 0.3),
xaxt = "n")
eje_x <- pretty(x, n = 8)
axis(1, at = eje_x, labels = format(round(eje_x, 3), scientific = FALSE),
cex.axis = 0.8, col = col_ejes, col.axis = col_ejes)
mtext("Longitud (grados decimales °O)", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°4: Diagrama de Caja — Longitud (LONGITUDE),\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
text(q1, 1.30, labels = paste0("Q1 = ", round(q1, 4)), cex = 0.8, font = 2)
text(mediana, 0.65, labels = paste0("Me = ", round(mediana, 4)), cex = 0.8, font = 2)
text(q3, 1.30, labels = paste0("Q3 = ", round(q3, 4)), cex = 0.8, font = 2)
abline(v = media, col = "black", lty = 2, lwd = 1.5)
text(media, 1.48, labels = paste0("x\u0305 = ", round(media, 4)), cex = 0.75, col = "black")
grid(nx = NULL, ny = NA, col = "lightgray", lty = "dotted")
x_asc <- c(li[1], ls)
y_asc <- c(0, Ni_asc)
x_desc <- c(li[1], ls)
y_desc <- c(n, Ni_desc)
col_azul <- "#2E4053"
col_rojo <- "#C0392B"
par(mar = c(10, 6, 4, 8), xpd = TRUE)
plot(x_asc, y_asc,
type = "o", col = col_azul, lwd = 2, pch = 19,
main = "",
ylab = "Frecuencia Acumulada (Ni)", xlab = "",
ylim = c(0, n * 1.05),
axes = FALSE, frame.plot = FALSE)
axis(1, at = c(li[1], ls), labels = round(c(li[1], ls), 3),
las = 2, cex.axis = 0.8, col = col_ejes, col.axis = col_ejes)
axis(2, col = col_ejes, col.axis = col_ejes)
title(xlab = "Longitud (°O)", line = 8)
mtext(
"Gráfica N°5: Ojivas Ascendente y Descendente — Longitud (LONGITUDE), Kansas, EE.UU.",
side = 3, line = 1, cex = 0.9, font = 2
)
lines(x_desc, y_desc, type = "o", col = col_rojo, lwd = 2, pch = 19)
y_cruce <- n / 2
abline(h = y_cruce, col = "gray60", lty = 3, lwd = 1.2)
abline(v = mediana, col = "gray60", lty = 3, lwd = 1.2)
text(mediana + 0.15, y_cruce + 3,
labels = paste0("Cruce \u2248 Me = ", round(mediana, 4)),
cex = 0.8, col = "black", font = 3)
legend("right",
legend = c("Ascendente", "Descendente"),
col = c(col_azul, col_rojo), lty = 1, pch = 19,
cex = 0.8, lwd = 2, inset = c(-0.12, 0), bty = "n")
grid()
n_x <- length(x)
moda_val <- as.numeric(names(sort(table(round(x, 3)), decreasing = TRUE)[1]))
varianza <- var(x)
desv_std <- sd(x)
cv <- (desv_std / abs(media)) * 100
rango_val <- max(x) - min(x)
iqr_val <- IQR(x)
asimetria <- (3 * (media - mediana)) / desv_std
curtosis_val <- (sum((x - media)^4) / n_x) / (desv_std^4)
vals_atipicos <- boxplot.stats(x)$out
num_atipicos <- length(vals_atipicos)
status_atipicos <- ifelse(num_atipicos > 0,
paste0(num_atipicos, " outliers"),
"0 (Sin atípicos)")
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", "Valores atípicos"
),
Valor = c(
format(n_x, big.mark = ","), round(min(x), 4), round(max(x), 4), round(rango_val, 4),
round(media, 4), round(mediana, 4), round(moda_val, 4),
round(varianza, 6), round(desv_std, 4), paste0(round(cv, 4), "%"),
round(q1, 4), round(q3, 4), round(iqr_val, 4),
round(asimetria, 4), round(curtosis_val, 4),
status_atipicos
),
stringsAsFactors = FALSE
)
kable(
indicadores,
caption = "Cuadro N°2: Estadísticos Descriptivos — Longitud (LONGITUDE), arrendamientos de hidrocarburos, Kansas, EE.UU.",
col.names = c("Indicador", "Valor"),
align = c("l", "c")
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "bordered"),
full_width = FALSE, font_size = 12
) %>%
row_spec(0, bold = TRUE, background = "#d3d3d3", color = "black")
| Indicador | Valor |
|---|---|
| Tamaño muestral (n) | 108 |
| Mínimo | -102.035 |
| Máximo | -95.309 |
| Rango | 6.726 |
| Media | -99.1541 |
| Mediana | -99.23 |
| Moda | -98.757 |
| Varianza (s²) | 3.802978 |
| Desviación estándar (s) | 1.9501 |
| Coef. de variación (CV%) | 1.9668% |
| Cuartil 1 (Q1) | -100.9165 |
| Cuartil 3 (Q3) | -97.847 |
| Rango intercuartílico (IQR) | 3.0695 |
| Asimetría de Pearson | 0.1168 |
| Curtosis | 2.256 |
| Valores atípicos | 0 (Sin atípicos) |
La variable Longitud (LONGITUDE) registra la posición geográfica longitudinal de cada arrendamiento de hidrocarburos en Kansas, abarcando desde -102.035°O hasta -95.309°O, con base en 108 registros válidos agrupados en 10 intervalos de amplitud 0.6726 grados.
Tendencia central. La media (-99.1541°O) y la mediana (-99.23°O) son muy próximas entre sí, lo que indica que la mayor parte de los arrendamientos se concentra en la franja central-occidental del estado. La moda es -98.757°O, la longitud que más se repite en los registros.
Dispersión. La desviación estándar de 1.9501 grados y el CV de 1.9668% confirman una dispersión geográfica moderada de este a oeste. El rango intercuartílico (IQR = 3.0695 grados) señala que el 50% central de los registros se concentra en una franja de 3.0695 grados de longitud.
Forma de la distribución. La asimetría de Pearson de 0.1168 indica una distribución asimétrica positiva: existe mayor concentración de arrendamientos hacia longitudes más orientales, con cola hacia el oeste del estado. La curtosis de 2.256 indica una distribución platicúrtica: los arrendamientos se distribuyen de forma relativamente uniforme a lo largo de la extensión este-oeste del estado.
Intervalo de mayor actividad. El intervalo con mayor frecuencia concentra 20 arrendamientos (18.52%), identificando la franja longitudinal de mayor densidad extractiva. No se detectaron valores atípicos, confirmando la consistencia geográfica de los registros.
Autor: Baldeon Ariel | Análisis Estadístico — Kansas Hydrocarbon Leases Dataset