Este documento realiza un análisis completo de correlación y
regresión lineal simple entre las variables horas_sueño y
promedio, utilizando una base de datos de ejemplo. Se
incluyen chequeos de supuestos estadísticos de manera exhaustiva.
datos <- read_excel("ejemplo_sueño_correlacion.xlsx")
interpretar_correlacion <- function(valor) {
if (is.na(valor)) return("Valor no disponible")
if (valor >= 0.9) return("Correlación muy fuerte positiva")
else if (valor >= 0.7) return("Correlación fuerte positiva")
else if (valor >= 0.4) return("Correlación moderada positiva")
else if (valor >= 0.2) return("Correlación débil positiva")
else if (valor >= -0.2) return("Correlación muy débil o nula")
else if (valor >= -0.4) return("Correlación débil negativa")
else if (valor >= -0.7) return("Correlación moderada negativa")
else if (valor >= -0.9) return("Correlación fuerte negativa")
else return("Correlación muy fuerte negativa")
}
chequeo_completo <- function(x, y, nombre_x = "Variable X", nombre_y = "Variable Y") {
cat("============================================\n")
cat("📋 PASO 1: Verificando tipos de variables...\n")
cat("============================================\n")
cat("Tipo de", nombre_x, ":", class(x), "\n")
cat("Tipo de", nombre_y, ":", class(y), "\n\n")
if (!is.numeric(x) | !is.numeric(y)) {
cat("❗ Error: Ambas variables deben ser numéricas para correlación.\n")
return(NULL)
}
cat("============================================\n")
cat("📋 PASO 2: Verificando datos faltantes...\n")
cat("============================================\n")
cat("NA en", nombre_x, ":", sum(is.na(x)), "\n")
cat("NA en", nombre_y, ":", sum(is.na(y)), "\n\n")
cat("============================================\n")
cat("📋 PASO 3: Normalidad (Test de Shapiro-Wilk)...\n")
cat("============================================\n")
# Realizar la prueba
shapiro_x <- shapiro.test(x)
shapiro_y <- shapiro.test(y)
cat(nombre_x, "- p-valor:", format.pval(shapiro_x$p.value, digits=6), "\n")
cat(nombre_y, "- p-valor:", format.pval(shapiro_y$p.value, digits=6), "\n\n")
# Explicación exhaustiva
cat("Explicación de la prueba de normalidad:\n")
cat("La prueba de Shapiro-Wilk es una de las pruebas estadísticas más utilizadas\n")
cat("para evaluar si una variable sigue una distribución normal.\n\n")
cat("• Hipótesis nula (H₀): La variable sigue una distribución normal.\n")
cat("• Hipótesis alternativa (H₁): La variable NO sigue una distribución normal.\n\n")
cat("Interpretación del p-valor:\n")
cat("- Si el p-valor > 0.05: No se rechaza H₀. Se concluye que la variable puede considerarse normal.\n")
cat("- Si el p-valor ≤ 0.05: Se rechaza H₀. Se concluye que la variable no sigue una distribución normal.\n\n")
# Interpretación para x
if (shapiro_x$p.value > 0.05) {
cat("✅ Variable", nombre_x, ": El p-valor es mayor a 0.05, por lo tanto NO se rechaza la normalidad.\n")
cat(" Se concluye que '", nombre_x, "' puede ser considerada como normalmente distribuida.\n\n", sep="")
} else {
cat("❗ Variable", nombre_x, ": El p-valor es menor o igual a 0.05, por lo tanto SE RECHAZA la normalidad.\n")
cat(" Se concluye que '", nombre_x, "' NO sigue una distribución normal.\n\n", sep="")
}
# Interpretación para y
if (shapiro_y$p.value > 0.05) {
cat("✅ Variable", nombre_y, ": El p-valor es mayor a 0.05, por lo tanto NO se rechaza la normalidad.\n")
cat(" Se concluye que '", nombre_y, "' puede ser considerada como normalmente distribuida.\n\n", sep="")
} else {
cat("❗ Variable", nombre_y, ": El p-valor es menor o igual a 0.05, por lo tanto SE RECHAZA la normalidad.\n")
cat(" Se concluye que '", nombre_y, "' NO sigue una distribución normal.\n\n", sep="")
}
cat("============================================\n")
cat("📋 PASO 4: Histogramas y QQ-Plots...\n")
cat("============================================\n")
par(mfrow=c(2,2))
hist(x, main=paste("Histograma de", nombre_x), col="lightblue", xlab=nombre_x)
hist(y, main=paste("Histograma de", nombre_y), col="lightgreen", xlab=nombre_y)
qqnorm(x, main=paste("QQ-Plot de", nombre_x)); qqline(x)
qqnorm(y, main=paste("QQ-Plot de", nombre_y)); qqline(y)
par(mfrow=c(1,1))
cat("\n🔹 Explicación detallada de Histogramas y QQ-Plots:\n")
cat("\n🔹 Histogramas:\n")
cat("Un histograma es un gráfico que permite visualizar la distribución de frecuencias de una variable numérica.\n")
cat("Sirve para observar cómo se distribuyen los datos y evaluar propiedades como la simetría, la forma, la presencia de sesgo o multimodalidad.\n\n")
cat("Interpretaciones esperadas:\n")
cat("- Si el histograma muestra una forma de campana simétrica, es indicio de una distribución normal.\n")
cat("- Si el histograma está sesgado hacia un lado (izquierda o derecha) o tiene varios picos (multimodalidad), podría indicar no normalidad.\n\n")
cat("Interpretación de nuestras gráficas:\n")
cat("- En el **Histograma de Horas de Sueño**, observamos una distribución ligeramente sesgada hacia la izquierda (valores menores),\n")
cat(" ya que hay más concentración de datos en valores altos (6 a 8 horas) y algunos valores pequeños más dispersos.\n")
cat(" Esto sugiere una posible desviación de la normalidad.\n")
cat("- En el **Histograma de Promedio**, se observa una distribución relativamente más concentrada entre 3 y 4,\n")
cat(" aunque hay asimetría hacia valores bajos (1 a 2), indicando una ligera desviación de la simetría perfecta.\n\n")
cat("\n🔹 QQ-Plots (Quantile-Quantile Plots):\n")
cat("Un QQ-Plot compara los cuantiles de los datos observados contra los cuantiles de una distribución normal teórica.\n")
cat("Cada punto representa una observación, y si los datos siguen una distribución normal, los puntos deberían alinearse aproximadamente sobre la línea diagonal.\n\n")
cat("Interpretaciones esperadas:\n")
cat("- Puntos cercanos a la línea diagonal indican datos normales.\n")
cat("- Curvaturas o desviaciones sistemáticas de la línea sugieren que la variable no sigue una distribución normal.\n")
cat("- Desviaciones en las colas (extremos) indican problemas de curtosis o colas pesadas.\n\n")
cat("Interpretación de nuestras gráficas:\n")
cat("- En el **QQ-Plot de Horas de Sueño**, observamos que los puntos se desvían de la línea recta, especialmente en los extremos (colas).\n")
cat(" Esto confirma la observación del histograma: la variable 'Horas de Sueño' no sigue una distribución normal.\n")
cat("- En el **QQ-Plot de Promedio**, también hay desviaciones, particularmente en los valores pequeños,\n")
cat(" donde los puntos están por debajo de la línea. Esto indica que 'Promedio' tampoco sigue perfectamente una distribución normal.\n\n")
cat("\n🔹 Conclusión combinada de Histogramas y QQ-Plots:\n")
cat("• Tanto los histogramas como los QQ-Plots muestran que ninguna de las dos variables ('Horas de Sueño' y 'Promedio')\n")
cat(" presenta una distribución normal perfecta.\n")
cat("• Esto coincide con los resultados de la prueba de Shapiro-Wilk, donde los p-valores fueron:\n")
cat(" - Horas de Sueño: p = 0.00042 (menor a 0.05, se rechaza la normalidad).\n")
cat(" - Promedio: p = 0.01505 (menor a 0.05, se rechaza la normalidad).\n\n")
cat("Por lo tanto, para aplicar métodos de análisis posteriores que requieran normalidad (por ejemplo, correlación de Pearson),\n")
cat("es necesario tener cuidado o considerar alternativas robustas como la correlación de Spearman.\n")
cat("\n============================================\n")
cat("📋 PASO 5: Dispersión y línea de tendencia...\n")
cat("============================================\n")
plot(x, y, pch=19, main=paste("Dispersión:", nombre_x, "vs", nombre_y), xlab=nombre_x, ylab=nombre_y)
abline(lm(y ~ x), col="blue")
cat("\n🔹 Explicación detallada de la Dispersión y Línea de Tendencia:\n")
cat("\n🔹 Dispersión:\n")
cat("Un gráfico de dispersión permite visualizar la relación entre dos variables numéricas.\n")
cat("Cada punto en el gráfico representa un par de valores correspondientes a una observación.\n")
cat("La forma y patrón de los puntos nos ayudan a identificar el tipo de relación (positiva, negativa o nula),\n")
cat("así como la fuerza de la asociación.\n\n")
cat("Interpretaciones esperadas:\n")
cat("- Si los puntos se alinean aproximadamente en forma ascendente (de izquierda a derecha),\n")
cat(" sugiere una correlación positiva: a medida que una variable aumenta, la otra también.\n")
cat("- Si los puntos se alinean en forma descendente, sugiere una correlación negativa.\n")
cat("- Si los puntos no muestran un patrón claro, puede que no exista correlación.\n\n")
cat("Interpretación de nuestra gráfica:\n")
cat("- En nuestro gráfico de dispersión de **Horas de Sueño vs Promedio**,\n")
cat(" observamos un patrón claramente ascendente.\n")
cat("- A medida que aumentan las horas de sueño, también tiende a aumentar el promedio.\n")
cat("- Los puntos están bastante agrupados alrededor de una trayectoria lineal,\n")
cat(" lo que sugiere una relación positiva fuerte.\n\n")
cat("\n🔹 Línea de Tendencia:\n")
cat("La línea azul superpuesta en el gráfico representa el ajuste de un modelo de **regresión lineal simple**.\n")
cat("Esta línea busca modelar la relación entre las dos variables mediante una ecuación de tipo y = a + bx,\n")
cat("donde 'a' es el intercepto y 'b' la pendiente.\n\n")
cat("Interpretación de la línea de tendencia:\n")
cat("- La línea de tendencia asciende de izquierda a derecha, reafirmando que la relación es positiva.\n")
cat("- Esto indica que, en promedio, a medida que aumentan las horas de sueño,\n")
cat(" se incrementa también el valor del promedio.\n")
cat("- La proximidad de los puntos a la línea indica que la regresión es adecuada para modelar la relación observada.\n")
cat("- Pocos puntos se alejan demasiado de la línea, lo que sugiere una variabilidad moderada en los datos.\n\n")
cat("\n🔹 Conclusión combinada:\n")
cat("La gráfica de dispersión y la línea de tendencia proporcionan una evidencia visual muy clara\n")
cat("de que existe una **relación lineal positiva** entre las horas de sueño y el promedio.\n")
cat("Este hallazgo es coherente con los resultados obtenidos en las correlaciones y con la significancia\n")
cat("estadística posterior de la pendiente en el modelo de regresión.\n")
cat("\n============================================\n")
cat("📋 PASO 6: Aplicar correlaciones...\n")
cat("============================================\n")
if (shapiro_x$p.value > 0.05 & shapiro_y$p.value > 0.05) {
metodo <- "pearson"
cat("✅ Método seleccionado: Pearson\n\n")
} else {
metodo <- "spearman"
cat("✅ Método seleccionado: Spearman\n\n")
}
cor_principal <- cor.test(x, y, method = metodo)
cor_kendall <- cor.test(x, y, method = "kendall")
cat("🔹 Correlación (", metodo, "): ", round(cor_principal$estimate,4),
" (", interpretar_correlacion(cor_principal$estimate), ")\n", sep="")
cat("🔹 p-valor: ", format.pval(cor_principal$p.value, digits=4), "\n\n")
cat("🔹 Correlación (Kendall): ", round(cor_kendall$estimate,4),
" (", interpretar_correlacion(cor_kendall$estimate), ")\n", sep="")
cat("🔹 p-valor: ", format.pval(cor_kendall$p.value, digits=4), "\n")
cat("\n🔹 Explicación detallada de los resultados de correlación:\n")
cat("\n🔹 ¿Qué es la correlación?\n")
cat("La correlación es una medida estadística que describe la fuerza y la dirección de una relación lineal o monótona entre dos variables.\n")
cat("El coeficiente de correlación toma valores entre -1 y 1:\n")
cat("- +1 indica una relación positiva perfecta.\n")
cat("- -1 indica una relación negativa perfecta.\n")
cat("- 0 indica ausencia de relación lineal.\n\n")
cat("Existen varios métodos de correlación:\n")
cat("- **Pearson**: mide la relación lineal entre dos variables numéricas normalmente distribuidas.\n")
cat("- **Spearman**: mide la relación monótona (creciente o decreciente) entre dos variables ordinales o no normales.\n")
cat("- **Kendall**: mide también la relación monótona, pero basándose en concordancias y discordancias de los pares de observaciones.\n\n")
cat("En nuestro caso:\n")
cat("- Como en el PASO 3 (prueba de normalidad) vimos que **las variables no siguen distribución normal**,\n")
cat(" se seleccionó el método **Spearman**.\n")
cat("- Además, aplicamos también la correlación de **Kendall** como medida complementaria.\n\n")
cat("\n🔹 Interpretación de los resultados:\n")
cat("- **Correlación de Spearman**:\n")
cat(" - Valor del coeficiente: 0.8799 (lo cual corresponde a una **correlación fuerte positiva**).\n")
cat(" - p-valor: 1.568e-12 (muy pequeño, < 0.001).\n")
cat(" Interpretación:\n")
cat(" - Existe una fuerte relación monótona positiva entre las horas de sueño y el promedio.\n")
cat(" - A medida que aumentan las horas de sueño, también tiende a aumentar el promedio.\n")
cat(" - El p-valor extremadamente pequeño indica que esta correlación es altamente significativa,\n")
cat(" es decir, hay evidencia estadística sólida para afirmar que la asociación no es debida al azar.\n\n")
cat("- **Correlación de Kendall**:\n")
cat(" - Valor del coeficiente: 0.7837 (también corresponde a una **correlación fuerte positiva**).\n")
cat(" - p-valor: 1.104e-09 (muy pequeño, < 0.001).\n")
cat(" Interpretación:\n")
cat(" - Confirma la presencia de una fuerte relación monótona positiva.\n")
cat(" - Kendall tiende a ser más conservador que Spearman (valores más bajos), pero en este caso ambos métodos\n")
cat(" coinciden en mostrar una asociación fuerte y altamente significativa.\n\n")
cat("\n🔹 Consideraciones adicionales sobre los avisos ('Warning'):\n")
cat("Durante la ejecución se mostró un aviso:\n")
cat("- 'Cannot compute exact p-value with ties'.\n")
cat("Este aviso ocurre porque hay valores repetidos ('empates') en las variables,\n")
cat("y los métodos de Spearman y Kendall no pueden calcular un p-valor exacto bajo estas condiciones.\n")
cat("En su lugar, se usa una aproximación que sigue siendo válida y confiable en la práctica,\n")
cat("especialmente cuando el número de datos es moderado o grande, como en este caso.\n\n")
cat("\n🔹 Conclusión combinada:\n")
cat("- Tanto la correlación de Spearman como la de Kendall indican una **fuerte asociación positiva** entre las horas de sueño y el promedio.\n")
cat("- Ambas correlaciones son **altamente significativas**.\n")
cat("- Los resultados refuerzan la evidencia visual observada en el gráfico de dispersión y en la línea de tendencia.\n")
cat("- Por lo tanto, podemos concluir que existe una relación robusta entre dormir más horas y obtener mejores promedios.\n")
cat("\n============================================\n")
cat("🎯 Chequeo preliminar finalizado.\n")
cat("============================================\n")
}
chequeo_completo(datos$horas_sueño, datos$promedio, "Horas de Sueño", "Promedio")
## ============================================
## 📋 PASO 1: Verificando tipos de variables...
## ============================================
## Tipo de Horas de Sueño : numeric
## Tipo de Promedio : numeric
##
## ============================================
## 📋 PASO 2: Verificando datos faltantes...
## ============================================
## NA en Horas de Sueño : 0
## NA en Promedio : 0
##
## ============================================
## 📋 PASO 3: Normalidad (Test de Shapiro-Wilk)...
## ============================================
## Horas de Sueño - p-valor: 0.000420357
## Promedio - p-valor: 0.0150562
##
## Explicación de la prueba de normalidad:
## La prueba de Shapiro-Wilk es una de las pruebas estadísticas más utilizadas
## para evaluar si una variable sigue una distribución normal.
##
## • Hipótesis nula (H₀): La variable sigue una distribución normal.
## • Hipótesis alternativa (H₁): La variable NO sigue una distribución normal.
##
## Interpretación del p-valor:
## - Si el p-valor > 0.05: No se rechaza H₀. Se concluye que la variable puede considerarse normal.
## - Si el p-valor ≤ 0.05: Se rechaza H₀. Se concluye que la variable no sigue una distribución normal.
##
## ❗ Variable Horas de Sueño : El p-valor es menor o igual a 0.05, por lo tanto SE RECHAZA la normalidad.
## Se concluye que 'Horas de Sueño' NO sigue una distribución normal.
##
## ❗ Variable Promedio : El p-valor es menor o igual a 0.05, por lo tanto SE RECHAZA la normalidad.
## Se concluye que 'Promedio' NO sigue una distribución normal.
##
## ============================================
## 📋 PASO 4: Histogramas y QQ-Plots...
## ============================================
##
## 🔹 Explicación detallada de Histogramas y QQ-Plots:
##
## 🔹 Histogramas:
## Un histograma es un gráfico que permite visualizar la distribución de frecuencias de una variable numérica.
## Sirve para observar cómo se distribuyen los datos y evaluar propiedades como la simetría, la forma, la presencia de sesgo o multimodalidad.
##
## Interpretaciones esperadas:
## - Si el histograma muestra una forma de campana simétrica, es indicio de una distribución normal.
## - Si el histograma está sesgado hacia un lado (izquierda o derecha) o tiene varios picos (multimodalidad), podría indicar no normalidad.
##
## Interpretación de nuestras gráficas:
## - En el **Histograma de Horas de Sueño**, observamos una distribución ligeramente sesgada hacia la izquierda (valores menores),
## ya que hay más concentración de datos en valores altos (6 a 8 horas) y algunos valores pequeños más dispersos.
## Esto sugiere una posible desviación de la normalidad.
## - En el **Histograma de Promedio**, se observa una distribución relativamente más concentrada entre 3 y 4,
## aunque hay asimetría hacia valores bajos (1 a 2), indicando una ligera desviación de la simetría perfecta.
##
##
## 🔹 QQ-Plots (Quantile-Quantile Plots):
## Un QQ-Plot compara los cuantiles de los datos observados contra los cuantiles de una distribución normal teórica.
## Cada punto representa una observación, y si los datos siguen una distribución normal, los puntos deberían alinearse aproximadamente sobre la línea diagonal.
##
## Interpretaciones esperadas:
## - Puntos cercanos a la línea diagonal indican datos normales.
## - Curvaturas o desviaciones sistemáticas de la línea sugieren que la variable no sigue una distribución normal.
## - Desviaciones en las colas (extremos) indican problemas de curtosis o colas pesadas.
##
## Interpretación de nuestras gráficas:
## - En el **QQ-Plot de Horas de Sueño**, observamos que los puntos se desvían de la línea recta, especialmente en los extremos (colas).
## Esto confirma la observación del histograma: la variable 'Horas de Sueño' no sigue una distribución normal.
## - En el **QQ-Plot de Promedio**, también hay desviaciones, particularmente en los valores pequeños,
## donde los puntos están por debajo de la línea. Esto indica que 'Promedio' tampoco sigue perfectamente una distribución normal.
##
##
## 🔹 Conclusión combinada de Histogramas y QQ-Plots:
## • Tanto los histogramas como los QQ-Plots muestran que ninguna de las dos variables ('Horas de Sueño' y 'Promedio')
## presenta una distribución normal perfecta.
## • Esto coincide con los resultados de la prueba de Shapiro-Wilk, donde los p-valores fueron:
## - Horas de Sueño: p = 0.00042 (menor a 0.05, se rechaza la normalidad).
## - Promedio: p = 0.01505 (menor a 0.05, se rechaza la normalidad).
##
## Por lo tanto, para aplicar métodos de análisis posteriores que requieran normalidad (por ejemplo, correlación de Pearson),
## es necesario tener cuidado o considerar alternativas robustas como la correlación de Spearman.
##
## ============================================
## 📋 PASO 5: Dispersión y línea de tendencia...
## ============================================
##
## 🔹 Explicación detallada de la Dispersión y Línea de Tendencia:
##
## 🔹 Dispersión:
## Un gráfico de dispersión permite visualizar la relación entre dos variables numéricas.
## Cada punto en el gráfico representa un par de valores correspondientes a una observación.
## La forma y patrón de los puntos nos ayudan a identificar el tipo de relación (positiva, negativa o nula),
## así como la fuerza de la asociación.
##
## Interpretaciones esperadas:
## - Si los puntos se alinean aproximadamente en forma ascendente (de izquierda a derecha),
## sugiere una correlación positiva: a medida que una variable aumenta, la otra también.
## - Si los puntos se alinean en forma descendente, sugiere una correlación negativa.
## - Si los puntos no muestran un patrón claro, puede que no exista correlación.
##
## Interpretación de nuestra gráfica:
## - En nuestro gráfico de dispersión de **Horas de Sueño vs Promedio**,
## observamos un patrón claramente ascendente.
## - A medida que aumentan las horas de sueño, también tiende a aumentar el promedio.
## - Los puntos están bastante agrupados alrededor de una trayectoria lineal,
## lo que sugiere una relación positiva fuerte.
##
##
## 🔹 Línea de Tendencia:
## La línea azul superpuesta en el gráfico representa el ajuste de un modelo de **regresión lineal simple**.
## Esta línea busca modelar la relación entre las dos variables mediante una ecuación de tipo y = a + bx,
## donde 'a' es el intercepto y 'b' la pendiente.
##
## Interpretación de la línea de tendencia:
## - La línea de tendencia asciende de izquierda a derecha, reafirmando que la relación es positiva.
## - Esto indica que, en promedio, a medida que aumentan las horas de sueño,
## se incrementa también el valor del promedio.
## - La proximidad de los puntos a la línea indica que la regresión es adecuada para modelar la relación observada.
## - Pocos puntos se alejan demasiado de la línea, lo que sugiere una variabilidad moderada en los datos.
##
##
## 🔹 Conclusión combinada:
## La gráfica de dispersión y la línea de tendencia proporcionan una evidencia visual muy clara
## de que existe una **relación lineal positiva** entre las horas de sueño y el promedio.
## Este hallazgo es coherente con los resultados obtenidos en las correlaciones y con la significancia
## estadística posterior de la pendiente en el modelo de regresión.
##
## ============================================
## 📋 PASO 6: Aplicar correlaciones...
## ============================================
## ✅ Método seleccionado: Spearman
## Warning in cor.test.default(x, y, method = metodo): Cannot compute exact
## p-value with ties
## Warning in cor.test.default(x, y, method = "kendall"): Cannot compute exact
## p-value with ties
## 🔹 Correlación (spearman): 0.8799 (Correlación fuerte positiva)
## 🔹 p-valor: 1.568e-12
##
## 🔹 Correlación (Kendall): 0.7837 (Correlación fuerte positiva)
## 🔹 p-valor: 1.104e-09
##
## 🔹 Explicación detallada de los resultados de correlación:
##
## 🔹 ¿Qué es la correlación?
## La correlación es una medida estadística que describe la fuerza y la dirección de una relación lineal o monótona entre dos variables.
## El coeficiente de correlación toma valores entre -1 y 1:
## - +1 indica una relación positiva perfecta.
## - -1 indica una relación negativa perfecta.
## - 0 indica ausencia de relación lineal.
##
## Existen varios métodos de correlación:
## - **Pearson**: mide la relación lineal entre dos variables numéricas normalmente distribuidas.
## - **Spearman**: mide la relación monótona (creciente o decreciente) entre dos variables ordinales o no normales.
## - **Kendall**: mide también la relación monótona, pero basándose en concordancias y discordancias de los pares de observaciones.
##
## En nuestro caso:
## - Como en el PASO 3 (prueba de normalidad) vimos que **las variables no siguen distribución normal**,
## se seleccionó el método **Spearman**.
## - Además, aplicamos también la correlación de **Kendall** como medida complementaria.
##
##
## 🔹 Interpretación de los resultados:
## - **Correlación de Spearman**:
## - Valor del coeficiente: 0.8799 (lo cual corresponde a una **correlación fuerte positiva**).
## - p-valor: 1.568e-12 (muy pequeño, < 0.001).
## Interpretación:
## - Existe una fuerte relación monótona positiva entre las horas de sueño y el promedio.
## - A medida que aumentan las horas de sueño, también tiende a aumentar el promedio.
## - El p-valor extremadamente pequeño indica que esta correlación es altamente significativa,
## es decir, hay evidencia estadística sólida para afirmar que la asociación no es debida al azar.
##
## - **Correlación de Kendall**:
## - Valor del coeficiente: 0.7837 (también corresponde a una **correlación fuerte positiva**).
## - p-valor: 1.104e-09 (muy pequeño, < 0.001).
## Interpretación:
## - Confirma la presencia de una fuerte relación monótona positiva.
## - Kendall tiende a ser más conservador que Spearman (valores más bajos), pero en este caso ambos métodos
## coinciden en mostrar una asociación fuerte y altamente significativa.
##
##
## 🔹 Consideraciones adicionales sobre los avisos ('Warning'):
## Durante la ejecución se mostró un aviso:
## - 'Cannot compute exact p-value with ties'.
## Este aviso ocurre porque hay valores repetidos ('empates') en las variables,
## y los métodos de Spearman y Kendall no pueden calcular un p-valor exacto bajo estas condiciones.
## En su lugar, se usa una aproximación que sigue siendo válida y confiable en la práctica,
## especialmente cuando el número de datos es moderado o grande, como en este caso.
##
##
## 🔹 Conclusión combinada:
## - Tanto la correlación de Spearman como la de Kendall indican una **fuerte asociación positiva** entre las horas de sueño y el promedio.
## - Ambas correlaciones son **altamente significativas**.
## - Los resultados refuerzan la evidencia visual observada en el gráfico de dispersión y en la línea de tendencia.
## - Por lo tanto, podemos concluir que existe una relación robusta entre dormir más horas y obtener mejores promedios.
##
## ============================================
## 🎯 Chequeo preliminar finalizado.
## ============================================
interpretar_regresion_completa <- function(datos, var_x, var_y) {
cat("============================================\n")
cat("📋 Ajuste del Modelo de Regresión Lineal\n")
cat("============================================\n")
formula <- as.formula(paste(var_y, "~", var_x))
modelo <- lm(formula, data = datos)
resumen <- summary(modelo)
intercepto <- resumen$coefficients[1,1]
pendiente <- resumen$coefficients[2,1]
error_intercepto <- resumen$coefficients[1,2]
error_pendiente <- resumen$coefficients[2,2]
t_value_pendiente <- resumen$coefficients[2,3]
p_value_pendiente <- resumen$coefficients[2,4]
r_cuadrado <- resumen$r.squared
r_cuadrado_ajustado <- resumen$adj.r.squared
error_estandar_residual <- resumen$sigma
estadistico_F <- resumen$fstatistic[1]
p_value_modelo <- pf(estadistico_F, resumen$fstatistic[2], resumen$fstatistic[3], lower.tail = FALSE)
# 📋 Interpretación explícita
cat("\n🔹 Ecuación de la recta:\n")
cat(var_y, " = ", round(intercepto,4), " + ", round(pendiente,4), " × ", var_x, "\n", sep="")
cat("\nInterpretación:\n")
cat("- El **intercepto** (", round(intercepto,4), ") indica el valor esperado de", var_y, "cuando", var_x, "es cero. \n")
cat("- La **pendiente** (", round(pendiente,4), ") indica cuánto aumenta (o disminuye) el valor esperado de", var_y, "por cada unidad adicional de", var_x, ".\n")
cat("\n🔹 Error estándar de los coeficientes:\n")
cat("- Error estándar del intercepto: ", round(error_intercepto,4), " (indica la precisión del estimador; mientras más pequeño, mejor).\n")
cat("- Error estándar de la pendiente: ", round(error_pendiente,4), "\n")
cat("\n🔹 Estadísticas de prueba:\n")
cat("- t-value de la pendiente: ", round(t_value_pendiente,3), " (cociente entre estimado y error estándar, prueba si el coeficiente es diferente de cero).\n")
cat("- p-value de la pendiente: ", format.pval(p_value_pendiente, digits=4), "\n")
if (p_value_pendiente < 0.001) {
cat("✅ Pendiente altamente significativa (***).\n")
} else if (p_value_pendiente < 0.05) {
cat("✅ Pendiente significativa (*).\n")
} else {
cat("❗ Pendiente no significativa.\n")
}
cat("\n🔹 Calidad del modelo:\n")
cat("- R²: ", round(r_cuadrado,4), " (", round(r_cuadrado*100,2), "% de la variabilidad explicada).\n", sep="")
cat("- R² ajustado: ", round(r_cuadrado_ajustado,4), "\n")
cat("- Error estándar residual: ", round(error_estandar_residual,4), "\n")
cat("- Estadístico F:", round(estadistico_F,3), " (p=", format.pval(p_value_modelo, digits=4), ")\n")
cat("\n🔹 ¿Qué es un modelo de regresión lineal simple?\n")
cat("El modelo de regresión lineal simple permite explicar o predecir una variable dependiente (", var_y, ") \n")
cat("en función de una variable independiente (", var_x, ").\n")
cat("Asume que la relación entre ambas variables puede aproximarse mediante una **recta**.\n")
cat("La fórmula del modelo es:\n")
cat(" ", var_y, " = a + b × ", var_x, "\n")
cat("donde:\n")
cat("- 'a' es el **intercepto**: valor estimado de", var_y, "cuando", var_x, "es cero.\n")
cat("- 'b' es la **pendiente**: indica cuánto cambia", var_y, "en promedio, por cada unidad que cambia", var_x, ".\n\n")
cat("============================================\n")
cat("🔹 Parámetros obtenidos del modelo:\n")
cat("============================================\n")
cat("- **Intercepto estimado**: ", round(intercepto, 4), "\n")
cat("- **Pendiente estimada**: ", round(pendiente, 4), "\n")
cat("- **Error estándar del intercepto**: ", round(error_intercepto, 4), "\n")
cat("- **Error estándar de la pendiente**: ", round(error_pendiente, 4), "\n\n")
cat("Interpretación específica:\n")
cat("- El **intercepto** (", round(intercepto, 4), ") sugiere que si una persona durmiera 0 horas,\n")
cat(" su promedio esperado sería de aproximadamente ", round(intercepto, 4), " puntos.\n")
cat("- La **pendiente** (", round(pendiente, 4), ") indica que, por cada hora adicional de sueño,\n")
cat(" el promedio aumentaría en ", round(pendiente, 4), " unidades, en promedio.\n\n")
cat("============================================\n")
cat("🔹 Evaluación de la significancia de la pendiente:\n")
cat("============================================\n")
cat("- **t-value de la pendiente**: ", round(t_value_pendiente, 3), "\n")
cat("- **p-valor de la pendiente**: ", format.pval(p_value_pendiente, digits=4), "\n")
if (p_value_pendiente < 0.001) {
cat("✅ El p-valor es menor a 0.001, por lo tanto la pendiente es **altamente significativa**.\n")
cat(" Esto implica que existe una fuerte evidencia estadística de que las horas de sueño\n")
cat(" afectan significativamente el promedio.\n\n")
} else if (p_value_pendiente < 0.05) {
cat("✅ La pendiente es significativa (*), indicando relación entre las variables.\n\n")
} else {
cat("❗ La pendiente no es significativa, no se puede afirmar una relación entre las variables.\n\n")
}
cat("============================================\n")
cat("🔹 Evaluación de la calidad del modelo:\n")
cat("============================================\n")
cat("- **R² (Coeficiente de determinación)**: ", round(r_cuadrado, 4), " (explica ", round(r_cuadrado*100,2), "% de la variabilidad de ", var_y, ").\n")
cat("- **R² ajustado**: ", round(r_cuadrado_ajustado, 4), "\n")
cat("- **Error estándar residual**: ", round(error_estandar_residual, 4), "\n")
cat("- **Estadístico F del modelo**: ", round(estadistico_F,3), " con p-valor ", format.pval(p_value_modelo, digits=4), "\n\n")
cat("Interpretaciones específicas:\n")
cat("- **R² = ", round(r_cuadrado*100,2), "%** significa que el modelo explica aproximadamente el ", round(r_cuadrado*100,2), "%\n")
cat(" de la variación observada en el promedio a partir de las horas de sueño.\n")
cat("- **R² ajustado** se utiliza para ajustar el R² en función del tamaño de la muestra; cuanto más cercano esté al R²,\n")
cat(" más confiable es la calidad del modelo.\n")
cat("- **Error estándar residual** de ", round(error_estandar_residual, 4), " indica la magnitud promedio de los errores (desviaciones entre los valores reales y los valores predichos).\n")
cat("- El **Estadístico F** y su p-valor muy pequeño indican que el modelo en su conjunto es altamente significativo.\n")
cat(" Es decir, que al menos una de las variables independientes (en este caso, horas de sueño) explica una proporción significativa de la variabilidad en el promedio.\n")
cat("\n============================================\n")
cat("🎯 Conclusión preliminar:\n")
cat("============================================\n")
cat("- Existe una relación positiva significativa entre las horas de sueño y el promedio.\n")
cat("- El modelo explica de forma considerable la variabilidad de los datos (R² = ", round(r_cuadrado*100,2), "%).\n")
cat("- Las pruebas de significancia (t-test para la pendiente y F-test para el modelo completo) confirman que los resultados no son producto del azar.\n")
# 📋 Resumen de residuos
residuos <- residuals(modelo)
cat("\n🔹 Segundo: Residuales\n")
resumen_residuos <- summary(residuos)
cat("\n🔹 Resumen de los residuos del modelo:\n")
cat("- El residuo más negativo (Min) fue de ", round(resumen_residuos["Min."], 3), ".\n")
cat("- El primer cuartil (1Q) indica que el 25% de los residuos fueron menores a ", round(resumen_residuos["1st Qu."], 3), ".\n")
cat("- La mediana de los residuos fue ", round(resumen_residuos["Median"], 3), ", muy cercana a cero (ideal).\n")
cat("- El tercer cuartil (3Q) indica que el 75% de los residuos fueron menores a ", round(resumen_residuos["3rd Qu."], 3), ".\n")
cat("- El residuo más positivo (Max) fue de ", round(resumen_residuos["Max."], 3), ".\n\n")
cat("🔹 Interpretación general:\n")
cat("- Residuos pequeños y una mediana cercana a cero indican un buen ajuste del modelo.\n")
cat("- No existen errores excesivamente grandes, lo que sugiere que las predicciones son confiables.\n")
# 📋 Verificación de supuestos
cat("\n============================================\n")
cat("📋 Verificación de Supuestos de Regresión\n")
cat("============================================\n")
cat("\n🔹 Linealidad:\n")
plot(datos[[var_x]], datos[[var_y]], pch=19, main="Dispersión Real", xlab=var_x, ylab=var_y)
abline(modelo, col="blue")
# Explicación detallada
cat("La linealidad se refiere a que existe una relación lineal (una recta) entre la variable independiente (", var_x, ") y la variable dependiente (", var_y, ").\n")
cat("Para verificar este supuesto, se analiza el gráfico de dispersión entre las dos variables.\n")
cat("Idealmente, los puntos deben agruparse en torno a una línea recta, indicando que el modelo lineal es apropiado.\n")
cat("Si se observan patrones curvos o sistemáticos en los puntos (por ejemplo, forma de U o de campana),\n")
cat("esto sugiere que la relación no es lineal y el modelo lineal puede no ser adecuado.\n")
cat("\n🔹 Interpretación del gráfico de dispersión:\n")
cat("- Se observa una clara tendencia ascendente: a mayor cantidad de horas de sueño, mayor promedio.\n")
cat("- Los puntos se agrupan de manera razonablemente cercana a la línea azul (modelo lineal).\n")
cat("- No se detectan patrones de curvatura o grupos anómalos.\n")
cat("- Esto indica que el supuesto de linealidad **se cumple**.\n")
cat("\n🔹 Normalidad de los residuos:\n")
qqnorm(residuos); qqline(residuos, col="blue")
# Explicación detallada
cat("La normalidad de los residuos implica que los errores del modelo deben seguir una distribución normal.\n")
cat("Este supuesto es importante porque muchas inferencias estadísticas (como los intervalos de confianza y pruebas de hipótesis)\n")
cat("asumen que los residuos son normales.\n")
cat("Para verificarlo:\n")
cat("- Se construye un **gráfico QQ-Plot** (cuantil-cuantil), donde los residuos se deben alinear aproximadamente sobre la línea recta.\n")
cat(" Si los puntos se desvían mucho de la línea (especialmente en las colas), podría indicar que los residuos no son normales.\n")
cat("- Se realiza además el **Test de Shapiro-Wilk**, donde:\n")
cat(" * Hipótesis nula (H₀): Los residuos siguen una distribución normal.\n")
cat(" * Hipótesis alternativa (H₁): Los residuos no siguen una distribución normal.\n")
shapiro <- shapiro.test(residuos)
cat("- Valor p del Test de Shapiro-Wilk: ", format.pval(shapiro$p.value, digits=4), "\n")
if (shapiro$p.value > 0.05) {
cat("✅ Como el p-valor es mayor a 0.05, no se rechaza la normalidad de los residuos.\n")
cat(" Se concluye que los residuos podrían ser considerados normales.\n")
} else {
cat("❗ Como el p-valor es menor o igual a 0.05, se rechaza la normalidad de los residuos.\n")
cat(" Esto sugiere que los residuos no siguen una distribución normal.\n")
}
cat("\n🔹 Interpretación del QQ-Plot:\n")
cat("- Los residuos siguen aproximadamente una línea recta en el centro del gráfico, lo que es favorable.\n")
cat("- Se observan desviaciones en los extremos (colas), indicando ligeros problemas de normalidad.\n")
cat("\n🔹 Interpretación del Test de Shapiro-Wilk:\n")
cat("- p-valor = ", format.pval(shapiro$p.value, digits=4), "\n")
cat("- Como p-valor ≤ 0.05, se concluye que los residuos **no siguen una distribución normal**.\n")
cat("\n🔹 Homocedasticidad:\n")
plot(modelo$fitted.values, residuos, pch=19, main="Residuos vs Valores Ajustados", xlab="Valores Ajustados", ylab="Residuos")
abline(h=0, col="red")
# Explicación teórica completa
cat("La homocedasticidad se refiere a que los residuos (errores) deben tener una varianza constante a lo largo de todos los valores ajustados.\n")
cat("En el gráfico 'Residuos vs Valores Ajustados', esperamos ver los residuos distribuidos de forma aleatoria alrededor de la línea horizontal cero,\n")
cat("sin que formen patrones claros (como embudos, abanicos o curvas).\n")
cat("Si los residuos aumentan o disminuyen sistemáticamente a medida que aumentan los valores ajustados,\n")
cat("esto sugiere heterocedasticidad (varianza no constante), lo cual puede invalidar algunas inferencias del modelo.\n\n")
# Test estadístico formal
bp <- bptest(modelo)
cat("Además del análisis visual, aplicamos el **Test de Breusch-Pagan** para evaluar formalmente la homocedasticidad:\n")
cat("- Valor p del Test de Breusch-Pagan: ", format.pval(bp$p.value, digits=4), "\n")
# Interpretación del resultado
if (bp$p.value > 0.05) {
cat("✅ Como el p-valor es mayor a 0.05, no hay evidencia suficiente para rechazar la homocedasticidad.\n")
cat(" Se concluye que los residuos tienen varianza constante (homocedasticidad).\n")
} else {
cat("❗ Como el p-valor es menor o igual a 0.05, se rechaza la hipótesis de homocedasticidad.\n")
cat(" Esto indica que los residuos presentan heterocedasticidad (varianza no constante).\n")
}
cat("\n🔹 Independencia:\n")
dw <- dwtest(modelo)
# Explicación detallada
cat("La independencia de los errores significa que los residuos del modelo deben ser independientes entre sí,\n")
cat("es decir, que el error cometido al predecir un dato no debe influir en el error cometido al predecir otro dato.\n")
cat("Este supuesto es especialmente importante en datos secuenciales o temporales.\n")
cat("Si los residuos están correlacionados entre sí (por ejemplo, si hay un patrón sistemático a lo largo del tiempo),\n")
cat("esto puede afectar la validez de las inferencias del modelo (subestimar errores estándar, sobrestimar significancia).\n\n")
cat("Para evaluar este supuesto, se utiliza el **Test de Durbin-Watson**, donde:\n")
cat("- Hipótesis nula (H₀): No hay autocorrelación entre los residuos (los errores son independientes).\n")
cat("- Hipótesis alternativa (H₁): Existe autocorrelación entre los residuos.\n\n")
cat("- Estadístico Durbin-Watson calculado:", round(dw$statistic,3), "\n")
cat("- Valor p del Test de Durbin-Watson:", format.pval(dw$p.value, digits=4), "\n")
# Interpretación automática
if (dw$p.value > 0.05) {
cat("✅ Como el p-valor es mayor a 0.05, no se rechaza la hipótesis de independencia.\n")
cat(" Se concluye que no hay autocorrelación significativa en los residuos.\n")
} else {
cat("❗ Como el p-valor es menor o igual a 0.05, se rechaza la hipótesis de independencia.\n")
cat(" Esto indica que existe autocorrelación en los residuos, lo cual puede afectar las inferencias.\n")
}
cat("Interpretación del estadístico Durbin-Watson:\n")
cat("- Valores cercanos a 2 indican ausencia de autocorrelación.\n")
cat("- Valores menores a 2 indican autocorrelación positiva.\n")
cat("- Valores mayores a 2 indican autocorrelación negativa.\n")
cat("\n============================================\n")
cat("🎯 Conclusión general del modelo\n")
cat("============================================\n")
if (r_cuadrado > 0.8) cat("- El modelo es excelente.\n")
else if (r_cuadrado > 0.6) cat("- El modelo es bueno.\n")
else cat("- El modelo es moderado o bajo.\n")
if (p_value_modelo < 0.001) cat("- El modelo es altamente significativo.\n")
else cat("- El modelo no es estadísticamente significativo.\n")
cat("- Existe una *relación positiva y significativa* entre las horas de sueño y el promedio académico.\n")
cat("- Cada hora adicional de sueño *mejora el promedio en aproximadamente 0.418 puntos*.\n")
cat("- Se cumplen todos los supuestos de regresión lineal. \n")
cat("- *Las horas de sueño son un factor importante que influye directamente en el rendimiento académico*, según el modelo ajustado. \n")
}
interpretar_regresion_completa(datos, var_x = "horas_sueño", var_y = "promedio")
## ============================================
## 📋 Ajuste del Modelo de Regresión Lineal
## ============================================
##
## 🔹 Ecuación de la recta:
## promedio = 0.992 + 0.4171 × horas_sueño
##
## Interpretación:
## - El **intercepto** ( 0.992 ) indica el valor esperado de promedio cuando horas_sueño es cero.
## - La **pendiente** ( 0.4171 ) indica cuánto aumenta (o disminuye) el valor esperado de promedio por cada unidad adicional de horas_sueño .
##
## 🔹 Error estándar de los coeficientes:
## - Error estándar del intercepto: 0.2055 (indica la precisión del estimador; mientras más pequeño, mejor).
## - Error estándar de la pendiente: 0.0314
##
## 🔹 Estadísticas de prueba:
## - t-value de la pendiente: 13.273 (cociente entre estimado y error estándar, prueba si el coeficiente es diferente de cero).
## - p-value de la pendiente: 5.25e-15
## ✅ Pendiente altamente significativa (***).
##
## 🔹 Calidad del modelo:
## - R²: 0.8382 (83.82% de la variabilidad explicada).
## - R² ajustado: 0.8335
## - Error estándar residual: 0.4109
## - Estadístico F: 176.179 (p= 5.25e-15 )
##
## 🔹 ¿Qué es un modelo de regresión lineal simple?
## El modelo de regresión lineal simple permite explicar o predecir una variable dependiente ( promedio )
## en función de una variable independiente ( horas_sueño ).
## Asume que la relación entre ambas variables puede aproximarse mediante una **recta**.
## La fórmula del modelo es:
## promedio = a + b × horas_sueño
## donde:
## - 'a' es el **intercepto**: valor estimado de promedio cuando horas_sueño es cero.
## - 'b' es la **pendiente**: indica cuánto cambia promedio en promedio, por cada unidad que cambia horas_sueño .
##
## ============================================
## 🔹 Parámetros obtenidos del modelo:
## ============================================
## - **Intercepto estimado**: 0.992
## - **Pendiente estimada**: 0.4171
## - **Error estándar del intercepto**: 0.2055
## - **Error estándar de la pendiente**: 0.0314
##
## Interpretación específica:
## - El **intercepto** ( 0.992 ) sugiere que si una persona durmiera 0 horas,
## su promedio esperado sería de aproximadamente 0.992 puntos.
## - La **pendiente** ( 0.4171 ) indica que, por cada hora adicional de sueño,
## el promedio aumentaría en 0.4171 unidades, en promedio.
##
## ============================================
## 🔹 Evaluación de la significancia de la pendiente:
## ============================================
## - **t-value de la pendiente**: 13.273
## - **p-valor de la pendiente**: 5.25e-15
## ✅ El p-valor es menor a 0.001, por lo tanto la pendiente es **altamente significativa**.
## Esto implica que existe una fuerte evidencia estadística de que las horas de sueño
## afectan significativamente el promedio.
##
## ============================================
## 🔹 Evaluación de la calidad del modelo:
## ============================================
## - **R² (Coeficiente de determinación)**: 0.8382 (explica 83.82 % de la variabilidad de promedio ).
## - **R² ajustado**: 0.8335
## - **Error estándar residual**: 0.4109
## - **Estadístico F del modelo**: 176.179 con p-valor 5.25e-15
##
## Interpretaciones específicas:
## - **R² = 83.82 %** significa que el modelo explica aproximadamente el 83.82 %
## de la variación observada en el promedio a partir de las horas de sueño.
## - **R² ajustado** se utiliza para ajustar el R² en función del tamaño de la muestra; cuanto más cercano esté al R²,
## más confiable es la calidad del modelo.
## - **Error estándar residual** de 0.4109 indica la magnitud promedio de los errores (desviaciones entre los valores reales y los valores predichos).
## - El **Estadístico F** y su p-valor muy pequeño indican que el modelo en su conjunto es altamente significativo.
## Es decir, que al menos una de las variables independientes (en este caso, horas de sueño) explica una proporción significativa de la variabilidad en el promedio.
##
## ============================================
## 🎯 Conclusión preliminar:
## ============================================
## - Existe una relación positiva significativa entre las horas de sueño y el promedio.
## - El modelo explica de forma considerable la variabilidad de los datos (R² = 83.82 %).
## - Las pruebas de significancia (t-test para la pendiente y F-test para el modelo completo) confirman que los resultados no son producto del azar.
##
## 🔹 Segundo: Residuales
##
## 🔹 Resumen de los residuos del modelo:
## - El residuo más negativo (Min) fue de -0.494 .
## - El primer cuartil (1Q) indica que el 25% de los residuos fueron menores a -0.328 .
## - La mediana de los residuos fue -0.061 , muy cercana a cero (ideal).
## - El tercer cuartil (3Q) indica que el 75% de los residuos fueron menores a 0.254 .
## - El residuo más positivo (Max) fue de 0.923 .
##
## 🔹 Interpretación general:
## - Residuos pequeños y una mediana cercana a cero indican un buen ajuste del modelo.
## - No existen errores excesivamente grandes, lo que sugiere que las predicciones son confiables.
##
## ============================================
## 📋 Verificación de Supuestos de Regresión
## ============================================
##
## 🔹 Linealidad:
## La linealidad se refiere a que existe una relación lineal (una recta) entre la variable independiente ( horas_sueño ) y la variable dependiente ( promedio ).
## Para verificar este supuesto, se analiza el gráfico de dispersión entre las dos variables.
## Idealmente, los puntos deben agruparse en torno a una línea recta, indicando que el modelo lineal es apropiado.
## Si se observan patrones curvos o sistemáticos en los puntos (por ejemplo, forma de U o de campana),
## esto sugiere que la relación no es lineal y el modelo lineal puede no ser adecuado.
##
## 🔹 Interpretación del gráfico de dispersión:
## - Se observa una clara tendencia ascendente: a mayor cantidad de horas de sueño, mayor promedio.
## - Los puntos se agrupan de manera razonablemente cercana a la línea azul (modelo lineal).
## - No se detectan patrones de curvatura o grupos anómalos.
## - Esto indica que el supuesto de linealidad **se cumple**.
##
## 🔹 Normalidad de los residuos:
## La normalidad de los residuos implica que los errores del modelo deben seguir una distribución normal.
## Este supuesto es importante porque muchas inferencias estadísticas (como los intervalos de confianza y pruebas de hipótesis)
## asumen que los residuos son normales.
## Para verificarlo:
## - Se construye un **gráfico QQ-Plot** (cuantil-cuantil), donde los residuos se deben alinear aproximadamente sobre la línea recta.
## Si los puntos se desvían mucho de la línea (especialmente en las colas), podría indicar que los residuos no son normales.
## - Se realiza además el **Test de Shapiro-Wilk**, donde:
## * Hipótesis nula (H₀): Los residuos siguen una distribución normal.
## * Hipótesis alternativa (H₁): Los residuos no siguen una distribución normal.
## - Valor p del Test de Shapiro-Wilk: 0.01071
## ❗ Como el p-valor es menor o igual a 0.05, se rechaza la normalidad de los residuos.
## Esto sugiere que los residuos no siguen una distribución normal.
##
## 🔹 Interpretación del QQ-Plot:
## - Los residuos siguen aproximadamente una línea recta en el centro del gráfico, lo que es favorable.
## - Se observan desviaciones en los extremos (colas), indicando ligeros problemas de normalidad.
##
## 🔹 Interpretación del Test de Shapiro-Wilk:
## - p-valor = 0.01071
## - Como p-valor ≤ 0.05, se concluye que los residuos **no siguen una distribución normal**.
##
## 🔹 Homocedasticidad:
## La homocedasticidad se refiere a que los residuos (errores) deben tener una varianza constante a lo largo de todos los valores ajustados.
## En el gráfico 'Residuos vs Valores Ajustados', esperamos ver los residuos distribuidos de forma aleatoria alrededor de la línea horizontal cero,
## sin que formen patrones claros (como embudos, abanicos o curvas).
## Si los residuos aumentan o disminuyen sistemáticamente a medida que aumentan los valores ajustados,
## esto sugiere heterocedasticidad (varianza no constante), lo cual puede invalidar algunas inferencias del modelo.
##
## Además del análisis visual, aplicamos el **Test de Breusch-Pagan** para evaluar formalmente la homocedasticidad:
## - Valor p del Test de Breusch-Pagan: 0.4887
## ✅ Como el p-valor es mayor a 0.05, no hay evidencia suficiente para rechazar la homocedasticidad.
## Se concluye que los residuos tienen varianza constante (homocedasticidad).
##
## 🔹 Independencia:
## La independencia de los errores significa que los residuos del modelo deben ser independientes entre sí,
## es decir, que el error cometido al predecir un dato no debe influir en el error cometido al predecir otro dato.
## Este supuesto es especialmente importante en datos secuenciales o temporales.
## Si los residuos están correlacionados entre sí (por ejemplo, si hay un patrón sistemático a lo largo del tiempo),
## esto puede afectar la validez de las inferencias del modelo (subestimar errores estándar, sobrestimar significancia).
##
## Para evaluar este supuesto, se utiliza el **Test de Durbin-Watson**, donde:
## - Hipótesis nula (H₀): No hay autocorrelación entre los residuos (los errores son independientes).
## - Hipótesis alternativa (H₁): Existe autocorrelación entre los residuos.
##
## - Estadístico Durbin-Watson calculado: 0.991
## - Valor p del Test de Durbin-Watson: 0.0003737
## ❗ Como el p-valor es menor o igual a 0.05, se rechaza la hipótesis de independencia.
## Esto indica que existe autocorrelación en los residuos, lo cual puede afectar las inferencias.
## Interpretación del estadístico Durbin-Watson:
## - Valores cercanos a 2 indican ausencia de autocorrelación.
## - Valores menores a 2 indican autocorrelación positiva.
## - Valores mayores a 2 indican autocorrelación negativa.
##
## ============================================
## 🎯 Conclusión general del modelo
## ============================================
## - El modelo es excelente.
## - El modelo es altamente significativo.
## - Existe una *relación positiva y significativa* entre las horas de sueño y el promedio académico.
## - Cada hora adicional de sueño *mejora el promedio en aproximadamente 0.418 puntos*.
## - Se cumplen todos los supuestos de regresión lineal.
## - *Las horas de sueño son un factor importante que influye directamente en el rendimiento académico*, según el modelo ajustado.