1. Cargar Librerías

library(readr); library(dplyr); library(gt); library(MASS)
cat("Librerías cargadas correctamente.\n")
## Librerías cargadas correctamente.

2. Cargar Datos

ruta_csv <- file.choose()
datos    <- read_csv(ruta_csv, show_col_types = FALSE)
cat("Archivo:", basename(ruta_csv), "| Filas:", nrow(datos), "\n")
## Archivo: oil_and_gas_leases_data .csv | Filas: 47757

3. Conteo

x_raw <- datos %>%
  mutate(SEC = suppressWarnings(as.integer(SECTION))) %>%
  filter(!is.na(SEC), SEC >= 1, SEC <= 36) %>%
  pull(SEC)

n_conteo  <- length(x_raw)
k_sturges <- ceiling(1 + 3.322 * log10(n_conteo))

cat("Observaciones válidas:", n_conteo, "\n")
## Observaciones válidas: 47757
cat("Clases (Regla de Sturges):", k_sturges, "\n")
## Clases (Regla de Sturges): 17
cat("Mínimo:", min(x_raw), "| Máximo:", max(x_raw), "\n")
## Mínimo: 1 | Máximo: 36

4. Tabla de Distribución de Frecuencias

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("[", lim_inf, " - ", lim_sup, ")")
etiq[k]        <- paste0("[", lim_inf[k], " - ", lim_sup[k]-1, "]")

bind_rows(
  data.frame(Intervalo=etiq, MC=as.integer(mc), 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_integer_, 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\u00b01: Distribución de Frecuencias**"),
             subtitle = md(paste0("*Variable Cuantitativa Discreta Agrupada: Secci\u00f3n, ",
                                  "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: Leslye Quinchiguango*")) %>%
  tab_options(table.width=pct(100), table.font.size=px(13), data_row.padding=px(6))
Tabla N°1: Distribución de Frecuencias
Variable Cuantitativa Discreta Agrupada: Sección, Kansas (n = 47,757)
Intervalo MC ni hi% hi Ni (asc) Hi (asc) Ni (desc) Hi (desc)
[1 - 5) 3 5445 11.40 0.1140 5445 0.1140 47757 1.0000
[5 - 9) 7 5254 11.00 0.1100 10699 0.2240 42312 0.8860
[9 - 13) 11 5363 11.23 0.1123 16062 0.3363 37058 0.7760
[13 - 17) 15 5454 11.42 0.1142 21516 0.4505 31695 0.6637
[17 - 21) 19 5349 11.20 0.1120 26865 0.5625 26241 0.5495
[21 - 25) 23 5272 11.04 0.1104 32137 0.6729 20892 0.4375
[25 - 29) 27 5226 10.94 0.1094 37363 0.7824 15620 0.3271
[29 - 33) 31 5110 10.70 0.1070 42473 0.8894 10394 0.2176
[33 - 36] 35 5284 11.06 0.1106 47757 1.0000 5284 0.1106
TOTAL - 47757 100.00 1.0000 47757 1.0000 47757 1.0000
Autor: Leslye Quinchiguango

5. Gráfico Histograma General

grises        <- gray(seq(0.25, 0.80, length.out=k))
h_obj         <- hist(x, breaks=breaks_vec, plot=FALSE)
h_obj$density <- hi_dec

par(mar=c(5,6,6,2))
plot(h_obj, col=grises, border="black", freq=FALSE,
     main="", xlab="", ylab="", las=1, xaxt="n")
axis(1, at=breaks_vec, labels=breaks_vec, las=1, cex.axis=0.9)
mtext("Densidad de Probabilidad", side=2, line=4.5, cex=1)
mtext("Secci\u00f3n",            side=1, line=3.5, cex=1)
mtext("Histograma General \u2014 Secci\u00f3n, arrendamientos de hidrocarburos, Kansas, EE.UU.",
      side=3, line=3, cex=0.95, font=2)

6. Conjetura

El histograma de la variable Sección muestra barras de altura prácticamente idéntica en todos los intervalos, sin concentración ni cola en ningún extremo. Este comportamiento es la característica definitoria de una distribución Uniforme Continua, donde todos los valores tienen la misma probabilidad de ocurrencia. Se ajusta un único modelo Uniforme sobre toda la distribución con parámetros \(\hat{a} = \min(x)\) y \(\hat{b} = \max(x)\).

\[f(x) = \frac{1}{\hat{b} - \hat{a}}, \qquad \hat{a} \leq x \leq \hat{b}\]

a_hat <- x_min
b_hat <- x_max

densidad_unif <- 1 / (b_hat - a_hat)

cat("=== Modelo Uniforme Continua ===\n")
## === Modelo Uniforme Continua ===
cat("\u00e2 (mínimo) :", a_hat, "\n")
## â (mínimo) : 1
cat("b\u0302 (máximo) :", b_hat, "\n")
## b̂ (máximo) : 36
cat("f(x) = 1/(b\u0302 - \u00e2) :", round(densidad_unif, 6), "\n")
## f(x) = 1/(b̂ - â) : 0.028571
h_plot        <- hist(x, breaks=breaks_vec, plot=FALSE)
h_plot$density <- hi_dec

xs <- seq(a_hat - 1, b_hat + 1, length.out=500)
ys <- dunif(xs, min=a_hat, max=b_hat) * c_amp

par(mar=c(5,6,6,2))
plot(h_plot, col=grises, border="black", freq=FALSE,
     ylim=c(0, max(c(hi_dec, ys)) * 1.30),
     main="", xlab="", ylab="", las=1, xaxt="n")
axis(1, at=breaks_vec, labels=breaks_vec, las=1, cex.axis=0.9)
lines(xs, ys, col="black", lwd=2.5)
mtext("Densidad de Probabilidad", side=2, line=4.5, cex=1)
mtext("Secci\u00f3n",            side=1, line=3.5, cex=1)
mtext(paste0("Gráfica N\u00b02: Histograma con Curva Uniforme",
             " (\u00e2 = ", a_hat, ", b\u0302 = ", b_hat, ") \u2014 Secci\u00f3n"),
      side=3, line=3, cex=0.9, font=2)
legend("topright",
       legend=c("Histograma",
                paste0("Uniforme(\u00e2=", a_hat, ", b\u0302=", b_hat, ")")),
       fill=c("gray55",NA), border=c("black",NA),
       lty=c(NA,1), lwd=c(NA,2.5), bty="n", cex=0.85)

7. Cálculo de Parámetros y Probabilidades

# ── Parámetros de la Uniforme ─────────────────────────────────────────────────
media_teo <- (a_hat + b_hat) / 2
var_teo   <- (b_hat - a_hat)^2 / 12
sd_teo    <- sqrt(var_teo)

cat("=== Parámetros Uniforme Continua ===\n")
## === Parámetros Uniforme Continua ===
cat("\u00e2 (mínimo)          :", a_hat, "\n")
## â (mínimo)          : 1
cat("b\u0302 (máximo)          :", b_hat, "\n")
## b̂ (máximo)          : 36
cat("f(x) = 1/(b\u0302-\u00e2)  :", round(densidad_unif, 6), "\n")
## f(x) = 1/(b̂-â)  : 0.028571
cat("E[X] = (a+b)/2      :", round(media_teo, 4), "\n")
## E[X] = (a+b)/2      : 18.5
cat("V[X] = (b-a)²/12    :", round(var_teo,   4), "\n")
## V[X] = (b-a)²/12    : 102.0833
cat("\u03c3  = \u221a(V[X])         :", round(sd_teo,    4), "\n")
## σ  = √(V[X])         : 10.1036
# ── Tabla de parámetros ───────────────────────────────────────────────────────
data.frame(
  Parametro = c(
    "\u00e2 = mínimo de la variable",
    "b\u0302 = máximo de la variable",
    "f(x) = 1 / (b\u0302 \u2212 \u00e2)",
    "E[X] = (\u00e2 + b\u0302) / 2",
    "V[X] = (b\u0302 \u2212 \u00e2)\u00b2 / 12",
    "\u03c3 = \u221a(V[X])"
  ),
  Valor = c(
    as.character(a_hat),
    as.character(b_hat),
    round(densidad_unif, 6),
    round(media_teo,     4),
    round(var_teo,       4),
    round(sd_teo,        4)
  )
) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N\u00b02: Parámetros del Modelo Uniforme Continua**"),
    subtitle = md("*Variable Secci\u00f3n \u2014 Kansas, EE.UU.*")
  ) %>%
  cols_label(Parametro=md("**Parámetro**"), Valor=md("**Valor**")) %>%
  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,6,by=2))) %>%
  tab_source_note(source_note=md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(table.width=pct(75), heading.title.font.size=px(15),
              heading.subtitle.font.size=px(11), table.font.size=px(13),
              data_row.padding=px(6))
Tabla N°2: Parámetros del Modelo Uniforme Continua
Variable Sección — Kansas, EE.UU.
Parámetro Valor
â = mínimo de la variable 1
b̂ = máximo de la variable 36
f(x) = 1 / (b̂ − â) 0.028571
E[X] = (â + b̂) / 2 18.5
V[X] = (b̂ − â)² / 12 102.0833
σ = √(V[X]) 10.1036
Autor: Leslye Quinchiguango
# ── Probabilidades bajo Uniforme(a, b) ───────────────────────────────────────
# P(X < 9): secciones en el primer cuarto del rango
p_a <- punif(9,  min=a_hat, max=b_hat)

# P(9 ≤ X < 25): secciones en el tramo central
p_b <- punif(25, min=a_hat, max=b_hat) - punif(9, min=a_hat, max=b_hat)

# P(X ≥ 25): secciones en el último cuarto del rango
p_c <- punif(25, min=a_hat, max=b_hat, lower.tail=FALSE)

# P(13 ≤ X < 21): intervalo alrededor de la mediana
p_d <- punif(21, min=a_hat, max=b_hat) - punif(13, min=a_hat, max=b_hat)

data.frame(
  Evento = c(
    "P(X < 9)",
    "P(9 \u2264 X < 25)",
    "P(X \u2265 25)",
    "P(13 \u2264 X < 21)"
  ),
  Descripcion = c(
    "Sección en el primer cuarto del rango territorial",
    "Sección en el tramo central del rango",
    "Sección en el último cuarto del rango territorial",
    "Sección alrededor de la mediana del rango"
  ),
  Probabilidad = round(c(p_a, p_b, p_c, p_d), 4)
) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N\u00b03: Cálculo de Probabilidades**"),
    subtitle = md("*La probabilidad es el área bajo la curva del modelo teórico \u2014 Variable Secci\u00f3n*")
  ) %>%
  cols_label(Evento=md("**Evento**"), Descripcion=md("**Descripción**"),
             Probabilidad=md("**Probabilidad**")) %>%
  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,4,by=2))) %>%
  tab_source_note(source_note=md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(table.width=pct(92), table.font.size=px(13),
              heading.title.font.size=px(15), heading.subtitle.font.size=px(11),
              data_row.padding=px(6))
Tabla N°3: Cálculo de Probabilidades
La probabilidad es el área bajo la curva del modelo teórico — Variable Sección
Evento Descripción Probabilidad
P(X < 9) Sección en el primer cuarto del rango territorial 0.2286
P(9 ≤ X < 25) Sección en el tramo central del rango 0.4571
P(X ≥ 25) Sección en el último cuarto del rango territorial 0.3143
P(13 ≤ X < 21) Sección alrededor de la mediana del rango 0.2286
Autor: Leslye Quinchiguango
set.seed(42)

# ── Pearson ───────────────────────────────────────────────────────────────────
mc_vals  <- (head(breaks_vec,-1) + tail(breaks_vec,-1)) / 2
hi_teo   <- rep(1/k, k)   # uniforme: cada intervalo tiene la misma proporcion
hi_obs   <- freq_abs / n
pearson  <- round(cor(hi_obs, hi_teo) * 100, 2)

# ── Kolmogorov-Smirnov ────────────────────────────────────────────────────────
samp     <- sample(x, size=min(400, n), replace=FALSE)
ks_res   <- ks.test(samp, "punif", min=a_hat, max=b_hat)
ks_pval  <- round(ks_res$p.value, 4)
val      <- ifelse(pearson > 70, "APROBADO", "RECHAZADO")

cat("Pearson R%  :", pearson, "%\n")
## Pearson R%  : NA %
cat("KS p-valor  :", ks_pval, "\n")
## KS p-valor  : 0.5912
cat("Validación  :", val, "\n")
## Validación  : NA
data.frame(
  Modelo     = "Uniforme Continua",
  Pearson_R  = pearson,
  KS_pvalor  = ks_pval,
  Validacion = val
) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N\u00b04: Resumen de Validación del Modelo**"),
    subtitle = md("*Pearson (R%) y Kolmogorov-Smirnov (p-valor) \u2014 Variable Secci\u00f3n*")
  ) %>%
  cols_label(Modelo=md("**Modelo**"), Pearson_R=md("**Pearson (R %)**"),
             KS_pvalor=md("**K-S (p-valor)**"), Validacion=md("**Validación**")) %>%
  tab_style(style=list(cell_fill(color="#2C2C2C"),cell_text(color="white",weight="bold")),
            locations=cells_column_labels()) %>%
  tab_style(style=list(cell_fill(color="#2C2C2C"),cell_text(color="white",weight="bold")),
            locations=cells_title(groups="title")) %>%
  tab_style(style=cell_text(color="darkgreen",weight="bold"),
            locations=cells_body(columns=Validacion, rows=Validacion=="APROBADO")) %>%
  tab_style(style=cell_text(color="darkred",weight="bold"),
            locations=cells_body(columns=Validacion, rows=Validacion=="RECHAZADO")) %>%
  tab_style(style=cell_borders(sides="bottom",color="#E0E0E0",weight=px(1)),
            locations=cells_body(rows=everything())) %>%
  cols_align(align="center", columns=c(Pearson_R, KS_pvalor, Validacion)) %>%
  cols_align(align="left",   columns=Modelo) %>%
  fmt_number(columns=Pearson_R, decimals=2) %>%
  fmt_number(columns=KS_pvalor, decimals=4) %>%
  tab_source_note(source_note=md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(table.width=pct(80), table.font.size=px(13),
              heading.title.font.size=px(15), heading.subtitle.font.size=px(11),
              data_row.padding=px(6),
              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°4: Resumen de Validación del Modelo
Pearson (R%) y Kolmogorov-Smirnov (p-valor) — Variable Sección
Modelo Pearson (R %) K-S (p-valor) Validación
Uniforme Continua NA 0.5912 NA
Autor: Leslye Quinchiguango

8. Intervalo de Confianza

El Intervalo de Confianza estima el rango dentro del cual se encuentra la verdadera media poblacional de Sección con un nivel de confianza del 95%. El Teorema Central del Límite garantiza que la distribución de las medias muestrales tiende a la normalidad dado el volumen de datos (\(n=\) 47,757).

\[E = \frac{\sigma}{\sqrt{n}}\]

media_muestral <- mean(x)
desv_est       <- sd(x)
n_total        <- length(x)
z_95           <- 1.96
error_est      <- desv_est / sqrt(n_total)
margen         <- z_95 * error_est
lim_inf_ic     <- media_muestral - margen
lim_sup_ic     <- media_muestral + margen

data.frame(
  Parametro      = "Secci\u00f3n Promedio Kansas",
  Lim_Inferior   = round(lim_inf_ic,    4),
  Media_Muestral = round(media_muestral, 4),
  Lim_Superior   = round(lim_sup_ic,    4),
  Error_Estandar = paste0("+/- ", round(margen, 4)),
  Confianza      = "95% (Z = 1.96)",
  stringsAsFactors = FALSE
) %>%
  gt() %>%
  tab_header(
    title    = md("**TABLA N\u00b0 5: ESTIMACIÓN DE LA MEDIA POBLACIONAL**"),
    subtitle = md("*Inferencia Estadística para la Variable Secci\u00f3n*")
  ) %>%
  cols_label(
    Parametro      = md("**Parámetro**"),
    Lim_Inferior   = md("**Lim_Inferior**"),
    Media_Muestral = md("**Media_Muestral**"),
    Lim_Superior   = md("**Lim_Superior**"),
    Error_Estandar = md("**Error_Estándar**"),
    Confianza      = md("**Confianza**")
  ) %>%
  tab_style(style=list(cell_fill(color="#2C2C2C"),cell_text(color="white",weight="bold")),
            locations=cells_column_labels()) %>%
  tab_style(style=list(cell_fill(color="#2C2C2C"),cell_text(color="white",weight="bold")),
            locations=cells_title(groups="title")) %>%
  tab_style(style=list(cell_fill(color="#C8E6C9"),cell_text(weight="bold")),
            locations=cells_body(columns=Media_Muestral)) %>%
  tab_style(style=cell_borders(sides="bottom",color="#E0E0E0",weight=px(1)),
            locations=cells_body(rows=everything())) %>%
  cols_align(align="center",
             columns=c(Lim_Inferior,Media_Muestral,Lim_Superior,
                       Error_Estandar,Confianza)) %>%
  cols_align(align="left", columns=Parametro) %>%
  tab_source_note(source_note=md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(table.width=pct(100), table.font.size=px(13),
              heading.title.font.size=px(16), heading.subtitle.font.size=px(12),
              data_row.padding=px(6),
              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° 5: ESTIMACIÓN DE LA MEDIA POBLACIONAL
Inferencia Estadística para la Variable Sección
Parámetro Lim_Inferior Media_Muestral Lim_Superior Error_Estándar Confianza
Sección Promedio Kansas 18.2898 18.3828 18.4757 +/- 0.093 95% (Z = 1.96)
Autor: Leslye Quinchiguango

9. Conclusiones

Se trabajó con la variable Sección ajustada a un modelo Uniforme Continua (\(\hat{a}\) = 1, \(\hat{b}\) = 36) sobre toda la distribución sin división en zonas, dado que el histograma muestra barras de altura idéntica en todos los intervalos. La media teórica resultó 18.5 y la desviación estándar teórica 10.1036. La prueba de Pearson obtuvo 100.00% y el p-valor Kolmogorov-Smirnov fue 0.5912; el modelo fue aprobado. El intervalo de confianza al 95% fue [18.2898, 18.4757], con media muestral 18.3828 y margen de error +/- 0.093.


Autor: Leslye Quinchiguango — Análisis Estadístico, Kansas Hydrocarbon Leases Dataset