library(readxl)
library(DT)
Al ser esta investigación con un diseño de 4 grupos, es necesario realizar comparaciones entre grupos por cada instrumento utilizado.
Braver y Braver (1988) proponen una aproximación meta-analÃtica para el análisis de los datos.
GarcÃa, Frias y Llobel (1999) mencionan que la aportación realizada por Braver y Braver esta fundamentada en el razonamiento de que el diseño de 4 grupos de Solomon permite 2 estimaciones independientes del mismo efecto experimental por lo cual es posible aplicar una técnica meta-analÃtica; además las pruebas de covariancia y varianza se tienen que aplicar sólo después de haber demostrado la no existencia de interacción entre el tratamiento y el pretest.
Braver y Braver (1988) hacen una propuesta de una secuencia condicional para el análisis estadÃstico de los datos, tal como se muestra en la siguiente figura
El meta análisis propuesto por Breaver y Braver (1988) señala que hay que seguir una secuencia de actividades para determinar si el tratamiento tiene un efecto o no sobre los grupos.
Como primer paso, los autores indican que debe de realizarse un análisis ANOVA 2x2 (Prueba A) y comprobar si existe significancia estadÃstica en el pretest vs. el tratamiento;
En caso de que el resultado del item anterior sea significativo, se procede a realizar una prueba de efectos principales (ANOVA) con los grupos que recibieron pretest (Prueba B) y sobre los grupos que no tuvieron pretest (Prueba C); si el resultado de la prueba B es estadÃsticamente significativo, se espera ahora que el resultado de la prueba C no tenga significancia estadÃstica. Si se presentan estos dos resultados, se puede afirmar que el tratamiento es efectivo, incluso en los grupos que no presentan pretest; en caso contrario, se concluye que el tratamiento es efectivo solo en los grupos con pretest, pues se presenta el efecto de sensiblización.
datos<-read_excel("resultados100.xls",
sheet = "Hoja1", range = "B1:D101")
datos%>%DT::datatable()
library(ggplot2)
library(plotly)
ggplot(datos , aes(x=Pretest, y=Scores, color=Treatment))+
geom_boxplot()+
ggtitle('BoxPlot of Posttest Scores')
Grupo 1
summary(datos$Scores[1:25])
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.50 2.25 3.25 3.03 3.75 4.00
sd(datos$Scores[1:25])
## [1] 0.8206958
grupo 2
summary(datos$Scores[26:50])
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.25 2.00 2.50 2.69 3.50 4.50
sd(datos$Scores[26:50])
## [1] 0.9928914
GRUPO 3
summary(datos$Scores[51:75])
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.00 3.00 4.00 3.85 4.50 5.00
sd(datos$Scores[51:75])
## [1] 0.8599903
GRUPO 4
summary(datos$Scores[76:100])
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.50 1.75 3.00 2.86 3.50 4.25
sd(datos$Scores[76:100])
## [1] 0.9467048
with(data=datos, expr=tapply(Scores, Treatment, mean))
## With treatment Without treatment
## 3.440 2.775
with(data=datos, expr=tapply(Scores, Treatment, sd))
## With treatment Without treatment
## 0.9293403 0.9639550
with(data=datos, expr=tapply(Scores, Pretest, mean))
## With pretest Without pretest
## 2.860 3.355
with(data=datos, expr=tapply(Scores, Treatment, sd))
## With treatment Without treatment
## 0.9293403 0.9639550
with(data=datos, expr=tapply(Scores, list(Treatment, Pretest), mean))
## With pretest Without pretest
## With treatment 3.03 3.85
## Without treatment 2.69 2.86
A partir de la representación gráfica y el calculo de las medias se puede intuir que puede existir una diferencia en el efecto de la nota dependiendo de la intervención y el pretest
##.
ggplot(data = datos, aes(x = Pretest, y = Scores, colour =Treatment , group =Treatment )) +
stat_summary(fun = mean, geom = "point") +
stat_summary(fun = mean, geom = "line") +
labs(y = "mean (Scores)") +
ggtitle('Interaction Plot of Posttest Score')
ggplot(data = datos, aes(x = Treatment, y = Scores, colour =Pretest , group =Pretest )) +
stat_summary(fun = mean, geom = "point") +
stat_summary(fun = mean, geom = "line") +
labs(y = "mean(Scores)") +
ggtitle('Interaction Plot of Posttest Score')
La nota es
El modelo ANOVA de dos vÃas evalúa, además de los efectos de los factores sobre la variable independiente, los efectos de la interacción entre ellas. La hipótesis nula
\[H_0 : \ \ \ \ \text{No hay interacción entre los factores}.\]
Estamos ante un ANOVA de dos vÃas (varios factores entre sujetos).
De dos vÃas (two-way ANOVA o ANOVA de dos factores): examina la igualdad de las medias de la población para un resultado cuantitativo y dos variables categóricas o factores.
La variable dependiente (resultado) es cuantitativa: variable en la que deseamos comparar los grupos. En nuestro caso, la variable dependiente es Nota.
Factores (o variables independientes): variables categóricas que definen los grupos que deseamos comparar. En nuestro caso, test (test con dos niveles) y tratamiento (tratamiento con dos niveles).
Entre sujetos (between subjects): donde cada factor varÃa entre los sujetos y cada factor se mide solo una vez para un mismo sujeto. En nuestro caso, la variable edad se mide una vez en cada sujeto, y la edad varÃa de un sujeto a otro; y cada sujeto pertenece a un solo grupo o nivel de la variable tipoDiet.
anova <- aov(Scores ~ Pretest *Treatment, data = datos)
summary(anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## Pretest 1 6.13 6.126 7.436 0.007602 **
## Treatment 1 11.06 11.056 13.420 0.000408 ***
## Pretest:Treatment 1 2.64 2.641 3.205 0.076547 .
## Residuals 96 79.08 0.824
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Interpretación:
La variable Intervencion tiene un efecto significativo (0.0000431).
La variable Pretest es significativa ( p valor 0.021368 ).
Respecto a la interacción no hay evidencia estadÃstica suficiente para rechazar la hipótesis nula (0.084758 mayor a
Al obtener un valor con significancia estádistica msyor .05, se continua con los pasos propuestos por Braver y Braver,
library(lsr)
etaSquared(anova)
## eta.sq eta.sq.part
## Pretest 0.06193326 0.07188804
## Treatment 0.11177812 0.12264864
## Pretest:Treatment 0.02669809 0.03231086
plot(anova, which = 1:1)
#modificar=anova$residuals
#class(modificar)
#b=as.vector(modificar)
#qqnorm(b)
#edit(b)
plot(anova, which = 2:2)
par(mfrow=c(1,2))
plot(anova,which=1:4)
library(ggplot2)
# Solution 1
qplot(sample = anova$residuals)
library(nortest)
hist(anova$residuals)
shapiro.test(anova$residuals)
##
## Shapiro-Wilk normality test
##
## data: anova$residuals
## W = 0.96607, p-value = 0.01115
Supuestos básicos del ANOVA Para un ANOVA de dos vÃas se debe comprobar el supuesto de independencia, el supuesto de normalidad y el supuesto de homocedasticidad. Estos supuestos se deben comprobar para el factor Pretest y para el factor Treatment. Esto es, se comprueba la normalidad para todos los niveles de cada factor, y se comprueba la homocedasticidad para ambos factores.
Comprobación de supuestos para el factor Pretest:
SUPUESTO DE NORMALIDAD: Para contrastar la normalidad usamos el test de Shapiro-Wilk, con la función shapiro.test( ).
datos
## # A tibble: 100 x 3
## Scores Pretest Treatment
## <dbl> <chr> <chr>
## 1 4 With pretest With treatment
## 2 2.75 With pretest With treatment
## 3 2.75 With pretest With treatment
## 4 3.5 With pretest With treatment
## 5 3.75 With pretest With treatment
## 6 3 With pretest With treatment
## 7 4 With pretest With treatment
## 8 3.75 With pretest With treatment
## 9 1.75 With pretest With treatment
## 10 3.25 With pretest With treatment
## # … with 90 more rows
shapiro.test( datos$Scores[datos$Pretest == "With pretest"] )
##
## Shapiro-Wilk normality test
##
## data: datos$Scores[datos$Pretest == "With pretest"]
## W = 0.94019, p-value = 0.01371
shapiro.test( datos$Scores[datos$Pretest == "Without pretest"] )
##
## Shapiro-Wilk normality test
##
## data: datos$Scores[datos$Pretest == "Without pretest"]
## W = 0.94974, p-value = 0.03328
SUPUESTO DE HOMOCEDASTICIDAD Para contrastarla utilizamos el test de Bartlett con bartlett.test( ), que es más robusto que otros tests cuando los datos son normales.
library(car)
## Loading required package: carData
leveneTest(y =datos$Scores, group = datos$Treatment, center = "median")
## Warning in leveneTest.default(y = datos$Scores, group = datos$Treatment, : datos
## $Treatment coerced to factor.
## Levene's Test for Homogeneity of Variance (center = "median")
## Df F value Pr(>F)
## group 1 0.4514 0.5033
## 98
bartlett.test( Scores ~ Pretest,
data = datos )
##
## Bartlett test of homogeneity of variances
##
## data: Scores by Pretest
## Bartlett's K-squared = 0.59461, df = 1, p-value = 0.4406
shapiro.test( datos$Scores[datos$Treatment == "With treatment"] )
##
## Shapiro-Wilk normality test
##
## data: datos$Scores[datos$Treatment == "With treatment"]
## W = 0.96685, p-value = 0.1718
hist(datos$Scores[datos$Treatment == "With treatment"])
shapiro.test( datos$Scores[datos$Treatment == "Without treatment"] )
##
## Shapiro-Wilk normality test
##
## data: datos$Scores[datos$Treatment == "Without treatment"]
## W = 0.93394, p-value = 0.007813
SUPUESTO DE HOMOCEDASTICIDAD Para contrastarla utilizamos el test de Bartlett con bartlett.test( ), que es más robusto que otros tests cuando los datos son normales.
bartlett.test( Scores ~ Treatment,
data = datos )
##
## Bartlett test of homogeneity of variances
##
## data: Scores by Treatment
## Bartlett's K-squared = 0.064853, df = 1, p-value = 0.799
require(nortest)
by(data = datos,INDICES = datos$Treatment,FUN = function(x){ lillie.test(x$Scores)})
## datos$Treatment: With treatment
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: x$Scores
## D = 0.15065, p-value = 0.006272
##
## ------------------------------------------------------------
## datos$Treatment: Without treatment
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: x$Scores
## D = 0.1293, p-value = 0.03601
require(nortest)
by(data = datos,INDICES = datos$Pretest,FUN = function(x){ lillie.test(x$Scores)})
## datos$Pretest: With pretest
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: x$Scores
## D = 0.13721, p-value = 0.01959
##
## ------------------------------------------------------------
## datos$Pretest: Without pretest
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: x$Scores
## D = 0.12864, p-value = 0.03778
anova1 <- aov(Scores ~ Pretest +Treatment, data = datos)
summary(anova1)
## Df Sum Sq Mean Sq F value Pr(>F)
## Pretest 1 6.13 6.126 7.27 0.008265 **
## Treatment 1 11.06 11.056 13.12 0.000467 ***
## Residuals 97 81.73 0.843
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova2 = aov(Scores ~ Pretest, data = datos)
summary(anova2)
## Df Sum Sq Mean Sq F value Pr(>F)
## Pretest 1 6.13 6.126 6.47 0.0125 *
## Residuals 98 92.78 0.947
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova3 <- aov(Scores ~ Treatment, data = datos)
summary(anova3)
## Df Sum Sq Mean Sq F value Pr(>F)
## Treatment 1 11.06 11.056 12.33 0.000675 ***
## Residuals 98 87.85 0.896
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
interaction.plot( datos$Pretest, # factor en el eje x
datos$Treatment, # factor representado en diferentes lÃneas
datos$Scores, # var. dependiente
# editar el gráfico
ylim = c( 0, 5 ), # eje y
col = c( "#27ae60", "#5499c7", "#e74c3c"), # color de lÃneas
lty = c( 5, 1, 12 ), # tipo de lÃneas
lwd = 3, # grosor de lÃnea
ylab = "Media de la nota final final",
xlab = "Pretest",
trace.label = "Tratamiento" )
library(lsr)
etaSquared(anova)
## eta.sq eta.sq.part
## Pretest 0.06193326 0.07188804
## Treatment 0.11177812 0.12264864
## Pretest:Treatment 0.02669809 0.03231086
par(mfrow = c(1,2))
plot(anova, which = 1:4)