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. 

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\nEjemplo: Cuando el contenido de CaO es de 15 % se espera un porcentaje\naproximado de K2O calculado mediante el modelo exponencial ajustado."