Este bloque importa la base original de arrendamientos de hidrocarburos y verifica su estructura.
ruta_csv <- "C:/Users/luisq/OneDrive/Desktop/ESTADISTICA/kansas.csv"
datos <- read_delim(ruta_csv, delim = ";", 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): 104173
str(datos)
## spc_tbl_ [104,173 × 95] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ CODE : chr [1:104173] NA NA "28-JUL-2000 OPERATOR_NAME=COLT ENERGY INCO\"" NA ...
## $ DEPT_WATER_RESOURCES_CODE : chr [1:104173] NA NA "Whitlow Energy, Inc." NA ...
## $ DEPT_MOTOR_VEHICLES_ABBREV : chr [1:104173] NA NA NA NA ...
## $ NAME : chr [1:104173] NA NA "800" NA ...
## $ WIZARD_BASE_REFERENCE_YEAR : chr [1:104173] NA NA "23100" NA ...
## $ WIZARD_PREDEVELOPMENT_YEAR : chr [1:104173] NA NA NA NA ...
## $ UPDATE_DATE_1 : num [1:104173] NA NA 275319 NA NA ...
## $ UPDATE_INITIALS_1 : num [1:104173] NA NA 1970 NA NA NA NA NA NA NA ...
## $ ABBREVIATED_TO_4_CHARS : num [1:104173] NA NA 2026 NA NA ...
## $ KCC_DISTRICT_NUMBER : chr [1:104173] NA NA "DATA_SOURCE" NA ...
## $ OBJECTID : chr [1:104173] "42971829" "42971830" "1001106572" "42971831" ...
## $ KID : chr [1:104173] "1001106903" "1001106572" NA "1001106590" ...
## $ LEASE_NAME : chr [1:104173] "J. G. HAVENER" "EARLY" NA "ELDEN BURKE" ...
## $ FIELD_KID : chr [1:104173] "1000147101" "1000147596" NA "1000147696" ...
## $ OPERATOR_KID : chr [1:104173] "1044772773" "1041810049" "Town Oil Company Inc." "1027997289" ...
## $ LEASE_CODE_PI_BEENE : chr [1:104173] "11322" "10661" NA "10687" ...
## $ LEASE_CODE_DOR : chr [1:104173] "100743" "100416" NA "100434" ...
## $ PRODUCES_GAS : chr [1:104173] "No" "No" "NAD27" "No" ...
## $ PRODUCES_OIL : chr [1:104173] "Yes" "Yes" NA "Yes" ...
## $ STATE_CODE : chr [1:104173] "15" "15" NA "15" ...
## $ COUNTY_CODE : num [1:104173] 125 45 NA 49 49 49 49 207 31 31 ...
## $ LATITUDE : chr [1:104173] "37.132.046" "3.876.033" NA "37.482.822" ...
## $ LATITUDE_LEO_FOOTAGES : logi [1:104173] NA NA NA NA NA NA ...
## $ LATITUDE_LEO_QUARTER_CALLS : chr [1:104173] NA NA NA NA ...
## $ LATITUDE_DIRECTION : chr [1:104173] NA NA "387.603.303" NA ...
## $ LONGITUDE : chr [1:104173] "-95.882.477" "-95.157.902" "-951.579.018" "-96.298.344" ...
## $ LONGITUDE_LEO_FOOTAGES : chr [1:104173] NA NA "387.603.378" NA ...
## $ LONGITUDE_LEO_QUARTER_CALLS : chr [1:104173] NA NA "-951.581.503" NA ...
## $ LONGITUDE_DIRECTION : chr [1:104173] NA NA "312500.22" NA ...
## $ LONGITUDE_LATITUDE_SOURCE : chr [1:104173] "CENTER_OF_SECTION" "CENTER_OF_SECTION" "4292184.41" "CENTER_OF_SECTION" ...
## $ PRINCIPAL_MERIDIAN : num [1:104173] 6 6 15 6 6 6 6 6 6 6 ...
## $ TOWNSHIP : num [1:104173] 33 15 312483 29 31 ...
## $ TOWNSHIP_DIRECTION : chr [1:104173] "S" "S" "4292393.14" "S" ...
## $ RANGE : num [1:104173] 14 20 15 10 10 10 13 16 14 16 ...
## $ RANGE_DIRECTION : chr [1:104173] "E" "E" "EARLY" "E" ...
## $ SECTION : chr [1:104173] "33" "11" "BALDWIN" "34" ...
## $ SUBDIVISION_1_LARGEST : chr [1:104173] NA NA "-105.929.576.967" NA ...
## $ SUBDIVISION_2 : chr [1:104173] NA NA "46.874.008.688" NA ...
## $ SUBDIVISION_3 : chr [1:104173] NA NA NA NA ...
## $ SUBDIVISION_4_SMALLEST : chr [1:104173] NA NA NA NA ...
## $ SPOT : chr [1:104173] NA NA NA NA ...
## $ FEET_NORTH_FROM_REFERENCE : num [1:104173] NA NA NA NA NA NA NA NA NA NA ...
## $ FEET_EAST_FROM_REFERENCE : num [1:104173] NA NA NA NA NA NA NA NA NA NA ...
## $ REFERENCE_CORNER : chr [1:104173] NA NA NA NA ...
## $ MEETS_AND_BOUNDS : logi [1:104173] NA NA NA NA NA NA ...
## $ OLD_SPOT_OR_LOCATION : chr [1:104173] NA NA NA NA ...
## $ UPDATE_INITIALS : chr [1:104173] "DOR#4" "DOR" NA "DOR" ...
## $ UPDATE_DATE : chr [1:104173] "11/23/2013 3:11:58 PM" "5/31/2011 9:48:34 AM" NA "5/31/2011 9:48:35 AM" ...
## $ SKIP_IT : chr [1:104173] NA NA NA NA ...
## $ COMMENTS : chr [1:104173] NA NA NA NA ...
## $ CORRECTIONS : chr [1:104173] "28-JUL-2000 OPERATOR_NAME=HORTON OIL COMPA" "06-FEB-1999 LEASE_NAME=EARLY S." NA "28-JUL-2000 OPERATOR_NAME=DENTON OIL COMPA" ...
## $ OPERATOR_NAME : chr [1:104173] "Horton, John" NA NA "Suerte Oil Company" ...
## $ PRODUCING_FORMATION : chr [1:104173] NA NA NA NA ...
## $ DEPTH_OF_WELL : num [1:104173] 700 NA NA 1400 NA ...
## $ FIELD_CODE_DOR : num [1:104173] 63550 NA NA 25250 10800 ...
## $ DATA_SOURCE : chr [1:104173] NA NA NA NA ...
## $ CUMULATIVE_PRODUCTION : num [1:104173] 47293 NA NA 82624 10518 ...
## $ CUMULATIVE_YEAR_STARTED : num [1:104173] 1970 NA NA 1970 1971 ...
## $ CUMULATIVE_YEAR_ENDED : num [1:104173] 2025 NA NA 2017 1983 ...
## $ FIELD_KID_SOURCE : chr [1:104173] "DATA_SOURCE" NA NA "DATA_SOURCE" ...
## $ LEASE_KID : num [1:104173] 1e+09 NA NA 1e+09 1e+09 ...
## $ LEASE_KID_SOURCE : logi [1:104173] NA NA NA NA NA NA ...
## $ PRODUCING_FORMATION_OLD : chr [1:104173] NA NA NA NA ...
## $ QUARTER_CALLS_SOURCE : chr [1:104173] NA NA NA NA ...
## $ OPERATOR_NAME_OLD : chr [1:104173] "Horton Oil Company, Inc." NA NA "Suerte Oil Company" ...
## $ PRODUCING_FORMATION_STRAT_KID: num [1:104173] NA NA NA NA NA NA NA NA NA NA ...
## $ PRODUCING_FORMATION_SOURCE : chr [1:104173] NA NA NA NA ...
## $ LONGITUDE_LATITUDE_DATUM : chr [1:104173] "NAD27" NA NA "NAD27" ...
## $ GPS_LATITUDE : logi [1:104173] NA NA NA NA NA NA ...
## $ GPS_LONGITUDE : logi [1:104173] NA NA NA NA NA NA ...
## $ GPS_DATUM : logi [1:104173] NA NA NA NA NA NA ...
## $ GPS_SOURCE : logi [1:104173] NA NA NA NA NA NA ...
## $ GPS_DATE : logi [1:104173] NA NA NA NA NA NA ...
## $ GPS_ACCURACY_COMMENTS : logi [1:104173] NA NA NA NA NA NA ...
## $ NAD27_LATITUDE : chr [1:104173] "371.320.458" NA NA "374.828.223" ...
## $ NAD27_LONGITUDE : chr [1:104173] "-95.882.477" NA NA "-962.983.435" ...
## $ NAD83_LATITUDE : chr [1:104173] "371.321.146" NA NA "374.828.544" ...
## $ NAD83_LONGITUDE : chr [1:104173] "-958.827.371" NA NA "-96.298.619" ...
## $ NAD27_UTM_X : num [1:104173] 243937 NA NA 738884 741149 ...
## $ NAD27_UTM_Y : num [1:104173] 4113207 NA NA 4151660 4132923 ...
## $ NAD27_UTM_ZONE : num [1:104173] 15 NA NA 14 14 14 15 15 15 15 ...
## $ NAD83_UTM_X : num [1:104173] 243920 NA NA 738853 741119 ...
## $ NAD83_UTM_Y : num [1:104173] 4113419 NA NA 4151867 4133131 ...
## $ NAD83_UTM_ZONE : num [1:104173] 15 NA NA 14 14 14 15 15 15 15 ...
## $ LEASE_NAME_DOR : chr [1:104173] "HAVENER,J.G." NA NA "ELDEN BURKE" ...
## $ FIELD_NAME : chr [1:104173] "WAYSIDE-HAVANA" NA NA "DUNKLEBERGER" ...
## $ x : chr [1:104173] "-106.736.183.151" NA NA "-107.199.141.514" ...
## $ y : chr [1:104173] "44.575.388.408" NA NA "45.066.267.765" ...
## $ ...89 : logi [1:104173] NA NA NA NA NA NA ...
## $ ...90 : logi [1:104173] NA NA NA NA NA NA ...
## $ ...91 : logi [1:104173] NA NA NA NA NA NA ...
## $ ...92 : logi [1:104173] NA NA NA NA NA NA ...
## $ ...93 : logi [1:104173] NA NA NA NA NA NA ...
## $ ...94 : logi [1:104173] NA NA NA NA NA NA ...
## $ ...95 : logi [1:104173] NA NA NA NA NA NA ...
## - attr(*, "spec")=
## .. cols(
## .. CODE = col_character(),
## .. DEPT_WATER_RESOURCES_CODE = col_character(),
## .. DEPT_MOTOR_VEHICLES_ABBREV = col_character(),
## .. NAME = col_character(),
## .. WIZARD_BASE_REFERENCE_YEAR = col_character(),
## .. WIZARD_PREDEVELOPMENT_YEAR = col_character(),
## .. UPDATE_DATE_1 = col_double(),
## .. UPDATE_INITIALS_1 = col_double(),
## .. ABBREVIATED_TO_4_CHARS = col_double(),
## .. KCC_DISTRICT_NUMBER = col_character(),
## .. OBJECTID = col_character(),
## .. KID = col_character(),
## .. LEASE_NAME = col_character(),
## .. FIELD_KID = col_character(),
## .. OPERATOR_KID = col_character(),
## .. LEASE_CODE_PI_BEENE = col_character(),
## .. LEASE_CODE_DOR = col_character(),
## .. PRODUCES_GAS = col_character(),
## .. PRODUCES_OIL = col_character(),
## .. STATE_CODE = col_character(),
## .. COUNTY_CODE = col_double(),
## .. LATITUDE = col_character(),
## .. LATITUDE_LEO_FOOTAGES = col_logical(),
## .. LATITUDE_LEO_QUARTER_CALLS = col_character(),
## .. LATITUDE_DIRECTION = col_character(),
## .. LONGITUDE = col_character(),
## .. LONGITUDE_LEO_FOOTAGES = col_character(),
## .. LONGITUDE_LEO_QUARTER_CALLS = col_character(),
## .. LONGITUDE_DIRECTION = col_character(),
## .. LONGITUDE_LATITUDE_SOURCE = col_character(),
## .. PRINCIPAL_MERIDIAN = col_double(),
## .. TOWNSHIP = col_double(),
## .. TOWNSHIP_DIRECTION = col_character(),
## .. RANGE = col_double(),
## .. RANGE_DIRECTION = col_character(),
## .. SECTION = col_character(),
## .. SUBDIVISION_1_LARGEST = col_character(),
## .. SUBDIVISION_2 = col_character(),
## .. SUBDIVISION_3 = col_character(),
## .. SUBDIVISION_4_SMALLEST = col_character(),
## .. SPOT = col_character(),
## .. FEET_NORTH_FROM_REFERENCE = col_double(),
## .. FEET_EAST_FROM_REFERENCE = col_double(),
## .. REFERENCE_CORNER = col_character(),
## .. MEETS_AND_BOUNDS = col_logical(),
## .. OLD_SPOT_OR_LOCATION = col_character(),
## .. UPDATE_INITIALS = col_character(),
## .. UPDATE_DATE = col_character(),
## .. SKIP_IT = col_character(),
## .. COMMENTS = col_character(),
## .. CORRECTIONS = col_character(),
## .. OPERATOR_NAME = col_character(),
## .. PRODUCING_FORMATION = col_character(),
## .. DEPTH_OF_WELL = col_double(),
## .. FIELD_CODE_DOR = col_double(),
## .. DATA_SOURCE = col_character(),
## .. CUMULATIVE_PRODUCTION = col_double(),
## .. CUMULATIVE_YEAR_STARTED = col_double(),
## .. CUMULATIVE_YEAR_ENDED = col_double(),
## .. FIELD_KID_SOURCE = col_character(),
## .. LEASE_KID = col_double(),
## .. LEASE_KID_SOURCE = col_logical(),
## .. PRODUCING_FORMATION_OLD = col_character(),
## .. QUARTER_CALLS_SOURCE = col_character(),
## .. OPERATOR_NAME_OLD = col_character(),
## .. PRODUCING_FORMATION_STRAT_KID = col_double(),
## .. PRODUCING_FORMATION_SOURCE = col_character(),
## .. LONGITUDE_LATITUDE_DATUM = col_character(),
## .. GPS_LATITUDE = col_logical(),
## .. GPS_LONGITUDE = col_logical(),
## .. GPS_DATUM = col_logical(),
## .. GPS_SOURCE = col_logical(),
## .. GPS_DATE = col_logical(),
## .. GPS_ACCURACY_COMMENTS = col_logical(),
## .. NAD27_LATITUDE = col_character(),
## .. NAD27_LONGITUDE = col_character(),
## .. NAD83_LATITUDE = col_character(),
## .. NAD83_LONGITUDE = col_character(),
## .. NAD27_UTM_X = col_double(),
## .. NAD27_UTM_Y = col_double(),
## .. NAD27_UTM_ZONE = col_double(),
## .. NAD83_UTM_X = col_double(),
## .. NAD83_UTM_Y = col_double(),
## .. NAD83_UTM_ZONE = col_double(),
## .. LEASE_NAME_DOR = col_character(),
## .. FIELD_NAME = col_character(),
## .. x = col_character(),
## .. y = col_character(),
## .. ...89 = col_logical(),
## .. ...90 = col_logical(),
## .. ...91 = col_logical(),
## .. ...92 = col_logical(),
## .. ...93 = col_logical(),
## .. ...94 = col_logical(),
## .. ...95 = col_logical()
## .. )
## - attr(*, "problems")=<pointer: 0x00000191db6d0ec0>
La variable CUMULATIVE_YEAR_STARTED registra el año en que inició la producción acumulada de cada arrendamiento. Al tratarse de un año calendario expresado como número entero contable, se clasifica como variable cuantitativa discreta. Se filtran únicamente valores válidos en el rango 1930–2026.
x_raw <- datos %>%
mutate(ANIO = suppressWarnings(as.integer(CUMULATIVE_YEAR_STARTED))) %>%
filter(!is.na(ANIO), ANIO >= 1930, ANIO <= 2026) %>%
pull(ANIO)
n_unique <- length(unique(x_raw))
cat("Observaciones válidas:", length(x_raw), "\n")
## Observaciones válidas: 89034
cat("Valores únicos:", n_unique, "\n")
## Valores únicos: 95
cat("Como hay", n_unique, "> 10 valores únicos, se agrupa en intervalos de clase (máx. 10).\n")
## Como hay 95 > 10 valores únicos, se agrupa en intervalos de clase (máx. 10).
| Criterio | Clasificación |
|---|---|
| Tipo | Cuantitativa Discreta (agrupada — valores enteros, más de 10 únicos) |
| Escala | De intervalo |
| Variable | CUMULATIVE_YEAR_STARTED (año de inicio de producción) |
| Rango | 1930 – 2026 |
| Fuente | Kansas Geological Survey – Kansas, EE.UU. |
Justificación: El año de inicio de producción es un valor entero contable (no admite fracciones de año), por lo que constituye una variable cuantitativa discreta. Presenta 95 valores únicos dentro de un rango de 96 años, superando el umbral de 10 valores distintos; por convención estadística se agrupa en intervalos de clase con un máximo de 10 intervalos. La escala es de intervalo, ya que el año 0 no representa ausencia de tiempo.
\[k = 10 \quad \text{(máximo permitido)} \qquad c = \left\lceil \frac{\max - \min}{k} \right\rceil\]
Nota metodológica: Para variables discretas agrupadas se aplica el mismo criterio de máximo 10 intervalos. 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.
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 = 89034 | k = 10 | Rango = 96 | Amplitud c = 10
lim_inf <- x_min + (0:(k - 1)) * c_amp
lim_sup <- lim_inf + c_amp
lim_sup[k] <- x_max + 1
mc <- (lim_inf + lim_sup) / 2
breaks_vec <- c(lim_inf, lim_sup[k])
Se construye la tabla de distribución de frecuencias de la variable cuantitativa discreta agrupada Año de Inicio de Producción, correspondiente a los arrendamientos de hidrocarburos de Kansas, EE.UU., período 1930–2026 (n = 89,034).
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 = round(mc, 1),
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
) %>%
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_df, total_row)
kable(
tabla_final,
caption = paste0(
"Tabla N°1: Distribución de Frecuencias de la Variable Cuantitativa Discreta Agrupada ",
"Año de Inicio de Producción (CUMULATIVE_YEAR_STARTED), ",
"arrendamientos de hidrocarburos, Kansas, EE.UU., ",
"período 1930–2026 (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) |
|---|---|---|---|---|---|---|---|---|
| [1930 – 1940) | 1935 | 1080 | 1.21% | 0.0121 | 1080 | 0.0121 | 89034 | 1.0000 |
| [1940 – 1950) | 1945 | 2157 | 2.42% | 0.0242 | 3237 | 0.0364 | 87954 | 0.9879 |
| [1950 – 1960) | 1955 | 7205 | 8.09% | 0.0809 | 10442 | 0.1173 | 85797 | 0.9636 |
| [1960 – 1970) | 1965 | 10328 | 11.60% | 0.1160 | 20770 | 0.2333 | 78592 | 0.8827 |
| [1970 – 1980) | 1975 | 13844 | 15.55% | 0.1555 | 34614 | 0.3888 | 68264 | 0.7667 |
| [1980 – 1990) | 1985 | 19406 | 21.80% | 0.2180 | 54020 | 0.6067 | 54420 | 0.6112 |
| [1990 – 2000) | 1995 | 10447 | 11.73% | 0.1173 | 64467 | 0.7241 | 35014 | 0.3933 |
| [2000 – 2010) | 2005 | 13832 | 15.54% | 0.1554 | 78299 | 0.8794 | 24567 | 0.2759 |
| [2010 – 2020) | 2015 | 9350 | 10.50% | 0.1050 | 87649 | 0.9844 | 10735 | 0.1206 |
| [2020 – 2026] | 2023.5 | 1385 | 1.56% | 0.0156 | 89034 | 1.0000 | 1385 | 0.0156 |
| TOTAL | — | 89034 | 100.00% | 1.0000 | 89034 | 1.0000 | 89034 | 1.0000 |
En este bloque se calculan los indicadores descriptivos de la variable: rango, tendencia central (media, moda y mediana), dispersión (desviación estándar y coeficiente de variación), forma (asimetría y curtosis) y valores atípicos detectados mediante el criterio del boxplot (1.5 × IQR).
# Tendencia central
media <- mean(x)
mediana <- median(x)
moda_val <- as.integer(names(sort(table(x), decreasing = TRUE)[1]))
# Dispersión
desv_std <- sd(x)
cv <- (desv_std / media) * 100
cv_label <- ifelse(cv <= 33, "Homogéneo (CV ≤ 33%)", "Heterogéneo (CV > 33%)")
# Cuartiles e IQR
q1 <- as.numeric(quantile(x, 0.25))
q3 <- as.numeric(quantile(x, 0.75))
iqr_val <- IQR(x)
# Forma
asimetria <- (3 * (media - mediana)) / desv_std
curtosis_val <- (sum((x - media)^4) / length(x)) / (desv_std^4)
as_label <- ifelse(asimetria > 0.1,
"Asimétrica positiva (cola derecha)",
ifelse(asimetria < -0.1,
"Asimétrica negativa (cola izquierda)",
"Aproximadamente simétrica"))
k_label <- ifelse(curtosis_val > 3, "Leptocúrtica (K > 3)",
ifelse(curtosis_val < 3, "Platicúrtica (K < 3)", "Mesocúrtica (K ≈ 3)"))
# Outliers (método boxplot: fuera de 1.5 × IQR)
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 = ", ")
}
# Tabla de indicadores
indicadores <- data.frame(
Indicador = c(
"Tamaño muestral (n)",
"Rango [Mín – Máx]",
"Media (x̄)",
"Mediana (Me)",
"Moda (Mo)",
"Desviación estándar (s)",
paste0("Coef. de variación (CV%) — ", cv_label),
paste0("Asimetría de Pearson — ", as_label),
paste0("Curtosis — ", k_label),
"Valores atípicos (Outliers)"
),
Valor = c(
format(length(x), big.mark = ","),
paste0(x_min, " – ", x_max, " (amplitud: ", rango_val, " años)"),
round(media, 2),
mediana,
moda_val,
round(desv_std, 2),
paste0(round(cv, 2), "%"),
round(asimetria, 4),
round(curtosis_val, 4),
outliers_str
),
stringsAsFactors = FALSE
)
kable(
indicadores,
caption = "Tabla N°2: Indicadores Estadísticos — Año de Inicio de Producción, 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") %>%
row_spec(nrow(indicadores), bold = TRUE, background = "#f0e8d0", color = "black")
| Indicador | Valor |
|---|---|
| Tamaño muestral (n) | 89,034 |
| Rango [Mín – Máx] | 1930 – 2026 (amplitud: 96 años) |
| Media (x̄) |
1984.71
|
Este gráfico muestra la cantidad de arrendamientos iniciados por período de tiempo (décadas).
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 = 2, cex.axis = 0.85)
mtext("Frecuencia Absoluta (ni)", side = 2, line = 4.5, cex = 1)
mtext("Año de inicio de producción", side = 1, line = 4.2, cex = 1)
mtext(
"Gráfica N°1: Histograma de Frecuencias Absolutas — Año de Inicio de Producción,\narrendamientos de hidrocarburos, Kansas, EE.UU., período 1930–2026.",
side = 3, line = 3, cex = 0.9, font = 2
)
El polígono de frecuencias se construye sobre el histograma, uniendo con una línea continua las marcas de clase de cada intervalo. Se añaden puntos ancla en cero (un intervalo antes del primero y uno después del último) para cerrar correctamente el polígono.
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))
# Histograma de fondo
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 = 2, cex.axis = 0.85)
# Polígono encima
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("Año de inicio de producción", side = 1, line = 4.2, cex = 1)
mtext(
"Gráfica N°2: Polígono de Frecuencias — Año de Inicio de Producción,\narrendamientos de hidrocarburos, Kansas, EE.UU., período 1930–2026.",
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)
El boxplot muestra la caja central (Q1–Q3), la mediana, la media y los valores atípicos que aparecen como puntos fuera de los bigotes (criterio 1.5 × IQR).
bxp_stats <- boxplot.stats(x)
bigote_inf <- bxp_stats$stats[1]
bigote_sup <- bxp_stats$stats[5]
par(mar = c(5, 4, 6, 3))
boxplot(x,
col = "gray75",
border = "black",
horizontal = TRUE,
outline = TRUE,
pch = 16,
cex = 0.5,
main = "",
xlab = "",
ylab = "",
xlim = c(x_min - 8, x_max + 8))
text(q1, 1.32, labels = paste0("Q1 = ", q1), cex = 0.78, font = 2)
text(mediana, 0.67, labels = paste0("Me = ", mediana), cex = 0.78, font = 2)
text(q3, 1.32, labels = paste0("Q3 = ", q3), cex = 0.78, font = 2)
abline(v = media, col = "black", lty = 2, lwd = 1.5)
text(media, 1.48, labels = paste0("x\u0305 = ", round(media, 1)),
cex = 0.75, col = "black")
text(bigote_inf, 0.67, labels = paste0("Bíg.inf = ", bigote_inf),
cex = 0.72, col = "gray30", pos = 2)
text(bigote_sup, 0.67, labels = paste0("Bíg.sup = ", bigote_sup),
cex = 0.72, col = "gray30", pos = 4)
mtext("Año de inicio de producción", side = 1, line = 3.5, cex = 1)
mtext(
"Gráfica N°3: Boxplot — Año de Inicio de Producción,\narrendamientos de hidrocarburos, Kansas, EE.UU., período 1930–2026.",
side = 3, line = 3, cex = 0.9, font = 2
)
Las ojivas creciente y decreciente se presentan en una única gráfica. El punto de cruce entre ambas curvas corresponde a la mediana de la distribución (año 1983).
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) - 2, max(x_asc) + 2),
xlab = "", ylab = "", main = "",
las = 1, xaxt = "n")
axis(1, at = breaks_vec, labels = breaks_vec, las = 2, cex.axis = 0.85)
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 + 1.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("Año de inicio de producción", side = 1, line = 4.2, cex = 1)
mtext(
"Gráfica N°4: Ojivas Creciente y Decreciente — Año de Inicio de Producción,\narrendamientos de hidrocarburos, Kansas, EE.UU., período 1930–2026.",
side = 3, line = 3, cex = 0.9, font = 2
)
La variable Año de Inicio de Producción fluctúa entre 1930 y 2026 (rango de 96 años) y sus valores varían en torno a 1983, con una desviación estándar de 19.53 años, siendo un grupo de valores homogéneo (CV = 0.98%), sin presencia de valores atípicos. El conjunto de valores se concentra a la derecha (asimetría positiva), lo que indica que la mayoría de los arrendamientos se concentran en los primeros años del período, con una cola que se extiende hacia años más recientes; la curtosis es platicúrtica (K < 3), con una distribución uniforme y sin picos pronunciados de actividad. Por lo tanto, el comportamiento es favorable, ya que la actividad de inicio de producción es consistente y concentrada temporalmente, reflejando períodos estables de desarrollo de la industria petrolera en Kansas.
Autor: Leslye Quinchiguango — Análisis Estadístico, Kansas Hydrocarbon Leases Dataset