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.