knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE,
fig.align = "center"
)
datos <- read.csv("C:/Users/USER/Documents/PROYECTO ESTADISTICA/CMDB_Data.csv",
header = TRUE,
sep = ";",
dec = ",",
fileEncoding = "latin1")
# Verificación inicial
str(datos)
## 'data.frame': 1366 obs. of 103 variables:
## $ ï..LAB_ID : chr "C355417" "C360759" "C360762" "C360763" ...
## $ PREVIOUS_LAB_ID1 : chr "" "" "" "" ...
## $ PREVIOUS_LAB_ID2 : chr "" "" "" "" ...
## $ PREVIOUS_LAB_ID3 : chr "" "" "" "" ...
## $ FIELD_ID : chr "RM0001" "RM0027" "RM0030" "RM0031" ...
## $ JOB_ID : chr "MRP11968" "MRP12307" "MRP12307" "MRP12307" ...
## $ PREVIOUS_JOB_ID1 : chr "" "" "" "" ...
## $ PREVIOUS_JOB_ID2 : chr "" "" "" "" ...
## $ PREVIOUS_JOB_ID3 : chr "" "" "" "" ...
## $ SUBMITTER : chr "Rare Metals Task" "Rare Metals Task" "Rare Metals Task" "Rare Metals Task" ...
## $ PROJECT_NAME : chr "Critical and Rare Metals" "Critical and Rare Metals" "Critical and Rare Metals" "Critical and Rare Metals" ...
## $ DATE_SUBMITTED : chr "30/6/2011" "31/8/2011" "31/8/2011" "31/8/2011" ...
## $ COLLECTION : chr "Mackay-Keck Ore Deposits Collection" "Mackay-Stanford Ore Deposits Collection" "Mackay-Stanford Ore Deposits Collection" "Mackay-Stanford Ore Deposits Collection" ...
## $ COLLECTION_ID : chr "PHNC08_39_1183" "OD21441" "OD22811" "OD25716" ...
## $ CONTINENT : chr "North America" "South America" "South America" "Africa" ...
## $ COUNTRY : chr "United States" "Chile" "Chile" "South Africa" ...
## $ STATE_PROVINCE : chr "Nevada" "Antofagasta" "Tarapacá" "Transvaal" ...
## $ COUNTY : chr "Lyon" "El Loa" "El Tamarugal" "" ...
## $ DISTRICT_NAME : chr "Yerington" "Chuquicamata" "Collahuasi/Quebrada Blanca" "" ...
## $ DEPOSIT_NAME : chr "Pumpkin Hollow" "" "" "" ...
## $ MINE_NAME : chr "Pumpkin Hollow" "Chuquicamata mine" "Collahuasi district" "" ...
## $ DISTRICT_NAME_COLLECT: chr "Yerington" "" "" "" ...
## $ DEPOSIT_NAME_COLLECT : chr "" "" "" "" ...
## $ MINE_NAME_COLLECT : chr "Pumpkin Hollow" "Chuquicamata" "Poduosa mine" "Messina Mines Ltd." ...
## $ LOCATE_DESC : chr "" "" "Level 25" "" ...
## $ LATITUDE : num 38.9 -22.3 -21 -24.7 62.7 ...
## $ LONGITUDE : num -119.1 -68.9 -68.7 29.3 29 ...
## $ DATUM : chr "WGS84" "WGS84" "WGS84" "" ...
## $ LATITUDE_COLLECT : num 38.9 22.3 NA NA 62.7 ...
## $ LONGITUDE_COLLECT : num -119.1 -68.9 NA NA 29 ...
## $ DATUM_COLLECT : chr "" "WGS84" "" "" ...
## $ COORDINATES_QUAL : chr "100 m" "Exact" "" "" ...
## $ COORDINATES_SOURCE : chr "1) iTouchMap.com, approx, A. Orkild-Norton; 2) Mineral Resource Deposit Database Deposit ID 10174173, ore body, M. Granitto" "1) Mindat.org, approx, A. Orkild-Norton; 2) Open-File Report 2017-1079 ID 549, mine, M. Granitto" "1) No coordinates; 2) Mineral Resource Deposit Database Deposit ID 10057511, district, M. Granitto" "1) No coordinates; 2) Google Earth Pro, approx ctr of former province of Transvaal, M. Granitto" ...
## $ PRIMARY_CLASS : chr "rock" "rock" "rock" "rock" ...
## $ SYSTEM_TYPE : chr "IOA-IOCG" "Porphyry Cu-Mo-Au" "Porphyry Cu-Mo-Au" "IOA-IOCG" ...
## $ DEPOSIT_TYPE : chr "IOCG" "Supergene Cu" "Porphyry Cu" "IOCG" ...
## $ SAMPLE_DESC : chr "Nearly solid chalcopyrite mixed with small light brown irregular inclusions of unknown mineralogy; clouds of ma"| __truncated__ "Chalcocite-bronchatite-antlerite(?); highly microfractured igneous rock with green copper sulfates coating microfractures" "Bornite-chalcopyrite; mostly massive chalcopyrite with numerous inclusions of micro-chalcopyrite and widely sca"| __truncated__ "Massive chalcopyrite, IOCG in shear zone; mostly massive fine grain cuprite with widely distributed malachite t"| __truncated__ ...
## $ Al_pct_AES_ST : num 0.33 6.65 0.46 0.7 9.48 1.54 5.32 4.34 5.31 7.9 ...
## $ Ca_pct_AES_ST : num 1.1 0.4 -0.1 0.3 8.5 11.4 10.8 2.4 1.1 0.9 ...
## $ Fe_pct_AES_ST : num 42.4 0.25 6.98 27.8 8.92 10.8 14.3 10.8 1.93 3.21 ...
## $ K_pct_AES_ST : num -0.1 6.1 0.2 -0.1 0.4 -0.1 1.6 2.2 1.5 3.9 ...
## $ Mg_pct_AES_ST : num 0.57 0.1 0.01 0.33 7.39 2.15 0.36 1.01 0.85 0.88 ...
## $ Mn_pct_AES_ST : num 0.02 -0.01 -0.01 -0.01 0.04 0.79 0.48 0.01 -0.01 0.02 ...
## $ P_pct_AES_ST : num -0.01 0.01 0.05 0.01 0.06 0.43 0.22 0.05 0.08 0.07 ...
## $ S_pct_AES_ST : num NA NA NA NA NA NA NA NA NA NA ...
## $ Si_pct_AES_ST : num NA NA NA NA NA NA NA NA NA NA ...
## $ Ti_pct_AES_ST : num 0.01 0.11 -0.01 -0.01 0.28 0.24 0.52 0.3 0.29 0.25 ...
## $ F_pct_ISE_Fuse : num NA NA NA NA NA NA NA NA NA NA ...
## $ Ag_ppm_MS_ST : num 58 6 468 16 21 24 92 12 10 -1 ...
## $ As_ppm_MS_ST : num -30 -30 90 -30 50 -30 90 -30 -30 -30 ...
## $ Au_ppm : num NA NA NA NA NA NA NA NA NA NA ...
## $ Au_AM : chr "" "" "" "" ...
## $ B_ppm_AES_ST : int NA NA NA NA NA NA NA NA NA NA ...
## $ Ba_ppm_AES_ST : num -0.5 924 121 174 8100 3.2 251 234 361 995 ...
## $ Be_ppm_AES_ST : int -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 ...
## $ Bi_ppm_MS_ST : num 1.5 3.6 190 0.4 12.5 5 80.8 0.6 11.7 0.7 ...
## $ Cd_ppm_MS_ST : num 3.6 -0.2 0.9 -0.2 5.7 447 9.2 -0.2 -0.2 6.8 ...
## $ Ce_ppm_MS_ST : num 0.4 8.8 16.3 3.5 15.2 104 49.7 28.3 15.8 76.3 ...
## $ Co_ppm_MS_ST : num 209 -0.5 1.3 44.8 4.5 92.2 105 45.5 8 48.6 ...
## $ Cr_ppm_AES_ST : int -10 -10 -10 30 20 20 60 40 20 10 ...
## $ Cs_ppm_MS_ST : num 0.5 1.4 0.2 -0.1 0.8 10.6 0.4 2.8 0.6 5.1 ...
## $ Cu_ppm_AES_ST : num 50000 23300 50000 50000 18600 ...
## $ Dy_ppm_MS_ST : num -0.05 0.32 1.38 0.37 2.65 7.43 5.12 1.56 0.75 4.12 ...
## $ Er_ppm_MS_ST : num -0.05 0.22 0.77 0.23 1.63 3.98 2.89 0.78 0.34 2.17 ...
## $ Eu_ppm_MS_ST : num -0.05 0.14 0.17 0.1 0.42 1.5 0.99 0.66 0.37 1.14 ...
## $ Ga_ppm_MS_ST : num 5 15 6 3 52 19 26 17 22 27 ...
## $ Gd_ppm_MS_ST : num -0.05 0.45 1.5 0.39 2.9 8.29 5.72 2.42 1.12 4.88 ...
## $ Ge_ppm_MS_ST : int -1 5 -1 -1 3 8 8 1 2 2 ...
## $ Hf_ppm_MS_ST : int -1 4 -1 -1 5 13 12 2 3 6 ...
## $ Ho_ppm_MS_ST : num -0.05 0.07 0.25 0.07 0.53 1.49 1.05 0.28 0.13 0.74 ...
## $ In_ppm_MS_ST : num 6.4 -0.2 3.7 0.2 0.5 26.7 5.4 0.4 -0.2 -0.2 ...
## $ La_ppm_MS_ST : num 0.2 4.6 7.2 1.7 5.5 40.8 26.4 13.3 7.7 39.2 ...
## $ Li_ppm_AES_ST : int -10 -10 -10 -10 30 20 20 20 -10 20 ...
## $ Lu_ppm_MS_ST : num -0.05 -0.05 0.08 -0.05 0.22 0.64 0.44 0.11 0.06 0.36 ...
## $ Mo_ppm_MS_ST : num -2 60 3 2 14 6 473 69 3 9 ...
## $ Nb_ppm_MS_ST : num -1 4 -1 -1 9 13 13 1 3 12 ...
## $ Nd_ppm_MS_ST : num 0.2 3.8 9.1 1.7 9.5 41.7 23.5 14.9 8 29.3 ...
## $ Ni_ppm_AES_ST : num 144 6 -5 48 24 26 22 23 13 21 ...
## $ Pb_ppm_MS_ST : num 23 16 188 39 546 6 39 -5 17 17 ...
## $ Pd_ppm_FA_MS : num NA NA NA NA NA NA NA NA NA NA ...
## $ Pr_ppm_MS_ST : num -0.05 1.09 2.21 0.46 2.12 10.9 5.98 3.5 2.06 8.54 ...
## $ Pt_ppm_FA_MS : num NA NA NA NA NA NA NA NA NA NA ...
## $ Rb_ppm_MS_ST : num 1.2 148 7.1 0.7 5.2 3.4 65.8 98.8 31.8 169 ...
## $ Re_ppm_MS_HF : num NA NA NA NA NA NA NA NA NA NA ...
## $ Sb_ppm_MS_ST : num 1.2 2.4 2.9 0.3 8.1 1.2 3.7 0.3 0.3 1.5 ...
## $ Sc_ppm_AES_ST : int -5 -5 -5 -5 11 6 15 10 5 6 ...
## $ Se_ppm_MS_ST : int NA NA NA NA NA NA NA NA NA NA ...
## $ Sm_ppm_MS_ST : num -0.1 0.6 1.6 0.4 2.6 8.1 5.1 2.6 1.5 4.9 ...
## $ Sn_ppm_MS_ST : num 2 3 106 -1 3 19 43 7 1 2 ...
## $ Sr_ppm_AES_ST : num 26.6 114 22.5 38.4 284 5.3 264 149 526 446 ...
## $ Ta_ppm_MS_ST : num -0.5 -0.5 -0.5 -0.5 -0.5 0.9 1.1 -0.5 -0.5 1.1 ...
## $ Tb_ppm_MS_ST : num -0.05 0.07 0.23 -0.05 0.45 1.29 0.86 0.27 0.13 0.73 ...
## $ Te_ppm_MS_ST : num NA NA NA NA NA NA NA NA NA NA ...
## $ Th_ppm_MS_ST : num 0.2 9.7 2.6 0.2 2.6 9.2 37.7 1.8 2.7 13.7 ...
## $ Tl_ppm_MS_ST : num -0.5 0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 0.9 ...
## $ Tm_ppm_MS_ST : num -0.05 -0.05 0.08 -0.05 0.22 0.67 0.47 0.1 -0.05 0.36 ...
## $ U_ppm_MS_ST : num 0.3 1.75 0.63 34.8 31.2 10.6 9.94 1.64 0.69 15.4 ...
## $ V_ppm_AES_ST : int 51 24 -5 493 68 20 40 159 39 61 ...
## $ W_ppm_MS_ST : num -1 28 22 11 8 223 30 83 -1 37 ...
## [list output truncated]
# CARGA DE LIBRERÍAS
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(knitr)
library(gt)
library(MASS) # Necesaria para Estimación robusta
##
## Adjuntando el paquete: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
VAR_X <- as.numeric(datos$Tm_ppm_MS_ST)
VAR_Y <- as.numeric(datos$Sm_ppm_MS_ST)
TPV <- data.frame(VAR_X, VAR_Y)
# Limpieza inicial de nulos y ceros
TPV <- na.omit(TPV)
TPV <- TPV[TPV$VAR_X > 0 & TPV$VAR_Y > 0, ]
# -------------------------------------------------------------------
# MÉTODO RIGUROSO: DISTANCIA DE MAHALANOBIS ROBUSTA
# -------------------------------------------------------------------
set.seed(2345)
estimacion_robusta <- cov.rob(TPV)
distancias <- mahalanobis(TPV,
center = estimacion_robusta$center,
cov = estimacion_robusta$cov)
umbral_chi2 <- qchisq(0.975, df = 2)
TPV_limpio <- TPV[distancias <= umbral_chi2, ]
# Filtro final
TPV_FILTRADO <- TPV_limpio[TPV_limpio$VAR_X < 20 & TPV_limpio$VAR_Y < 80, ]
# -------------------------------------------------------------------
# AGRUPACIÓN PARA MAXIMIZAR CORRELACIÓN
# -------------------------------------------------------------------
tabla_media <- aggregate(VAR_Y ~ VAR_X,
data = TPV_FILTRADO,
FUN = mean)
# Extraemos las variables procesadas de la tabla agregada
x_media <- tabla_media$VAR_X
y_media <- tabla_media$VAR_Y
tabla_media
## VAR_X VAR_Y
## 1 0.05 1.205556
## 2 0.06 1.189189
## 3 0.07 1.268966
## 4 0.08 1.460606
## 5 0.09 1.604167
## 6 0.10 1.880000
## 7 0.11 1.850000
## 8 0.12 2.132000
## 9 0.13 1.714815
## 10 0.14 1.815000
## 11 0.15 2.986667
## 12 0.16 2.565000
## 13 0.17 2.344444
## 14 0.18 2.663636
## 15 0.19 3.000000
## 16 0.20 3.104000
## 17 0.21 3.493750
## 18 0.22 2.952941
## 19 0.23 3.913333
## 20 0.24 3.892857
## 21 0.25 3.354545
## 22 0.26 3.564286
## 23 0.27 3.933333
## 24 0.28 4.000000
## 25 0.29 4.240000
## 26 0.30 3.263636
## 27 0.31 4.466667
## 28 0.32 2.380000
## 29 0.33 4.140000
## 30 0.34 5.210000
## 31 0.35 4.169231
## 32 0.36 5.071429
## 33 0.37 4.357143
## 34 0.38 5.700000
## 35 0.39 4.542857
## 36 0.40 5.760000
## 37 0.41 5.983333
## 38 0.42 5.125000
## 39 0.43 6.400000
## 40 0.44 6.040000
## 41 0.45 5.600000
## 42 0.46 6.325000
## 43 0.47 5.666667
## 44 0.48 5.133333
## 45 0.49 5.100000
plot(x_media, y_media,
pch = 16,
col = "darkblue",
main = "Gráfica N°1: Diagrama de Dispersión Promediada\nTulio (Tm) vs Samario (Sm)",
xlab = "Concentración de Tulio (ppm)",
ylab = "Concentración de Samario (ppm)")
grid(nx = NULL, ny = NULL, col = "lightgray", lty = "dotted")
Debido a la similitud de la nube de puntos conjeturamos a un modelo exponencial
# 1. Transformación semi-logarítmica
y_log <- log(y_media)
# 2. Cálculo de la regresión en el espacio transformado
regresion_exponencial <- lm(y_log ~ x_media)
summary(regresion_exponencial)
##
## Call:
## lm(formula = y_log ~ x_media)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.5095 -0.1140 0.0103 0.1471 0.3015
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.27753 0.06423 4.321 9.02e-05 ***
## x_media 3.43447 0.21438 16.020 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1868 on 43 degrees of freedom
## Multiple R-squared: 0.8565, Adjusted R-squared: 0.8532
## F-statistic: 256.7 on 1 and 43 DF, p-value: < 2.2e-16
# 3. Extracción de coeficientes
beta0 <- regresion_exponencial$coefficients[1]
b <- regresion_exponencial$coefficients[2]
a <- exp(beta0)
# 4. Gráfica del modelo sobre los datos reales
plot(x_media, y_media,
pch = 16,
col = "blue",
main = "Gráfica N°2: Ajuste del Modelo Exponencial\nRelación entre Tulio y Samario",
xlab = "Concentración de Tulio (ppm)",
ylab = "Concentración de Samario (ppm)")
grid(nx = NULL, ny = NULL, col = "lightgray", lty = "dotted")
# 5. Trazado de la curva exponencial: Y = a * e^(bX)
curve(a * exp(b * x),
from = min(x_media),
to = max(x_media),
add = TRUE,
col = "red",
lwd = 2)
4.1 ECUACIÓN DEL MODELO
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
eq_text <- paste0(
"Ecuación exponencial\n",
"Y = a * e^(bX)\n\n",
"Y = ", round(a, 4), " * e^(", round(b, 4), " * X)"
)
text(x = 1, y = 1,
labels = eq_text,
cex = 1.6,
col = "blue",
font = 2)
5.1 TEST DE PEARSON
r <- cor(x_media, y_log)
r * 100
## [1] 92.54738
5.2 COEFICIENTE DE DETERMINACIÓN
r2 <- r^2
r2 * 100
## [1] 85.65017
5.3 RESTRICCIONES
min(x_media)
## [1] 0.05
max(x_media)
## [1] 0.49
Sí existe una restricción de aplicabilidad, ya que el modelo exponencial es estadísticamente confiable únicamente dentro del rango de valores observados del contenido de Tulio (ppm), el cual varía entre 0.05 y 0.49. Al intentar realizar predicciones fuera de este intervalo, el modelo pierde capacidad predictiva y puede no representar adecuadamente el comportamiento geoquímico real de las muestras de minas archivadas.
¿Cuál sería la concentración esperada de Samario si el contenido analizado de Tulio es de 1ppm?
# 1. Definir el valor
x_input <- 1
# 2. Aplicamos la ecuación exponencial: Y = a * e^(bX)
y_esp <- a * exp(b * x_input)
# 3. Generamos la gráfica con la pregunta y respuesta
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
resultado_texto <- paste0(
"¿Cuál sería la concentración esperada de Samario\n",
"si el contenido de Tulio es de ", x_input, " ppm?\n\n",
"R = ", round(y_esp, 4), " ppm"
)
text(x = 1, y = 1,
labels = resultado_texto,
cex = 1.3,
col = "blue",
font = 2)
Entre el contenido de Tulio (ppm) y la concentración de Samario (ppm) se observa una relación de tipo exponencial, representada por el modelo \(f(x) = 1.37 \cdot e^{0.205X}\), donde \(x\) corresponde al contenido de Tulio y \(y\) a la concentración de Samario. El modelo presenta una alta confiabilidad dentro del rango geoquímico observado, el cual varía entre 0.05 y 0.49 de Tulio. Se determina que la variabilidad en la concentración de Samario está explicada significativamente por el modelo exponencial, mientras que el porcentaje residual de la variabilidad se atribuye a factores geológicos, alteraciones sobreimpuestas o pulsos de mineralización no contemplados en este análisis.
Ejemplo de aplicación: Cuando el contenido de Tulio es de 1 ppm, el modelo predice una concentración de Samario aproximada de 40.9354 ppm.