Un grupo de geólogos desea analizar si existe una relación entre la profundidad del suelo y la concentración de minerales en el mismo. Se dispone de un conjunto de datos con 10 observaciones sobre la profundidad del suelo y la concentración de minerales. Se utilizará un modelo de regresión lineal simple para ajustar estos datos y evaluar la relación entre ambas variables.
# Profundidad del suelo (en metros) y concentración de minerales (en %)
profundidad_suelo <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # Profundidad en metros
concentracion_minerales <- c(12, 11, 10, 9, 8, 7, 6, 5, 4, 3) # Concentración en porcentaje
# Crear un data frame
datos <- data.frame(Profundidad_Suelo = profundidad_suelo, Concentracion_Minerales = concentracion_minerales)
# Crear el modelo de regresión lineal
modelo <- lm(Concentracion_Minerales ~ Profundidad_Suelo, data = datos)
# Obtenemos los coeficientes del modelo (intercepto y pendiente)
resumen_modelo <- summary(modelo)
## Warning in summary.lm(modelo): essentially perfect fit: summary may be
## unreliable
coeficientes <- resumen_modelo$coefficients
# Mostrar la ecuación de la línea de regresión
cat("1. Ecuación de la línea de regresión: y =", round(coeficientes[1, 1], 2), "+", round(coeficientes[2, 1], 4), "x\n")
## 1. Ecuación de la línea de regresión: y = 13 + -1 x
# Interpretación de la pendiente
cat("2. La pendiente (", round(coeficientes[2, 1], 4), ") indica que por cada incremento de 1 metro en la profundidad del suelo, la concentración de minerales disminuye en", abs(round(coeficientes[2, 1], 4)), "%.\n")
## 2. La pendiente ( -1 ) indica que por cada incremento de 1 metro en la profundidad del suelo, la concentración de minerales disminuye en 1 %.
# Predicción para 12 metros de profundidad
nueva_profundidad <- data.frame(Profundidad_Suelo = 12)
prediccion <- predict(modelo, nueva_profundidad)
# Mostrar el resultado de la predicción
cat("3. Predicción para 12 metros de profundidad:", round(prediccion, 2), "% de concentración de minerales.\n")
## 3. Predicción para 12 metros de profundidad: 1 % de concentración de minerales.
# Coeficiente de determinación (R²)
r_cuadrado <- resumen_modelo$r.squared
cat("4. Coeficiente de determinación (R²):", round(r_cuadrado, 4), "\n")
## 4. Coeficiente de determinación (R²): 1
cat(" Esto indica que el modelo explica aproximadamente el", round(r_cuadrado * 100, 2), "% de la variabilidad en la concentración de minerales.\n")
## Esto indica que el modelo explica aproximadamente el 100 % de la variabilidad en la concentración de minerales.
# Calcular los residuos
predicciones <- predict(modelo, newdata = datos)
residuos <- datos$Concentracion_Minerales - predicciones
# Crear la tabla con los resultados
tabla_resultados <- data.frame(
Profundidad_Suelo = datos$Profundidad_Suelo,
Concentracion_Minerales_Actuales = datos$Concentracion_Minerales,
Concentracion_Minerales_Predichas = predicciones,
Residuos = residuos
)
# Mostrar la tabla de resultados
cat("5. Tabla de resultados:\n")
## 5. Tabla de resultados:
print(tabla_resultados)
## Profundidad_Suelo Concentracion_Minerales_Actuales
## 1 1 12
## 2 2 11
## 3 3 10
## 4 4 9
## 5 5 8
## 6 6 7
## 7 7 6
## 8 8 5
## 9 9 4
## 10 10 3
## Concentracion_Minerales_Predichas Residuos
## 1 12 3.552714e-15
## 2 11 3.552714e-15
## 3 10 3.552714e-15
## 4 9 3.552714e-15
## 5 8 2.664535e-15
## 6 7 1.776357e-15
## 7 6 1.776357e-15
## 8 5 1.776357e-15
## 9 4 1.776357e-15
## 10 3 1.776357e-15
# Graficar los 4 gráficos de diagnóstico del modelo
par(mfrow = c(2, 2)) # Disposición en una matriz de 2x2
# 1. Residuos vs. valores ajustados
plot(modelo, which = 1) # Residuals vs Fitted
# 2. Q-Q plot para los residuos
plot(modelo, which = 2) # Normal Q-Q
# 3. Residuos estandarizados vs. valores ajustados
plot(modelo, which = 3) # Scale-Location
# 4. Residuos vs. apalancamiento
plot(modelo, which = 5) # Residuals vs Leverage
# Gráfico de la relación entre la profundidad del suelo y la concentración de minerales
plot(datos$Profundidad_Suelo, datos$Concentracion_Minerales,
main = "Relación entre la Profundidad del Suelo y la Concentración de Minerales",
xlab = "Profundidad del Suelo (m)", ylab = "Concentración de Minerales (%)",
pch = 19, col = "blue")
abline(modelo, col = "red")
cat("El modelo ajustado está representado por la línea roja en el gráfico.\n")
## El modelo ajustado está representado por la línea roja en el gráfico.