library(readr)
library(dplyr)
library(knitr)
library(kableExtra)
library(gt)
library(htmltools)
Se carga el conjunto de datos de arrendamientos de hidrocarburos del estado de Kansas, EE.UU., registrados por el Kansas Geological Survey.
# --- CONFIGURACIÓN: el nombre de la variable se edita ÚNICAMENTE en el bloque
# `params` del encabezado YAML; el resto del código y el título del
# documento se adaptan automáticamente, sin nombres fijos aquí. ---
nombre_variable <- params$nombre_variable
columna_variable <- params$columna_variable
etiqueta_variable <- params$etiqueta_variable
ruta_archivo <- file.choose()
datos <- read_csv(ruta_archivo, show_col_types = FALSE)
cat("Dataset cargado correctamente.\n")
## Dataset cargado correctamente.
cat("Total de registros (filas):", nrow(datos), "\n")
## Total de registros (filas): 47757
Se extrae la variable PRODUCES_GAS (Produce Gas), se filtran los valores válidos (Yes/No) y se traducen al español (Sí/No). Luego se realiza el conteo de observaciones por categoría.
x_raw <- datos %>%
mutate(valor_limpio = trimws(toupper(as.character(.data[[columna_variable]])))) %>%
filter(valor_limpio %in% c("YES", "NO", "Y", "N", "TRUE", "FALSE", "1", "0")) %>%
mutate(
valor_es = case_when(
valor_limpio %in% c("YES", "Y", "TRUE", "1") ~ "Sí",
valor_limpio %in% c("NO", "N", "FALSE", "0") ~ "No"
)
) %>%
pull(valor_es)
x_raw <- factor(x_raw, levels = c("Sí", "No"))
n <- length(x_raw)
conteo <- table(x_raw)
cat("Observaciones válidas (n):", n, "\n")
## Observaciones válidas (n): 47757
cat("Categorías distintas:", length(conteo), "\n\n")
## Categorías distintas: 2
print(conteo)
## x_raw
## Sí No
## 15117 32640
categorias <- names(conteo)
ni <- as.integer(conteo)
hi_pct <- ni / n * 100
hi_frac <- ni / n
k <- length(categorias)
tabla_df <- data.frame(
Categoria = categorias,
ni = ni,
hi_pct = sprintf("%.2f%%", hi_pct),
Probabilidad = sprintf("%.4f", hi_frac),
stringsAsFactors = FALSE
)
kable(
tabla_df,
caption = paste0(
"Tabla de Distribución de Frecuencias — ", etiqueta_variable, " (n = ",
format(n, big.mark = ","), " registros válidos)."
),
col.names = c(etiqueta_variable, "Frecuencia (ni)", "Porcentaje (hi %)", "Probabilidad"),
align = c("l", "c", "c", "c"), escape = FALSE
) %>%
kable_styling(bootstrap_options = c("striped", "condensed", "bordered"), full_width = TRUE) %>%
row_spec(0, bold = TRUE, background = "#d3d3d3", color = "black")
| Produce Gas | Frecuencia (ni) | Porcentaje (hi %) | Probabilidad |
|---|---|---|---|
| Sí | 15117 | 31.65% | 0.3165 |
| No | 32640 | 68.35% | 0.6835 |
par(mar = c(6, 6, 5, 2))
bp <- barplot(
hi_pct,
names.arg = categorias,
col = gray(seq(0.30, 0.75, length.out = k)),
border = "black",
ylim = c(0, max(hi_pct) * 1.2),
xlab = "", ylab = "", main = "", las = 1
)
text(bp, hi_pct, labels = paste0(round(hi_pct, 1), "%"), pos = 3, cex = 0.9)
mtext("Probabilidad (%)", side = 2, line = 4.2, cex = 1)
mtext(etiqueta_variable, side = 1, line = 4, cex = 1)
mtext(paste0("Gráfica de Probabilidad — ", etiqueta_variable, ", Kansas, EE.UU."),
side = 3, line = 1.5, cex = 0.95, font = 2)
Al ser una variable dicotómica (2 categorías), se comparan
internamente los modelos Bernoulli,
Binomial, Poisson,
Geométrico y Uniforme, usando
X = 0, 1 para representar cada categoría. Los parámetros se
estiman por el método de momentos a partir de la media observada.
Doble criterio de validación: dado que con muestras grandes (n = 47,757) la prueba Chi-cuadrado se vuelve muy sensible, un modelo se considera aceptado si cumple al menos uno de estos dos criterios: Correlación de Pearson (observado vs. teórico) > 70%, o Chi-cuadrado con p-valor > 0.05. Se elige el modelo de mayor correlación de Pearson que además quede aceptado.
Modelo conjeturado: Binomial (Pearson = 100 % —
APROBADO | Chi-cuadrado p-valor = 1 — APROBADO )
Parámetro estimado (método de momentos / MLE):
0.6835
comparacion <- rbind(hi_pct, ajuste_global$p_elegido * 100)
rownames(comparacion) <- c("Observado", paste0("Modelo ", ajuste_global$modelo, " (estimado)"))
par(mar = c(6, 6, 6, 2))
bp2 <- barplot(comparacion, beside = TRUE,
col = c(gray(0.35), gray(0.75)), border = "black", las = 1,
names.arg = categorias, ylim = c(0, max(comparacion) * 1.25),
ylab = "", xlab = "")
mtext("Probabilidad (%)", side = 2, line = 4.2, cex = 1)
mtext(etiqueta_variable, side = 1, line = 4, cex = 1)
mtext(paste0("Probabilidad — Modelo ", ajuste_global$modelo, " Sobrepuesto a la Frecuencia Observada"), side = 3, line = 1.5, cex = 1, font = 2)
text(bp2, comparacion, labels = paste0(round(comparacion, 1), "%"), pos = 3, cex = 0.8)
legend("topright", legend = rownames(comparacion), fill = c(gray(0.35), gray(0.75)), bty = "n", cex = 0.9)
Con base en el mayor valor de correlación de Pearson entre los modelos aceptados, se conjetura el modelo Binomial como el que mejor describe la distribución de probabilidad de la variable Produce Gas.
Se aplica el doble criterio de validación —Correlación de Pearson (> 70%) y Chi-cuadrado de bondad de ajuste (p > 0.05)— sobre el modelo conjeturado (Binomial), para validar formalmente la hipótesis.
\(H_0\): los datos siguen el modelo Binomial | \(H_1\): los datos NO siguen el modelo Binomial
construir_tabla_test(ajuste_global, n) %>%
tabla_test_gt(
titulo = paste0("Tabla: Validación de la Conjetura (Modelo ", ajuste_global$modelo, ")"),
subtitulo = paste0(etiqueta_variable, " — parámetro estimado = ", round(ajuste_global$parametro, 4))
)
| Tabla: Validación de la Conjetura (Modelo Binomial) | ||||
| Produce Gas — parámetro estimado = 0.6835 | ||||
| Prueba | Estadístico | G.L. | p-valor | Validación |
|---|---|---|---|---|
| Correlación de Pearson (hi acum. vs. p teórica acum.) | 100 | - | - | APROBADO |
| Chi-Cuadrado (n=47757) | 0 | 1 | 1 | APROBADO |
| Autor: Valeska Araujo | ||||
La variable Produce Gas es cualitativa nominal dicotómica, con categorías Sí y No. Su moda es No, con 68.35% de participación. Tras comparar los modelos Bernoulli, Binomial, Poisson, Geométrico y Uniforme, el modelo aceptado —bajo el criterio de Pearson y/o Chi-cuadrado— fue Binomial (Pearson = 100%, Chi² = 0, p-valor = 1), por lo cual no se rechaza la hipótesis de que los datos siguen dicho modelo.
Autor: Araujo Valeska | Análisis Estadístico Inferencial — Kansas Hydrocarbon Leases Dataset