Distribución Temporal del Año de Inicio de Producción de Hidrocarburos en Kansas


1. Cargar datos

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>

2. Extracción y Limpieza de la Variable

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

3. Identificación de la Variable

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.


4. Determinación de los Intervalos

\[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])

5. Tabla de Distribución de Frecuencias

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")
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 = 89,034 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)
[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

6. Indicadores Estadísticos

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")
Tabla N°2: Indicadores Estadísticos de la Variable Año de Inicio de Producción, arrendamientos de hidrocarburos, Kansas, EE.UU.
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

7. Representación Gráfica

7.1 Gráfica N°1 — Histograma de Frecuencias Absolutas

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
)

7.2 Gráfica N°2 — Polígono de Frecuencias

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)

7.3 Gráfica N°3 — Boxplot

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)

7.4 Gráfica N°4 — Ojivas Creciente y Decreciente

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
)


8. Conclusiones

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