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 LONGITUDE_LATITUDE_SOURCE (Fuente de Coordenadas), eliminando registros sin valor (NA o vacíos), y se realiza el conteo de observaciones por categoría.
x_raw <- datos %>%
filter(!is.na(.data[[columna_variable]]), .data[[columna_variable]] != "") %>%
pull(.data[[columna_variable]])
n <- length(x_raw)
conteo <- sort(table(x_raw), decreasing = TRUE)
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
## CENTER_OF_SECTION QUARTER_CALLS
## 26553 21204
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")
| Fuente de Coordenadas | Frecuencia (ni) | Porcentaje (hi %) | Probabilidad |
|---|---|---|---|
| CENTER_OF_SECTION | 26553 | 55.60% | 0.5560 |
| QUARTER_CALLS | 21204 | 44.40% | 0.4440 |
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:
CENTER_OF_SECTION / QUARTER_CALLS), se
conjetura directamente un modelo Bernoulli
—matemáticamente equivalente a un Binomial con un solo
ensayo (size = 1)— con probabilidad de éxito p̂ estimada por
máxima verosimilitud (MLE), que para este modelo
coincide con la proporción muestral observada de la categoría
“CENTER_OF_SECTION”:
Modelo conjeturado: Bernoulli (≡ Binomial, n = 1
ensayo)
p̂ estimado (MLE, proporción de ” CENTER_OF_SECTION “):
0.556
| Fuente de Coordenadas | p Bernoulli (H0) | p Observada |
|---|---|---|
| CENTER_OF_SECTION | 0.556 | 0.556 |
| QUARTER_CALLS | 0.444 | 0.444 |
comparacion <- rbind(Observado = hi_pct, `Modelo Bernoulli` = p_bernoulli * 100)
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("Probabilidad — Modelo Bernoulli 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)
Nota: al estimarse p̂ directamente de la misma muestra (modelo saturado, 1 parámetro para 2 categorías), ambas barras de cada par salen prácticamente idénticas — es el comportamiento esperado del método de máxima verosimilitud, no un error.
Se conjetura el modelo Bernoulli (equivalente al Binomial de un ensayo) como el que describe la distribución de probabilidad de la variable Fuente de Coordenadas.
Se valida el modelo con dos criterios: la correlación de Pearson entre las frecuencias observadas y las teóricas, y una prueba Chi-Cuadrado de Bondad de Ajuste.
\(H_0\): los datos siguen el modelo Bernoulli | \(H_1\): los datos NO siguen el modelo Bernoulli
bind_rows(
data.frame(Prueba = "Correlación de Pearson (hi vs. p teórico)",
Estadistico = round(pearson_r, 2), GL = NA_integer_,
p_valor = NA_real_, Validacion = val_pearson, stringsAsFactors = FALSE),
data.frame(Prueba = paste0("Chi-Cuadrado (muestra completa n=", n, ")"),
Estadistico = round(chi_stat, 4), GL = chi_gl,
p_valor = round(chi_pval, 4), Validacion = val_chi, stringsAsFactors = FALSE)
) %>%
tabla_test_gt(
titulo = "Tabla: Validación de la Conjetura (Modelo Bernoulli)",
subtitulo = paste0(etiqueta_variable, " — p̂ estimado por MLE")
)
| Tabla: Validación de la Conjetura (Modelo Bernoulli) | ||||
| Fuente de Coordenadas — p̂ estimado por MLE | ||||
| Prueba | Estadístico | G.L. | p-valor | Validación |
|---|---|---|---|---|
| Correlación de Pearson (hi vs. p teórico) | 100 | - | - | APROBADO |
| Chi-Cuadrado (muestra completa n=47757) | 0 | 1 | 1 | APROBADO |
| Autor: Valeska Araujo | ||||
La variable Fuente de Coordenadas es cualitativa nominal dicotómica, con categorías CENTER_OF_SECTION y QUARTER_CALLS. Su moda es CENTER_OF_SECTION, con 55.60% de participación. Se conjeturó un modelo Bernoulli (equivalente a un Binomial de un ensayo) con p̂ = 0.556 estimado por MLE; al validar con Pearson se obtuvo 100% y con Chi-cuadrado un estadístico de 0 con 1 grado(s) de libertad y un p-valor de 1, lo que demuestra que el modelo Bernoulli sí infiere correctamente la muestra en la población (resultado esperado, ya que p̂ se estimó directamente de estos mismos datos).
Autor: Araujo Valeska | Análisis Estadístico — Kansas Hydrocarbon Leases Dataset