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 <- "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

2. Extracción y Limpieza de la Variable

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

3. Identificación de la Variable

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.


4. Tabla de Distribución de Frecuencias

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")
Cuadro N°1: Distribución de Frecuencias — Longitud (LONGITUDE), arrendamientos de hidrocarburos, Kansas, EE.UU. (n = 108 registros válidos).
Frecuencia Absoluta
Frecuencia Relativa
Acumulada ↑
Acumulada ↓
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

5. Representación Gráfica

5.1 Gráfica N°1 — Histograma (Frecuencia Absoluta)

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)

5.2 Gráfica N°2 — Histograma (Frecuencia Porcentual)

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)

5.3 Gráfica N°3 — Polígono de Frecuencia

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)

5.4 Gráfica N°4 — Diagrama de Caja

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")

5.5 Gráfica N°5 — Ojivas Ascendente y Descendente

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()


6. Tabla de Indicadores

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")
Cuadro N°2: Estadísticos Descriptivos — Longitud (LONGITUDE), arrendamientos de hidrocarburos, Kansas, EE.UU.
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)

7. Conclusión

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