library(readr)
library(dplyr)
library(gt)
cat("Librerías cargadas correctamente.\n")
## Librerías cargadas correctamente.
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 continua
AVG_PRODUCTION (producción anual promedio por pozo,
calculada como CUMULATIVE_PRODUCTION / YEARS_ACTIVE). Al
ser una variable extremadamente asimétrica (rango de 0.75 a más de
800,000 bbl/año), se recorta el 1% superior de valores atípicos
—criterio estándar para variables muy sesgadas—, ya que sin ese recorte
el histograma queda degenerado (casi todos los datos caen en un solo
intervalo).
prod_raw <- datos %>%
mutate(PA = suppressWarnings(as.numeric(AVG_PRODUCTION))) %>%
filter(!is.na(PA), PA > 0) %>%
pull(PA)
cap_p99 <- quantile(prod_raw, 0.99, na.rm = TRUE)
x_raw <- prod_raw[prod_raw <= cap_p99]
cat("Observaciones sin recorte:", length(prod_raw), "| Percentil 99 (tope):", round(cap_p99,2), "\n")
## Observaciones sin recorte: 47757 | Percentil 99 (tope): 49354.18
n_conteo <- length(x_raw)
k_sturges <- ceiling(1 + 3.322 * log10(n_conteo))
cat("Observaciones válidas:", n_conteo, "\n")
## Observaciones válidas: 47279
cat("Clases (Regla de Sturges):", k_sturges, "\n")
## Clases (Regla de Sturges): 17
cat("Mínimo:", round(min(x_raw), 2), "| Máximo:", round(max(x_raw), 2), "\n")
## Mínimo: 0.75 | Máximo: 49276.21
Al ser Producción Anual Promedio una variable cuantitativa continua, se determina el número de intervalos de clase aplicando la Regla de Sturges.
\[k = \lceil 1 + 3.322 \log_{10}(n) \rceil \qquad c = \frac{\max - \min}{k}\]
x <- x_raw
n <- length(x)
x_min <- min(x); x_max <- max(x)
rango_st <- x_max - x_min
k_st <- k_sturges
c_amp_st <- (x_max - x_min) / k_st
lim_inf_st <- x_min + (0:(k_st - 1)) * c_amp_st
lim_sup_st <- lim_inf_st + c_amp_st; lim_sup_st[k_st] <- x_max
mc_st <- (lim_inf_st + lim_sup_st) / 2
breaks_st <- c(lim_inf_st, lim_sup_st[k_st])
cat("n =", n, "| k (Sturges) =", k_st, "| Amplitud c =", round(c_amp_st, 4), "\n")
## n = 47279 | k (Sturges) = 17 | Amplitud c = 2898.557
intervalos_cut_st <- cut(x, breaks = breaks_st, right = FALSE, include.lowest = TRUE)
freq_abs_st <- as.integer(table(intervalos_cut_st))
hi_dec_st <- freq_abs_st / n
Ni_asc_st <- cumsum(freq_abs_st)
Hi_asc_st <- cumsum(hi_dec_st)
Ni_desc_st <- n - c(0, head(Ni_asc_st, -1))
Hi_desc_st <- 1 - c(0, head(Hi_asc_st, -1))
etiq_st <- paste0("[",format(round(lim_inf_st,2),big.mark=",")," - ",format(round(lim_sup_st,2),big.mark=","),")")
etiq_st[k_st] <- paste0("[",format(round(lim_inf_st[k_st],2),big.mark=",")," - ",format(round(lim_sup_st[k_st],2),big.mark=","),"]")
tabla_st_df <- data.frame(
Intervalo = etiq_st, MC = round(mc_st,2), ni = freq_abs_st,
hi_pct = round(hi_dec_st*100,2), hi_real = round(hi_dec_st,4),
Ni_a = Ni_asc_st, Hi_a = round(Hi_asc_st,4),
Ni_d = Ni_desc_st, Hi_d = round(Hi_desc_st,4), stringsAsFactors=FALSE
)
total_st_row <- data.frame(
Intervalo = "TOTAL", MC = NA_real_, ni = sum(freq_abs_st),
hi_pct = round(sum(hi_dec_st)*100,2), hi_real = round(sum(hi_dec_st),4),
Ni_a = max(Ni_asc_st), Hi_a = round(max(Hi_asc_st),4),
Ni_d = max(Ni_desc_st), Hi_d = round(max(Hi_desc_st),4), stringsAsFactors=FALSE
)
tabla_sturges_final <- bind_rows(tabla_st_df, total_st_row)
tabla_sturges_final %>%
gt() %>%
tab_header(title=md("**Distribución de Frecuencias — Regla de Sturges (referencial)**"),
subtitle=md(paste0("*Producción Anual Promedio, Kansas, EE.UU. (n=",format(n,big.mark=","),", k=",k_st," intervalos)*"))) %>%
cols_label(Intervalo=md("**Intervalo**"), MC=md("**MC**"), ni=md("**ni**"),
hi_pct=md("**hi%**"), hi_real=md("**hi**"),
Ni_a=md("**Ni (asc)**"), Hi_a=md("**Hi (asc)**"),
Ni_d=md("**Ni (desc)**"), Hi_d=md("**Hi (desc)**")) %>%
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_sturges_final),by=2))) %>%
tab_style(style=list(cell_fill(color="#D6D6D6"),cell_text(weight="bold")),
locations=cells_body(rows=Intervalo=="TOTAL")) %>%
fmt_missing(columns=everything(), missing_text="-") %>%
tab_source_note(source_note=md("*Autor: Fernando Almeida*")) %>%
tab_options(table.width=pct(100), heading.title.font.size=px(15),
heading.subtitle.font.size=px(11), table.font.size=px(12), data_row.padding=px(4))
| Distribución de Frecuencias — Regla de Sturges (referencial) | ||||||||
| Producción Anual Promedio, Kansas, EE.UU. (n=47,279, k=17 intervalos) | ||||||||
| Intervalo | MC | ni | hi% | hi | Ni (asc) | Hi (asc) | Ni (desc) | Hi (desc) |
|---|---|---|---|---|---|---|---|---|
| [ 0.75 - 2,899.31) | 1450.03 | 25316 | 53.55 | 0.5355 | 25316 | 0.5355 | 47279 | 1.0000 |
| [ 2,899.31 - 5,797.86) | 4348.58 | 7909 | 16.73 | 0.1673 | 33225 | 0.7027 | 21963 | 0.4645 |
| [ 5,797.86 - 8,696.42) | 7247.14 | 4131 | 8.74 | 0.0874 | 37356 | 0.7901 | 14054 | 0.2973 |
| [ 8,696.42 - 11,594.98) | 10145.70 | 2532 | 5.36 | 0.0536 | 39888 | 0.8437 | 9923 | 0.2099 |
| [11,594.98 - 14,493.53) | 13044.25 | 1767 | 3.74 | 0.0374 | 41655 | 0.8810 | 7391 | 0.1563 |
| [14,493.53 - 17,392.09) | 15942.81 | 1330 | 2.81 | 0.0281 | 42985 | 0.9092 | 5624 | 0.1190 |
| [17,392.09 - 20,290.65) | 18841.37 | 1095 | 2.32 | 0.0232 | 44080 | 0.9323 | 4294 | 0.0908 |
| [20,290.65 - 23,189.20) | 21739.92 | 902 | 1.91 | 0.0191 | 44982 | 0.9514 | 3199 | 0.0677 |
| [23,189.20 - 26,087.76) | 24638.48 | 730 | 1.54 | 0.0154 | 45712 | 0.9669 | 2297 | 0.0486 |
| [26,087.76 - 28,986.32) | 27537.04 | 536 | 1.13 | 0.0113 | 46248 | 0.9782 | 1567 | 0.0331 |
| [28,986.32 - 31,884.87) | 30435.59 | 360 | 0.76 | 0.0076 | 46608 | 0.9858 | 1031 | 0.0218 |
| [31,884.87 - 34,783.43) | 33334.15 | 213 | 0.45 | 0.0045 | 46821 | 0.9903 | 671 | 0.0142 |
| [34,783.43 - 37,681.98) | 36232.71 | 122 | 0.26 | 0.0026 | 46943 | 0.9929 | 458 | 0.0097 |
| [37,681.98 - 40,580.54) | 39131.26 | 117 | 0.25 | 0.0025 | 47060 | 0.9954 | 336 | 0.0071 |
| [40,580.54 - 43,479.10) | 42029.82 | 80 | 0.17 | 0.0017 | 47140 | 0.9971 | 219 | 0.0046 |
| [43,479.10 - 46,377.65) | 44928.38 | 84 | 0.18 | 0.0018 | 47224 | 0.9988 | 139 | 0.0029 |
| [46,377.65 - 49,276.21] | 47826.93 | 55 | 0.12 | 0.0012 | 47279 | 1.0000 | 55 | 0.0012 |
| TOTAL | - | 47279 | 100.00 | 1.0000 | 47279 | 1.0000 | 47279 | 1.0000 |
| Autor: Fernando Almeida | ||||||||
Aplicando la Regla de Sturges, con 47,279 observaciones corresponderían 17 intervalos de clase. Sin embargo, un desglose tan fino dificulta la lectura visual y el cálculo de los indicadores estadísticos. Por ello, se simplifica el análisis a una tabla de 10 intervalos de clase, criterio que conserva representatividad estadística sin sacrificar claridad interpretativa.
x <- x_raw
n <- length(x)
x_min <- min(x); x_max <- max(x)
k <- 10
c_amp <- (x_max - x_min) / k
lim_inf <- x_min + (0:(k-1)) * c_amp
lim_sup <- lim_inf + c_amp; lim_sup[k] <- x_max
mc <- (lim_inf + lim_sup) / 2
breaks_vec <- c(lim_inf, lim_sup[k])
cat("n =", n, "| k =", k, "| Amplitud c =", round(c_amp, 4), "\n")
## n = 47279 | k = 10 | Amplitud c = 4927.546
intervalos_cut <- cut(x, breaks=breaks_vec, right=FALSE, include.lowest=TRUE)
freq_abs <- as.integer(table(intervalos_cut))
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 <- paste0("[",format(round(lim_inf,2),big.mark=",")," - ",format(round(lim_sup,2),big.mark=","),")")
etiq[k] <- paste0("[",format(round(lim_inf[k],2),big.mark=",")," - ",format(round(lim_sup[k],2),big.mark=","),"]")
bind_rows(
data.frame(Intervalo=etiq, MC=round(mc,2), 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),
data.frame(Intervalo="TOTAL", MC=NA_real_, 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)
) %>%
gt() %>%
tab_header(title=md("**Tabla N°1: Distribución de Frecuencias**"),
subtitle=md(paste0("*Producción Anual Promedio, Kansas (n=",format(n,big.mark=","),")*"))) %>%
cols_label(Intervalo=md("**Intervalo**"), MC=md("**MC**"), ni=md("**ni**"),
hi_pct=md("**hi%**"), hi_real=md("**hi**"),
Ni_a=md("**Ni (asc)**"), Hi_a=md("**Hi (asc)**"),
Ni_d=md("**Ni (desc)**"), Hi_d=md("**Hi (desc)**")) %>%
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,k+1,by=2))) %>%
tab_style(style=list(cell_fill(color="#D6D6D6"),cell_text(weight="bold")),
locations=cells_body(rows=Intervalo=="TOTAL")) %>%
fmt_missing(columns=everything(), missing_text="-") %>%
tab_source_note(source_note=md("*Autor: Fernando Almeida*")) %>%
tab_options(table.width=pct(100), table.font.size=px(13), data_row.padding=px(6))
| Tabla N°1: Distribución de Frecuencias | ||||||||
| Producción Anual Promedio, Kansas (n=47,279) | ||||||||
| Intervalo | MC | ni | hi% | hi | Ni (asc) | Hi (asc) | Ni (desc) | Hi (desc) |
|---|---|---|---|---|---|---|---|---|
| [ 0.75 - 4,928.30) | 2464.52 | 31483 | 66.59 | 0.6659 | 31483 | 0.6659 | 47279 | 1.0000 |
| [ 4,928.30 - 9,855.84) | 7392.07 | 7018 | 14.84 | 0.1484 | 38501 | 0.8143 | 15796 | 0.3341 |
| [ 9,855.84 - 14,783.39) | 12319.62 | 3291 | 6.96 | 0.0696 | 41792 | 0.8839 | 8778 | 0.1857 |
| [14,783.39 - 19,710.93) | 17247.16 | 2067 | 4.37 | 0.0437 | 43859 | 0.9277 | 5487 | 0.1161 |
| [19,710.93 - 24,638.48) | 22174.71 | 1489 | 3.15 | 0.0315 | 45348 | 0.9592 | 3420 | 0.0723 |
| [24,638.48 - 29,566.03) | 27102.25 | 978 | 2.07 | 0.0207 | 46326 | 0.9798 | 1931 | 0.0408 |
| [29,566.03 - 34,493.57) | 32029.80 | 475 | 1.00 | 0.0100 | 46801 | 0.9899 | 953 | 0.0202 |
| [34,493.57 - 39,421.12) | 36957.35 | 222 | 0.47 | 0.0047 | 47023 | 0.9946 | 478 | 0.0101 |
| [39,421.12 - 44,348.66) | 41884.89 | 143 | 0.30 | 0.0030 | 47166 | 0.9976 | 256 | 0.0054 |
| [44,348.66 - 49,276.21] | 46812.44 | 113 | 0.24 | 0.0024 | 47279 | 1.0000 | 113 | 0.0024 |
| TOTAL | - | 47279 | 100.00 | 1.0000 | 47279 | 1.0000 | 47279 | 1.0000 |
| Autor: Fernando Almeida | ||||||||
Se presentan cuatro gráficas en escala de grises que permiten analizar visualmente la distribución de la variable cuantitativa continua Producción Anual Promedio.
grises <- gray(seq(0.25, 0.80, length.out = k))
h_obj <- hist(x, breaks = breaks_vec, plot = FALSE)
par(mar = c(5, 6, 7, 2))
plot(h_obj, col = grises, border = "black", freq = TRUE,
main = "", xlab = "", ylab = "", las = 1, xaxt = "n")
axis(1, at = breaks_vec, labels = format(round(breaks_vec,2),big.mark=","), las = 2, cex.axis = 0.75)
mtext("Frecuencia Absoluta (ni)", side = 2, line = 4.5, cex = 1)
mtext("Producción Anual Promedio (bbl/año)", side = 1, line = 4.5, cex = 1)
mtext(
"Gráfica N°1: Histograma de Frecuencias Absolutas de la Variable Producción Anual Promedio,\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, 7, 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 = format(round(breaks_vec,2),big.mark=","), las = 2, cex.axis = 0.75)
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("Producción Anual Promedio (bbl/año)", side = 1, line = 4.5, cex = 1)
mtext(
"Gráfica N°2: Polígono de Frecuencias de la Variable Producción Anual Promedio,\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)
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("Producción Anual Promedio (bbl/año)", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°3: Boxplot de la Variable Producción Anual Promedio,\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
text(q1, 1.38, labels = paste0("Q1=", round(q1,2)), cex = 0.8)
text(mediana, 0.62, labels = paste0("Me=", round(mediana,2)), cex = 0.8)
text(q3, 1.38, labels = paste0("Q3=", round(q3,2)), cex = 0.8)
x_asc <- c(lim_inf[1], lim_sup)
y_asc <- c(0, Ni_asc)
x_desc <- c(lim_inf[1], lim_sup)
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),
xlab = "", ylab = "", main = "", las = 1, xaxt = "n")
axis(1, at = breaks_vec, labels = format(round(breaks_vec,2),big.mark=","), las = 2, cex.axis = 0.75)
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)
legend("right",
legend = c("Ojiva Creciente (Ni ↑)", "Ojiva Decreciente (Ni ↓)"),
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("Producción Anual Promedio (bbl/año)", side = 1, line = 4.5, cex = 1)
mtext(
"Gráfica N°4: Ojivas Creciente y Decreciente de la Variable Producción Anual Promedio,\narrendamientos de hidrocarburos, Kansas, EE.UU.",
side = 3, line = 3, cex = 0.9, font = 2
)
Para la variable cuantitativa continua Producción Anual Promedio, se calculan todos los indicadores de tendencia central, dispersión y forma.
idx_moda <- which.max(freq_abs)
d1 <- freq_abs[idx_moda] - ifelse(idx_moda > 1, freq_abs[idx_moda - 1], 0)
d2 <- freq_abs[idx_moda] - ifelse(idx_moda < k, freq_abs[idx_moda + 1], 0)
moda_val <- lim_inf[idx_moda] + (d1 / (d1 + d2)) * c_amp
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(x[x < lim_inf_out | x > lim_sup_out])
n_outliers <- length(outliers)
indicadores <- data.frame(
Indicador = c(
"Tamaño muestral (n)", "Mínimo", "Máximo", "Rango",
"Media", "Mediana", "Moda (clase modal)",
"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(round(x_min,2)), as.character(round(x_max,2)),
as.character(round(rango_st,2)),
as.character(round(media,2)), as.character(round(mediana,2)),
as.character(round(moda_val,2)),
as.character(round(desv_std^2,2)), as.character(round(desv_std,2)),
paste0(round(cv,2),"%"),
as.character(round(q1,2)), as.character(round(q3,2)), as.character(round(iqr_val,2)),
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 Continua: Producción Anual Promedio*")) %>%
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: Fernando Almeida*")) %>%
tab_options(table.width=pct(50), 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 Continua: Producción Anual Promedio | |
| Indicador | Valor |
|---|---|
| Tamaño muestral (n) | 47,279 |
| Mínimo | 0.75 |
| Máximo | 49276.21 |
| Rango | 49275.46 |
| Media | 5714.8 |
| Mediana | 2535.67 |
| Moda (clase modal) | 2773.57 |
| Varianza (s²) | 58203271.1 |
| Desviación estándar (s) | 7629.11 |
| Coef. de variación (CV%) | 133.5% |
| Cuartil 1 (Q1) | 927.65 |
| Cuartil 3 (Q3) | 7177.01 |
| Rango intercuartílico (IQR) | 6249.37 |
| Asimetría de Pearson | 1.2501 |
| Curtosis | 8.4568 |
| Autor: Fernando Almeida | |
Los valores de Producción Anual Promedio fluctúan entre 0.75 y 4.927621^{4} (rango = 4.927546^{4} bbl/año) y giran en torno a 2535.67, con una desviación estándar de 7629.11 bbl/año, con presencia de 4659 valor(es) atípico(s), siendo un conjunto de datos heterogéneo (CV = 133.5%), cuyos valores se agrupan fuertemente (As = 1.25) en la parte baja de Producción Anual Promedio. Por lo anterior, el comportamiento es perjudicial, dado que la alta variabilidad en la producción anual refleja ciclos heterogéneos de rendimiento en la industria extractiva de Kansas.
Autor: Fernando Almeida