CARGA DE DATOS Y LIBRERÍAS

library(DT)
## Warning: package 'DT' was built under R version 4.5.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.3
## 
## 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
datos <- read.csv("ESTADISTICA/dataset_geologico_limpio_80.csv")
library(DT)
library(dplyr)
datos_modelo <- datos %>%
  select(SAND_PCT, CLAY_PCT) %>%
  na.omit() %>%
  filter(SAND_PCT >= 0, SAND_PCT <= 100,
         CLAY_PCT >= 0, CLAY_PCT <= 100)

# PASO 1: Selección de variables
x <- datos_modelo$CLAY_PCT      # Variable independiente: % Arcilla
y <- datos_modelo$SAND_PCT      # Variable dependiente: % Arena

cat("Número de observaciones utilizadas:", nrow(datos_modelo), "\n")
## Número de observaciones utilizadas: 26729
# Filtrado suave de outliers para mejorar la apariencia de la gráfica
modelo_temp <- lm(y ~ x)
residuos <- residuals(modelo_temp)
datos_filtrados <- datos_modelo[abs(residuos) <= 2 * sd(residuos), ]

x_fil <- datos_filtrados$CLAY_PCT
y_fil <- datos_filtrados$SAND_PCT

Tabla de pares de valores

#Paso 2 Tabla de pares de valores 
tabla <- data.frame(
  "Porcentaje de Arcilla (%)" = round(x_fil, 2),
  "Porcentaje de Arena (%)" = round(y_fil, 2)
)

datatable(tabla,
          caption = htmltools::tags$caption(
            style = "caption-side: top; text-align: center; font-weight: bold;",
            "Tabla Nro. 3. ",
            htmltools::tags$span(
              style = "font-weight: normal;",
              "Pares de valores entre Porcentaje de Arcilla y Porcentaje de Arena"
            )
          ),
          extensions = c("Scroller"),
          options = list(
            deferRender = TRUE,
            scrollY = 380,
            scrollX = TRUE,
            scroller = TRUE,
            pageLength = 10,
            lengthMenu = c(5, 10, 25, 50, 100),
            searching = TRUE
          ),
          rownames = FALSE
)

Diagrama de dispersión

# PASO 3: Gráfica de dispersión
plot(x_fil, y_fil, main = "Gráfica N1:Diagrama de dispersión entre Porcentaje de Arcilla y Porcentaje de Arena de depositos de sedimentos marinos " 
      ,
     xlab = "Porcentaje de Arcilla (%)",
     ylab = "Porcentaje de Arena (%)",
     pch = 16,
     col = rgb(0.2, 0.6, 0.9, 0.75))

Conjetura del Modelo

# PASO 4: Ajuste del modelo de regresión lineal
modelo_lineal <- lm(y_fil ~ x_fil)

a_est <- round(coef(modelo_lineal)[1], 4)
b_est <- round(coef(modelo_lineal)[2], 4)

# PASO 5: Gráfica con la recta de regresión 
plot(x_fil, y_fil,
     main = "Gráfica N2:Comparación de la realidad con el modelo lineal
     entre nPorcentaje de Arcilla y  Porcentaje de Arena de depositos de sedimentos marinos",
     xlab = "Porcentaje de Arcilla (%)",
     ylab = "Porcentaje de Arena (%)",
     pch = 16,
     col = rgb(0.2, 0.6, 0.9, 0.8),
     cex = 0.9)
 
abline(modelo_lineal, col = "#e63939", lwd = 3.5)

legend("topright", 
       legend = "Modelo lineal ajustado",
       col = "#e63939", lwd = 3.5, bty = "n")

# PASO 6: Ecuación del modelo

plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1, 
     labels = paste0("ECUACIÓN DEL MODELO LINEAL\n\n",
                     "Y = ax + b\n\n",
                     "Y = ", a_est, " + ", b_est, "x\n\n",
                     "Donde:\n",
                     "Y = Porcentaje de Arena (%)\n",
                     "x = Porcentaje de Arcilla (%)"),
     cex = 2.2, col = "blue", font = 2)

Evaluación del modelo y Restricciones

# PASO 7:Evaluación del modelo

r_abs <- round(abs(cor(x_fil, y_fil)) * 100, 2)
r2 <- round(summary(modelo_lineal)$r.squared * 100, 2)

cat("Coeficiente de correlación |r| =", r_abs, "%\n")
## Coeficiente de correlación |r| = 84.31 %
cat("Coeficiente de determinación (R²) =", r2, "%\n")
## Coeficiente de determinación (R²) = 71.09 %
# PASO 8: Restricciones del modelo

cat("\n**Restricciones del modelo:**\n")
## 
## **Restricciones del modelo:**
cat("- Dominio de x (% Arcilla): [0, 100]\n")
## - Dominio de x (% Arcilla): [0, 100]
cat("- Dominio de y (% Arena): [0, 100]\n")
## - Dominio de y (% Arena): [0, 100]
cat("- El modelo es válido únicamente dentro del rango observado de los datos.\n")
## - El modelo es válido únicamente dentro del rango observado de los datos.
cat("- No se recomienda extrapolar fuera de los límites 0% - 100%.\n")
## - No se recomienda extrapolar fuera de los límites 0% - 100%.

Cálculo de Pronosticos

# PASO 9: cálculo de Pronósticos
cat("\n=== OTROS PRONÓSTICOS ===\n")
## 
## === OTROS PRONÓSTICOS ===
arcilla_values <- c(10, 30, 50, 70, 90)
for (arcilla in arcilla_values) {
  arena_pred <- a_est + b_est * arcilla
  cat(sprintf("Si Arcilla = %d%% → Arena esperada ≈ %.2f%%\n", arcilla, arena_pred))
}
## Si Arcilla = 10% → Arena esperada ≈ 67.31%
## Si Arcilla = 30% → Arena esperada ≈ 33.61%
## Si Arcilla = 50% → Arena esperada ≈ -0.08%
## Si Arcilla = 70% → Arena esperada ≈ -33.77%
## Si Arcilla = 90% → Arena esperada ≈ -67.46%

Conclusiones

cat("\n=== CONCLUSIÓN ===\n")
## 
## === CONCLUSIÓN ===
cat("Entre el Porcentaje de Arena (%) y el Porcentaje de Arcilla (%) existe una relación lineal inversa fuerte.\n")
## Entre el Porcentaje de Arena (%) y el Porcentaje de Arcilla (%) existe una relación lineal inversa fuerte.
cat("Ecuación ajustada: ŷ =", a_est, "+", b_est, "· x\n")
## Ecuación ajustada: ŷ = 84.1522 + -1.6846 · x
cat("donde ŷ = Porcentaje de Arena (%) y x = Porcentaje de Arcilla (%).\n\n")
## donde ŷ = Porcentaje de Arena (%) y x = Porcentaje de Arcilla (%).
cat("La fuerza de la relación es del", r_abs, "% (correlación absoluta).\n")
## La fuerza de la relación es del 84.31 % (correlación absoluta).
cat("El modelo explica un", r2, "% de la variabilidad en el porcentaje de arena.\n")
## El modelo explica un 71.09 % de la variabilidad en el porcentaje de arena.
cat("Esto es consistente con principios sedimentológicos: a mayor contenido de arcilla, menor contenido de arena.\n")
## Esto es consistente con principios sedimentológicos: a mayor contenido de arcilla, menor contenido de arena.