library(dplyr)
library(knitr)
library(gt)
datos <- read.csv(
paste0(
"C:/Users/Grace/OneDrive/Escritorio/Proyecto Estadistica/",
"data_limpio_80v/texture.csv"
),
header = TRUE,
sep = ",",
dec = ".",
stringsAsFactors = FALSE
)
data.frame(
Descripción = c("Número de observaciones", "Número de variables"),
Valor = c(nrow(datos), ncol(datos))
) %>%
gt() %>%
tab_header(
title = md("**Tabla N.° 1. Resumen del conjunto de datos**")
) %>%
cols_align(align = "center")
| Tabla N.° 1. Resumen del conjunto de datos | |
| Descripción | Valor |
|---|---|
| Número de observaciones | 27784 |
| Número de variables | 58 |
x_original <- as.numeric(datos$SAND_PCT)
y_original <- as.numeric(datos$KURTOSIS)
tabla_variables <- data.frame(
Rol = c("Variable independiente (X)", "Variable dependiente (Y)"),
Variable = c("SAND_PCT", "KURTOSIS"),
Descripción = c(
"Porcentaje de arena (%)",
"Curtosis de la distribución granulométrica"
)
)
tabla_variables %>%
gt() %>%
tab_header(
title = md("**Tabla N.° 2. Variables seleccionadas**"),
subtitle = "Modelo de regresión polinómica"
) %>%
cols_align(align = "center")
| Tabla N.° 2. Variables seleccionadas | ||
| Modelo de regresión polinómica | ||
| Rol | Variable | Descripción |
|---|---|---|
| Variable independiente (X) | SAND_PCT | Porcentaje de arena (%) |
| Variable dependiente (Y) | KURTOSIS | Curtosis de la distribución granulométrica |
La variable independiente SAND_PCT representa el
porcentaje de arena presente en cada muestra, mientras que la variable
dependiente KURTOSIS describe el grado de concentración y
el comportamiento de las colas de la distribución granulométrica. La
dirección planteada es físicamente defendible porque un cambio en la
proporción de arena modifica la composición de tamaños de grano y, por
tanto, puede influir en la forma de su distribución. Esta relación
expresa una influencia estadística coherente, pero no demuestra por sí
sola causalidad experimental.
Antes de ajustar el modelo de regresión polinómica, es necesario verificar que el conjunto de datos contenga información válida, consistente y representativa del fenómeno estudiado. Para ello, se construye la tabla de pares, se excluyen registros inválidos y duplicados exactos, y posteriormente se identifican valores atípicos extremos. Este procedimiento permite estimar el modelo con pares de valores confiables y reduce la influencia de errores de registro sobre la forma de la curva.
3.1 Construcción de la tabla de pares de valores
El conjunto de datos contiene numerosas variables
granulométricas; sin embargo, para este modelo únicamente se requieren
la variable independiente SAND_PCT y la variable
dependiente KURTOSIS. Por esta razón, se construye una
tabla que contiene exclusivamente los pares correspondientes al
porcentaje de arena y a la curtosis granulométrica.
#==============================================================================
# 3.1 CONSTRUCCIÓN DE LA TABLA DE PARES DE VALORES
#==============================================================================
# X = SAND_PCT -> Porcentaje de arena presente en cada muestra.
# Y = KURTOSIS -> Curtosis de la distribución granulométrica.
TPV <- data.frame(
SAND_PCT = as.numeric(datos$SAND_PCT),
KURTOSIS = as.numeric(datos$KURTOSIS)
)
# Registrar el número inicial de observaciones.
n_original <- nrow(TPV)
cat("Número inicial de observaciones:", n_original)
## Número inicial de observaciones: 27784
3.2 Verificación y exclusión de datos inválidos
Una vez construida la tabla, se excluyen los registros con
valores faltantes, infinitos o inconsistentes, porque pueden afectar la
estimación de los parámetros. Como SAND_PCT representa un
porcentaje, únicamente se aceptan valores entre 0 % y 100 %. A
diferencia de una regresión logarítmica, en este modelo polinómico sí
puede conservarse SAND_PCT = 0, porque no se aplica la
transformación \(\log(X)\). También se
excluye el código -9999, utilizado para representar
información ausente.
#==============================================================================
# 3.2 VERIFICACIÓN Y EXCLUSIÓN DE DATOS INVÁLIDOS
#==============================================================================
# Identificar registros con valores faltantes.
n_na <- sum(!complete.cases(TPV))
# Conservar únicamente observaciones válidas.
TPV_valida <- TPV %>%
filter(
!is.na(SAND_PCT),
!is.na(KURTOSIS),
is.finite(SAND_PCT),
is.finite(KURTOSIS),
SAND_PCT != -9999,
KURTOSIS != -9999,
SAND_PCT >= 0,
SAND_PCT <= 100
)
n_validos <- nrow(TPV_valida)
n_invalidos <- n_original - n_validos
cat("Observaciones válidas:", n_validos, "\n")
## Observaciones válidas: 24427
cat("Observaciones excluidas:", n_invalidos)
## Observaciones excluidas: 3357
3.3 Identificación y exclusión de duplicados exactos
Un mismo porcentaje de arena puede presentar diferentes
valores de curtosis y esas observaciones no deben eliminarse, porque
representan la variabilidad natural de las muestras. Por ello, no se
promedian todas las observaciones que comparten un valor de
SAND_PCT; únicamente se excluyen los pares exactamente
duplicados, es decir, aquellos que repiten simultáneamente el mismo
valor de SAND_PCT y de KURTOSIS. De esta
manera se evita otorgar un peso adicional a registros idénticos sin
modificar la tendencia original.
#==============================================================================
# 3.3 IDENTIFICACIÓN Y EXCLUSIÓN DE DUPLICADOS EXACTOS
#==============================================================================
TPV_sin_duplicados <- TPV_valida %>%
distinct(SAND_PCT, KURTOSIS, .keep_all = TRUE)
n_sin_duplicados <- nrow(TPV_sin_duplicados)
n_duplicados <- n_validos - n_sin_duplicados
cat("Observaciones después de excluir duplicados:", n_sin_duplicados, "\n")
## Observaciones después de excluir duplicados: 23894
cat("Duplicados exactos excluidos:", n_duplicados)
## Duplicados exactos excluidos: 533
3.4 Identificación y exclusión de valores atípicos mediante residuos studentizados
Para identificar únicamente las observaciones extremadamente
alejadas de la tendencia, se ajusta un modelo polinómico preliminar de
tercer grado y se calculan sus residuos studentizados. Se excluyen los
pares cuyo residuo studentizado tiene un valor absoluto superior a 3.
Este criterio es conservador: elimina registros con una discrepancia
extrema respecto al modelo preliminar, pero mantiene la dispersión
natural de los datos geológicos. El tratamiento se aplica exclusivamente
a SAND_PCT y KURTOSIS y no modifica
manualmente ningún valor.
#==============================================================================
# 3.4 IDENTIFICACIÓN Y EXCLUSIÓN DE VALORES ATÍPICOS
# MEDIANTE RESIDUOS STUDENTIZADOS
#==============================================================================
# Ajustar un modelo preliminar con el mismo grado del modelo definitivo.
modelo_base <- lm(
KURTOSIS ~ SAND_PCT + I(SAND_PCT^2) + I(SAND_PCT^3),
data = TPV_sin_duplicados
)
# Calcular los residuos studentizados.
TPV_con_residuos <- TPV_sin_duplicados %>%
mutate(residuo_student = rstudent(modelo_base))
# Conservar las observaciones con |residuo studentizado| <= 3.
TPV_final <- TPV_con_residuos %>%
filter(
!is.na(residuo_student),
abs(residuo_student) <= 3
) %>%
select(-residuo_student) %>%
arrange(SAND_PCT)
n_final <- nrow(TPV_final)
n_outliers <- n_sin_duplicados - n_final
porcentaje_outliers <- 100 * n_outliers / n_sin_duplicados
porcentaje_eliminado <- 100 * (n_original - n_final) / n_original
cat("Observaciones utilizadas en el modelo:", n_final, "\n")
## Observaciones utilizadas en el modelo: 23382
cat("Observaciones atípicas extremas excluidas:", n_outliers, "\n")
## Observaciones atípicas extremas excluidas: 512
cat("Porcentaje de outliers extremos:", round(porcentaje_outliers, 2), "%")
## Porcentaje de outliers extremos: 2.14 %
3.5 Conjunto final de pares de valores
Después de la validación, exclusión de duplicados y
depuración se obtiene el conjunto final de pares que se utilizará para
construir el diagrama de dispersión y ajustar el modelo polinómico de
tercer grado. La tabla presenta las primeras 20 observaciones para
facilitar su lectura, aunque el modelo utiliza la totalidad de los pares
contenidos en TPV_final.
#==============================================================================
# 3.5 CONJUNTO FINAL DE PARES DE VALORES
#==============================================================================
tabla_depuracion <- data.frame(
Etapa = c(
"Datos originales",
"Registros inválidos excluidos",
"Duplicados exactos excluidos",
"Outliers extremos excluidos (|residuo studentizado| > 3)",
"Datos finales utilizados en la regresión"
),
Registros = c(
n_original,
n_invalidos,
n_duplicados,
n_outliers,
n_final
)
)
tabla_depuracion %>%
gt() %>%
cols_label(
Etapa = "Etapa del tratamiento",
Registros = "Número de registros"
) %>%
tab_header(
title = md("**Tabla N.° 3. Resumen del tratamiento de datos**"),
subtitle = paste0(
"Registros antes: ", n_original,
"; registros después: ", n_final,
"; porcentaje total excluido: ",
round(porcentaje_eliminado, 2), "%"
)
) %>%
cols_align(align = "center") %>%
tab_options(
table.width = pct(90),
column_labels.font.weight = "bold"
)
| Tabla N.° 3. Resumen del tratamiento de datos | |
| Registros antes: 27784; registros después: 23382; porcentaje total excluido: 15.84% | |
| Etapa del tratamiento | Número de registros |
|---|---|
| Datos originales | 27784 |
| Registros inválidos excluidos | 3357 |
| Duplicados exactos excluidos | 533 |
| Outliers extremos excluidos (|residuo studentizado| > 3) | 512 |
| Datos finales utilizados en la regresión | 23382 |
TPV_tabla <- TPV_final %>%
mutate(Nro = row_number()) %>%
select(Nro, everything())
head(TPV_tabla, 20) %>%
gt() %>%
cols_label(
Nro = "N.°",
SAND_PCT = "SAND_PCT (%)",
KURTOSIS = "KURTOSIS"
) %>%
tab_header(
title = md(
"**Tabla N.° 4. Conjunto final de pares utilizados para el ajuste del modelo polinómico.**"
)
) %>%
fmt_number(
columns = c(SAND_PCT, KURTOSIS),
decimals = 4
) %>%
cols_align(align = "center") %>%
tab_options(
table.width = pct(90),
column_labels.font.weight = "bold"
)
| Tabla N.° 4. Conjunto final de pares utilizados para el ajuste del modelo polinómico. | ||
| N.° | SAND_PCT (%) | KURTOSIS |
|---|---|---|
| 1 | 0.0000 | 0.0200 |
| 2 | 0.0000 | −0.4000 |
| 3 | 0.0000 | −0.3700 |
| 4 | 0.0000 | 0.5000 |
| 5 | 0.0000 | −0.2700 |
| 6 | 0.0000 | −0.5900 |
| 7 | 0.0000 | −0.3300 |
| 8 | 0.0000 | −0.6700 |
| 9 | 0.0000 | −0.4400 |
| 10 | 0.0000 | −0.6500 |
| 11 | 0.0000 | −0.3200 |
| 12 | 0.0000 | −0.4800 |
| 13 | 0.0000 | −0.8100 |
| 14 | 0.0000 | 0.5900 |
| 15 | 0.0000 | −0.5500 |
| 16 | 0.0000 | 0.0000 |
| 17 | 0.0000 | −19.5800 |
| 18 | 0.0000 | −1.9600 |
| 19 | 0.0000 | −2.0700 |
| 20 | 0.0000 | −1.2600 |
# Definir las variables finales del modelo.
x <- TPV_final$SAND_PCT
y <- TPV_final$KURTOSIS
La primera gráfica permite observar el comportamiento inicial de las
variables. Para evitar que los códigos de ausencia destruyan la escala
visual, se representan los pares numéricos finitos distintos de
-9999, pero todavía no se aplican las restricciones
físicas, la exclusión de duplicados ni el tratamiento mediante residuos
studentizados.
TPV_grafica_original <- TPV %>%
filter(
!is.na(SAND_PCT),
!is.na(KURTOSIS),
is.finite(SAND_PCT),
is.finite(KURTOSIS),
SAND_PCT != -9999,
KURTOSIS != -9999
)
set.seed(2026)
indice_original <- sample(
seq_len(nrow(TPV_grafica_original)),
min(3000, nrow(TPV_grafica_original))
)
plot(
TPV_grafica_original$SAND_PCT[indice_original],
TPV_grafica_original$KURTOSIS[indice_original],
pch = 16,
cex = 0.65,
col = rgb(0, 0, 1, 0.32),
main = "Gráfica N.° 1. Datos originales antes del tratamiento",
xlab = "SAND_PCT (porcentaje de arena, %)",
ylab = "KURTOSIS (curtosis granulométrica)"
)
grid()
La nube original presenta una dispersión elevada e incorpora valores físicamente inconsistentes, duplicados y observaciones extremas. Por ello, esta gráfica se utiliza como diagnóstico inicial y no como base directa para formular el modelo definitivo.
La siguiente gráfica utiliza el conjunto final depurado. Para mejorar
la legibilidad se representa una muestra reproducible de hasta 3000
puntos; esta selección afecta únicamente a la visualización, pues el
ajuste utiliza la totalidad de las observaciones contenidas en
TPV_final.
set.seed(2026)
indice_visual <- sample(
seq_along(x),
min(3000, length(x))
)
plot(
x[indice_visual],
y[indice_visual],
pch = 16,
cex = 0.65,
col = rgb(0, 0, 1, 0.32),
main = "Gráfica N.° 2. Dispersión tratada entre Arena y KURTOSIS",
xlab = "SAND_PCT (porcentaje de arena, %)",
ylab = "KURTOSIS (curtosis granulométrica)"
)
grid()
Después del tratamiento se distingue con mayor claridad la tendencia predominante, sin eliminar la variabilidad natural propia de las muestras de sedimentos marinos.
En la nube tratada se observa que la curtosis cambia de forma no lineal conforme aumenta el porcentaje de arena. La tendencia presenta cambios de pendiente y curvatura que una recta o una función logarítmica monótona no representarían adecuadamente. Por ello, se plantea como conjetura un modelo polinómico de tercer grado:
\[ Y=\beta_0+\beta_1X+\beta_2X^2+\beta_3X^3. \]
modelo_polinomico <- lm(
KURTOSIS ~ SAND_PCT + I(SAND_PCT^2) + I(SAND_PCT^3),
data = TPV_final
)
coeficientes <- coef(modelo_polinomico)
beta0 <- coeficientes[1]
beta1 <- coeficientes[2]
beta2 <- coeficientes[3]
beta3 <- coeficientes[4]
tabla_parametros <- data.frame(
Parámetro = c(
"Término independiente (β0)",
"Coeficiente lineal (β1)",
"Coeficiente cuadrático (β2)",
"Coeficiente cúbico (β3)"
),
Valor = c(beta0, beta1, beta2, beta3)
)
tabla_parametros %>%
gt() %>%
fmt_number(columns = Valor, decimals = 6) %>%
tab_header(
title = md("**Tabla N.° 5. Parámetros del modelo polinómico**")
) %>%
cols_align(align = "center")
| Tabla N.° 5. Parámetros del modelo polinómico | |
| Parámetro | Valor |
|---|---|
| Término independiente (β0) | −0.466701 |
| Coeficiente lineal (β1) | 0.228159 |
| Coeficiente cuadrático (β2) | −0.009229 |
| Coeficiente cúbico (β3) | 0.000088 |
ecuacion <- paste0(
"KURTOSIS = ", round(beta0, 4),
ifelse(beta1 >= 0, " + ", " - "),
round(abs(beta1), 4), " · SAND_PCT",
ifelse(beta2 >= 0, " + ", " - "),
round(abs(beta2), 4), " · SAND_PCT²",
ifelse(beta3 >= 0, " + ", " - "),
round(abs(beta3), 4), " · SAND_PCT³"
)
ecuacion_grafica_1 <- paste0(
"KURTOSIS = ", round(beta0, 4),
ifelse(beta1 >= 0, " + ", " - "),
round(abs(beta1), 4), " · SAND_PCT",
ifelse(beta2 >= 0, " + ", " - "),
round(abs(beta2), 4), " · SAND_PCT²"
)
ecuacion_grafica_2 <- paste0(
ifelse(beta3 >= 0, "+ ", "- "),
round(abs(beta3), 4), " · SAND_PCT³"
)
plot.new()
plot.window(xlim = c(0, 100), ylim = c(0, 100))
rect(5, 58, 95, 92, border = "#1F4E79", lwd = 3)
text(
50, 87, "MODELO TEÓRICO",
font = 2, cex = 1.45, col = "#1F4E79"
)
text(
50, 72,
"KURTOSIS = β0 + β1·SAND_PCT + β2·SAND_PCT² + β3·SAND_PCT³",
font = 2, cex = 0.85, col = "#C0392B"
)
rect(5, 8, 95, 48, border = "#1F4E79", lwd = 3)
text(
50, 43, "MODELO POLINÓMICO AJUSTADO",
font = 2, cex = 1.35, col = "#1F4E79"
)
text(
50, 29, ecuacion_grafica_1,
font = 2, cex = 0.98, col = "#C0392B"
)
text(
50, 19, ecuacion_grafica_2,
font = 2, cex = 0.98, col = "#C0392B"
)
text(
50, 3,
"Ecuación obtenida mediante mínimos cuadrados ordinarios.",
cex = 0.85, col = "gray40"
)
box()
x_modelo <- seq(min(x), max(x), length.out = 400)
y_modelo <- predict(
modelo_polinomico,
newdata = data.frame(SAND_PCT = x_modelo)
)
plot(
x[indice_visual],
y[indice_visual],
pch = 16,
cex = 0.60,
col = rgb(0, 0, 1, 0.35),
main = "Gráfica N.° 3. Realidad y modelo polinómico",
xlab = "SAND_PCT (porcentaje de arena, %)",
ylab = "KURTOSIS (curtosis granulométrica)"
)
lines(x_modelo, y_modelo, col = "red3", lwd = 3)
grid()
legend(
"bottomright",
legend = c("Realidad observada", "Modelo polinómico"),
pch = c(16, NA),
lty = c(NA, 1),
lwd = c(NA, 3),
col = c(rgb(0, 0, 1, 0.35), "red3"),
bty = "n"
)
La curva polinómica representa la tendencia general entre el porcentaje de arena y la curtosis granulométrica. Las diferencias entre los puntos y el modelo corresponden a la variabilidad natural y a otros componentes granulométricos no incluidos.
y_estimado <- predict(modelo_polinomico)
r <- cor(y, y_estimado, method = "pearson")
R2 <- summary(modelo_polinomico)$r.squared
decision_pearson <- ifelse(r >= 0.70, "APRUEBA", "NO APRUEBA")
tabla_tests <- data.frame(
Indicador = c(
"Correlación de Pearson",
"Coeficiente de determinación"
),
Resultado = c(
paste0(
"r = ", round(r, 4),
" (", round(r * 100, 2), " %)"
),
paste0(
"R² = ", round(R2, 4),
" (", round(R2 * 100, 2), " %)"
)
),
Interpretación = c(
decision_pearson,
"Capacidad explicativa del modelo"
)
)
tabla_tests %>%
gt() %>%
tab_header(
title = md("**Tabla N.° 6. Evaluación del modelo polinómico**")
) %>%
cols_align(align = "center") %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(columns = Interpretación, rows = 1)
)
| Tabla N.° 6. Evaluación del modelo polinómico | ||
| Indicador | Resultado | Interpretación |
|---|---|---|
| Correlación de Pearson | r = 0.757 (75.7 %) | APRUEBA |
| Coeficiente de determinación | R² = 0.5731 (57.31 %) | Capacidad explicativa del modelo |
El coeficiente de Pearson mide la correspondencia entre los valores
observados y estimados. El coeficiente \(R^2\) indica qué proporción de la
variabilidad de KURTOSIS es explicada por
SAND_PCT mediante el modelo polinómico de tercer grado.
SAND_PCT representa un porcentaje, por lo que
físicamente debe encontrarse entre 0 % y 100 %. Para evitar
extrapolaciones, el modelo se aplica dentro del intervalo realmente
observado en TPV_final.
xmin <- min(x, na.rm = TRUE)
xmax <- max(x, na.rm = TRUE)
cat(
"Dominio observado de X:",
round(xmin, 4), "<= SAND_PCT <=",
round(xmax, 4), "%\n"
)
## Dominio observado de X: 0 <= SAND_PCT <= 100 %
KURTOSIS describe la forma de la distribución
granulométrica. Cuando se trabaja con curtosis en exceso, los valores
negativos son estadísticamente válidos e indican una distribución más
aplanada que la normal; por ello, no se impone la condición \(Y\geq 0\). Su dominio se limita al
intervalo observado en las muestras utilizadas.
ymin <- min(y, na.rm = TRUE)
ymax <- max(y, na.rm = TRUE)
cat(
"Dominio observado de Y:",
round(ymin, 4), "<= KURTOSIS <=",
round(ymax, 4), "\n"
)
## Dominio observado de Y: -19.58 <= KURTOSIS <= 40.95
Debido a que el modelo debe utilizarse dentro de los valores respaldados por los datos, se plantea la siguiente pregunta:
¿Para qué valores de
SAND_PCTla ecuación cúbica produce estimaciones deKURTOSISdentro del intervalo observado?
La condición se expresa como:
\[ y_{\min}\leq \beta_0+\beta_1X+\beta_2X^2+\beta_3X^3 \leq y_{\max}. \]
# Evaluar la ecuación cúbica en todo el dominio observado de SAND_PCT.
x_verificacion <- seq(xmin, xmax, length.out = 2000)
y_verificacion <- predict(
modelo_polinomico,
newdata = data.frame(SAND_PCT = x_verificacion)
)
prediccion_en_dominio <- (
y_verificacion >= ymin &
y_verificacion <= ymax
)
cat(
"¿Las estimaciones permanecen dentro del dominio observado de KURTOSIS?",
ifelse(all(prediccion_en_dominio), "Sí", "No"),
"\n"
)
## ¿Las estimaciones permanecen dentro del dominio observado de KURTOSIS? Sí
La sustitución de los valores de SAND_PCT en la ecuación
confirma si las estimaciones permanecen dentro del rango de
KURTOSIS utilizado en el ajuste. Los valores negativos de
KURTOSIS no son inválidos por sí mismos cuando se trabaja
con curtosis en exceso. Por ello, la restricción consiste en mantener
las estimaciones dentro de los dominios observados y evitar
extrapolaciones.
if (all(prediccion_en_dominio)) {
restriccion_final <- paste0(
round(xmin, 4),
" <= SAND_PCT <= ",
round(xmax, 4),
" %"
)
} else {
indices_validos <- which(prediccion_en_dominio)
restriccion_final <- paste0(
round(min(x_verificacion[indices_validos]), 4),
" <= SAND_PCT <= ",
round(max(x_verificacion[indices_validos]), 4),
" %"
)
}
plot.new()
plot.window(xlim = c(0, 100), ylim = c(0, 100))
rect(5, 18, 95, 82, border = "#1F4E79", lwd = 3)
text(
50, 72, "RESTRICCIÓN FINAL DEL MODELO",
cex = 1.40, font = 2, col = "#1F4E79"
)
text(
50, 51, restriccion_final,
cex = 1.32, font = 2, col = "#C0392B"
)
text(
50, 32, "Intervalo observado recomendado",
cex = 0.95, col = "gray40"
)
text(
50, 26, "para evitar extrapolaciones.",
cex = 0.88, col = "gray40"
)
box()
Se estima KURTOSIS para una muestra con
SAND_PCT = 60 %, valor que pertenece al dominio
observado.
x_estimacion <- 60
y_estimacion <- predict(
modelo_polinomico,
newdata = data.frame(SAND_PCT = x_estimacion)
)
plot.new()
plot.window(xlim = c(0, 100), ylim = c(0, 100))
rect(5, 18, 95, 82, border = "#1F4E79", lwd = 3)
text(
50, 72, "ESTIMACIÓN DEL MODELO POLINÓMICO",
cex = 1.32, font = 2, col = "#1F4E79"
)
text(
50, 56,
paste0("Para SAND_PCT = ", x_estimacion, " %"),
cex = 1.10
)
text(
50, 40,
paste0("KURTOSIS estimada = ", round(y_estimacion, 4)),
cex = 1.55, font = 2, col = "#C0392B"
)
text(
50, 25,
"Estimación realizada dentro del dominio observado.",
cex = 0.88, col = "gray40"
)
box()
Entre la curtosis granulométrica (KURTOSIS) y el
porcentaje de arena (SAND_PCT) existe una relación no
lineal de tipo polinómico de tercer grado, cuyo modelo matemático es
KURTOSIS = -0.4667 + 0.2282 · SAND_PCT - 0.0092 · SAND_PCT² +
1e-04 · SAND_PCT³, siendo \(Y=\text{KURTOSIS}\) la variable dependiente
y \(X=\text{SAND\_PCT}\) la variable
independiente. El modelo presenta restricciones y debe utilizarse
únicamente dentro del intervalo 0 \(\leq
X\leq\) 100 %, correspondiente al dominio observado del
porcentaje de arena; fuera de este intervalo sus resultados serían
extrapolaciones.