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."