# =============================================================================
# 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
## '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 ...
# =============================================================================
# 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
## 0.09473023
# =============================================================================
# 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)# =============================================================================
# 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 = "Restricciones del modelo:
- El contenido de CaO debe ser mayor a 0 %
- El porcentaje de K2O debe ser mayor a 0 %
- El modelo exponencial es válido únicamente
dentro del rango analizado
- La relación entre variables debe mantener
comportamiento exponencial
- Factores geoquímicos y mineralógicos externos
pueden afectar el comportamiento del modelo",
cex = 1.1,
col = "darkred",
font = 2)# =============================================================================
# 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)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.