library(readr); library(dplyr); library(gt); library(MASS)
cat("Librerías cargadas correctamente.\n")
## Librerías cargadas correctamente.
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
x_raw <- datos %>%
mutate(CTY = suppressWarnings(as.integer(COUNTY_CODE))) %>%
filter(!is.na(CTY), CTY >= 1, CTY <= 207) %>%
pull(CTY)
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: 207
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: C\u00f3digo de Condado, ",
"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: Código de Condado, Kansas (n = 47,757) | ||||||||
| Intervalo | MC | ni | hi% | hi | Ni (asc) | Hi (asc) | Ni (desc) | Hi (desc) |
|---|---|---|---|---|---|---|---|---|
| [1 - 22) | 11 | 6555 | 13.73 | 0.1373 | 6555 | 0.1373 | 47757 | 1.0000 |
| [22 - 43) | 32 | 3489 | 7.31 | 0.0731 | 10044 | 0.2103 | 41202 | 0.8627 |
| [43 - 64) | 53 | 5132 | 10.75 | 0.1075 | 15176 | 0.3178 | 37713 | 0.7897 |
| [64 - 85) | 74 | 5650 | 11.83 | 0.1183 | 20826 | 0.4361 | 32581 | 0.6822 |
| [85 - 106) | 95 | 4072 | 8.53 | 0.0853 | 24898 | 0.5213 | 26931 | 0.5639 |
| [106 - 127) | 116 | 4355 | 9.12 | 0.0912 | 29253 | 0.6125 | 22859 | 0.4787 |
| [127 - 148) | 137 | 4520 | 9.46 | 0.0946 | 33773 | 0.7072 | 18504 | 0.3875 |
| [148 - 169) | 158 | 5261 | 11.02 | 0.1102 | 39034 | 0.8173 | 13984 | 0.2928 |
| [169 - 190) | 179 | 5084 | 10.65 | 0.1065 | 44118 | 0.9238 | 8723 | 0.1827 |
| [190 - 207] | 199 | 3639 | 7.62 | 0.0762 | 47757 | 1.0000 | 3639 | 0.0762 |
| TOTAL | - | 47757 | 100.00 | 1.0000 | 47757 | 1.0000 | 47757 | 1.0000 |
| Autor: Leslye Quinchiguango | ||||||||
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("C\u00f3digo de Condado", side=1, line=3.5, cex=1)
mtext("Histograma General \u2014 C\u00f3digo de Condado, arrendamientos de hidrocarburos, Kansas, EE.UU.",
side=3, line=3, cex=0.95, font=2)
El histograma de la variable Código de Condado muestra comportamiento irregular. El intervalo [1, 22) presenta un pico aislado no representativo del patrón general, por lo que se omite. En el tramo [22, 85) las barras crecen de izquierda a derecha, comportamiento que se modela con una Exponencial invertida aplicando la transformación \(x' = 85 - x\). En el tramo [85, 208] las barras presentan una forma acampanada compatible con una distribución Normal. Se trabaja con dos zonas con corte en 85 y parámetros estimados exclusivamente con los datos de cada tramo.
set.seed(42)
omitir_sup <- 22
corte_z <- 85
lim_z1_min <- omitir_sup; lim_z1_max <- corte_z
lim_z2_min <- corte_z; lim_z2_max <- x_max
x_z1 <- x[x >= omitir_sup & x < corte_z]
x_z2 <- x[x >= corte_z & x <= lim_z2_max]
cat("Omitido [1, 22) \u2014 n:", sum(x < omitir_sup), "\n")
## Omitido [1, 22) — n: 6555
cat("Zona 1 [22, 85) \u2014 n:", length(x_z1), "\n")
## Zona 1 [22, 85) — n: 14271
cat("Zona 2 [85, 208] \u2014 n:", length(x_z2), "\n")
## Zona 2 [85, 208] — n: 26931
# ── 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 [22, 85): Exponencial invertida ---\n")
##
## --- Zona 1 [22, 85): Exponencial invertida ---
cat("\u03bb\u0302 (rate) :", round(rate_z1, 6), "\n")
## λ̂ (rate) : 0.037535
cat("Offset :", round(offset_z1, 4), "\n")
## Offset : 1.999
cat("\n--- Zona 2 [85, 208]: Normal ---\n")
##
## --- Zona 2 [85, 208]: Normal ---
cat("\u03bc\u0302 (media) :", round(mu_z2, 4), "\n")
## μ̂ (media) : 149.1326
cat("\u03c3\u0302 (desv.) :", round(sd_z2, 4), "\n")
## σ̂ (desv.) : 34.7186
h_plot <- hist(x, breaks=breaks_vec, plot=FALSE)
h_plot$density <- hi_dec
colores_barras <- ifelse(breaks_vec[-length(breaks_vec)] < omitir_sup, "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.9)
abline(v=omitir_sup, col="black", lty=3, lwd=1.5)
abline(v=corte_z, col="black", lty=2, lwd=2)
yt <- max(hi_dec)
text(mean(c(x_min, omitir_sup)), yt*0.75, "Omitido\n[1 \u2013 22)",
cex=0.80, font=3, col="gray40")
text(mean(c(omitir_sup, corte_z)), yt*0.75,
"Zona 1\n[22 \u2013 85)\nExponencial\n(invertida)", cex=0.80, font=2)
text(mean(c(corte_z, lim_z2_max)), yt*0.75,
"Zona 2\n[85 \u2013 208]\nNormal", cex=0.80, font=2)
mtext("Densidad de Probabilidad", side=2, line=4.5, cex=1)
mtext("C\u00f3digo de Condado", side=1, line=3.5, cex=1)
mtext("Corte en 85 \u2014 Zona 1: Exponencial invertida | Zona 2: Normal | Omitido: [1, 22)",
side=3, line=3, cex=0.9, font=2)
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.9)
lines(xs_z1, ys_z1, col="black", lwd=2.5)
mtext("Densidad de Probabilidad", side=2, line=4.5, cex=1)
mtext("C\u00f3digo de Condado", side=1, line=3.5, cex=1)
mtext(paste0("Gráfica N\u00b02: Zona 1 [22 \u2013 85) \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("C\u00f3digo de Condado", side=1, line=3.5, cex=1)
mtext(paste0("Gráfica N\u00b03: Zona 2 [85 \u2013 208] \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))
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 [22, 85) \u2014 Exponencial invertida", 4),
rep("Zona 2 [85, 208] \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 C\u00f3digo de Condado*")) %>%
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 — Código de Condado | ||
| Zona | Parámetro | Valor |
|---|---|---|
| Zona 1 [22, 85) — Exponencial invertida | n (observaciones zona) | 14271 |
| Zona 1 [22, 85) — Exponencial invertida | Media observada zona | 56.3594 |
| Zona 1 [22, 85) — Exponencial invertida | λ̂ = rate (MV sobre datos invertidos) | 0.037535 |
| Zona 1 [22, 85) — Exponencial invertida | Offset (corte − min zona − 0.001) | 1.999 |
| Zona 2 [85, 208] — Normal | n (observaciones zona) | 26931 |
| Zona 2 [85, 208] — Normal | Media observada zona | 149.1326 |
| Zona 2 [85, 208] — Normal | μ̂ = media zona | 149.1326 |
| Zona 2 [85, 208] — Normal | σ̂ = desv. estándar zona | 34.7186 |
| Autor: Leslye Quinchiguango | ||
# ── Zona 1: Exponencial invertida ─────────────────────────────────────────────
# P(X > 30): códigos que superan 30 en zona 1
# En espacio invertido: P(x' < corte - 30) = P(x' < 55)
p1_a <- pexp(corte_z - 30 - offset_z1, rate=rate_z1)
# P(22 ≤ X < 43): primer intervalo de zona 1
p1_b <- pexp(corte_z - 22 - offset_z1, rate=rate_z1) -
pexp(corte_z - 43 - offset_z1, rate=rate_z1)
# P(X < 43): códigos bajos de zona 1
p1_c <- pexp(corte_z - 43 - offset_z1, rate=rate_z1, lower.tail=FALSE)
# ── Zona 2: Normal(mu_z2, sd_z2) ─────────────────────────────────────────────
p2_a <- pnorm(148, mean=mu_z2, sd=sd_z2, lower.tail=FALSE) # P(X ≥ 148)
p2_b <- pnorm(169, mean=mu_z2, sd=sd_z2) -
pnorm(127, mean=mu_z2, sd=sd_z2) # P(127 ≤ X < 169)
p2_c <- pnorm(127, mean=mu_z2, sd=sd_z2) # P(X < 127)
data.frame(
Zona = c(rep("Zona 1 \u2014 Exponencial invertida", 3),
rep("Zona 2 \u2014 Normal", 3)),
Evento = c("P(X > 30)", "P(22 \u2264 X < 43)", "P(X < 43)",
"P(X \u2265 148)", "P(127 \u2264 X < 169)", "P(X < 127)"),
Descripcion = c(
"Código de condado supera 30 en la Zona 1",
"Código en el primer intervalo de la Zona 1",
"Código en la parte baja de la Zona 1",
"Código en la zona de mayor concentración",
"Código en el intervalo central de la Zona 2",
"Código 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 C\u00f3digo de Condado*")) %>%
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 — Código de Condado | |||
| Zona | Evento | Descripción | Probabilidad |
|---|---|---|---|
| Zona 1 — Exponencial invertida | P(X > 30) | Código de condado supera 30 en la Zona 1 | 0.8632 |
| Zona 1 — Exponencial invertida | P(22 ≤ X < 43) | Código en el primer intervalo de la Zona 1 | 0.1215 |
| Zona 1 — Exponencial invertida | P(X < 43) | Código en la parte baja de la Zona 1 | 0.2228 |
| Zona 2 — Normal | P(X ≥ 148) | Código en la zona de mayor concentración | 0.5130 |
| Zona 2 — Normal | P(127 ≤ X < 169) | Código en el intervalo central de la Zona 2 | 0.4545 |
| Zona 2 — Normal | P(X < 127) | Código por debajo del centro de la Zona 2 | 0.2619 |
| 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 [22 \u2013 85) \u2014 Exponencial invertida",
"Zona 2 [85 \u2013 208] \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 C\u00f3digo de Condado*")) %>%
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) — Código de Condado | |||
| Zona | Pearson (R %) | K-S (p-valor) | Validación |
|---|---|---|---|
| Zona 1 [22 – 85) — Exponencial invertida | 87.51 | 0.0000 | APROBADO |
| Zona 2 [85 – 208] — Normal | 80.36 | 0.0000 | APROBADO |
| Autor: Leslye Quinchiguango | |||
El Intervalo de Confianza estima el rango dentro del cual se encuentra la verdadera media poblacional de Código de Condado con un nivel de confianza del 95%. Se calcula con la totalidad de los registros válidos. El Teorema Central del Límite garantiza normalidad en la distribución de medias muestrales 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 = "C\u00f3digo de Condado 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 C\u00f3digo de Condado*")) %>%
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 Código de Condado | |||||
| Parámetro | Lim_Inferior | Media_Muestral | Lim_Superior | Error_Estándar | Confianza |
|---|---|---|---|---|---|
| Código de Condado Promedio Kansas | 101.6409 | 102.1966 | 102.7523 | +/- 0.5557 | 95% (Z = 1.96) |
| Autor: Leslye Quinchiguango | |||||
Se trabajó con la variable Código de Condado omitiendo el intervalo [1, 22) por ser un pico aislado no representativo, y dividiendo el resto en 2 zonas con corte en 85. Se aplicó Exponencial invertida en la Zona 1 [22, 85) (\(\hat{\lambda}\) = 0.0375) y Normal en la Zona 2 [85, 208] (\(\hat{\mu}\) = 149.1326, \(\hat{\sigma}\) = 34.7186), con parámetros estimados exclusivamente con los datos de cada tramo. La prueba de Pearson obtuvo 87.51% y 80.36% respectivamente, y los p-valores K-S fueron 0 y 0; ambos modelos fueron aprobados (Pearson > 70%). El intervalo de confianza al 95% fue [101.6409, 102.7523], con media muestral 102.1966 y margen de error +/- 0.5557.
Autor: Leslye Quinchiguango — Análisis Estadístico, Kansas Hydrocarbon Leases Dataset