##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(stringr)
library(gt)
# =========================================================
# IMPORTAR BASE
# =========================================================
datos <- read.csv("D:/dataset_CMIO_geologico.csv")
# =========================================================
# CREAR VARIABLE ORDINAL
# =========================================================
df_deposito <- data.frame(
deposito = toupper(trimws(datos$Deposit_Type))
)
# =========================================================
# RECLASIFICACIÓN ORDINAL
# =========================================================
df_deposito$deposito <- case_when(
toupper(df_deposito$deposito) %in% c("EPITHERMAL")
~ "Bajo",
toupper(df_deposito$deposito) %in% c("PORPHYRY", "VMS")
~ "Medio",
toupper(df_deposito$deposito) %in% c("SEDIMENT-HOSTED", "SKARN")
~ "Alto",
TRUE ~ NA_character_
)
# =========================================================
# ORDEN LÓGICO
# =========================================================
orden_deposit <- c(
"Bajo",
"Medio",
"Alto"
)
# =========================================================
# CONVERTIR A FACTOR ORDENADO
# =========================================================
df_deposito$deposito <- factor(
df_deposito$deposito,
levels = orden_deposit,
ordered = TRUE
)
# =========================================================
# TABLA DE FRECUENCIAS
# =========================================================
ni <- table(df_deposito$deposito)
hi <- round(prop.table(ni), 4)
P <- round(hi * 100, 2)
tabla_finaldeposito <- data.frame(
Nivel_Deposito = names(ni),
ni = as.numeric(ni),
hi = as.numeric(hi),
P = as.numeric(P)
)
# =========================================================
# FILA TOTAL
# =========================================================
fila_total <- data.frame(
Nivel_Deposito = "TOTAL",
ni = sum(tabla_finaldeposito$ni),
hi = sum(tabla_finaldeposito$hi),
P = sum(tabla_finaldeposito$P)
)
tabla_finaldeposito <- rbind(
tabla_finaldeposito,
fila_total
)
tabla_finaldeposito
## Nivel_Deposito ni hi P
## 1 Bajo 497 0.1988 19.88
## 2 Medio 1007 0.4028 40.28
## 3 Alto 996 0.3984 39.84
## 4 TOTAL 2500 1.0000 100.00
tabla_deposito_gt <- tabla_finaldeposito %>%
gt() %>%
tab_header(
title = md("**Tabla Nº1**"),
subtitle = md("Distribución ordinal del tipo de depósito mineral")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = Nivel_Deposito == "TOTAL"
)
)
tabla_deposito_gt
| Tabla Nº1 |
| Distribución ordinal del tipo de depósito mineral |
| Nivel_Deposito |
ni |
hi |
P |
| Bajo |
497 |
0.1988 |
19.88 |
| Medio |
1007 |
0.4028 |
40.28 |
| Alto |
996 |
0.3984 |
39.84 |
| TOTAL |
2500 |
1.0000 |
100.00 |
| Autor: Grupo 2 |
P_global <- tabla_finaldeposito$P[
tabla_finaldeposito$Nivel_Deposito != "TOTAL"
]
barplot(
P_global,
main = "Gráfica Nº1: Distribución ordinal del tipo de depósito",
xlab = "Nivel ordinal",
ylab = "Probabilidad (%)",
col = "blue",
names.arg = tabla_finaldeposito$Nivel_Deposito[
tabla_finaldeposito$Nivel_Deposito != "TOTAL"
],
ylim = c(0,100),
las = 1
)

# =========================================================
# TAMAÑO MUESTRAL
# =========================================================
n <- sum(
tabla_finaldeposito$ni[
tabla_finaldeposito$Nivel_Deposito != "TOTAL"
]
)
n
## [1] 2500
# =========================================================
# FRECUENCIAS OBSERVADAS
# =========================================================
x <- tabla_finaldeposito$ni[
tabla_finaldeposito$Nivel_Deposito != "TOTAL"
]
x
## [1] 497 1007 996
# =========================================================
# ESCALA ORDINAL
# =========================================================
X <- 1:length(x)
X
## [1] 1 2 3
# =========================================================
# MEDIA OBSERVADA
# =========================================================
media_observada <- sum(X * x) / n
media_observada
## [1] 2.1996
# =========================================================
# PARÁMETROS
# =========================================================
p <- media_observada / length(x)
p
## [1] 0.7332
## [1] 0.2668
# =========================================================
# MODELO BINOMIAL
# =========================================================
P_binomial <- dbinom(
X,
size = length(x),
prob = p
)
P_binomial
## [1] 0.1565725 0.4302808 0.3941553
# =========================================================
# FRECUENCIAS
# =========================================================
Fo <- (x / n) * 100
Fo
## [1] 19.88 40.28 39.84
Fe <- P_binomial * 100
Fe
## [1] 15.65725 43.02808 39.41553
barplot(
rbind(Fo, Fe),
beside = TRUE,
col = c("skyblue", "blue"),
names.arg = tabla_finaldeposito$Nivel_Deposito[
tabla_finaldeposito$Nivel_Deposito != "TOTAL"
],
main = "Gráfica Nº2: Comparación entre la realidad\ny el modelo binomial",
ylab = "Probabilidad (%)",
xlab = "Nivel ordinal",
ylim = c(0,100)
)
legend(
"topright",
legend = c("Real", "Modelo"),
fill = c("skyblue", "blue")
)

plot(
Fo,
Fe,
xlim = c(0, max(Fo)),
ylim = c(0, max(Fe)),
main = "Gráfica Nº3: Correlación de frecuencias",
xlab = "Frecuencia observada (%)",
ylab = "Frecuencia esperada (%)",
pch = 19,
col = "darkblue"
)
abline(
a = 0,
b = 1,
col = "red",
lwd = 2
)

Correlacion <- cor(Fo, Fe) * 100
Correlacion
## [1] 99.47112
## [1] 3
## [1] 2
x2 <- sum((Fo - Fe)^2 / Fe)
x2
## [1] 1.318959
vc <- qchisq(0.99, gl)
vc
## [1] 9.21034
## [1] TRUE
Variable <- c("Nivel ordinal del depósito")
tabla_resumen <- data.frame(
Variable,
round(Correlacion,2),
round(x2,2),
round(vc,2)
)
colnames(tabla_resumen) <- c(
"Variable",
"Test Pearson (%)",
"Chi Cuadrado",
"Umbral de aceptación"
)
library(knitr)
kable(
tabla_resumen,
format = "markdown",
caption = "Tabla Nº2: Resumen de bondad del modelo"
)
Tabla Nº2: Resumen de bondad del modelo
| Nivel ordinal del depósito |
99.47 |
1.32 |
9.21 |
# =========================================================
# CÁLCULO DE PROBABILIDAD
# =========================================================
# Eliminar fila TOTAL
tabla_sin_total <- tabla_finaldeposito[
tabla_finaldeposito$Nivel_Deposito != "TOTAL",
]
# =========================================================
# EXTRAER PROBABILIDAD DE LA CATEGORÍA
# =========================================================
prob_alto <- tabla_sin_total$P[
tabla_sin_total$Nivel_Deposito == "Alto"
]
prob_alto
## [1] 39.84
# =========================================================
# GRÁFICO EXPLICATIVO
# =========================================================
plot(
1,
type = "n",
axes = FALSE,
xlab = "",
ylab = ""
)
text(
x = 1,
y = 1,
labels = paste(
"Cálculo de probabilidad\n",
"(Estimación general)\n\n",
"¿Qué probabilidad existe de que un depósito\n",
"mineral analizado en Estados Unidos pertenezca\n",
"a un nivel de deposito geológico ALTO?\n\n",
"Probabilidad = ",
prob_alto,
" (%)",
sep = ""
),
cex = 1.3,
col = "black",
font = 2
)
