ANÁLISIS MULTIVARIABLE

CARGA DE DATOS Y LIBRERÍAS

# =============================================================================
# CARGA DE DATOS
# =============================================================================

datos <- read.csv("D:/modelo_exponencial.csv",
                  header = TRUE)

# =============================================================================
# VERIFICAR DATOS
# =============================================================================

head(datos)
##   CAO_WT_PERCENT K2O_WT_PERCENT
## 1          0.500          1.095
## 2          0.510          1.180
## 3          0.520          0.949
## 4          0.529          1.137
## 5          0.539          1.151
## 6          0.549          0.695
str(datos)
## 'data.frame':    2500 obs. of  2 variables:
##  $ CAO_WT_PERCENT: num  0.5 0.51 0.52 0.529 0.539 0.549 0.559 0.569 0.578 0.588 ...
##  $ K2O_WT_PERCENT: num  1.095 1.18 0.949 1.137 1.151 ...

DIAGRAMA DE DISPERSIÓN

# =============================================================================
# EXTRAER VARIABLES DIRECTAMENTE POR POSICIÓN
# =============================================================================

x <- as.numeric(datos[,1])

y <- as.numeric(datos[,2])

# =============================================================================
# LIMPIEZA DE DATOS
# =============================================================================

validos <- complete.cases(x,y) &
            is.finite(x) &
            is.finite(y) &
            x > 0 &
            y > 0

x <- x[validos]

y <- y[validos]

# =============================================================================
# ORDENAR DATOS
# =============================================================================

orden <- order(x)

x <- x[orden]

y <- y[orden]

# =============================================================================
# DIAGRAMA DE DISPERSIÓN
# =============================================================================

plot(x, y,
     pch = 16,
     col = "blue",
     xlim = c(0, max(x)),
     ylim = c(0, max(y)),
     main = "Grafica N°1 : Diagrama de dispersión entre el contenido de CaO
     y el porcentaje de K2O en muestras geoquímicas",
     xlab = "CaO (%)",
     ylab = "K2O (%)")

# =============================================================================
# AJUSTE DEL MODELO EXPONENCIAL
# =============================================================================

modelo_exp <- nls(y ~ a * exp(b * x),
                  start = list(a = 1,
                               b = 0.05))

summary(modelo_exp)
## 
## Formula: y ~ a * exp(b * x)
## 
## Parameters:
##    Estimate Std. Error t value Pr(>|t|)    
## a 0.9054818  0.0060018   150.9   <2e-16 ***
## b 0.0947302  0.0003232   293.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3384 on 2498 degrees of freedom
## 
## Number of iterations to convergence: 5 
## Achieved convergence tolerance: 5.534e-08
# =============================================================================
# PARÁMETROS
# =============================================================================

coeficientes <- coef(modelo_exp)

a <- coeficientes[1]

b <- coeficientes[2]

a
##         a 
## 0.9054818
b
##          b 
## 0.09473023

CONJETURA DEL MODELO

# =============================================================================
# CURVA EXPONENCIAL
# =============================================================================

x_modelo <- seq(min(x),
                max(x),
                length.out = 200)

y_modelo <- a * exp(b * x_modelo)

# =============================================================================
# COMPARACIÓN MODELO VS REALIDAD
# =============================================================================

plot(x, y,
     pch = 16,
     col = "blue",
     xlim = c(0, max(x)),
     ylim = c(0, max(y)),
     main = "Grafica N°2 : Comparación entre la realidad y el modelo exponencial
     entre el contenido de CaO y el porcentaje de K2O",
     xlab = "CaO (%)",
     ylab = "K2O (%)")

lines(x_modelo,
      y_modelo,
      col = "red",
      lwd = 3)

legend("topleft",
       legend = c("Datos reales",
                  "Modelo exponencial"),
       col = c("blue",
               "red"),
       pch = c(16,
               NA),
       lty = c(NA,
               1),
       lwd = c(NA,
               3))

# =============================================================================
# ECUACIÓN DEL MODELO
# =============================================================================

plot(1,
     type = "n",
     axes = FALSE,
     xlab = "",
     ylab = "")

texto_ecuacion <- paste0(
  "Modelo exponencial general\n",
  "Y = a * e^(bx)\n\n",
  "Modelo ajustado:\n",
  "Y = ",
  round(a, 4),
  " * e^(",
  round(b, 4),
  "x)"
)

text(x = 1,
     y = 1,
     labels = texto_ecuacion,
     cex = 1.5,
     col = "blue",
     font = 2)

TEST DE APROBACION Y RESTRICCIONES

# =============================================================================
# COEFICIENTE DE CORRELACIÓN
# =============================================================================

r <- cor(x, y)

r * 100
## [1] 94.91401
# =============================================================================
# COEFICIENTE DE DETERMINACIÓN
# =============================================================================

predicciones <- predict(modelo_exp)

SSE <- sum((y - predicciones)^2)

SST <- sum((y - mean(y))^2)

r2 <- 1 - (SSE/SST)

r2 * 100
## [1] 98.07562
# =============================================================================
# RESTRICCIONES DEL MODELO
# =============================================================================

plot(1,
     type = "n",
     axes = FALSE,
     xlab = "",
     ylab = "")

text(x = 1,
     y = 1,
     labels = "Evaluación del modelo:
     
     El análisis no evidencia restricciones
     significativas para la aplicación del modelo
     dentro del conjunto de datos estudiado.
     
     La relación lineal observada presenta un ajuste
     consistente y los valores analizados se
     encuentran dentro del comportamiento esperado
     para variables geoquímicas.
     
     Por tanto, el modelo puede utilizarse para
     realizar estimaciones e interpretaciones dentro
     del rango de datos evaluado.
     
     "
     ,
     
     cex = 1.2,
     col = 'darkred',
     font = 2)

CÁLCULO DE PRONOSTICOS

# =============================================================================
# CÁLCULO DE PRONÓSTICOS
# =============================================================================

CaO_Ejemplo <- 15

K2O_Esp <- a * exp(b * CaO_Ejemplo)

K2O_Esp
##        a 
## 3.749661
# =============================================================================
# VISUALIZACIÓN DEL PRONÓSTICO
# =============================================================================

plot(1,
     type = "n",
     axes = FALSE,
     xlab = "",
     ylab = "")

texto_pronostico <- paste0(
  "¿Qué porcentaje de K2O se espera\n",
  "cuando el contenido de CaO es de 15 %?\n\n",
  "R = ",
  round(K2O_Esp, 2),
  " %"
)

text(x = 1,
     y = 1,
     labels = texto_pronostico,
     cex = 1.7,
     col = "blue",
     font = 2)

CONCLUSIÓN

"Entre el contenido de CaO y el porcentaje de K2O existe una relación
de tipo exponencial donde el modelo ajustado sigue la forma
f(x)=a*e^(bx) siendo “x” el contenido de CaO y “y” el porcentaje
de K2O. Esto indica que el comportamiento geoquímico entre ambas
variables presenta cambios no lineales y un crecimiento exponencial
a medida que aumenta el contenido de CaO.

El coeficiente de determinación obtenido demuestra que parte de la
variabilidad del porcentaje de K2O puede ser explicada por el contenido
de CaO, mientras que el resto puede estar asociado a otros factores
geoquímicos, mineralógicos y procesos de alteración presentes en las
muestras analizadas.

Ejemplo: Cuando el contenido de CaO es de 15 % se espera un porcentaje
aproximado de K2O calculado mediante el modelo exponencial ajustado."
## [1] "Entre el contenido de CaO y el porcentaje de K2O existe una relación\nde tipo exponencial donde el modelo ajustado sigue la forma\nf(x)=a*e^(bx) siendo “x” el contenido de CaO y “y” el porcentaje\nde K2O. Esto indica que el comportamiento geoquímico entre ambas\nvariables presenta cambios no lineales y un crecimiento exponencial\na medida que aumenta el contenido de CaO.\n\nEl coeficiente de determinación obtenido demuestra que parte de la\nvariabilidad del porcentaje de K2O puede ser explicada por el contenido\nde CaO, mientras que el resto puede estar asociado a otros factores\ngeoquímicos, mineralógicos y procesos de alteración presentes en las\nmuestras analizadas.\n\nEjemplo: Cuando el contenido de CaO es de 15 % se espera un porcentaje\naproximado de K2O calculado mediante el modelo exponencial ajustado."