1. CARGA DE DATOS Y LIBRERÍAS

#===============================================================================
# 1. CARGA DE DATOS Y LIBRERÍAS
# Proyecto: Análisis de Regresión Logarítmica Simple aplicado a Sedimentos Marinos
#===============================================================================

#------------------------------------------------------------------------------
# Cargar las librerías necesarias
#------------------------------------------------------------------------------

library(dplyr)      # Manipulación de datos
library(gt)         # Creación de tablas profesionales
library(knitr)      # Integración de tablas en RMarkdown

#------------------------------------------------------------------------------
# Importar la base de datos
#------------------------------------------------------------------------------

datos <- read.csv(
  "C:/Users/Grace/Downloads/dataset_geologico_limpio_80.4.csv",
  header = TRUE,
  sep = ",",
  dec = ".",
  stringsAsFactors = FALSE
)

#------------------------------------------------------------------------------
# Resumen general de la base de datos
#------------------------------------------------------------------------------

resumen_bd <- data.frame(
  Descripción = c(
    "Número de observaciones",
    "Número de variables"
  ),
  Valor = c(
    nrow(datos),
    ncol(datos)
  )
)

#------------------------------------------------------------------------------
# Mostrar el resumen de la base de datos
#------------------------------------------------------------------------------

resumen_bd %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1. Resumen de la Base de Datos**")
  ) %>%
  cols_align(
    align = "center"
  ) %>%
  tab_options(
    table.width = pct(60),
    column_labels.font.weight = "bold"
  )
Tabla N°1. Resumen de la Base de Datos
Descripción Valor
Número de observaciones 27784
Número de variables 58

2. SELECCIÓN DE VARIABLES

Para el desarrollo del modelo de regresión lineal se seleccionaron dos variables cuantitativas pertenecientes a la base de datos de sedimentos marinos. La variable independiente corresponde al porcentaje de grava (GRAVEL_PCT), mientras que la variable dependiente corresponde al tamaño promedio del grano (MEAN). Esta selección se fundamenta en que un mayor porcentaje de partículas de grava influye en el incremento del tamaño promedio del sedimento, estableciendo una relación de causa y efecto adecuada para el ajuste del modelo de regresión lineal.

#==============================================================================
# 2. SELECCIÓN DE VARIABLES
#==============================================================================

#------------------------------------------------------------------------------
# Extraer las variables que serán utilizadas en el análisis
#------------------------------------------------------------------------------

# Variable independiente
# Representa el porcentaje de grava presente en cada muestra.

gravel <- as.numeric(datos$GRAVEL_PCT)

# Variable dependiente
# Representa el tamaño promedio del grano del sedimento.

mean_grain <- as.numeric(datos$MEAN)

#------------------------------------------------------------------------------
# Construir una tabla con las variables seleccionadas
#------------------------------------------------------------------------------

tabla_variables <- data.frame(

  Rol = c(

    "Variable Independiente (X)",

    "Variable Dependiente (Y)"

  ),

  Variable = c(

    "GRAVEL_PCT",

    "MEAN"

  ),

  Descripcion = c(

    "Porcentaje de grava (%)",

    "Tamaño promedio del grano (Φ)"

  )

)

#------------------------------------------------------------------------------
# Mostrar la tabla de variables seleccionadas
#------------------------------------------------------------------------------

tabla_variables %>%

  gt() %>%

  tab_header(

    title = md("**Tabla N°2. Variables seleccionadas para el modelo de regresión lineal.**")

  ) %>%

  cols_align(

    align = "center"

  ) %>%

  cols_label(

    Rol = "Rol",

    Variable = "Variable",

    Descripcion = "Descripción"

  ) %>%

  tab_options(

    table.width = pct(80),

    column_labels.font.weight = "bold"

  )
Tabla N°2. Variables seleccionadas para el modelo de regresión lineal.
Rol Variable Descripción
Variable Independiente (X) GRAVEL_PCT Porcentaje de grava (%)
Variable Dependiente (Y) MEAN Tamaño promedio del grano (Φ)

3. TABLA DE PARES DE VALORES

Antes de ajustar el modelo de regresión lineal, es necesario verificar la calidad de la información utilizada. Para ello, se eliminan registros con valores faltantes, infinitos o inconsistentes, se agrupan observaciones repetidas y se identifican valores atípicos mediante el método del rango intercuartílico (IQR). Este procedimiento garantiza que el modelo sea ajustado con información confiable y representativa.

3.1 Construcción de la tabla de pares de valores

#==============================================================================
# 3.1 CONSTRUCCIÓN DE LA TABLA DE PARES DE VALORES
#==============================================================================

#------------------------------------------------------------------------------
# Crear la tabla que contiene únicamente las variables del modelo
#------------------------------------------------------------------------------

# X = Porcentaje de grava.
# Y = Tamaño promedio del grano.

TPV <- data.frame(

  x = gravel,

  y = mean_grain

)
#------------------------------------------------------------------------------
# Contar el número de registros originales
#------------------------------------------------------------------------------

n_original <- nrow(TPV)

cat("Número de registros originales:", n_original)
## Número de registros originales: 27784

3.2 Identificación y eliminación de valores faltantes

Se verifica la existencia de valores faltantes (NA) en ambas variables. Posteriormente, estos registros son eliminados para garantizar que todas las observaciones utilizadas en el modelo de regresión contengan información completa.

#==============================================================================
# 3.2 IDENTIFICACIÓN Y ELIMINACIÓN DE VALORES FALTANTES
#==============================================================================

#------------------------------------------------------------------------------
# Contar los valores faltantes de cada variable
#------------------------------------------------------------------------------

na_x <- sum(is.na(TPV$x))

na_y <- sum(is.na(TPV$y))

#------------------------------------------------------------------------------
# Contar las filas que presentan valores faltantes
#------------------------------------------------------------------------------

n_filas_na <- sum(!complete.cases(TPV))

#------------------------------------------------------------------------------
# Eliminar los registros con valores faltantes
#------------------------------------------------------------------------------

TPV_sin_na <- na.omit(TPV)

#------------------------------------------------------------------------------
# Número de registros disponibles después de la depuración
#------------------------------------------------------------------------------

n_sin_na <- nrow(TPV_sin_na)

cat("Registros con valores faltantes:", n_filas_na, "\n")
## Registros con valores faltantes: 498
cat("Registros disponibles:", n_sin_na)
## Registros disponibles: 27286

3.3 Eliminación de valores infinitos

Después de eliminar los valores faltantes, se verifica la existencia de valores infinitos o no finitos. Estos registros pueden generar errores durante el ajuste del modelo, por lo que son eliminados antes de continuar con el análisis.

#==============================================================================
# 3.3 ELIMINACIÓN DE VALORES INFINITOS
#==============================================================================

#------------------------------------------------------------------------------
# Identificar registros con valores infinitos
#------------------------------------------------------------------------------

TPV_sin_inf <- TPV_sin_na[

  is.finite(TPV_sin_na$x) &
  is.finite(TPV_sin_na$y),

]

#------------------------------------------------------------------------------
# Contar los registros disponibles
#------------------------------------------------------------------------------

n_sin_inf <- nrow(TPV_sin_inf)

#------------------------------------------------------------------------------
# Calcular el número de registros eliminados
#------------------------------------------------------------------------------

n_inf_eliminados <- n_sin_na - n_sin_inf

cat("Registros eliminados:", n_inf_eliminados, "\n")
## Registros eliminados: 0
cat("Registros disponibles:", n_sin_inf)
## Registros disponibles: 27286

3.4 Eliminación de valores inconsistentes Las variables seleccionadas representan valores porcentuales y granulométricos, por lo que únicamente se consideran registros con valores válidos. Esta depuración garantiza que el modelo sea ajustado utilizando información físicamente consistente.

#==============================================================================
# 3.4 ELIMINACIÓN DE VALORES INCONSISTENTES
#==============================================================================

#------------------------------------------------------------------------------
# Conservar únicamente registros con valores válidos
#------------------------------------------------------------------------------

TPV_limpia <- TPV_sin_inf %>%

  filter(

    x >= 0,

    y > 0

  )

#------------------------------------------------------------------------------
# Contar los registros disponibles
#------------------------------------------------------------------------------

n_sin_inconsistencias <- nrow(TPV_limpia)

#------------------------------------------------------------------------------
# Calcular el número de registros eliminados
#------------------------------------------------------------------------------

n_inconsistentes <- n_sin_inf - n_sin_inconsistencias

cat("Registros eliminados:", n_inconsistentes, "\n")
## Registros eliminados: 0
cat("Registros disponibles:", n_sin_inconsistencias)
## Registros disponibles: 27286

3.5 Ordenamiento de los datos

Los registros se ordenan de menor a mayor según la variable independiente. Este procedimiento facilita la lectura de la información y permite organizar adecuadamente los pares de valores antes del ajuste del modelo.

#==============================================================================
# 3.5 ORDENAMIENTO DE LOS DATOS
#==============================================================================

#------------------------------------------------------------------------------
# Ordenar los registros según la variable independiente
#------------------------------------------------------------------------------

TPV_limpia <- TPV_limpia %>%

  arrange(x)

#------------------------------------------------------------------------------
# Visualizar los primeros registros
#------------------------------------------------------------------------------

head(TPV_limpia)
##   x      y
## 1 0 0.9126
## 2 0 0.9411
## 3 0 0.8701
## 4 0 0.6711
## 5 0 0.8553
## 6 0 0.6562

3.6 Agrupación: una X debe tener una sola Y Cuando varios registros presentan el mismo porcentaje de grava, se calcula el promedio del tamaño medio del grano para obtener un único par de valores representativo. Este procedimiento evita duplicidades y facilita el ajuste del modelo de regresión.

#==============================================================================
# 3.6 AGRUPACIÓN DE LOS DATOS
#==============================================================================

#------------------------------------------------------------------------------
# Agrupar los registros con el mismo valor de X
#------------------------------------------------------------------------------

TPV_agrupada <- TPV_limpia %>%

  group_by(x) %>%

  summarise(

    y = mean(y, na.rm = TRUE),

    .groups = "drop"

  )

#------------------------------------------------------------------------------
# Contar el número de registros agrupados
#------------------------------------------------------------------------------

n_agrupados <- nrow(TPV_agrupada)

#------------------------------------------------------------------------------
# Calcular los registros reducidos por agrupación
#------------------------------------------------------------------------------

n_reducidos_agrupacion <- n_sin_inconsistencias - n_agrupados

cat("Registros agrupados:", n_agrupados, "\n")
## Registros agrupados: 4501
cat("Registros reducidos:", n_reducidos_agrupacion)
## Registros reducidos: 22785

3.7 Eliminación de valores atípicos mediante el método IQR

Con el propósito de mejorar el ajuste del modelo de regresión lineal, se identificaron y eliminaron los valores atípicos mediante el método del rango intercuartílico (IQR). Este procedimiento se aplicó tanto a la variable independiente como a la variable dependiente, conservando únicamente los pares de valores comprendidos dentro de los límites establecidos para ambas variables.

#==============================================================================
# 3.7 ELIMINACIÓN DE VALORES ATÍPICOS MEDIANTE EL MÉTODO IQR
#==============================================================================

#------------------------------------------------------------------------------
# Calcular los límites de la variable independiente (GRAVEL_PCT)
#------------------------------------------------------------------------------

Q1_x <- quantile(TPV_agrupada$x, 0.25, na.rm = TRUE)

Q3_x <- quantile(TPV_agrupada$x, 0.75, na.rm = TRUE)

IQR_x <- IQR(TPV_agrupada$x, na.rm = TRUE)

LI_x <- Q1_x - 1.5 * IQR_x

LS_x <- Q3_x + 1.5 * IQR_x

#------------------------------------------------------------------------------
# Calcular los límites de la variable dependiente (MEAN)
#------------------------------------------------------------------------------

Q1_y <- quantile(TPV_agrupada$y, 0.25, na.rm = TRUE)

Q3_y <- quantile(TPV_agrupada$y, 0.75, na.rm = TRUE)

IQR_y <- IQR(TPV_agrupada$y, na.rm = TRUE)

LI_y <- Q1_y - 1.5 * IQR_y

LS_y <- Q3_y + 1.5 * IQR_y

#------------------------------------------------------------------------------
# Eliminar los valores atípicos
#------------------------------------------------------------------------------

TPV_final <- TPV_agrupada %>%

  filter(

    x >= LI_x,
    x <= LS_x,

    y >= LI_y,
    y <= LS_y

  )

#------------------------------------------------------------------------------
# Contar los registros finales
#------------------------------------------------------------------------------

n_final <- nrow(TPV_final)

#------------------------------------------------------------------------------
# Calcular el número de valores atípicos eliminados
#------------------------------------------------------------------------------

n_outliers <- n_agrupados - n_final

cat("Valores atípicos eliminados:", n_outliers, "\n")
## Valores atípicos eliminados: 265
cat("Registros finales:", n_final)
## Registros finales: 4236

3.8 Resumen del tratamiento de datos

Finalmente, se presenta un resumen del tratamiento aplicado a la información. Esta tabla permite conocer el número de registros conservados y eliminados durante cada etapa de la depuración realizada antes del ajuste del modelo de regresión lineal.

#==============================================================================
# 3.8 RESUMEN DEL TRATAMIENTO DE DATOS
#==============================================================================

#------------------------------------------------------------------------------
# Crear la tabla resumen
#------------------------------------------------------------------------------

tabla_resumen <- data.frame(

  Etapa = c(

    "Registros originales",

    "Valores faltantes eliminados",

    "Valores infinitos eliminados",

    "Valores inconsistentes eliminados",

    "Registros reducidos por agrupación",

    "Valores atípicos eliminados",

    "Registros finales"

  ),

  Cantidad = c(

    n_original,

    n_filas_na,

    n_inf_eliminados,

    n_inconsistentes,

    n_reducidos_agrupacion,

    n_outliers,

    n_final

  )

)

#------------------------------------------------------------------------------
# Mostrar la tabla resumen
#------------------------------------------------------------------------------

tabla_resumen %>%

  gt() %>%

  tab_header(

    title = md("**Tabla N°3. Resumen del tratamiento de datos realizado antes del ajuste del modelo de regresión lineal.**")

  ) %>%

  cols_label(

    Etapa = "Etapa",

    Cantidad = "Número de registros"

  ) %>%

  cols_align(

    align = "center"

  ) %>%

  tab_options(

    table.width = pct(85),

    column_labels.font.weight = "bold"

  )
Tabla N°3. Resumen del tratamiento de datos realizado antes del ajuste del modelo de regresión lineal.
Etapa Número de registros
Registros originales 27784
Valores faltantes eliminados 498
Valores infinitos eliminados 0
Valores inconsistentes eliminados 0
Registros reducidos por agrupación 22785
Valores atípicos eliminados 265
Registros finales 4236

3.9 Tabla final de pares de valores

Después del tratamiento de datos, se obtiene la tabla definitiva de pares de valores que será utilizada para construir el diagrama de dispersión y ajustar el modelo de regresión lineal.

#==============================================================================
# 3.9 TABLA FINAL DE PARES DE VALORES
#==============================================================================

#------------------------------------------------------------------------------
# Numerar los registros
#------------------------------------------------------------------------------

TPV_tabla <- TPV_final

TPV_tabla$Registro <- 1:nrow(TPV_tabla)

#------------------------------------------------------------------------------
# Reordenar las columnas
#------------------------------------------------------------------------------

TPV_tabla <- TPV_tabla %>%

  select(

    Registro,

    everything()

  )

#------------------------------------------------------------------------------
# Mostrar los primeros registros
#------------------------------------------------------------------------------

head(TPV_tabla, 20) %>%

  gt() %>%

  tab_header(

    title = md("**Tabla N°4. Pares de valores utilizados en el modelo de regresión lineal.**")

  ) %>%

  cols_label(

    Registro = "N°",

    x = "GRAVEL_PCT (%)",

    y = "MEAN (Φ)"

  ) %>%

  fmt_number(

    columns = c(x, y),

    decimals = 4

  ) %>%

  cols_align(

    align = "center"

  ) %>%

  tab_options(

    table.width = pct(90),

    column_labels.font.weight = "bold"

  )
Tabla N°4. Pares de valores utilizados en el modelo de regresión lineal.
GRAVEL_PCT (%) MEAN (Φ)
1 0.0000 0.8024
2 0.0100 0.7919
3 0.0200 0.8326
4 0.0300 0.7982
5 0.0400 0.8019
6 0.0414 0.6333
7 0.0500 0.8066
8 0.0600 0.8215
9 0.0700 0.8114
10 0.0800 0.8187
11 0.0839 0.8687
12 0.0900 0.8063
13 0.0999 0.6685
14 0.1000 0.8060
15 0.1021 0.4848
16 0.1100 0.8246
17 0.1200 0.8193
18 0.1222 0.9506
19 0.1300 0.8216
20 0.1339 0.7829

3.10 Definición final de las variables para el modelo

Una vez concluido el tratamiento de datos, se definen las variables finales que serán utilizadas para construir el diagrama de dispersión y ajustar el modelo de regresión lineal.

#==============================================================================
# 3.10 DEFINICIÓN FINAL DE LAS VARIABLES
#==============================================================================

#------------------------------------------------------------------------------
# Definir las variables finales del modelo
#------------------------------------------------------------------------------

x <- TPV_final$x

y <- TPV_final$y

#------------------------------------------------------------------------------
# Verificar el número de observaciones finales
#------------------------------------------------------------------------------

cat("Número final de pares de valores:", length(x))
## Número final de pares de valores: 4236

4. DIAGRAMA DE DISPERSIÓN

El diagrama de dispersión permite visualizar el comportamiento conjunto entre el porcentaje de grava (GRAVEL_PCT) y el tamaño promedio del grano (MEAN). Esta representación gráfica facilita identificar la tendencia de los datos y comprobar si existe una relación lineal que justifique el ajuste del modelo de regresión.

#==============================================================================
# 4. DIAGRAMA DE DISPERSIÓN
#==============================================================================

#------------------------------------------------------------------------------
# Construir el diagrama de dispersión
#------------------------------------------------------------------------------

plot(

  x,

  y,

  pch = 16,

  col = "steelblue",

  cex = 0.8,

  main = 
"Gráfica N°1.
Diagrama de dispersión entre el porcentaje
de grava (GRAVEL_PCT) y el tamaño promedio
del grano (MEAN)",

  xlab = "GRAVEL_PCT (%)",

  ylab = "MEAN (Φ)"

)

#------------------------------------------------------------------------------
# Agregar una cuadrícula para facilitar la interpretación
#------------------------------------------------------------------------------

grid(

  col = "gray85",

  lty = 2

)

#------------------------------------------------------------------------------
# Dibujar el marco de la gráfica
#------------------------------------------------------------------------------

box()

5. CONJETURA DEL MODELO

A partir del comportamiento observado en el diagrama de dispersión, se plantea la hipótesis de que existe una relación lineal entre el porcentaje de grava (GRAVEL_PCT) y el tamaño promedio del grano (MEAN). Por esta razón, se propone ajustar un modelo de regresión lineal que describa la relación entre ambas variables.

#==============================================================================
# 5. CONJETURA DEL MODELO LINEAL
#==============================================================================

#------------------------------------------------------------------------------
# Ajustar el modelo de regresión lineal
#------------------------------------------------------------------------------

modelo_lineal <- lm(

  y ~ x

)

#------------------------------------------------------------------------------
# Obtener los coeficientes de la recta
#------------------------------------------------------------------------------

a <- coef(modelo_lineal)[1]

b <- coef(modelo_lineal)[2]

# Mostrar los coeficientes

a
## (Intercept) 
##   0.8039898
b
##          x 
## 0.07487432
#------------------------------------------------------------------------------
# Calcular la recta de regresión
#------------------------------------------------------------------------------

x_modelo <- seq(

  min(x),

  max(x),

  length.out = 500

)

y_modelo <- predict(

  modelo_lineal,

  newdata = data.frame(

    x = x_modelo

  )

)

#------------------------------------------------------------------------------
# Graficar los datos junto con la recta de regresión
#------------------------------------------------------------------------------

plot(

  x,

  y,

  pch = 16,

  col = "steelblue",

  cex = 0.8,

  main =
"Gráfica N°2.
Ajuste del modelo de regresión lineal entre el porcentaje
de grava (GRAVEL_PCT) y el tamaño promedio
del grano (MEAN)",

  xlab = "GRAVEL_PCT (%)",

  ylab = "MEAN (Φ)"

)

#------------------------------------------------------------------------------
# Dibujar la recta de regresión
#------------------------------------------------------------------------------

lines(

  x_modelo,

  y_modelo,

  col = "red",

  lwd = 3

)

#------------------------------------------------------------------------------
# Agregar cuadrícula
#------------------------------------------------------------------------------

grid(

  col = "gray85",

  lty = 2

)
#------------------------------------------------------------------------------
# Dibujar el marco de la gráfica
#------------------------------------------------------------------------------

box()

#------------------------------------------------------------------------------
# Agregar una leyenda
#------------------------------------------------------------------------------

legend(

  "topleft",

  legend = c(

    "Datos observados",

    "Modelo lineal"

  ),

  col = c(

    "steelblue",

    "red"

  ),

  pch = c(

    16,

    NA

  ),

  lty = c(

    NA,

    1

  ),

  lwd = c(

    NA,

    3

  ),

  bty = "n"

)

6. PARÁMETROS DEL MODELO

Una vez ajustado el modelo de regresión lineal, se obtienen los parámetros que definen la ecuación de la recta. Estos coeficientes permiten describir matemáticamente la relación entre el porcentaje de grava (GRAVEL_PCT) y el tamaño promedio del grano (MEAN).

#==============================================================================
# 6. PARÁMETROS DEL MODELO
#==============================================================================

#------------------------------------------------------------------------------
# Obtener los coeficientes del modelo lineal
#------------------------------------------------------------------------------

a <- coef(modelo_lineal)[1]

b <- coef(modelo_lineal)[2]

#------------------------------------------------------------------------------
# Crear una tabla con los parámetros del modelo
#------------------------------------------------------------------------------

tabla_parametros <- data.frame(

  Parámetro = c(

    "Intercepto (a)",

    "Pendiente (b)"

  ),

  Valor = c(

    a,

    b

  )

)

#------------------------------------------------------------------------------
# Mostrar la tabla de parámetros
#------------------------------------------------------------------------------

tabla_parametros %>%

  gt() %>%

  fmt_number(

    columns = Valor,

    decimals = 6

  ) %>%

  cols_align(

    align = "center"

  ) %>%

  tab_header(

    title = md("**Tabla N°5. Parámetros del modelo de regresión lineal.**")

  ) %>%

  tab_options(

    table.width = pct(60),

    column_labels.font.weight = "bold"

  )
Tabla N°5. Parámetros del modelo de regresión lineal.
Parámetro Valor
Intercepto (a) 0.803990
Pendiente (b) 0.074874

6.1 Ecuación del modelo lineal

Los parámetros estimados permiten construir la ecuación del modelo de regresión lineal, la cual será utilizada posteriormente para realizar pronósticos.

#==============================================================================
# 6.1 ECUACIÓN DEL MODELO
#==============================================================================

#------------------------------------------------------------------------------
# Construir la ecuación del modelo
#------------------------------------------------------------------------------

ecuacion <- paste0(

"MEAN = ",

round(a,4),

ifelse(b >= 0," + "," - "),

round(abs(b),4),

" × GRAVEL_PCT"

)

#------------------------------------------------------------------------------
# Mostrar la ecuación
#------------------------------------------------------------------------------

plot(

1,

type = "n",

axes = FALSE,

xlab = "",

ylab = ""

)

text(

1,

1,

ecuacion,

cex = 1.6,

font = 2

)

7. TEST DE PEARSON

7.1 Coeficiente de correlación de Pearson

Una vez obtenido el modelo de regresión lineal, es necesario evaluar la intensidad de la relación entre las variables y determinar la capacidad del modelo para explicar el comportamiento observado. Para ello, se calcula el coeficiente de correlación de Pearson y el coeficiente de determinación (R²), indicadores que permiten valorar la calidad del ajuste obtenido.

#==============================================================================
# 7.1 COEFICIENTE DE CORRELACIÓN DE PEARSON
#==============================================================================

#------------------------------------------------------------------------------
# Calcular el coeficiente de correlación de Pearson
#------------------------------------------------------------------------------

r <- cor(

  x,

  y,

  method = "pearson"

)

#------------------------------------------------------------------------------
# Convertir el resultado a porcentaje
#------------------------------------------------------------------------------

r_porcentaje <- r * 100

cat(

"Coeficiente de Pearson:",

round(r,6),

"\n"

)
## Coeficiente de Pearson: 0.994447
cat(

"Nivel de correlación:",

round(r_porcentaje,2),

"%"

)
## Nivel de correlación: 99.44 %

El coeficiente de correlación de Pearson obtenido fue de 0.9944, lo que indica una correlación lineal positiva muy fuerte entre el porcentaje de grava (GRAVEL_PCT) y el tamaño promedio del grano (MEAN). Esto significa que, a medida que aumenta el porcentaje de grava, el tamaño promedio del grano también tiende a incrementarse.

7.2 Coeficiente de determinación

El coeficiente de determinación (R²) indica el porcentaje de variabilidad de la variable dependiente que es explicado por el modelo de regresión lineal. Cuanto mayor sea este valor, mejor será el ajuste del modelo a los datos observados.

#==============================================================================
# 7.2 COEFICIENTE DE DETERMINACIÓN
#==============================================================================

#------------------------------------------------------------------------------
# Calcular el coeficiente de determinación
#------------------------------------------------------------------------------

R2 <- r^2

#------------------------------------------------------------------------------
# Convertir el resultado a porcentaje
#------------------------------------------------------------------------------

R2_porcentaje <- R2 * 100

cat(

"Coeficiente de determinación:",

round(R2,6),

"\n"

)
## Coeficiente de determinación: 0.988925
cat(

"Variabilidad explicada:",

round(R2_porcentaje,2),

"%"

)
## Variabilidad explicada: 98.89 %

El coeficiente de determinación fue de 98.89 %, lo que significa que el 98.89 % de la variabilidad observada en el tamaño promedio del grano (MEAN) es explicada por el porcentaje de grava (GRAVEL_PCT), mientras que el 1.11 % restante se debe a otros factores no considerados en el modelo.

7.3 Interpretación del ajuste

Con base en el coeficiente de determinación obtenido, se interpreta la calidad del ajuste del modelo de regresión lineal.

#==============================================================================
# 7.3 INTERPRETACIÓN DEL AJUSTE
#==============================================================================

#------------------------------------------------------------------------------
# Clasificar automáticamente la calidad del modelo
#------------------------------------------------------------------------------

interpretacion <- if(R2 >= 0.90){

"Excelente"

}else if(R2 >= 0.70){

"Buena"

}else if(R2 >= 0.50){

"Aceptable"

}else{

"Débil"

}

cat(

"Calidad del ajuste:",

interpretacion

)
## Calidad del ajuste: Excelente

De acuerdo con el coeficiente de determinación obtenido, el modelo presenta un ajuste excelente, por lo que la ecuación de regresión lineal representa adecuadamente la relación existente entre las variables analizadas.

7.4 Resumen del test de aprobación

Finalmente, se presenta un resumen de los principales indicadores estadísticos utilizados para evaluar el ajuste del modelo de regresión lineal.

#==============================================================================
# 7.4 RESUMEN DEL TEST DE APROBACIÓN
#==============================================================================

#------------------------------------------------------------------------------
# Crear una tabla con los indicadores del modelo
#------------------------------------------------------------------------------

tabla_aprobacion <- data.frame(

  Indicador = c(

    "Coeficiente de Pearson",

    "Coeficiente de determinación",

    "Calidad del ajuste"

  ),

  Resultado = c(

    round(r,6),

    paste0(round(R2_porcentaje,2)," %"),

    interpretacion

  )

)

#------------------------------------------------------------------------------
# Mostrar la tabla resumen
#------------------------------------------------------------------------------

tabla_aprobacion %>%

  gt() %>%

  tab_header(

    title = md("**Tabla N°6. Resultados del test de aprobación del modelo de regresión lineal.**")

  ) %>%

  cols_label(

    Indicador = "Indicador",

    Resultado = "Resultado"

  ) %>%

  cols_align(

    align = "center"

  ) %>%

  tab_options(

    table.width = pct(65),

    column_labels.font.weight = "bold"

  )
Tabla N°6. Resultados del test de aprobación del modelo de regresión lineal.
Indicador Resultado
Coeficiente de Pearson 0.994447
Coeficiente de determinación 98.89 %
Calidad del ajuste Excelente

8. RESTRICCIONES DEL MODELO

El modelo de regresión lineal es confiable únicamente para valores del porcentaje de grava comprendidos entre 0.00 % y 70.55 %, ya que este corresponde al intervalo observado en la base de datos. Para valores fuera de este rango, las estimaciones constituyen extrapolaciones y pueden no representar adecuadamente el comportamiento real de los sedimentos marinos.

#==============================================================================
# 8. RESTRICCIONES DEL MODELO
#==============================================================================

#------------------------------------------------------------------------------
# Determinar el rango de la variable independiente
#------------------------------------------------------------------------------

x_min <- min(x, na.rm=TRUE)

x_max <- max(x, na.rm=TRUE)
#------------------------------------------------------------------------------
# Mostrar el intervalo de validez del modelo
#------------------------------------------------------------------------------

cat("Valor mínimo de GRAVEL_PCT:", round(x_min,4), "\n")
## Valor mínimo de GRAVEL_PCT: 0
cat("Valor máximo de GRAVEL_PCT:", round(x_max,4))
## Valor máximo de GRAVEL_PCT: 70.55

8.1 Interpretación de las restricciones

El modelo de regresión lineal es confiable únicamente para valores del porcentaje de grava comprendidos entre los límites observados en la base de datos. La utilización del modelo fuera de este intervalo puede generar estimaciones que no representen adecuadamente el comportamiento real de los sedimentos marinos.

#==============================================================================
# 8.1 INTERPRETACIÓN DE LAS RESTRICCIONES
#==============================================================================

cat(

paste(

"El modelo de regresión lineal es válido para valores de",

"GRAVEL_PCT comprendidos entre",

round(x_min,4),

"y",

round(x_max,4),

"%.",

"Fuera de este intervalo las estimaciones constituyen",

"extrapolaciones y deben interpretarse con precaución."

)

)
## El modelo de regresión lineal es válido para valores de GRAVEL_PCT comprendidos entre 0 y 70.55 %. Fuera de este intervalo las estimaciones constituyen extrapolaciones y deben interpretarse con precaución.

9. ESTIMACIÓN MEDIANTE EL MODELO

Se seleccionó un valor del porcentaje de grava comprendido dentro del rango observado en la base de datos, con el propósito de realizar una estimación mediante interpolación y garantizar la validez del pronóstico obtenido.

#==============================================================================
# 9. CÁLCULO DE PRONÓSTICOS
#==============================================================================

#------------------------------------------------------------------------------
# Seleccionar un valor de GRAVEL_PCT dentro del rango observado
# para realizar una estimación mediante interpolación.
#------------------------------------------------------------------------------
X_nuevo <- 35

#------------------------------------------------------------------------------
# Calcular el pronóstico utilizando el modelo lineal
#------------------------------------------------------------------------------

Y_estimado <- a + b * X_nuevo

#------------------------------------------------------------------------------
# Mostrar el resultado
#------------------------------------------------------------------------------

cat(

"Si el porcentaje de grava es",

X_nuevo,

"%, el tamaño promedio estimado del grano es",

round(Y_estimado,4),

"Φ."

)
## Si el porcentaje de grava es 35 %, el tamaño promedio estimado del grano es 3.4246 Φ.

9.1 Presentación del pronóstico

#==============================================================================
# 9.1 PRESENTACIÓN DEL PRONÓSTICO
#==============================================================================

plot(

1,

type = "n",

axes = FALSE,

xlab = "",

ylab = ""

)

texto <- paste(

"Pronóstico\n\n",

"GRAVEL_PCT =",

X_nuevo,

"%\n\n",

"MEAN =",

round(Y_estimado,4),

" Φ"

)

text(

1,

1,

texto,

cex = 1.5,

font = 2

)

De acuerdo con el modelo de regresión lineal, cuando el porcentaje de grava es del 35 %, se espera que el tamaño promedio del grano sea aproximadamente de (valor obtenido por el modelo) Φ. Esta estimación corresponde a una interpolación, ya que el valor utilizado se encuentra dentro del rango observado de la variable independiente.

10. CONCLUSIÓN

Entre el porcentaje de grava (GRAVEL_PCT) y el tamaño promedio del grano (MEAN) existe una relación lineal positiva, representada por la ecuación del modelo obtenido, siendo “x” el porcentaje de grava y “y” el tamaño promedio del grano. El modelo presentó un coeficiente de correlación de Pearson de 0.9944 y un coeficiente de determinación de 98.89 %, indicando que el porcentaje de grava explica gran parte de la variabilidad observada en el tamaño promedio del grano, mientras que el 1.11 % restante se debe a otros factores no considerados en el modelo. Además, el modelo es válido únicamente dentro del intervalo observado para la variable independiente, comprendido entre 0.00 % y 70.55 %.