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 <- "C:/Users/luisq/OneDrive/Desktop/ESTADISTICA/kansas.csv"
datos    <- read_delim(ruta_csv, delim = ";", show_col_types = FALSE)
cat("Archivo:", basename(ruta_csv), "| Filas:", nrow(datos), "\n")
## Archivo: kansas.csv | Filas: 104173

3. Conteo

x_raw <- datos %>%
  mutate(ANIO = suppressWarnings(as.integer(.data[["CUMULATIVE_YEAR_STARTED"]]))) %>%
  filter(!is.na(ANIO), ANIO >= 1930, ANIO <= 2026) %>%
  pull(ANIO)

n_conteo  <- length(x_raw)
k_sturges <- ceiling(1 + 3.322 * log10(n_conteo))
cat("Observaciones válidas:", n_conteo, "\n")
## Observaciones válidas: 89034
cat("Clases (Regla de Sturges):", k_sturges, "\n")
## Clases (Regla de Sturges): 18
cat("Mínimo:", min(x_raw), "| Máximo:", max(x_raw), "\n")
## Mínimo: 1930 | Máximo: 2026

4. Tabla de Distribución de Frecuencias

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

x_min_st   <- min(x_raw); x_max_st <- max(x_raw)
rango_st   <- x_max_st - x_min_st
c_amp_st   <- ceiling(rango_st / k_sturges)
k_st       <- ceiling((rango_st + 1) / c_amp_st)
lim_inf_st <- x_min_st + (0:(k_st - 1)) * c_amp_st
lim_sup_st <- lim_inf_st + c_amp_st
lim_sup_st[k_st] <- x_max_st + 1
mc_st      <- floor((lim_inf_st + lim_sup_st) / 2)
breaks_st  <- c(lim_inf_st, lim_sup_st[k_st])

intervalos_cut_st <- cut(x_raw, breaks = breaks_st, right = FALSE, include.lowest = TRUE)
freq_abs_st       <- as.integer(table(intervalos_cut_st))

li_st <- lim_inf_st
ls_st <- lim_sup_st

hi_dec_st  <- freq_abs_st / n_conteo
Ni_asc_st  <- cumsum(freq_abs_st)
Hi_asc_st  <- cumsum(hi_dec_st)
Ni_desc_st <- n_conteo - c(0, head(Ni_asc_st, -1))
Hi_desc_st <- 1 - c(0, head(Hi_asc_st, -1))

etiq_st        <- paste0("[", li_st, " – ", ls_st, ")")
etiq_st[k_st]  <- paste0("[", li_st[k_st], " – ", ls_st[k_st] - 1, "]")

tabla_st_df <- data.frame(
  Intervalo = etiq_st,
  MC        = as.integer(mc_st),
  ni        = freq_abs_st,
  hi_pct    = round(hi_dec_st * 100, 2),
  hi_real   = round(hi_dec_st, 4),
  Ni_a      = Ni_asc_st,
  Hi_a      = round(Hi_asc_st, 4),
  Ni_d      = Ni_desc_st,
  Hi_d      = round(Hi_desc_st, 4),
  stringsAsFactors = FALSE
)

total_st_row <- data.frame(
  Intervalo = "TOTAL",
  MC        = NA_integer_,
  ni        = sum(freq_abs_st),
  hi_pct    = round(sum(hi_dec_st) * 100, 2),
  hi_real   = round(sum(hi_dec_st), 4),
  Ni_a      = max(Ni_asc_st),
  Hi_a      = round(max(Hi_asc_st), 4),
  Ni_d      = max(Ni_desc_st),
  Hi_d      = round(max(Hi_desc_st), 4),
  stringsAsFactors = FALSE
)

tabla_sturges_final <- bind_rows(tabla_st_df, total_st_row)

tabla_sturges_final %>%
  gt() %>%
  tab_header(
    title    = md("**Distribución de Frecuencias — Regla de Sturges (referencial)**"),
    subtitle = md(paste0(
      "*Año de Inicio de Producción, Kansas, EE.UU. (n = ",
      format(n_conteo, big.mark = ","), ", k = ", k_st, " intervalos)*"
    ))
  ) %>%
  cols_label(
    Intervalo = md("**Intervalo [Li – Ls)**"),
    MC        = md("**Marca de Clase**"),
    ni        = md("**ni (FA)**"),
    hi_pct    = md("**hi %**"),
    hi_real   = md("**hi (decimal)**"),
    Ni_a      = md("**Ni ↑ (FAAa)**"),
    Hi_a      = md("**Hi ↑ (FRAa)**"),
    Ni_d      = md("**Ni ↓ (FAAd)**"),
    Hi_d      = md("**Hi ↓ (FRAd)**")
  ) %>%
  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, nrow(tabla_sturges_final), by = 2))
  ) %>%
  tab_style(
    style = list(cell_fill(color = "#D6D6D6"), cell_text(weight = "bold")),
    locations = cells_body(rows = Intervalo == "TOTAL", columns = everything())
  ) %>%
  fmt_missing(columns = everything(), missing_text = "—") %>%
  tab_source_note(source_note = md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(
    table.width                = pct(100),
    heading.title.font.size    = px(15),
    heading.subtitle.font.size = px(11),
    table.font.size            = px(12),
    data_row.padding           = px(4)
  )
Distribución de Frecuencias — Regla de Sturges (referencial)
Año de Inicio de Producción, Kansas, EE.UU. (n = 89,034, k = 17 intervalos)
Intervalo [Li – Ls) Marca de Clase ni (FA) hi % hi (decimal) Ni ↑ (FAAa) Hi ↑ (FRAa) Ni ↓ (FAAd) Hi ↓ (FRAd)
[1930 – 1936) 1933 7 0.01 0.0001 7 0.0001 89034 1.0000
[1936 – 1942) 1939 1509 1.69 0.0169 1516 0.0170 89027 0.9999
[1942 – 1948) 1945 1118 1.26 0.0126 2634 0.0296 87518 0.9830
[1948 – 1954) 1951 2118 2.38 0.0238 4752 0.0534 86400 0.9704
[1954 – 1960) 1957 5690 6.39 0.0639 10442 0.1173 84282 0.9466
[1960 – 1966) 1963 5078 5.70 0.0570 15520 0.1743 78592 0.8827
[1966 – 1972) 1969 8458 9.50 0.0950 23978 0.2693 73514 0.8257
[1972 – 1978) 1975 7063 7.93 0.0793 31041 0.3486 65056 0.7307
[1978 – 1984) 1981 13534 15.20 0.1520 44575 0.5007 57993 0.6514
[1984 – 1990) 1987 9445 10.61 0.1061 54020 0.6067 44459 0.4993
[1990 – 1996) 1993 7557 8.49 0.0849 61577 0.6916 35014 0.3933
[1996 – 2002) 1999 4330 4.86 0.0486 65907 0.7402 27457 0.3084
[2002 – 2008) 2005 8902 10.00 0.1000 74809 0.8402 23127 0.2598
[2008 – 2014) 2011 9043 10.16 0.1016 83852 0.9418 14225 0.1598
[2014 – 2020) 2017 3797 4.26 0.0426 87649 0.9844 5182 0.0582
[2020 – 2026) 2023 1373 1.54 0.0154 89022 0.9999 1385 0.0156
[2026 – 2026] 2026 12 0.01 0.0001 89034 1.0000 12 0.0001
TOTAL 89034 100.00 1.0000 89034 1.0000 89034 1.0000
Autor: Leslye Quinchiguango

Aplicando la Regla de Sturges, con 89,034 observaciones corresponderían 17 intervalos de clase. Sin embargo, un desglose tan fino dificulta la lectura visual y el ajuste de los indicadores sobre la distribución. Por ello, se simplifica el análisis a una tabla de máximo 10 intervalos de clase, criterio que conserva representatividad estadística sin sacrificar claridad interpretativa.

Justificación del agrupamiento. Año de Inicio de Producción es discreta, pero al abarcar un rango de casi 100 años (1930–2027) con valores únicos por año, una tabla de frecuencia simple resultaría demasiado 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\u00b01: Distribución de Frecuencias**"),
             subtitle = md(paste0("*Variable Cuantitativa Discreta Agrupada: A\u00f1o de Inicio de Producci\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: Año de Inicio de Producción, Kansas (n = 89,034)
Intervalo MC ni hi% hi Ni (asc) Hi (asc) Ni (desc) Hi (desc)
[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
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.85)
mtext("Densidad de Probabilidad",              side=2, line=4.5, cex=1)
mtext("A\u00f1o de Inicio de Producci\u00f3n", side=1, line=3.5, cex=1)
mtext("Histograma General \u2014 A\u00f1o de Inicio de Producci\u00f3n, arrendamientos de hidrocarburos, Kansas, EE.UU.",
      side=3, line=3, cex=0.90, font=2)

6. Conjetura

El histograma de la variable Año de Inicio de Producción muestra un comportamiento diferenciado en dos tramos. El intervalo [2020, 2027] presenta una barra aislada muy baja que no sigue el patrón de la distribución; se omite por no ser representativo. En el tramo [1930, 1990) las barras crecen progresivamente de izquierda a derecha, comportamiento que se modela con una Exponencial invertida aplicando la transformación \(x' = 1990 - x\). En el tramo [1990, 2020) las barras presentan una forma acampanada compatible con una distribución Normal. Se trabaja con dos zonas con corte en 1990, con parámetros estimados exclusivamente con los datos de cada tramo.

set.seed(42)

omitir_inf <- 2020
corte_z    <- 1990
lim_z1_min <- x_min;     lim_z1_max <- corte_z
lim_z2_min <- corte_z;   lim_z2_max <- omitir_inf

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

cat("Omitido [2020, 2027] \u2014 n:", sum(x >= omitir_inf), "\n")
## Omitido [2020, 2027] — n: 1385
cat("Zona 1 [1930, 1990)  \u2014 n:", length(x_z1), "\n")
## Zona 1 [1930, 1990)  — n: 54020
cat("Zona 2 [1990, 2020)  \u2014 n:", length(x_z2), "\n")
## Zona 2 [1990, 2020)  — n: 33629
# ── Zona 1: Exponencial invertida ────────────────────────────────────────────
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("\n--- Zona 1 [1930, 1990): Exponencial invertida ---\n")
## 
## --- Zona 1 [1930, 1990): Exponencial invertida ---
cat("\u03bb\u0302 (rate)  :", round(rate_z1,  6), "\n")
## λ̂ (rate)  : 0.058101
cat("Offset     :", round(offset_z1, 4), "\n")
## Offset     : 0.999
cat("\n--- Zona 2 [1990, 2020): Normal ---\n")
## 
## --- Zona 2 [1990, 2020): Normal ---
cat("\u03bc\u0302 (media) :", round(mu_z2, 4), "\n")
## μ̂ (media) : 2003.913
cat("\u03c3\u0302 (desv.)  :", round(sd_z2, 4), "\n")
## σ̂ (desv.)  : 8.0335

6.1 Histograma General con Corte por Zona

h_plot         <- hist(x, breaks=breaks_vec, plot=FALSE)
h_plot$density <- hi_dec

colores_barras <- ifelse(breaks_vec[-length(breaks_vec)] >= omitir_inf, "white",
                  ifelse(breaks_vec[-length(breaks_vec)] <  corte_z,    "gray35",
                                                                         "gray70"))
par(mar=c(5,6,6,2))
plot(h_plot, col=colores_barras, border="black", freq=FALSE,
     main="", xlab="", ylab="", las=1, xaxt="n")
axis(1, at=breaks_vec, labels=breaks_vec, las=1, cex.axis=0.85)
abline(v=corte_z,    col="black", lty=2, lwd=2)
abline(v=omitir_inf, col="black", lty=3, lwd=1.5)

yt <- max(hi_dec)
text(mean(c(lim_z1_min, corte_z)),  yt*0.78,
     "Zona 1\n[1930 \u2013 1990)\nExp. invertida", cex=0.80, font=2)
text(mean(c(corte_z, omitir_inf)),  yt*0.78,
     "Zona 2\n[1990 \u2013 2020)\nNormal", cex=0.80, font=2)
text(mean(c(omitir_inf, x_max+1)),  yt*0.78,
     "Omitido\n[2020 \u2013 2027]", cex=0.75, font=3, col="gray40")

mtext("Densidad de Probabilidad",              side=2, line=4.5, cex=1)
mtext("A\u00f1o de Inicio de Producci\u00f3n", side=1, line=3.5, cex=1)
mtext("Corte en 1990 \u2014 Zona 1: Exp. invertida | Zona 2: Normal | Omitido: [2020, 2027]",
      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, lim_z1_max, by=c_amp)
if (tail(breaks_z1,1) < lim_z1_max) breaks_z1 <- c(breaks_z1, lim_z1_max)
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, lim_z1_max, 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.85)
lines(xs_z1, ys_z1, col="black", lwd=2.5)
mtext("Densidad de Probabilidad",              side=2, line=4.5, cex=1)
mtext("A\u00f1o de Inicio de Producci\u00f3n", side=1, line=3.5, cex=1)
mtext(paste0("Gráfica N\u00b02: Zona 1 [1930 \u2013 1990) \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, by=c_amp)
if (tail(breaks_z2,1) < lim_z2_max) breaks_z2 <- c(breaks_z2, lim_z2_max)
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.85)
lines(xs_z2, ys_z2, col="black", lwd=2.5)
mtext("Densidad de Probabilidad",              side=2, line=4.5, cex=1)
mtext("A\u00f1o de Inicio de Producci\u00f3n", side=1, line=3.5, cex=1)
mtext(paste0("Gráfica N\u00b03: Zona 2 [1990 \u2013 2020) \u2014 Normal (\u03bc\u0302 = ",
             round(mu_z2,2), ", \u03c3\u0302 = ", round(sd_z2,2), ")"),
      side=3, line=3, cex=0.9, font=2)
legend("topright",
       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)

data.frame(
  Zona = c(
    rep("Zona 1 [1930, 1990) \u2014 Exponencial invertida", 4),
    rep("Zona 2 [1990, 2020) \u2014 Normal", 4)
  ),
  Parametro = c(
    "n (observaciones zona)",
    "Media observada zona",
    "\u03bb\u0302 = rate (MV sobre datos invertidos)",
    "Offset (corte \u2212 min zona \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 A\u00f1o de Inicio de Producci\u00f3n*")) %>%
  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 — Año de Inicio de Producción
Zona Parámetro Valor
Zona 1 [1930, 1990) — Exponencial invertida n (observaciones zona) 54020
Zona 1 [1930, 1990) — Exponencial invertida Media observada zona 1971.7896
Zona 1 [1930, 1990) — Exponencial invertida λ̂ = rate (MV sobre datos invertidos) 0.058101
Zona 1 [1930, 1990) — Exponencial invertida Offset (corte − min zona − 0.001) 0.999
Zona 2 [1990, 2020) — Normal n (observaciones zona) 33629
Zona 2 [1990, 2020) — Normal Media observada zona 2003.9133
Zona 2 [1990, 2020) — Normal μ̂ = media zona 2003.9133
Zona 2 [1990, 2020) — Normal σ̂ = desv. estándar zona 8.0335
Autor: Leslye Quinchiguango
# ── Zona 1: Exponencial invertida ─────────────────────────────────────────────
# P(X > 1950): años de inicio posteriores a 1950 en zona 1
p1_a <- pexp(corte_z - 1950 - offset_z1, rate=rate_z1)
# P(1960 ≤ X < 1980)
p1_b <- pexp(corte_z - 1960 - offset_z1, rate=rate_z1) -
        pexp(corte_z - 1980 - offset_z1, rate=rate_z1)
# P(X < 1950): inicios muy tempranos
p1_c <- pexp(corte_z - 1950 - offset_z1, rate=rate_z1, lower.tail=FALSE)

# ── Zona 2: Normal(mu_z2, sd_z2) ─────────────────────────────────────────────
p2_a <- pnorm(2000, mean=mu_z2, sd=sd_z2, lower.tail=FALSE)  # P(X ≥ 2000)
p2_b <- pnorm(2010, mean=mu_z2, sd=sd_z2) -
        pnorm(1995, mean=mu_z2, sd=sd_z2)                     # P(1995 ≤ X < 2010)
p2_c <- pnorm(1995, mean=mu_z2, sd=sd_z2)                    # P(X < 1995)

data.frame(
  Zona = c(rep("Zona 1 \u2014 Exponencial invertida", 3),
           rep("Zona 2 \u2014 Normal", 3)),
  Evento = c(
    "P(X > 1950)", "P(1960 \u2264 X < 1980)", "P(X < 1950)",
    "P(X \u2265 2000)", "P(1995 \u2264 X < 2010)", "P(X < 1995)"
  ),
  Descripcion = c(
    "Inicio de producci\u00f3n posterior a 1950 en Zona 1",
    "Inicio entre 1960 y 1980 en Zona 1",
    "Inicio muy temprano antes de 1950 en Zona 1",
    "Inicio de producci\u00f3n en el a\u00f1o 2000 o posterior",
    "Inicio en el tramo central de la Zona 2",
    "Inicio antes de 1995 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\u00b03: Cálculo de Probabilidades por Zona**"),
             subtitle = md("*La probabilidad es el área bajo la curva del modelo teórico \u2014 A\u00f1o de Inicio de Producci\u00f3n*")) %>%
  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 — Año de Inicio de Producción
Zona Evento Descripción Probabilidad
Zona 1 — Exponencial invertida P(X > 1950) Inicio de producción posterior a 1950 en Zona 1 0.8963
Zona 1 — Exponencial invertida P(1960 ≤ X < 1980) Inicio entre 1960 y 1980 en Zona 1 0.4073
Zona 1 — Exponencial invertida P(X < 1950) Inicio muy temprano antes de 1950 en Zona 1 0.1037
Zona 2 — Normal P(X ≥ 2000) Inicio de producción en el año 2000 o posterior 0.6869
Zona 2 — Normal P(1995 ≤ X < 2010) Inicio en el tramo central de la Zona 2 0.6421
Zona 2 — Normal P(X < 1995) Inicio antes de 1995 dentro de la Zona 2 0.1336
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")

data.frame(
  Zona       = c("Zona 1 [1930 \u2013 1990) \u2014 Exponencial invertida",
                 "Zona 2 [1990 \u2013 2020) \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 A\u00f1o de Inicio de Producci\u00f3n*")) %>%
  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) — Año de Inicio de Producción
Zona Pearson (R %) K-S (p-valor) Validación
Zona 1 [1930 – 1990) — Exponencial invertida 89.54 0.0000 APROBADO
Zona 2 [1990 – 2020) — Normal 97.26 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 del Año de Inicio de Producción con un nivel de confianza del 95%, calculado con la totalidad de los registros válidos.

\[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      = "A\u00f1o de Inicio de Producci\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 A\u00f1o de Inicio de Producci\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 Año de Inicio de Producción
Parámetro Lim_Inferior Media_Muestral Lim_Superior Error_Estándar Confianza
Año de Inicio de Producción Promedio Kansas 1984.583 1984.711 1984.839 +/- 0.1283 95% (Z = 1.96)
Autor: Leslye Quinchiguango

9. Conclusiones

El comportamiento de Año de Inicio de Producción se explica con un modelo Exponencial invertida (λ̂ = 0.0581) en la Zona 1 [1930, 1990) y un modelo Normal (μ̂ = 2003.91, σ̂ = 8.03) en la Zona 2 [1990, 2020). Podemos afirmar con un 95% de confianza que la media aritmética real de Año de Inicio de Producción se encuentra entre 1984.5827 y 1984.8392, con una desviación estándar de 19.5256.


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