library(readr)
#paquetes
library(readr)
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(broom)
library(ggpubr)
library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
#datos
datos_estudio_universitarios<- read_csv("datos_estudio_universitarios.csv")
## Rows: 100 Columns: 5
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (5): estudiante, horas_estudio, edad, materias, trabaja
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
summary(datos_estudio_universitarios)#analisis descriptivo de los datos
##    estudiante     horas_estudio         edad          materias      trabaja    
##  Min.   :  1.00   Min.   : 11.00   Min.   :18.00   Min.   :3.0   Min.   :0.00  
##  1st Qu.: 25.75   1st Qu.: 33.75   1st Qu.:21.00   1st Qu.:3.0   1st Qu.:0.00  
##  Median : 50.50   Median : 56.50   Median :24.00   Median :5.0   Median :0.00  
##  Mean   : 50.50   Mean   : 55.66   Mean   :24.04   Mean   :4.8   Mean   :0.43  
##  3rd Qu.: 75.25   3rd Qu.: 77.25   3rd Qu.:27.00   3rd Qu.:6.0   3rd Qu.:1.00  
##  Max.   :100.00   Max.   :100.00   Max.   :29.00   Max.   :7.0   Max.   :1.00
cor(datos_estudio_universitarios)
##                estudiante horas_estudio        edad    materias     trabaja
## estudiante     1.00000000   -0.11568888  0.00625914 -0.05313652  0.04303440
## horas_estudio -0.11568888    1.00000000 -0.11743986 -0.15187178 -0.04438674
## edad           0.00625914   -0.11743986  1.00000000 -0.01856410  0.04796456
## materias      -0.05313652   -0.15187178 -0.01856410  1.00000000 -0.01989668
## trabaja        0.04303440   -0.04438674  0.04796456 -0.01989668  1.00000000
pairs(datos_estudio_universitarios)

** Modelo de regresión múltiple**

\[ y=90.9410-0.8705edad-2.7962-2.1659 \] Conclusiones

ggplot(datos_estudio_universitarios, aes(x = horas_estudio)) +
  geom_histogram(bins = 15, fill = "skyblue", color = "black") +
  labs(title = "Distribución de horas de estudio", x = "Horas", y = "Frecuencia")

El histograma muestra cómo se distribuyen las horas de estudio entre los estudiantes. La mayoría de los estudiantes estudian entre 40 y 70 horas al mes.

datos_estudio_universitarios$trabaja <- as.factor(datos_estudio_universitarios$trabaja)

ggplot(datos_estudio_universitarios, aes(x = trabaja, y = horas_estudio, fill = trabaja)) + geom_boxplot() + scale_x_discrete(labels = c("No trabaja", "Trabaja")) + labs(title = "Horas de estudio según si trabaja", x = "Trabaja", y = "Horas de estudio")

El boxplot compara las horas de estudio de los estudiantes que trabajan y los que no trabajan. Se observa que, en general, los estudiantes que no trabajan tienen una mediana de horas de estudio más alta que los que sí trabajan.

ggplot(datos_estudio_universitarios, aes(x = edad, y = horas_estudio, color = trabaja)) + geom_point() + labs(title = "Edad vs Horas de estudio", x = "Edad", y = "Horas de estudio")

Este gráfico muestra cómo varían las horas de estudio con respecto a la edad, diferenciando si trabajan o no. No se observa una relación clara o fuerte entre la edad y las horas de estudio. Sin embargo, visualmente se puede notar que hay una ligera tendencia a que los estudiantes más jóvenes estudien un poco más, especialmente entre los que no trabajan.

ggplot(datos_estudio_universitarios, aes(x = materias, y = horas_estudio, color = trabaja)) + geom_point() + labs(title = "Materias vs Horas de estudio", x = "Materias", y = "Horas de estudio")

Este gráfico analiza si hay relación entre la cantidad de materias inscritas y las horas de estudio. En general, no hay una tendencia muy clara, pero se puede notar que los estudiantes con más materias tienden a estudiar más.

datos_estudio_universitarios$trabaja <- factor(datos_estudio_universitarios$trabaja, levels = c(0, 1), labels = c("No", "Sí"))

modelo <- lm(horas_estudio ~ edad + materias + trabaja, data = datos_estudio_universitarios)
summary(modelo) #ejecucion del modelo 
## 
## Call:
## lm(formula = horas_estudio ~ edad + materias + trabaja, data = datos_estudio_universitarios)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -47.105 -21.738   1.673  20.632  43.545 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  90.9410    20.0773   4.530  1.7e-05 ***
## edad         -0.8705     0.7370  -1.181    0.240    
## materias     -2.7962     1.8065  -1.548    0.125    
## trabajaSí    -2.1659     5.1912  -0.417    0.677    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 25.67 on 96 degrees of freedom
## Multiple R-squared:  0.03927,    Adjusted R-squared:  0.009252 
## F-statistic: 1.308 on 3 and 96 DF,  p-value: 0.2763

Intercepto: Es el valor estimado de horas de estudio cuando todas las variables independientes son 0. Edad: Si el coeficiente es negativo, a mayor edad se espera una leve disminución en horas de estudio. Materias: Un coeficiente positivo indicaría que mientras más materias, más horas estudia el estudiante. Trabaja (Sí): El modelo compara contra el grupo que no trabaja. Si el coeficiente es negativo, indica que quienes trabajan tienden a estudiar menos horas que quienes no lo hacen.

par(mfrow = c(2, 2))
plot(modelo)

par(mfrow = c(2, 2))

# 1. Supuesto de Linealidad: Residuales vs Valores Ajustados
plot(modelo$fitted.values, resid(modelo), main = "Linealidad: Residuales vs Valores Ajustados", xlab = "Valores Ajustados", ylab = "Residuales", pch = 19, col = "steelblue") 
abline(h = 0, col = "red", lty = 2)

Se observa que los residuos están distribuidos de forma relativamente aleatoria alrededor de la línea horizontal roja (en y = 0), sin seguir un patrón claro o una forma sistemática.

#1 Supuesto de Independencia: Durbin-Watson
dwtest(modelo)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 1.873, p-value = 0.2573
## alternative hypothesis: true autocorrelation is greater than 0

Aqui podemos observar que tenemos una forma de campana que va de menor a mayor

#Supuesto de Normalidad: Histograma, QQ Plot y Shapiro-Wilk
par(mfrow = c(1, 1))
hist(resid(modelo), col = "lightblue", main = "Histograma de Residuales", xlab = "Residuales")

qqnorm(resid(modelo)); qqline(resid(modelo), col = "red")

shapiro.test(resid(modelo))
## 
##  Shapiro-Wilk normality test
## 
## data:  resid(modelo)
## W = 0.9616, p-value = 0.005234

Nos damos cuenta que los datos se ajustan a su normalidad