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 (2).csv | Filas: 47757

3. Conteo

x_raw <- datos %>%
  mutate(RNG = suppressWarnings(as.integer(RANGE))) %>%
  filter(!is.na(RNG), RNG >= 1, RNG <= 43) %>%
  pull(RNG)

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

4. Tabla de Distribución de Frecuencias

Se calcula la distribución de frecuencias absolutas y relativas para la variable cuantitativa discreta agrupada Range, correspondiente a los arrendamientos de hidrocarburos registrados en Kansas, EE.UU.

Justificación del agrupamiento. Range es discreta, pero al tener más de 10 valores únicos (de 1 a 43), una tabla de frecuencia simple resultaría extensa y poco legible. Por ello se agrupa en intervalos de clase, como se hace con variables continuas, únicamente como recurso para resumir la información; su naturaleza discreta se conserva en los límites e indicadores, que siguen siendo enteros.

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°1: Distribución de Frecuencias**"),
             subtitle = md(paste0("*Variable Cuantitativa Discreta Agrupada: Range, ",
                                  "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: Range, Kansas (n = 47,757)
Intervalo MC ni hi% hi Ni (asc) Hi (asc) Ni (desc) Hi (desc)
[1 - 6) 3 3318 6.95 0.0695 3318 0.0695 47757 1.0000
[6 - 11) 8 5137 10.76 0.1076 8455 0.1770 44439 0.9305
[11 - 16) 13 10092 21.13 0.2113 18547 0.3884 39302 0.8230
[16 - 21) 18 10946 22.92 0.2292 29493 0.6176 29210 0.6116
[21 - 26) 23 5443 11.40 0.1140 34936 0.7315 18264 0.3824
[26 - 31) 28 2478 5.19 0.0519 37414 0.7834 12821 0.2685
[31 - 36) 33 5874 12.30 0.1230 43288 0.9064 10343 0.2166
[36 - 41) 38 3279 6.87 0.0687 46567 0.9751 4469 0.0936
[41 - 43] 42 1190 2.49 0.0249 47757 1.0000 1190 0.0249
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("Range",                    side=1, line=3.5, cex=1)
mtext("Histograma General — Range, arrendamientos de hidrocarburos, Kansas, EE.UU.",
      side=3, line=3, cex=0.95, font=2)

6. Conjetura

El histograma de la variable Range muestra un comportamiento claramente diferenciado en dos tramos, y ambos son representativos del conjunto de datos (ninguno se omite):

  • Zona 1 — Range [1, 31): concentra la mayoría de las observaciones, con alta frecuencia en valores bajos y decaimiento progresivo. Este comportamiento de conteo es compatible con una distribución Poisson, de parámetro \(\hat{\lambda}\) (media = varianza del proceso).

  • Zona 2 — Range [31, 43]: aunque de menor tamaño, sigue siendo un tramo representativo (10343 observaciones). Las frecuencias decrecen de forma monótona a partir del corte, comportamiento característico de una distribución Geométrica, que modela el número de “fallos” antes del primer “éxito”, con parámetro \(\hat{p}\).

Se trabaja con dos zonas con corte fijo en 31.

set.seed(42)

corte_z    <- 31
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: Poisson ────────────────────────────────────────────────────────
lambda_hat <- mean(x_z1)

# ── Zona 2: Geométrica (soporte desplazado a 0) ─────────────────────────────
shift_z2  <- min(x_z2)
fit_z2    <- fitdistr(x_z2 - shift_z2, "geometric")
p_z2      <- fit_z2$estimate["prob"]

cat("Zona 1 [", lim_z1_min, ",", corte_z, ") — n:", length(x_z1), "\n")
## Zona 1 [ 1 , 31 ) — n: 37414
cat("λ̂ (Poisson) :", round(lambda_hat, 4), "\n")
## λ̂ (Poisson) : 15.2986
cat("\nZona 2 [", corte_z, ",", lim_z2_max, "] — n:", length(x_z2), "\n")
## 
## Zona 2 [ 31 , 43 ] — n: 10343
cat("p̂ (Geométrica, shift =", shift_z2, ") :", round(p_z2, 6), "\n")
## p̂ (Geométrica, shift = 31 ) : 0.176499

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.85,
     paste0("Zona 1\n[", lim_z1_min, " – ", corte_z, ")\nPoisson"), cex=0.82, font=2)
text(mean(c(corte_z, lim_z2_max)), yt * 0.85,
     paste0("Zona 2\n[", corte_z, " – ", lim_z2_max, "]\nGeométrica"), cex=0.82, font=2)

mtext("Densidad de Probabilidad", side=2, line=4.5, cex=1)
mtext("Range",                    side=1, line=3.5, cex=1)
mtext(paste0("Corte en Range = ", corte_z,
             " — Zona 1: Poisson | Zona 2: Geométrica — 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: Poisson ──────────────────────────────────────────────────────────
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, by = 1)
ys_z1 <- dpois(xs_z1, lambda = lambda_hat)

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("Range",                    side=1, line=3.5, cex=1)
mtext(paste0("Gráfica N°2: Zona 1 [", lim_z1_min, " – ", corte_z,
             ") — Poisson (λ̂ = ", round(lambda_hat,4), ")"),
      side=3, line=3, cex=0.9, font=2)
legend("topright",
       legend=c("Histograma", paste0("Poisson(λ̂=", round(lambda_hat,2), ")")),
       fill=c("gray40",NA), border=c("black",NA),
       lty=c(NA,1), lwd=c(NA,2.5), bty="n", cex=0.85)

# ── Zona 2: Geométrica ───────────────────────────────────────────────────────
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, lim_z2_max, by = 1)
ys_z2 <- dgeom(xs_z2 - shift_z2, prob = p_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("Range",                    side=1, line=3.5, cex=1)
mtext(paste0("Gráfica N°3: Zona 2 [", corte_z, " – ", lim_z2_max,
             "] — Geométrica (p̂ = ", round(p_z2,4), ")"),
      side=3, line=3, cex=0.9, font=2)
legend("topright",
       legend=c("Histograma", paste0("Geométrica(p̂=", round(p_z2,4), ")")),
       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    <- sd(x_z1)
media_z2 <- mean(x_z2)
sd_z2    <- sd(x_z2)

data.frame(
  Zona = c(
    rep("Zona 1 [1, 31) — Poisson", 3),
    rep("Zona 2 [31, 43] — Geométrica", 4)
  ),
  Parametro = c(
    "n (observaciones zona)",
    "Media observada zona",
    "λ̂ = media muestral (MV)",
    "n (observaciones zona)",
    "Media observada zona",
    "Desplazamiento (shift = mín. zona)",
    "p̂ = probabilidad de éxito (MV)"
  ),
  Valor = c(
    as.character(n_z1),
    round(media_z1, 4),
    round(lambda_hat, 4),
    as.character(n_z2),
    round(media_z2, 4),
    as.character(shift_z2),
    round(p_z2, 6)
  )
) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°2: Parámetros Estimados por Zona**"),
    subtitle = md("*Zona 1: Poisson | Zona 2: Geométrica — Variable Range*")
  ) %>%
  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,7,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: Poisson | Zona 2: Geométrica — Variable Range
Zona Parámetro Valor
Zona 1 [1, 31) — Poisson n (observaciones zona) 37414
Zona 1 [1, 31) — Poisson Media observada zona 15.2986
Zona 1 [1, 31) — Poisson λ̂ = media muestral (MV) 15.2986
Zona 2 [31, 43] — Geométrica n (observaciones zona) 10343
Zona 2 [31, 43] — Geométrica Media observada zona 35.6658
Zona 2 [31, 43] — Geométrica Desplazamiento (shift = mín. zona) 31
Zona 2 [31, 43] — Geométrica p̂ = probabilidad de éxito (MV) 0.176499
Autor: Leslye Quinchiguango
# ── Zona 1: Poisson(λ̂) ────────────────────────────────────────────────────
p1_a <- ppois(9,  lambda = lambda_hat)                       # P(X < 10)
p1_b <- ppois(19, lambda = lambda_hat) - ppois(9, lambda = lambda_hat)  # P(10 ≤ X < 20)
p1_c <- ppois(19, lambda = lambda_hat, lower.tail = FALSE)   # P(X ≥ 20)

# ── Zona 2: Geométrica(p̂), shift = 31 ────────────────────────────────────
p2_a <- pgeom(35 - shift_z2, prob = p_z2)                                       # P(X < 36)
p2_b <- pgeom(40 - shift_z2, prob = p_z2) - pgeom(35 - shift_z2, prob = p_z2)    # P(36 ≤ X < 41)
p2_c <- pgeom(40 - shift_z2, prob = p_z2, lower.tail = FALSE)                    # P(X ≥ 41)

data.frame(
  Zona = c(rep("Zona 1 — Poisson", 3), rep("Zona 2 — Geométrica", 3)),
  Evento = c(
    "P(X < 10)", "P(10 ≤ X < 20)", "P(X ≥ 20)",
    "P(X < 36)", "P(36 ≤ X < 41)", "P(X ≥ 41)"
  ),
  Descripcion = c(
    "Range bajo dentro de la Zona 1",
    "Range en el tramo central de la Zona 1",
    "Range alto dentro de la Zona 1",
    "Range bajo dentro de la Zona 2",
    "Range en el tramo central de la Zona 2",
    "Range alto dentro 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°3: Cálculo de Probabilidades por Zona**"),
    subtitle = md("*La probabilidad es el área bajo la curva del modelo teórico — Variable Range*")
  ) %>%
  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 Range
Zona Evento Descripción Probabilidad
Zona 1 — Poisson P(X < 10) Range bajo dentro de la Zona 1 0.0607
Zona 1 — Poisson P(10 ≤ X < 20) Range en el tramo central de la Zona 1 0.7972
Zona 1 — Poisson P(X ≥ 20) Range alto dentro de la Zona 1 0.1421
Zona 2 — Geométrica P(X < 36) Range bajo dentro de la Zona 2 0.6213
Zona 2 — Geométrica P(36 ≤ X < 41) Range en el tramo central de la Zona 2 0.2353
Zona 2 — Geométrica P(X ≥ 41) Range alto dentro de la Zona 2 0.1434
Autor: Leslye Quinchiguango
set.seed(42)

# ── Pearson Zona 1 (Poisson) ─────────────────────────────────────────────────
p_teo_z1  <- ppois(breaks_z1[-1] - 1, lambda = lambda_hat) -
             ppois(breaks_z1[-length(breaks_z1)] - 1, lambda = lambda_hat)
p_teo_z1  <- p_teo_z1 / sum(p_teo_z1)
hi_obs_z1 <- h_z1$counts / n_z1
pearson_z1 <- round(cor(hi_obs_z1, p_teo_z1) * 100, 2)

# ── Pearson Zona 2 (Geométrica) ──────────────────────────────────────────────
p_teo_z2  <- pgeom(breaks_z2[-1] - 1 - shift_z2, prob = p_z2) -
             pgeom(breaks_z2[-length(breaks_z2)] - 1 - shift_z2, prob = p_z2)
p_teo_z2  <- p_teo_z2 / sum(p_teo_z2)
hi_obs_z2 <- h_z2$counts / n_z2
pearson_z2 <- round(cor(hi_obs_z2, p_teo_z2) * 100, 2)

# ── KS Zona 1 ────────────────────────────────────────────────────────────────
samp_z1 <- sample(x_z1, size=min(400, n_z1), replace=FALSE)
ks_z1   <- suppressWarnings(ks.test(samp_z1, "ppois", lambda=lambda_hat))

# ── KS Zona 2 ────────────────────────────────────────────────────────────────
samp_z2 <- sample(x_z2, size=min(400, n_z2), replace=FALSE)
ks_z2   <- suppressWarnings(ks.test(samp_z2 - shift_z2, "pgeom", prob=p_z2))

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

cat("Zona 1 — Pearson:", pearson_z1, "% | KS p-valor:", round(ks_z1$p.value,4),
    "| Validación:", val_z1, "\n")
## Zona 1 — Pearson: 96.51 % | KS p-valor: 0 | Validación: APROBADO
cat("Zona 2 — Pearson:", pearson_z2, "% | KS p-valor:", round(ks_z2$p.value,4),
    "| Validación:", val_z2, "\n")
## Zona 2 — Pearson: 98.05 % | KS p-valor: 0 | Validación: APROBADO
data.frame(
  Zona       = c("Zona 1 [1 – 31) — Poisson", "Zona 2 [31 – 43] — Geométrica"),
  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°4: Resumen de Validación por Zona**"),
    subtitle = md("*Pearson (R%) y Kolmogorov-Smirnov (p-valor) — Variable Range*")
  ) %>%
  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 Range
Zona Pearson (R %) K-S (p-valor) Validación
Zona 1 [1 – 31) — Poisson 96.51 0.0000 APROBADO
Zona 2 [31 – 43] — Geométrica 98.05 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 Range 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      = "Range 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° 5: ESTIMACIÓN DE LA MEDIA POBLACIONAL**"),
    subtitle = md("*Inferencia Estadística para la Variable Range*")
  ) %>%
  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 Range
Parámetro Lim_Inferior Media_Muestral Lim_Superior Error_Estándar Confianza
Range Promedio Kansas 19.617 19.7096 19.8023 +/- 0.0927 95% (Z = 1.96)
Autor: Leslye Quinchiguango

9. Conclusiones

El comportamiento de Range se explica con un modelo Poisson (λ̂ = 15.2986) en la Zona 1 [1, 31) y un modelo Geométrica (p̂ = 0.1765 (shift = 31)) en la Zona 2 [31, 43]. Podemos afirmar con un 95% de confianza que la media aritmética real de Range se encuentra entre 19.617 y 19.8023, con una desviación estándar de 10.3326.


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