Se carga el conjunto de datos de arrendamientos de hidrocarburos del estado de Kansas, EE.UU., registrados por el Kansas Geological Survey.
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
La variable LONGITUDE representa la coordenada geográfica este-oeste de cada arrendamiento de hidrocarburos registrado en Kansas. Se filtran únicamente valores válidos dentro del rango geográfico del estado (-102.05° – -94.61° O).
x_raw <- datos %>%
filter(!is.na(LONGITUDE), LONGITUDE >= -102.05, LONGITUDE <= -94.61) %>%
pull(LONGITUDE)
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: 32629
cat("Como hay", n_unique, "> 10 valores únicos, se agrupa en intervalos de clase.\n")
## Como hay 32629 > 10 valores únicos, se agrupa en intervalos de clase.
| Criterio | Clasificación |
|---|---|
| Tipo | Cuantitativa Continua (agrupada — más de 10 valores únicos) |
| Escala | De intervalo |
| Variable | LONGITUDE (coordenada geográfica este-oeste del arrendamiento) |
| Rango | -102.05° O a -94.61° O |
| Fuente | Kansas Geological Survey – Kansas, EE.UU. |
Justificación: La variable LONGITUDE toma valores decimales continuos con 32629 valores únicos, superando ampliamente el umbral de 10. Por convención estadística se agrupa en intervalos de clase y se trata como variable cuantitativa continua. La escala es de intervalo, ya que el cero geográfico (meridiano de Greenwich) es convencional y no representa ausencia de longitud.
\[k = 1 + 3{,}322 \cdot \log_{10}(n) \qquad c = \left\lceil \frac{\text{Rango}}{k} \right\rceil\]
x <- x_raw
n <- length(x)
k <- ceiling(1 + 3.322 * log10(n))
rango <- max(x) - min(x)
c_amp <- rango / k
cat("n =", n, "| k =", k, "| Rango =", round(rango, 4), "| Amplitud c =", round(c_amp, 4), "\n")
## n = 47757 | k = 17 | Rango = 7.426 | Amplitud c = 0.4368
lim_inf <- min(x) + (0:(k - 1)) * c_amp
lim_sup <- lim_inf + c_amp
lim_sup[k] <- max(x) + 0.0001 # cierra el último intervalo
mc <- (lim_inf + lim_sup) / 2 # marca de clase: (Li + Ls) / 2
Se construye la tabla de la variable cuantitativa continua Longitude, correspondiente a los arrendamientos de hidrocarburos registrados en Kansas, EE.UU., durante el período histórico disponible (n = 47,757).
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))
# Etiquetas de intervalos con notación [Li, Ls)
etiq_intervalo <- paste0("[", round(li, 4), " – ", round(ls, 4), ")")
etiq_intervalo[k] <- paste0("[", round(li[k], 4), " – ", round(ls[k], 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 = as.character(round(sum(mc), 2)),
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(
"Tabla N°1: Distribución de Frecuencias de la Variable Cuantitativa Continua Longitude, ",
"registrada en los arrendamientos de hidrocarburos del estado de Kansas, EE.UU., ",
"período histórico disponible (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.0439 – -101.6071) | -101.8255 | 2213 | 4.63% | 0.0463 | 2213 | 0.0463 | 47757 | 1.0000 |
| [-101.6071 – -101.1703) | -101.3887 | 2516 | 5.27% | 0.0527 | 4729 | 0.0990 | 45544 | 0.9537 |
| [-101.1703 – -100.7334) | -100.9519 | 5205 | 10.90% | 0.1090 | 9934 | 0.2080 | 43028 | 0.9010 |
| [-100.7334 – -100.2966) | -100.515 | 2178 | 4.56% | 0.0456 | 12112 | 0.2536 | 37823 | 0.7920 |
| [-100.2966 – -99.8598) | -100.0782 | 2458 | 5.15% | 0.0515 | 14570 | 0.3051 | 35645 | 0.7464 |
| [-99.8598 – -99.423) | -99.6414 | 3977 | 8.33% | 0.0833 | 18547 | 0.3884 | 33187 | 0.6949 |
| [-99.423 – -98.9862) | -99.2046 | 4644 | 9.72% | 0.0972 | 23191 | 0.4856 | 29210 | 0.6116 |
| [-98.9862 – -98.5493) | -98.7678 | 6007 | 12.58% | 0.1258 | 29198 | 0.6114 | 24566 | 0.5144 |
| [-98.5493 – -98.1125) | -98.3309 | 3895 | 8.16% | 0.0816 | 33093 | 0.6929 | 18559 | 0.3886 |
| [-98.1125 – -97.6757) | -97.8941 | 1677 | 3.51% | 0.0351 | 34770 | 0.7281 | 14664 | 0.3071 |
| [-97.6757 – -97.2389) | -97.4573 | 1021 | 2.14% | 0.0214 | 35791 | 0.7494 | 12987 | 0.2719 |
| [-97.2389 – -96.8021) | -97.0205 | 1788 | 3.74% | 0.0374 | 37579 | 0.7869 | 11966 | 0.2506 |
| [-96.8021 – -96.3652) | -96.5836 | 693 | 1.45% | 0.0145 | 38272 | 0.8014 | 10178 | 0.2131 |
| [-96.3652 – -95.9284) | -96.1468 | 1337 | 2.80% | 0.0280 | 39609 | 0.8294 | 9485 | 0.1986 |
| [-95.9284 – -95.4916) | -95.71 | 4236 | 8.87% | 0.0887 | 43845 | 0.9181 | 8148 | 0.1706 |
| [-95.4916 – -95.0548) | -95.2732 | 3083 | 6.46% | 0.0646 | 46928 | 0.9826 | 3912 | 0.0819 |
| [-95.0548 – -94.6178] | -94.8363 | 829 | 1.74% | 0.0174 | 47757 | 1.0000 | 829 | 0.0174 |
| TOTAL | -1671.63 | 47757 | 100.00% | 1.0000 | 47757 | 1.0000 | 47757 | 1.0000 |
n_x <- length(x)
media <- mean(x)
mediana <- median(x)
moda_val <- as.numeric(names(sort(table(round(x, 4)), decreasing = TRUE)[1]))
varianza <- var(x)
desv_std <- sd(x)
cv <- (desv_std / media) * 100
rango_val <- max(x) - min(x)
q1 <- as.numeric(quantile(x, 0.25))
q3 <- as.numeric(quantile(x, 0.75))
iqr_val <- IQR(x)
asimetria <- (3 * (media - mediana)) / desv_std
curtosis_val <- (sum((x - media)^4) / n_x) / (desv_std^4)
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_x, big.mark = ","), round(min(x), 4), round(max(x), 4), round(rango_val, 4),
round(media, 4), round(mediana, 4), moda_val,
round(varianza, 4), round(desv_std, 4), paste0(round(cv, 2), "%"),
round(q1, 4), round(q3, 4), round(iqr_val, 4),
round(asimetria, 4), round(curtosis_val, 4)
),
stringsAsFactors = FALSE
)
kable(
indicadores,
caption = "Tabla N°2: Indicadores Estadísticos de la Variable 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) | 47,757 |
| Mínimo | -102.0439 |
| Máximo | -94.6179 |
| Rango | 7.426 |
| Media | -98.7189 |
| Mediana | -98.9294 |
| Moda | -95.3701 |
| Varianza (s²) | 3.9556 |
| Desviación estándar (s) | 1.9889 |
| Coef. de variación (CV%) | -2.01% |
| Cuartil 1 (Q1) | -100.3476 |
| Cuartil 3 (Q3) | -97.2287 |
| Rango intercuartílico (IQR) | 3.1189 |
| Asimetría de Pearson | 0.3176 |
| Curtosis | 2.0715 |
grises <- gray(seq(0.25, 0.80, length.out = k))
par(mar = c(5, 6, 6, 2))
h_obj <- hist(x, breaks = breaks_vec, plot = FALSE)
plot(h_obj,
col = grises, border = "black",
freq = TRUE, main = "", xlab = "", ylab = "", las = 1)
mtext("Frecuencia Absoluta (ni)", side = 2, line = 4.5, cex = 1)
mtext("Longitud (°O)", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°1: Histograma de Frecuencias Absolutas de la Variable Longitude,\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)
par(mar = c(5, 6, 6, 2))
plot(mc_ext, ni_ext,
type = "n", xlab = "", ylab = "", main = "",
ylim = c(0, max(ni_ext) * 1.12), las = 1)
polygon(c(mc_ext[1], mc_ext, tail(mc_ext, 1)),
c(0, ni_ext, 0), col = "gray80", border = NA)
lines(mc_ext, ni_ext, col = "black", lwd = 2)
points(mc_ext, ni_ext, pch = 16, col = "black", cex = 0.9)
mtext("Frecuencia Absoluta (ni)", side = 2, line = 4.5, cex = 1)
mtext("Marca de Clase (Longitud °O)", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°2: Polígono de Frecuencias de la Variable Longitude,\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
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("Longitud (°O)", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°3: Boxplot de la Variable Longitude,\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
text(q1, 1.38, labels = paste0("Q1=", round(q1, 4)), cex = 0.8)
text(mediana, 0.62, labels = paste0("Me=", round(mediana, 4)), cex = 0.8)
text(q3, 1.38, labels = paste0("Q3=", round(q3, 4)), cex = 0.8)
x_asc <- c(li[1], ls)
y_asc <- c(0, Ni_asc)
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.05), xlab = "", ylab = "", main = "", las = 1)
grid(col = "gray85", lty = "dotted")
mtext("Frec. Absoluta Acumulada Creciente Ni ↑", side = 2, line = 5, cex = 0.9)
mtext("Longitud (°O)", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°4: Ojiva Creciente de la Variable Longitude,\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
x_desc <- c(li[1], ls)
y_desc <- c(n, Ni_desc)
par(mar = c(5, 7, 6, 2))
plot(x_desc, y_desc,
type = "b", pch = 16, lwd = 2, col = "black",
ylim = c(0, n * 1.05), xlab = "", ylab = "", main = "", las = 1)
grid(col = "gray85", lty = "dotted")
mtext("Frec. Absoluta Acumulada Decreciente Ni ↓", side = 2, line = 5, cex = 0.9)
mtext("Longitud (°O)", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°5: Ojiva Decreciente de la Variable Longitude,\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
La variable Longitude representa la coordenada geográfica este-oeste de cada arrendamiento de hidrocarburos en Kansas, expresada en grados decimales Oeste (°O), con valores comprendidos entre -102.05° O y -94.61° O.
Con base en los 47,757 registros válidos agrupados en 17 intervalos de amplitud 0.4368°, se pueden extraer las siguientes conclusiones:
Tendencia central. La media (-98.7189°O) y la mediana (-98.9294°O) son muy cercanas entre sí, lo que indica que la distribución de arrendamientos no presenta un sesgo extremo. La mitad de los arrendamientos se localiza al este del meridiano -98.9294°O, sugiriendo que la actividad petrolera tiene un centro de gravedad en la zona centro-este del estado.
Dispersión. El coeficiente de variación del -2.01% refleja una variabilidad baja, lo que indica que los arrendamientos tienden a concentrarse en una franja longitudinal relativamente estrecha del territorio. El rango intercuartílico (IQR = 3.1189°) confirma que el 50% central de los datos se encuentra en una franja de 3.1189 grados de longitud.
Forma de la distribución. La asimetría de Pearson de 0.3176 indica una distribución asimétrica positiva: existe mayor concentración de arrendamientos en las longitudes del oeste, con una cola que se extiende hacia el este. La curtosis de 2.0715 señala una distribución platicúrtica: los arrendamientos se dispersan de forma relativamente uniforme entre las longitudes, con colas más ligeras que una distribución normal.
Valor modal. La moda de la variable es -95.3701°O, el valor más frecuente en los registros. El intervalo de mayor actividad concentra 6,007 arrendamientos (12.58%), lo que indica que esta franja geográfica ha sido históricamente la zona de mayor explotación de hidrocarburos en Kansas.
Conclusión general. La actividad de arrendamiento de hidrocarburos en Kansas no se distribuye de manera uniforme en el territorio: existe una franja longitudinal preferencial donde se concentra la producción, mientras que los extremos este y oeste del estado presentan menor actividad relativa. Esta distribución responde probablemente a las características geológicas del subsuelo kansano.
Autor: Ariel Baldeon