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: 0x0000023e523ccf90>
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 <- floor((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 = as.integer(mc),
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 | 1385 | 1.56% | 0.0156 | 89034 | 1.0000 | 1385 | 0.0156 |
| TOTAL | — | 89034 | 100.00% | 1.0000 | 89034 | 1.0000 | 89034 | 1.0000 |
Se calculan los indicadores descriptivos agrupados por categoría: rango, tendencia central, dispersión, forma y valores atípicos.
# ── 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 (As > 0, cola derecha)",
ifelse(asimetria < -0.1, "Asimétrica negativa (As < 0, cola izquierda)",
"Aproximadamente simétrica (As ≈ 0)"))
k_label <- ifelse(curtosis_val > 3, "Leptocúrtica (K > 3)",
ifelse(curtosis_val < 3, "Platicúrtica (K < 3)",
"Mesocúrtica (K ≈ 3)"))
# ── Outliers: valores fuera de los bigotes del boxplot (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 = ", ")
# ── Construcción de la tabla de indicadores (diseño vertical limpio) ──────────
indicadores <- data.frame(
Indicador = c(
"Tamaño muestral (n)",
"Mínimo",
"Máximo",
"Rango",
"Media",
"Mediana",
"Moda",
"Varianza (s\u00b2)",
"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(x_min),
as.character(x_max),
as.character(rango_val),
as.character(round(media)),
as.character(as.integer(mediana)),
as.character(moda_val),
as.character(round(desv_std^2, 2)),
as.character(round(desv_std, 2)),
paste0(round(cv, 2), "%"),
as.character(q1),
as.character(q3),
as.character(iqr_val),
as.character(round(asimetria, 4)),
as.character(round(curtosis_val, 4))
),
stringsAsFactors = FALSE
)
kable(
indicadores,
caption = "Tabla N°2: Indicadores Estadísticos de la Variable Año de Inicio de Producción, arrendamientos de hidrocarburos, Kansas, EE.UU.",
col.names = c("Indicador", "Valor"),
align = c("l", "r"),
escape = FALSE
) %>%
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) | 89,034 |
| Mínimo | 1930 |
| Máximo | 2026 |
| Rango | 96 |
| Media | 1985 |
| Mediana | 1983 |
| Moda | 1957 |
| Varianza (s²) | 381.25 |
| Desviación estándar (s) | 19.53 |
| Coef. de variación (CV%) | 0.98% |
| Cuartil 1 (Q1) | 1970 |
| Cuartil 3 (Q3) | 2003 |
| Rango intercuartílico (IQR) | 33 |
| Asimetría de Pearson | 0.2629 |
| Curtosis | 2.3369 |
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. Se añaden puntos ancla en cero al inicio y al final 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 de frecuencias 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).
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("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
)
text(q1, 1.38, labels = paste0("Q1=", q1), cex = 0.8)
text(mediana, 0.62, labels = paste0("Me=", mediana), cex = 0.8)
text(q3, 1.38, labels = paste0("Q3=", q3), cex = 0.8)
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 = 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 (As = 0.26), con mayor acumulación de arrendamientos en los primeros años del período. Por lo tanto, el comportamiento es favorable, ya que los arrendamientos presentan una actividad temporalmente consistente, lo que facilita la planificación operativa de la industria petrolera en Kansas.
Autor: Leslye Quinchiguango — Análisis Estadístico, Kansas Hydrocarbon Leases Dataset