library(openxlsx)
dat1<- read.xlsx("C:/rstudio/anova_ejercisio_3.xlsx")
print(dat1)
## id grupos Puntos.de.alumnos
## 1 1 45 54
## 2 2 45 47
## 3 3 45 53
## 4 4 45 51
## 5 5 45 47
## 6 6 45 49
## 7 7 45 52
## 8 8 45 42
## 9 9 45 41
## 10 10 45 30
## 11 11 45 41
## 12 12 45 31
## 13 13 45 33
## 14 14 45 38
## 15 15 45 43
## 16 16 45 45
## 17 17 45 53
## 18 18 45 47
## 19 19 45 32
## 20 20 60 38
## 21 21 60 53
## 22 22 60 39
## 23 23 60 52
## 24 24 60 36
## 25 25 60 53
## 26 26 60 56
## 27 27 60 48
## 28 28 60 47
## 29 29 60 48
## 30 30 60 52
## 31 31 60 48
## 32 32 60 41
## 33 33 60 46
## 34 34 60 58
## 35 35 60 50
## 36 36 60 44
## 37 37 60 38
## 38 38 60 48
## 39 39 90 45
## 40 40 90 54
## 41 41 90 49
## 42 42 90 52
## 43 43 90 45
## 44 44 90 47
## 45 45 90 58
## 46 46 90 45
## 47 47 90 59
## 48 48 90 54
## 49 49 90 51
## 50 50 90 52
## 51 51 90 40
## 52 52 90 51
## 53 53 90 60
## 54 54 90 38
## 55 55 90 52
## 56 56 90 36
## 57 57 90 58
#HIPOTESIS
Hipótesis nula (H0): No hay diferencia significativa en el rendimiento (puntos) de los alumnos entre los diferentes tiempos de duración de clase (45, 60 y 90 minutos).
H0: μ45 = μ60 = μ90
Donde μ45, μ60 y μ90 son las medias de puntos para los grupos de 45, 60 y 90 minutos respectivamente.
Hipótesis alternativa (H1): Existe al menos una diferencia significativa en el rendimiento (puntos) de los alumnos entre los diferentes tiempos de duración de clase.
H1: Al menos una μi es diferente de las demás
Modelo estadístico:
El modelo estadístico correspondiente para un diseño completamente aleatorizado (DCA) es:
Yij = μ + τi + εij
Donde:
Yij es la observación (puntos) del j-ésimo alumno en el i-ésimo grupo (tiempo de clase) μ es la media general de todos los grupos τi es el efecto del i-ésimo grupo (tiempo de clase) εij es el error experimental asociado a la j-ésima observación en el i-ésimo grupo Asumimos que los errores εij son independientes y siguen una distribución normal con media 0 y varianza constante σ².
Este modelo nos permite analizar si existen diferencias significativas entre los grupos (tiempos de clase) en términos de los puntos obtenidos por los alumnos.
boxplot(Puntos.de.alumnos~as.factor(grupos), data = dat1, xlab = "grupos", ylab = "Puntos de Alumnos", las=1,
cex.axis=1.2, cex.lab=1.2)
#El gráfico muestra que el grupo 90 tiene la puntuación media más alta en comparación con los otros grupos. El grupo 45 tiene la puntuación media más baja. También podemos ver que el grupo 90 tiene el rango intercuartílico más amplio, lo que significa que hay más variabilidad en las puntuaciones de este grupo. El grupo 60 tiene el rango intercuartílico más estrecho, lo que significa que hay menos variabilidad en las puntuaciones de este grupo
#Estadisticas Descriptivas
library(summarytools)
descr(dat1$Puntos.de.alumnos)
## Descriptive Statistics
## dat1$Puntos.de.alumnos
## N: 57
##
## Puntos.de.alumnos
## ----------------- -------------------
## Mean 46.84
## Std.Dev 7.42
## Min 30.00
## Q1 41.00
## Median 48.00
## Q3 52.00
## Max 60.00
## MAD 7.41
## IQR 11.00
## CV 0.16
## Skewness -0.41
## SE.Skewness 0.32
## Kurtosis -0.60
## N.Valid 57.00
## Pct.Valid 100.00
with(dat1, stby(Puntos.de.alumnos, grupos,descr))
## Descriptive Statistics
## Puntos.de.alumnos by grupos
## Data Frame: dat1
## N: 19
##
## 45 60 90
## ----------------- -------- -------- --------
## Mean 43.63 47.11 49.79
## Std.Dev 7.87 6.37 6.99
## Min 30.00 36.00 36.00
## Q1 38.00 41.00 45.00
## Median 45.00 48.00 51.00
## Q3 51.00 52.00 54.00
## Max 54.00 58.00 60.00
## MAD 8.90 5.93 8.90
## IQR 10.50 9.50 9.00
## CV 0.18 0.14 0.14
## Skewness -0.38 -0.20 -0.37
## SE.Skewness 0.52 0.52 0.52
## Kurtosis -1.24 -1.12 -0.92
## N.Valid 19.00 19.00 19.00
## Pct.Valid 100.00 100.00 100.00
#El diagrama de caja y bigotes muestra que los tres grupos tienen promedios similares. Sin embargo, el grupo 90 tiene una mayor dispersión en sus datos, lo que significa que hay mayor variabilidad en las puntuaciones de los alumnos de este grupo. El grupo 45 tiene la menor dispersión en sus datos, lo que significa que las puntuaciones de los alumnos de este grupo son más homogéneas.
fit1 = aov(Puntos.de.alumnos~factor(grupos), data=dat1)
summary(fit1)
## Df Sum Sq Mean Sq F value Pr(>F)
## factor(grupos) 2 362.2 181.11 3.591 0.0343 *
## Residuals 54 2723.4 50.43
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#El análisis de varianza (ANOVA) muestra que hay una diferencia significativa entre los grupos (p = 0.0343). Esto significa que no todos los grupos tienen las mismas puntuaciones medias, por lo que hay una variación significativa en las puntuaciones medias de los estudiantes entre los grupos.
#Verificacion de supuestos ## Normalidad de residuos #Verficamos si los residuos del modelo siguen una distribucion normal
shapiro.test(residuals(fit1))
##
## Shapiro-Wilk normality test
##
## data: residuals(fit1)
## W = 0.95279, p-value = 0.02636
#El test de Shapiro-Wilk para la normalidad de los residuos nos da un valor p de 0.02636. Como el valor p es menor que 0.05, rechazamos la hipótesis nula de que los residuos son normales. Por lo tanto, podemos inferir que los residuos no son normales
##Homocedasticidad #Verificamos la homocedasticidad mediante un grafico de residuos y el test de levene
plot(fit1, which = 3)
library(car)
## Cargando paquete requerido: carData
leveneTest(Puntos.de.alumnos~ factor(grupos), data=dat1)
#Este gráfico es una forma visual de verificar si los residuos tienen varianza constante a lo largo de los valores ajustados.
#El gráfico muestra una línea roja suave que es casi horizontal, lo que indica que la varianza de los residuos es constante a lo largo de los valores ajustados.
Los puntos negros del gráfico representan los residuos estandarizados.
El test de levene es otro método para verificar la homocedasticidad.
El test de levene se usa para comparar las varianzas de dos grupos o más.
El resultado del test de levene muestra un valor p de 0.05, lo que significa que hay una diferencia significativa entre las varianzas de los grupos.
En conclusion, podemos decir que no se cumple el supuesto de homocedasticidad.}
coef(fit1)
## (Intercept) factor(grupos)60 factor(grupos)90
## 43.631579 3.473684 6.157895
dummy.coef(fit1)
## Full coefficients are
##
## (Intercept): 43.63158
## factor(grupos): 45 60 90
## 0.000000 3.473684 6.157895
predict(fit1, newdata = data.frame(grupos = c("45", "60", "90")))
## 1 2 3
## 43.63158 47.10526 49.78947
library(emmeans)
## Welcome to emmeans.
## Caution: You lose important information if you filter this package's results.
## See '? untidy'
emmeans(fit1, specs = ~ grupos)
## grupos emmean SE df lower.CL upper.CL
## 45 43.6 1.63 54 40.4 46.9
## 60 47.1 1.63 54 43.8 50.4
## 90 49.8 1.63 54 46.5 53.1
##
## Confidence level used: 0.95
options(contrasts = c("contr.sum", "contr.poly"))
fit2 = aov( Puntos.de.alumnos ~ factor(grupos), data = dat1 )
coef(fit2)
## (Intercept) factor(grupos)1 factor(grupos)2
## 46.8421053 -3.2105263 0.2631579
dummy.coef(fit2)
## Full coefficients are
##
## (Intercept): 46.84211
## factor(grupos): 45 60 90
## -3.2105263 0.2631579 2.9473684
## AJUSTE DEL MODELO DE UNICA MEDIA ( UNA MEDIA GLOBAL Y UN INTERCEPTO)
fit0=aov( Puntos.de.alumnos ~ 1, data =dat1)
## COMPARANDO CON EL MODELO DE MEDIAS
anova(fit1, fit0)
# inferencia para los efectos: test
summary.lm(fit1)
##
## Call:
## aov(formula = Puntos.de.alumnos ~ factor(grupos), data = dat1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13.7895 -4.7895 0.8947 4.8947 10.8947
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 43.632 1.629 26.781 < 2e-16 ***
## factor(grupos)60 3.474 2.304 1.508 0.13748
## factor(grupos)90 6.158 2.304 2.673 0.00993 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.102 on 54 degrees of freedom
## Multiple R-squared: 0.1174, Adjusted R-squared: 0.0847
## F-statistic: 3.591 on 2 and 54 DF, p-value: 0.03434
# intervalos de confianza
confint(fit1)
## 2.5 % 97.5 %
## (Intercept) 40.365191 46.897967
## factor(grupos)60 -1.145686 8.093054
## factor(grupos)90 1.538525 10.777265