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(TWP = suppressWarnings(as.integer(TOWNSHIP))) %>%
  filter(!is.na(TWP), TWP >= 1, TWP <= 35) %>%
  pull(TWP)

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: 35

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: Township, ",
                                  "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: Township, Kansas (n = 47,757)
Intervalo MC ni hi% hi Ni (asc) Hi (asc) Ni (desc) Hi (desc)
[1 - 5) 3 1299 2.72 0.0272 1299 0.0272 47757 1.0000
[5 - 9) 7 1700 3.56 0.0356 2999 0.0628 46458 0.9728
[9 - 13) 11 3292 6.89 0.0689 6291 0.1317 44758 0.9372
[13 - 17) 15 5190 10.87 0.1087 11481 0.2404 41466 0.8683
[17 - 21) 19 6084 12.74 0.1274 17565 0.3678 36276 0.7596
[21 - 25) 23 5826 12.20 0.1220 23391 0.4898 30192 0.6322
[25 - 29) 27 6449 13.50 0.1350 29840 0.6248 24366 0.5102
[29 - 33) 31 10227 21.41 0.2141 40067 0.8390 17917 0.3752
[33 - 35] 34 7690 16.10 0.1610 47757 1.0000 7690 0.1610
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("Township",                 side=1, line=3.5, cex=1)
mtext("Histograma General \u2014 Township, arrendamientos de hidrocarburos, Kansas, EE.UU.",
      side=3, line=3, cex=0.95, font=2)

6. Conjetura

El histograma de la variable Township muestra un comportamiento claramente diferenciado en dos tramos:

  • Zona 1 — Township [1, 21): las frecuencias crecen progresivamente de izquierda a derecha, describiendo una forma de ascenso continuo. Este crecimiento es equivalente, en espejo, al decaimiento característico de una distribución Exponencial. Para aplicar este modelo, los datos de la zona se invierten mediante la transformación \(x' = \text{corte} - x\), convirtiendo el crecimiento observado en el decaimiento que la Exponencial modela de forma natural. Todos los intervalos de esta zona son representativos y se conservan en el ajuste. Los parámetros se estiman exclusivamente con los datos de esta zona transformada.

  • Zona 2 — Township [21, 36]: las frecuencias alcanzan su pico en el intervalo [29, 33) y descienden al final, describiendo una forma acampanada compatible con una distribución Normal. Todos los intervalos de esta zona son representativos y se conservan. Los parámetros se estiman exclusivamente con los datos de esta zona.

Se trabaja con dos zonas con corte fijo en 21.

set.seed(42)
lbl <- c(normal="Normal", lognormal="Log-Normal", exponential="Exponencial")

corte_z    <- 21
lim_z1_min <- x_min;   lim_z1_max <- corte_z
lim_z2_min <- corte_z; lim_z2_max <- x_max

x_z1 <- x[x >= lim_z1_min & x <  corte_z]
x_z2 <- x[x >= corte_z    & x <= lim_z2_max]

# ── Zona 1: Exponencial sobre datos invertidos ────────────────────────────────
x_z1_inv  <- corte_z - x_z1
offset_z1 <- min(x_z1_inv) - 0.001
x_z1_pos  <- x_z1_inv - offset_z1
fit_z1    <- fitdistr(x_z1_pos, "exponential")
rate_z1   <- fit_z1$estimate["rate"]

# ── Zona 2: Normal ────────────────────────────────────────────────────────────
fit_z2 <- fitdistr(x_z2, "normal")
mu_z2  <- fit_z2$estimate["mean"]
sd_z2  <- fit_z2$estimate["sd"]

cat("Zona 1 [", lim_z1_min, ",", corte_z, ") \u2014 n:", length(x_z1), "\n")
## Zona 1 [ 1 , 21 ) — n: 17565
cat("rate (\u03bb\u0302)  :", round(rate_z1, 6), "| offset:", round(offset_z1, 4), "\n")
## rate (λ̂)  : 0.155405 | offset: 0.999
cat("\nZona 2 [", corte_z, ",", lim_z2_max, "] \u2014 n:", length(x_z2), "\n")
## 
## Zona 2 [ 21 , 35 ] — n: 30192
cat("\u03bc\u0302 (media) :", round(mu_z2, 4), "| \u03c3\u0302 (desv.):", round(sd_z2, 4), "\n")
## μ̂ (media) : 28.9796 | σ̂ (desv.): 4.1084

6.1 Histograma General con Corte por Zona

h_plot         <- hist(x, breaks=breaks_vec, plot=FALSE)
h_plot$density <- hi_dec
colores_zona   <- ifelse(breaks_vec[-length(breaks_vec)] < corte_z, "gray35", "gray70")

par(mar=c(5,6,6,2))
plot(h_plot, col=colores_zona, 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)
abline(v=corte_z, col="black", lty=2, lwd=2)

yt <- max(hi_dec)
text(mean(c(lim_z1_min, corte_z)), yt * 0.75,
     paste0("Zona 1\n[", lim_z1_min, " \u2013 ", corte_z,
            ")\nExponencial\n(invertida)"), cex=0.82, font=2)
text(mean(c(corte_z, lim_z2_max)), yt * 0.75,
     paste0("Zona 2\n[", corte_z, " \u2013 ", lim_z2_max, "]\nNormal"),
     cex=0.82, font=2)

mtext("Densidad de Probabilidad", side=2, line=4.5, cex=1)
mtext("Township",                 side=1, line=3.5, cex=1)
mtext(paste0("Corte en Township = ", corte_z,
             " \u2014 Zona 1: Exponencial (invertida) | Zona 2: Normal \u2014 Kansas, EE.UU."),
      side=3, line=3, cex=0.9, font=2)

6.2 Histogramas Individuales por Zona

par(mfrow=c(2,1))

# ── Zona 1: Exponencial invertida ─────────────────────────────────────────────
breaks_z1    <- seq(lim_z1_min, corte_z, by=c_amp)
if (tail(breaks_z1,1) < corte_z) breaks_z1 <- c(breaks_z1, corte_z)
h_z1         <- hist(x_z1, breaks=breaks_z1, plot=FALSE)
hi_z1        <- h_z1$counts / length(x_z1)
dens_z1      <- hi_z1 / diff(breaks_z1)
h_z1$density <- dens_z1
k_z1         <- length(hi_z1)
grises_z1    <- gray(seq(0.20, 0.60, length.out=k_z1))

xs_z1  <- seq(lim_z1_min, corte_z, length.out=500)
xs_inv <- corte_z - xs_z1
xs_pos <- xs_inv - offset_z1; xs_pos[xs_pos <= 0] <- 1e-9
ys_z1  <- dexp(xs_pos, rate=rate_z1)

par(mar=c(5,6,6,2))
plot(h_z1, col=grises_z1, border="black", freq=FALSE,
     ylim=c(0, max(c(dens_z1, ys_z1)) * 1.25),
     main="", xlab="", ylab="", las=1, xaxt="n")
axis(1, at=breaks_z1, labels=breaks_z1, las=1, cex.axis=0.9)
lines(xs_z1, ys_z1, col="black", lwd=2.5)
mtext("Densidad de Probabilidad", side=2, line=4.5, cex=1)
mtext("Township",                 side=1, line=3.5, cex=1)
mtext(paste0("Gráfica N\u00b02: Zona 1 [", lim_z1_min, " \u2013 ", corte_z,
             ") \u2014 Exponencial invertida (\u03bb\u0302 = ", round(rate_z1,4), ")"),
      side=3, line=3, cex=0.9, font=2)
legend("topleft",
       legend=c("Histograma",
                paste0("Exponencial invertida (\u03bb\u0302=", round(rate_z1,4), ")")),
       fill=c("gray40",NA), border=c("black",NA),
       lty=c(NA,1), lwd=c(NA,2.5), bty="n", cex=0.85)

# ── Zona 2: Normal ────────────────────────────────────────────────────────────
breaks_z2    <- seq(lim_z2_min, lim_z2_max + 1, by=c_amp)
if (tail(breaks_z2,1) <= lim_z2_max) breaks_z2 <- c(breaks_z2, lim_z2_max + 1)
h_z2         <- hist(x_z2, breaks=breaks_z2, plot=FALSE)
hi_z2        <- h_z2$counts / length(x_z2)
dens_z2      <- hi_z2 / diff(breaks_z2)
h_z2$density <- dens_z2
k_z2         <- length(hi_z2)
grises_z2    <- gray(seq(0.40, 0.85, length.out=k_z2))

xs_z2 <- seq(lim_z2_min - 0.5, lim_z2_max + 0.5, length.out=500)
ys_z2 <- dnorm(xs_z2, mean=mu_z2, sd=sd_z2)

par(mar=c(5,6,6,2))
plot(h_z2, col=grises_z2, border="black", freq=FALSE,
     ylim=c(0, max(c(dens_z2, ys_z2)) * 1.25),
     main="", xlab="", ylab="", las=1, xaxt="n")
axis(1, at=breaks_z2, labels=breaks_z2, las=1, cex.axis=0.9)
lines(xs_z2, ys_z2, col="black", lwd=2.5)
mtext("Densidad de Probabilidad", side=2, line=4.5, cex=1)
mtext("Township",                 side=1, line=3.5, cex=1)
mtext(paste0("Gráfica N\u00b03: Zona 2 [", corte_z, " \u2013 ", lim_z2_max,
             "] \u2014 Normal (\u03bc\u0302 = ", round(mu_z2,2),
             ", \u03c3\u0302 = ", round(sd_z2,2), ")"),
      side=3, line=3, cex=0.9, font=2)
legend("topleft",
       legend=c("Histograma",
                paste0("Normal(\u03bc\u0302=", round(mu_z2,2),
                       ", \u03c3\u0302=", round(sd_z2,2), ")")),
       fill=c("gray65",NA), border=c("black",NA),
       lty=c(NA,1), lwd=c(NA,2.5), bty="n", cex=0.85)

par(mfrow=c(1,1))

7. Cálculo de Parámetros y Probabilidades

n_z1       <- length(x_z1)
n_z2       <- length(x_z2)
media_z1   <- mean(x_z1)
sd_z1_calc <- sd(x_z1)
media_z2   <- mean(x_z2)
sd_z2_calc <- sd(x_z2)
media_teo_z1 <- corte_z - (offset_z1 + 1 / rate_z1)

data.frame(
  Zona = c(
    rep("Zona 1 [1, 21) \u2014 Exponencial invertida", 4),
    rep("Zona 2 [21, 36] \u2014 Normal", 4)
  ),
  Parametro = c(
    "n (observaciones zona)",
    "Media observada zona",
    "\u03bb\u0302 = rate (MV sobre datos invertidos)",
    "Offset (min invertido \u2212 0.001)",
    "n (observaciones zona)",
    "Media observada zona",
    "\u03bc\u0302 = media zona",
    "\u03c3\u0302 = desv. estándar zona"
  ),
  Valor = c(
    as.character(n_z1),
    round(media_z1,    4),
    round(rate_z1,     6),
    round(offset_z1,   4),
    as.character(n_z2),
    round(media_z2,    4),
    round(mu_z2,       4),
    round(sd_z2,       4)
  )
) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N\u00b02: Parámetros Estimados por Zona**"),
    subtitle = md("*Zona 1: Exponencial invertida | Zona 2: Normal \u2014 Variable Township*")
  ) %>%
  cols_label(Zona=md("**Zona**"), 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,8,by=2))) %>%
  tab_source_note(source_note=md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(table.width=pct(92), 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 Estimados por Zona
Zona 1: Exponencial invertida | Zona 2: Normal — Variable Township
Zona Parámetro Valor
Zona 1 [1, 21) — Exponencial invertida n (observaciones zona) 17565
Zona 1 [1, 21) — Exponencial invertida Media observada zona 13.5662
Zona 1 [1, 21) — Exponencial invertida λ̂ = rate (MV sobre datos invertidos) 0.155405
Zona 1 [1, 21) — Exponencial invertida Offset (min invertido − 0.001) 0.999
Zona 2 [21, 36] — Normal n (observaciones zona) 30192
Zona 2 [21, 36] — Normal Media observada zona 28.9796
Zona 2 [21, 36] — Normal μ̂ = media zona 28.9796
Zona 2 [21, 36] — Normal σ̂ = desv. estándar zona 4.1084
Autor: Leslye Quinchiguango
# ── Zona 1: Exponencial invertida ─────────────────────────────────────────────
# P(X > 5): probabilidad de que el township supere 5 en la zona 1
# En espacio invertido: P(X > 5) = P(x' < corte - 5) = P(x' < 16)
p1_a <- pexp(corte_z - 5  - offset_z1, rate=rate_z1)

# P(9 ≤ X < 17): intervalo central de la zona 1
# En espacio invertido: [corte-17, corte-9) = [4, 12)
p1_b <- pexp(corte_z - 9  - offset_z1, rate=rate_z1) -
        pexp(corte_z - 17 - offset_z1, rate=rate_z1)

# P(X < 5): townships muy bajos en zona 1
# En espacio invertido: P(x' > corte - 5) = P(x' > 16)
p1_c <- pexp(corte_z - 5 - offset_z1, rate=rate_z1, lower.tail=FALSE)

# ── Zona 2: Normal(mu_z2, sd_z2) ─────────────────────────────────────────────
p2_a <- pnorm(29, mean=mu_z2, sd=sd_z2, lower.tail=FALSE)   # P(X ≥ 29): zona del pico
p2_b <- pnorm(33, mean=mu_z2, sd=sd_z2) -
        pnorm(25, mean=mu_z2, sd=sd_z2)                       # P(25 ≤ X < 33)
p2_c <- pnorm(25, mean=mu_z2, sd=sd_z2)                      # P(X < 25)

data.frame(
  Zona = c(rep("Zona 1 \u2014 Exponencial invertida", 3),
           rep("Zona 2 \u2014 Normal", 3)),
  Evento = c(
    "P(X > 5)", "P(9 \u2264 X < 17)", "P(X < 5)",
    "P(X \u2265 29)", "P(25 \u2264 X < 33)", "P(X < 25)"
  ),
  Descripcion = c(
    "Township supera el valor 5 en la Zona 1",
    "Township en el tramo central de la Zona 1",
    "Township muy bajo dentro de la Zona 1",
    "Township en la zona de mayor concentración",
    "Township en el intervalo de pico y adyacente",
    "Township por debajo del centro de la Zona 2"
  ),
  Probabilidad = round(c(p1_a, p1_b, p1_c, p2_a, p2_b, p2_c), 4)
) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N\u00b03: Cálculo de Probabilidades por Zona**"),
    subtitle = md("*La probabilidad es el área bajo la curva del modelo teórico \u2014 Variable Township*")
  ) %>%
  cols_label(Zona=md("**Zona**"), 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,6,by=2))) %>%
  tab_source_note(source_note=md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(table.width=pct(95), 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 por Zona
La probabilidad es el área bajo la curva del modelo teórico — Variable Township
Zona Evento Descripción Probabilidad
Zona 1 — Exponencial invertida P(X > 5) Township supera el valor 5 en la Zona 1 0.9028
Zona 1 — Exponencial invertida P(9 ≤ X < 17) Township en el tramo central de la Zona 1 0.4463
Zona 1 — Exponencial invertida P(X < 5) Township muy bajo dentro de la Zona 1 0.0972
Zona 2 — Normal P(X ≥ 29) Township en la zona de mayor concentración 0.4980
Zona 2 — Normal P(25 ≤ X < 33) Township en el intervalo de pico y adyacente 0.6697
Zona 2 — Normal P(X < 25) Township por debajo del centro de la Zona 2 0.1664
Autor: Leslye Quinchiguango
set.seed(42)

# ── Pearson Zona 1 ────────────────────────────────────────────────────────────
mc_z1     <- (head(breaks_z1,-1) + tail(breaks_z1,-1)) / 2
mc_z1_inv <- corte_z - mc_z1 - offset_z1
mc_z1_inv[mc_z1_inv <= 0] <- 1e-9
hi_teo_z1 <- dexp(mc_z1_inv, rate=rate_z1) * diff(breaks_z1)
hi_teo_z1 <- hi_teo_z1 / sum(hi_teo_z1)
hi_obs_z1 <- h_z1$counts / n_z1
pearson_z1 <- round(cor(hi_obs_z1, hi_teo_z1) * 100, 2)

# ── Pearson Zona 2 ────────────────────────────────────────────────────────────
mc_z2     <- (head(breaks_z2,-1) + tail(breaks_z2,-1)) / 2
hi_teo_z2 <- dnorm(mc_z2, mean=mu_z2, sd=sd_z2) * diff(breaks_z2)
hi_teo_z2 <- hi_teo_z2 / sum(hi_teo_z2)
hi_obs_z2 <- h_z2$counts / n_z2
pearson_z2 <- round(cor(hi_obs_z2, hi_teo_z2) * 100, 2)

# ── KS Zona 1 ────────────────────────────────────────────────────────────────
samp_z1     <- sample(x_z1, size=min(400, n_z1), replace=FALSE)
samp_z1_inv <- corte_z - samp_z1 - offset_z1
ks_z1       <- ks.test(samp_z1_inv, "pexp", rate=rate_z1)

# ── KS Zona 2 ────────────────────────────────────────────────────────────────
samp_z2 <- sample(x_z2, size=min(400, n_z2), replace=FALSE)
ks_z2   <- ks.test(samp_z2, "pnorm", mean=mu_z2, sd=sd_z2)

val_z1 <- ifelse(pearson_z1 > 70, "APROBADO", "RECHAZADO")
val_z2 <- ifelse(pearson_z2 > 70, "APROBADO", "RECHAZADO")

cat("Zona 1 \u2014 Pearson:", pearson_z1, "% | KS p-valor:", round(ks_z1$p.value,4),
    "| Validación:", val_z1, "\n")
## Zona 1 — Pearson: 71.59 % | KS p-valor: 0 | Validación: APROBADO
cat("Zona 2 \u2014 Pearson:", pearson_z2, "% | KS p-valor:", round(ks_z2$p.value,4),
    "| Validación:", val_z2, "\n")
## Zona 2 — Pearson: 73.74 % | KS p-valor: 0 | Validación: APROBADO
data.frame(
  Zona       = c("Zona 1 [1 \u2013 21) \u2014 Exponencial invertida",
                 "Zona 2 [21 \u2013 36] \u2014 Normal"),
  Pearson_R  = c(pearson_z1, pearson_z2),
  KS_pvalor  = c(round(ks_z1$p.value,4), round(ks_z2$p.value,4)),
  Validacion = c(val_z1, val_z2)
) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N\u00b04: Resumen de Validación por Zona**"),
    subtitle = md("*Pearson (R%) y Kolmogorov-Smirnov (p-valor) \u2014 Variable Township*")
  ) %>%
  cols_label(Zona=md("**Zona**"), 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_fill(color="#F5F5F5"), locations=cells_body(rows=1)) %>%
  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=Zona) %>%
  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(92), 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 por Zona
Pearson (R%) y Kolmogorov-Smirnov (p-valor) — Variable Township
Zona Pearson (R %) K-S (p-valor) Validación
Zona 1 [1 – 21) — Exponencial invertida 71.59 0.0000 APROBADO
Zona 2 [21 – 36] — Normal 73.74 0.0000 APROBADO
Autor: Leslye Quinchiguango

8. Intervalo de Confianza

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

Los postulados de confianza empírica sugieren:

\[P(\bar{x} - E < \mu < \bar{x} + E) \approx 68\%\]

\[P(\bar{x} - 2E < \mu < \bar{x} + 2E) \approx 95\%\]

\[P(\bar{x} - 3E < \mu < \bar{x} + 3E) \approx 99\%\]

Donde el Margen de Error (\(E\)) se define como:

\[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      = "Township 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 Township*")
  ) %>%
  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 Township
Parámetro Lim_Inferior Media_Muestral Lim_Superior Error_Estándar Confianza
Township Promedio Kansas 23.2328 23.3106 23.3883 +/- 0.0777 95% (Z = 1.96)
Autor: Leslye Quinchiguango

9. Conclusiones

Se trabajó con la variable Township dividida en 2 zonas con corte fijo en 21. Se aplicó el modelo Exponencial invertida en la Zona 1 [1, 21) y Normal en la Zona 2 [21, 36], con parámetros estimados exclusivamente con los datos de cada tramo: Zona 1 (\(\hat{\lambda}\) = 0.1554), Zona 2 (\(\hat{\mu}\) = 28.9796, \(\hat{\sigma}\) = 4.1084). La prueba de Pearson obtuvo 71.59% y 73.74% respectivamente, y los p-valores Kolmogorov-Smirnov fueron 0 y 0. El intervalo de confianza al 95% para la media poblacional de Township fue [23.2328, 23.3883], con media muestral 23.3106 y margen de error +/- 0.0777.


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