CARGA DE LIBRERÍAS
library(readxl)
library(gt)
library(dplyr)
library(knitr)
CARGA DE DATOS
datos <- read_excel(
"C:/Users/klaus/Downloads/ELEMENTOS_NO_DETECTADOS_modelo_geometrico_2500_v2.xlsx",
sheet = "Datos_GEOMETRICO"
)
# Normalizar nombres de columnas
names(datos) <- toupper(gsub("[^A-Za-z0-9]+", "_", names(datos)))
# Selección de la variable CANTIDAD_ELEMENTOS_NO_DETECTADOS
col_variable <- names(datos)[grepl("ELEMENTOS", names(datos)) &
grepl("DETECT", names(datos))][1]
CANTIDAD_ELEMENTOS_NO_DETECTADOS <- datos[[col_variable]]
CANTIDAD_ELEMENTOS_NO_DETECTADOS <- as.numeric(CANTIDAD_ELEMENTOS_NO_DETECTADOS)
CANTIDAD_ELEMENTOS_NO_DETECTADOS <- CANTIDAD_ELEMENTOS_NO_DETECTADOS[
!is.na(CANTIDAD_ELEMENTOS_NO_DETECTADOS)
]
# Definición de categorías para el modelo geométrico
Categoria <- c("0", "1", "2", "3", "4", "5")
# Si existen valores mayores a 5, se eliminan para trabajar solo hasta 5
CANTIDAD_ELEMENTOS_NO_DETECTADOS <- CANTIDAD_ELEMENTOS_NO_DETECTADOS[
CANTIDAD_ELEMENTOS_NO_DETECTADOS >= 0 &
CANTIDAD_ELEMENTOS_NO_DETECTADOS <= 5
]
# Conteo de frecuencia absoluta
ni <- c(
sum(CANTIDAD_ELEMENTOS_NO_DETECTADOS == 0),
sum(CANTIDAD_ELEMENTOS_NO_DETECTADOS == 1),
sum(CANTIDAD_ELEMENTOS_NO_DETECTADOS == 2),
sum(CANTIDAD_ELEMENTOS_NO_DETECTADOS == 3),
sum(CANTIDAD_ELEMENTOS_NO_DETECTADOS == 4),
sum(CANTIDAD_ELEMENTOS_NO_DETECTADOS == 5)
)
N <- sum(ni)
hi <- (ni / N) * 100
p_s <- ni / N
TDF_elementos <- data.frame(
Categoria = Categoria,
ni = ni,
hi = round(hi, 2),
p_s = round(p_s, 4)
)
colnames(TDF_elementos) <- c("Categoría", "ni", "hi(%)", "p(s)")
# Fila de totales
totales <- data.frame(
Categoría = "Totales",
ni = sum(ni),
`hi(%)` = 100,
`p(s)` = 1,
check.names = FALSE
)
# Unir tabla con totales
TDF_elementos_final <- rbind(TDF_elementos, totales)
# Aplicación del diseño con gt
TDF_elementos_final %>%
gt() %>%
fmt_number(
columns = c("hi(%)", "p(s)"),
decimals = 2
) %>%
tab_header(
title = md("*Tabla Nro. 1*"),
subtitle = md("**Distribución de frecuencia de la cantidad de elementos no detectados en muestras geoquímicas de depósitos minerales en Estados Unidos**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
row.striping.include_table_body = TRUE,
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black",
table.border.left.color = "black",
table.border.left.style = "solid",
table.border.left.width = px(1),
table.border.right.color = "black",
table.border.right.style = "solid",
table.border.right.width = px(1),
column_labels.vlines.color = "black",
column_labels.vlines.style = "solid",
column_labels.vlines.width = px(1),
table_body.vlines.color = "black",
table_body.vlines.style = "solid",
table_body.vlines.width = px(1)
)
| Tabla Nro. 1 | |||
| Distribución de frecuencia de la cantidad de elementos no detectados en muestras geoquímicas de depósitos minerales en Estados Unidos | |||
| Categoría | ni | hi(%) | p(s) |
|---|---|---|---|
| 0 | 1163 | 47.61 | 0.48 |
| 1 | 651 | 26.65 | 0.27 |
| 2 | 338 | 13.84 | 0.14 |
| 3 | 161 | 6.59 | 0.07 |
| 4 | 82 | 3.36 | 0.03 |
| 5 | 48 | 1.96 | 0.02 |
| Totales | 2443 | 100.00 | 1.00 |
| Autor: Grupo 2 | |||
# Ajuste de márgenes
par(mar = c(5.1, 5.1, 4.1, 2.1))
porcentajes_plot <- hi
nombres_plot <- Categoria
barras <- barplot(
height = porcentajes_plot,
names.arg = nombres_plot,
space = 0.4,
col = "gray",
border = "black",
main = "Gráfica N°1: Distribución porcentual de la cantidad
de elementos no detectados en muestras geoquímicas
de depósitos minerales en Estados Unidos",
xlab = "Cantidad de elementos no detectados",
ylab = "Porcentaje (%)",
las = 1,
ylim = c(0, max(porcentajes_plot) * 1.15),
cex.names = 0.85
)
abline(
h = pretty(c(0, max(porcentajes_plot))),
col = "gray70",
lty = 2,
lwd = 0.8
)
barplot(
height = porcentajes_plot,
space = 0.4,
col = "gray",
border = "black",
add = TRUE,
axes = FALSE,
names.arg = rep("", length(nombres_plot))
)
box()
Se conjetura que la variable CANTIDAD_ELEMENTOS_NO_DETECTADOS, tratada como una variable cuantitativa discreta, se ajusta a un modelo de probabilidad geométrica. Esto se justifica porque representa el número de elementos geoquímicos que no fueron detectados en cada muestra mineral.
Se espera que la mayor cantidad de registros se concentre en valores bajos, como 0, 1 o 2 elementos no detectados, mientras que las cantidades más altas presenten menor frecuencia.
Visualmente, este comportamiento se relaciona con una distribución decreciente, característica del modelo geométrico.
PARÁMETROS
# CÁLCULO DEL PARÁMETRO DEL MODELO GEOMÉTRICO
# Se mapean las categorías exactas de 0 a 5
x_mapped <- 0:5
# Probabilidad real en decimales
p_s_data <- hi / 100
# Media esperada de las categorías
media_x <- sum(x_mapped * p_s_data)
# Parámetro del modelo geométrico
prob_geom <- 1 / (1 + media_x)
cat("Media =", round(media_x, 4), "\n")
## Media = 0.9734
cat("Parámetro del modelo geométrico (p) =", round(prob_geom, 4), "\n")
## Parámetro del modelo geométrico (p) = 0.5067
COMPARACIÓN DE LA REALIDAD VS MODELO GEOMÉTRICO
# SOBREPOSICIÓN DE LA REALIDAD CON EL MODELO GEOMÉTRICO
# Probabilidades teóricas para las categorías exactas 0, 1, 2, 3, 4 y 5
P_teorica <- dgeom(0:5, prob = prob_geom)
# Como se trabaja solo hasta 5, se normalizan las probabilidades
# para que sumen 1 dentro de las categorías analizadas.
P_teorica <- P_teorica / sum(P_teorica)
hi_modelo <- P_teorica * 100
datos_comparacion <- rbind(
Realidad = hi,
Modelo = hi_modelo
)
par(mar = c(6.1, 4.1, 4.1, 2.1))
grafica_comp <- barplot(
datos_comparacion,
beside = TRUE,
names.arg = Categoria,
col = c("skyblue", "blue"),
main = "Gráfica N°2: Comparación de la realidad con el modelo geométrico
de elementos no detectados en muestras geoquímicas",
xlab = "Cantidad de elementos no detectados",
ylab = "Probabilidad (%)",
ylim = c(0, max(datos_comparacion) * 1.35),
las = 1,
cex.names = 0.85
)
abline(
h = pretty(c(0, max(datos_comparacion))),
col = "gray80",
lty = 2
)
barplot(
datos_comparacion,
beside = TRUE,
col = c("skyblue", "blue"),
add = TRUE,
axes = FALSE,
names.arg = rep("", length(Categoria))
)
legend(
"top",
legend = c("Realidad", "Modelo geométrico"),
fill = c("skyblue", "blue"),
horiz = TRUE,
bty = "n",
inset = c(0, 0),
cex = 0.9
)
box()
TEST DE PEARSON
# TEST DE PEARSON
fo_pearson <- ni
fe_pearson <- N * P_teorica
Coef_Pearson <- cor(fo_pearson, fe_pearson) * 100
cat("Coeficiente de Pearson (%):", round(Coef_Pearson, 2), "\n")
## Coeficiente de Pearson (%): 99.77
TEST DE CHI-CUADRADO
# TEST DE CHI-CUADRADO
N_chi <- sum(ni)
fo <- ni / N_chi
fe <- P_teorica
k <- length(fo)
Chi_Calculado <- sum((fo - fe)^2 / fe)
gl <- k - 1
Chi_Critico <- qchisq(0.95, df = gl)
cat("\nChi Calculado:", round(Chi_Calculado, 4), "\n")
##
## Chi Calculado: 0.0069
cat("Chi Crítico:", round(Chi_Critico, 4), "\n")
## Chi Crítico: 11.0705
if (Chi_Calculado < Chi_Critico) {
print("Evalúa H0: El modelo geométrico es adecuado.")
} else {
print("Se rechaza H0: El modelo geométrico no es adecuado.")
}
## [1] "Evalúa H0: El modelo geométrico es adecuado."
TABLA RESUMEN
Variable <- c("CANTIDAD_ELEMENTOS_NO_DETECTADOS")
tabla_resumen <- data.frame(
Variable,
round(Coef_Pearson, 2),
round(Chi_Calculado, 4),
round(Chi_Critico, 4)
)
colnames(tabla_resumen) <- c(
"Variable",
"Test Pearson (%)",
"Chi Cuadrado",
"Umbral de aceptación"
)
kable(
tabla_resumen,
format = "markdown",
caption = "Tabla Nro. 2: Resumen de test de bondad al modelo geométrico"
)
| Variable | Test Pearson (%) | Chi Cuadrado | Umbral de aceptación |
|---|---|---|---|
| CANTIDAD_ELEMENTOS_NO_DETECTADOS | 99.77 | 0.0069 | 11.0705 |
# Probabilidad de que una muestra presente
# 3 o más elementos no detectados
prob_3_mas <- 1 - pgeom(2, prob = prob_geom)
prob_3_mas_porcentaje <- prob_3_mas * 100
prob_3_mas_porcentaje
## [1] 12.00119
# Gráfico de texto explicativo
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(
x = 1, y = 1,
labels = paste(
"Cálculo de probabilidad\n",
"¿Cuál es la probabilidad de que una muestra\n",
"presente 3 o más elementos no detectados?\n",
"Probabilidad = ", round(prob_3_mas_porcentaje, 2), " (%)",
sep = ""
),
cex = 1.3,
col = "black",
font = 2
)
# Media de elementos no detectados
media_elementos <- mean(CANTIDAD_ELEMENTOS_NO_DETECTADOS)
# Desviación estándar
desviacion_elementos <- sd(CANTIDAD_ELEMENTOS_NO_DETECTADOS)
# Número de observaciones
n_elementos <- length(CANTIDAD_ELEMENTOS_NO_DETECTADOS)
# Nivel de confianza del 95%
error_elementos <- 1.96 * (desviacion_elementos / sqrt(n_elementos))
# Límites del intervalo de confianza
limite_inferior_elementos <- round(media_elementos - error_elementos, 2)
limite_superior_elementos <- round(media_elementos + error_elementos, 2)
# Tabla del intervalo
tabla_intervalo_elementos <- data.frame(
Intervalo = paste0(
"P [",
limite_inferior_elementos,
" < µ < ",
limite_superior_elementos,
"] = 95%"
)
)
tabla_intervalo_elementos %>%
gt() %>%
tab_header(
title = md("*Tabla Nro. 3*"),
subtitle = md("**Intervalo de confianza de la cantidad media de elementos no detectados en muestras geoquímicas**")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
row.striping.include_table_body = TRUE,
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black",
table.border.left.color = "black",
table.border.left.style = "solid",
table.border.left.width = px(1),
table.border.right.color = "black",
table.border.right.style = "solid",
table.border.right.width = px(1)
)
| Tabla Nro. 3 |
| Intervalo de confianza de la cantidad media de elementos no detectados en muestras geoquímicas |
| Intervalo |
|---|
| P [0.92 < µ < 1.02] = 95% |
| Autor: Grupo 2 |
La variable CANTIDAD_ELEMENTOS_NO_DETECTADOS se ajusta a un modelo geométrico, debido a que representa una variable cuantitativa discreta asociada al número de elementos geoquímicos no detectados por muestra. El parámetro de probabilidad obtenido fue p = 0.50, con un coeficiente de Pearson de 99.77%. Con un 95% de confianza, la media poblacional se encuentra entre 0.92 y 1.02 elementos no detectados. Además, existe una probabilidad del 12% de registrar una muestra con 3 o más elementos no detectados.