# Cargar las librerías necesarias  
# Si no tienes ggplot2 instalado, puedes descomentar la siguiente línea para instalarlo  
# install.packages("ggplot2")  

library(ggplot2)  
## Warning: package 'ggplot2' was built under R version 4.4.1
# 1. Datos  
# Crear un data frame con los datos de horas de estudio y calificaciones  
datos <- data.frame(  
  Estudiante = 1:15,  
  Horas_Estudio = c(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16),  
  Calificacion = c(65, 70, 72, 75, 78, 80, 83, 85, 88, 90, 92, 94, 96, 98, 100)  
)  

# 2. Ajustar el modelo de regresión lineal  
modelo <- lm(Calificacion ~ Horas_Estudio, data = datos)  

# 3. Resumen del modelo  
summary(modelo)  
## 
## Call:
## lm(formula = Calificacion ~ Horas_Estudio, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5000 -0.4000  0.2571  0.6857  1.1857 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    62.6714     0.6089  102.92  < 2e-16 ***
## Horas_Estudio   2.4143     0.0610   39.58 6.14e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.021 on 13 degrees of freedom
## Multiple R-squared:  0.9918, Adjusted R-squared:  0.9911 
## F-statistic:  1567 on 1 and 13 DF,  p-value: 6.14e-15
# 4. Predecir la calificación para 4.5 horas de estudio  
horas_nuevas <- data.frame(Horas_Estudio = 4.5)  
prediccion <- predict(modelo, newdata = horas_nuevas)  
cat("Predicción de calificación para 4.5 horas de estudio:", round(prediccion, 2), "\n")  
## Predicción de calificación para 4.5 horas de estudio: 73.54
# 5. Graficar los datos y la línea de regresión  
ggplot(datos, aes(x = Horas_Estudio, y = Calificacion)) +  
  geom_point(color = "blue", size = 3) + # Puntos de datos  
  geom_smooth(method = "lm", se = FALSE, color = "red") + # Línea de regresión  
  labs(title = "Regresión Lineal: Calificación vs Horas de Estudio",  
       x = "Horas de Estudio",  
       y = "Calificación") +  
  theme_minimal()  
## `geom_smooth()` using formula = 'y ~ x'

# 6. Agregar la predicción al gráfico  
# Agrega un punto de predicción  
ggplot(datos, aes(x = Horas_Estudio, y = Calificacion)) +  
  geom_point(color = "blue", size = 3) + # Puntos de datos  
  geom_smooth(method = "lm", se = FALSE, color = "red") + # Línea de regresión  
  labs(title = "Regresión Lineal: Calificación vs Horas de Estudio",  
       x = "Horas de Estudio",  
       y = "Calificación") +  
  geom_point(aes(x = 4.5, y = prediccion), color = "green", size = 4) + # Predicción  
  theme_minimal() +  
  annotate("text", x = 4.5, y = prediccion + 3, label = paste("Predicción:\n", round(prediccion, 2)), color = "green", size = 4)
## Warning in geom_point(aes(x = 4.5, y = prediccion), color = "green", size = 4): All aesthetics have length 1, but the data has 15 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
##   a single row.
## `geom_smooth()` using formula = 'y ~ x'