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(scatterplot3d)
library(MASS) # Necesaria para Estimación robusta
##
## Adjuntando el paquete: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
# 1. Asignación de variables genéricas
VAR_X1 <- as.numeric(datos$La_ppm_MS_ST)
VAR_X2 <- as.numeric(datos$Pr_ppm_MS_ST)
VAR_Y <- as.numeric(datos$Ce_ppm_MS_ST)
TPV_MULT <- data.frame(VAR_X1, VAR_X2, VAR_Y)
# 2. Limpieza inicial de nulos y ceros
TPV_MULT <- na.omit(TPV_MULT)
TPV_MULT <- TPV_MULT[TPV_MULT$VAR_X1 > 0 & TPV_MULT$VAR_X2 > 0 & TPV_MULT$VAR_Y > 0, ]
# Imprimir el tamaño muestral total
total_datos <- nrow(TPV_MULT)
cat("Total de datos válidos utilizados para el análisis completo:", total_datos, "\n\n")
## Total de datos válidos utilizados para el análisis completo: 1215
# -------------------------------------------------------------------
# AGRUPACIÓN PARA MAXIMIZAR CORRELACIÓN (Incluyendo outliers)
# -------------------------------------------------------------------
# Ahora agrupamos Y en función de las combinaciones de X1 y X2
tabla_media <- aggregate(VAR_Y ~ VAR_X1 + VAR_X2,
data = TPV_MULT,
FUN = mean)
# 3. Extracción de vectores limpios para el modelo
x1_media <- tabla_media$VAR_X1
x2_media <- tabla_media$VAR_X2
y_media <- tabla_media$VAR_Y
# Mostrar la tabla final
cat("Mostrando las primeras 20 filas de la tabla:\n")
## Mostrando las primeras 20 filas de la tabla:
print(head(tabla_media, n = 20))
## VAR_X1 VAR_X2 VAR_Y
## 1 0.2 0.05 0.55
## 2 0.3 0.05 0.46
## 3 1.4 0.05 0.60
## 4 0.2 0.06 0.60
## 5 0.3 0.06 0.50
## 6 0.5 0.06 0.40
## 7 0.6 0.06 0.90
## 8 0.2 0.07 0.50
## 9 0.3 0.07 0.55
## 10 0.4 0.07 0.55
## 11 0.8 0.07 0.70
## 12 1.7 0.07 0.30
## 13 0.1 0.08 0.50
## 14 0.2 0.08 0.70
## 15 0.3 0.08 0.50
## 16 0.4 0.08 0.40
## 17 0.2 0.09 0.75
## 18 0.3 0.09 0.65
## 19 0.4 0.09 0.50
## 20 0.6 0.09 0.90
# Extraer las variables
x1 <- x1_media
x2 <- x2_media
y <- y_media
# Generar el gráfico 3D base (solo los puntos)
library(scatterplot3d)
scatterplot3d(x1, x2, y,
angle = 60,
pch = 16,
color = "darkblue",
main = "Gráfica N°1: Diagrama de Dispersión 3D\nLantano (La) y Praseodimio (Pr) sobre Cerio (Ce)",
xlab = "Concentración de Lantano (ppm)",
ylab = "Concentración de Praseodimio (ppm)",
zlab = "Concentración de Cerio (ppm)")
DEBIDO A QUE LA NUBE DE PUNTOS ES COMPLEJA SE PROCEDE A TRATAR A LOS DATOS
4.1 TABLA DE PARES DE VALORES: tratamiento de datos (valor unico x, unico y)
# 1. Asignación de variables genéricas
VAR_X1 <- as.numeric(datos$La_ppm_MS_ST)
VAR_X2 <- as.numeric(datos$Pr_ppm_MS_ST)
VAR_Y <- as.numeric(datos$Ce_ppm_MS_ST)
TPV_MULT <- data.frame(VAR_X1, VAR_X2, VAR_Y)
# 2. Limpieza inicial de nulos y ceros
TPV_MULT <- na.omit(TPV_MULT)
TPV_MULT <- TPV_MULT[TPV_MULT$VAR_X1 > 0 & TPV_MULT$VAR_X2 > 0 & TPV_MULT$VAR_Y > 0, ]
# -------------------------------------------------------------------
# MÉTODO RIGUROSO: DISTANCIA DE MAHALANOBIS EN 3D
# -------------------------------------------------------------------
set.seed(2345)
estimacion_robusta <- cov.rob(TPV_MULT)
distancias <- mahalanobis(TPV_MULT,
center = estimacion_robusta$center,
cov = estimacion_robusta$cov)
# ATENCIÓN: Los grados de libertad (df) cambian a 3 porque ahora hay 3 variables
umbral_chi2 <- qchisq(0.975, df = 3)
TPV_limpio <- TPV_MULT[distancias <= umbral_chi2, ]
# Filtro final de dominio geológico (opcional, ajusta los valores o coméntalo)
TPV_FILTRADO <- TPV_limpio[TPV_limpio$VAR_X1 < 20 & TPV_limpio$VAR_X2 < 20 & TPV_limpio$VAR_Y < 80, ]
# -------------------------------------------------------------------
# AGRUPACIÓN PARA MAXIMIZAR CORRELACIÓN
# -------------------------------------------------------------------
# Ahora agrupamos Y en función de las combinaciones de X1 y X2
tabla_media <- aggregate(VAR_Y ~ VAR_X1 + VAR_X2,
data = TPV_FILTRADO,
FUN = mean)
# 3. Extracción de vectores limpios para el modelo
x1_media <- tabla_media$VAR_X1
x2_media <- tabla_media$VAR_X2
y_media <- tabla_media$VAR_Y
# Mostrar la tabla final
cat("Mostrando las primeras 20 filas de la tabla:\n")
## Mostrando las primeras 20 filas de la tabla:
print(head(tabla_media, n = 20))
## VAR_X1 VAR_X2 VAR_Y
## 1 0.2 0.05 0.55
## 2 0.3 0.05 0.46
## 3 1.4 0.05 0.60
## 4 0.2 0.06 0.60
## 5 0.3 0.06 0.50
## 6 0.5 0.06 0.40
## 7 0.6 0.06 0.90
## 8 0.2 0.07 0.50
## 9 0.3 0.07 0.55
## 10 0.4 0.07 0.55
## 11 0.8 0.07 0.70
## 12 1.7 0.07 0.30
## 13 0.1 0.08 0.50
## 14 0.2 0.08 0.70
## 15 0.3 0.08 0.50
## 16 0.4 0.08 0.40
## 17 0.2 0.09 0.75
## 18 0.3 0.09 0.65
## 19 0.4 0.09 0.50
## 20 0.6 0.09 0.90
4.2 DIAGRAMA DE DISPERSIÓN
# Extraer las variables
x1 <- x1_media
x2 <- x2_media
y <- y_media
# Generar el gráfico 3D base (solo los puntos)
library(scatterplot3d)
scatterplot3d(x1, x2, y,
angle = 60,
pch = 16,
color = "darkblue",
main = "Gráfica N°2: Diagrama de Dispersión 3D\nLantano (La) y Praseodimio (Pr) sobre Cerio (Ce)",
xlab = "Concentración de Lantano (ppm)",
ylab = "Concentración de Praseodimio (ppm)",
zlab = "Concentración de Cerio (ppm)")
4.3 CONJETURA DEL MODELO MÚLTIPLE
# Gráfica de comparación
plot3d <- scatterplot3d(x1, x2, y,
angle = 60,
pch = 16,
color = "blue",
main = "Gráfica N°3: Comparación de la realidad con el\nmodelo multivariable lineal",
xlab = "Concentración de Lantano (ppm)",
ylab = "Concentración de Praseodimio (ppm)",
zlab = "Concentración de Cerio (ppm)")
# Cálculo de parámetros
regresion_multiple <- lm(y ~ x1 + x2)
summary(regresion_multiple)
##
## Call:
## lm(formula = y ~ x1 + x2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.9048 -0.3794 0.1208 0.4304 2.6514
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.37353 0.05029 -7.427 3.61e-13 ***
## x1 0.77568 0.02618 29.630 < 2e-16 ***
## x2 5.11968 0.10889 47.016 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8527 on 632 degrees of freedom
## Multiple R-squared: 0.9919, Adjusted R-squared: 0.9919
## F-statistic: 3.879e+04 on 2 and 632 DF, p-value: < 2.2e-16
# Plano
plot3d$plane3d(regresion_multiple, col = "red", lty = "dotted")
4.4 ECUACIÓN DEL MODELO
coeficientes <- coef(regresion_multiple)
a <- round(coeficientes[1], 3)
b <- round(coeficientes[2], 3)
c <- round(coeficientes[3], 3)
# Mostrar ecuación en gráfico
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1,
labels = paste("Ecuación Múltiple Lineal\n",
"Y = a + bx1 + cx2\n",
"Y =", a, "+", b, "x1 +", c,"x2"),
cex = 1.8,
col = "blue",
font = 2)
5.1 Test de Pearson
r <- cor(y, fitted(regresion_multiple))
r * 100
## [1] 99.59513
5.2 COEFICIENTE DE DETERMINACIÓN
r2 <- r^2
r2 * 100
## [1] 99.1919
5.3 Restricciones
Dado que las variables están expresadas en partes por millón (ppm), el dominio físico del modelo requiere que las concentraciones sean estrictamente no negativas. No obstante, el modelo multivariable lineal puede generar predicciones fuera de dicho rango debido a la combinación matemática de las variables independientes. Por esta razón, la interpretación del modelo se limita estrictamente al rango observado de Lantano (ppm) y Praseodimio (ppm), evitando extrapolaciones fuera del dominio analizado.
Adicionalmente, las predicciones de Cerio (ppm) deben mantener coherencia física, admitiendo únicamente valores mayores o iguales a cero.
\[La, Pr, Ce \geq 0\] \[La \in [La_{min}, La_{max}]\] \[Pr \in [Pr_{min}, Pr_{max}]\] \[Ce_{predicho} \geq 0\]
¿Cuál sería la concentración esperada de Cerio (Ce) si el contenido analizado de Lantano (La) es de 2 ppm y el de Praseodimio (Pr) es de 0.5 ppm?
# 1. Definimos los valores de entrada para las variables independientes
x1_input <- 2
x2_input <- 0.5
# 2. Aplicamos la ecuación del modelo multivariable
Ce_Est <- regresion_multiple$coefficients[1] +
regresion_multiple$coefficients[2] * x1_input +
regresion_multiple$coefficients[3] * x2_input
# Imprimir en consola para verificación
Ce_Est
## (Intercept)
## 3.737674
# 3. Mostrar resultado en gráfico
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
resultado_texto <- paste0(
"¿Qué concentración de Cerio (Ce) se espera\n",
"para un contenido de Lantano = ", x1_input, " ppm y Praseodimio = ", x2_input, " ppm?\n\n",
"Cerio estimado = ", round(Ce_Est, 2), " ppm"
)
text(x = 1, y = 1,
labels = resultado_texto,
cex = 1.1,
col = "blue",
font = 2)
El valor de Cerio está influenciado en un alto porcentaje por la combinación de Lantano y Praseodimio, lo que se evidencia en el elevado coeficiente de determinación obtenido. Esto indica que el modelo explica de manera adecuada la variabilidad de este elemento en las muestras analizadas.
Además, el modelo presenta coherencia tanto estadística como geoquímica, ya que las variables utilizadas pertenecen al grupo de los elementos tierras raras (REE) y comparten una fuerte afinidad de fraccionamiento, permitiendo una interpretación consistente del comportamiento del sistema mineralizante.
Por ejemplo, al considerar valores específicos de las variables independientes (como Lantano = 2 ppm y Praseodimio = 0.5 ppm), es posible estimar la concentración esperada de Cerio mediante la ecuación del modelo, lo que demuestra su utilidad como herramienta de análisis y predicción geoquímica.