1. CARGA DE DATOS

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

2. TABLA DE PARES DE VALORES

# 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

3. 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°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)")

4. CONJETURA DEL MODELO

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. TEST DE APROBACIÓN Y RESTRICCIONES

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\]

6. ESTIMACIÓN DE PRONÓSTICO

¿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)

7. CONCLUSIÓN

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.