Facciamo finta che l'atteggiamento dei tedeschi (84.000.000 di abitanti) sulla carbanora si distribuisca normalemente.
tedeschi = rnorm(n = 84000000, mean = 5,sd = 2)
hist(tedeschi, xlab="atteggiamento carbonara")
Adesso estraiamo casualmente due gruppi di 300 tedeschi e misuriamo al pre-test il loro atteggiamento sulla carbonara. Se il teorema del limite centrale è vero, poichè stiamo estraendo casualmente due gruppi sufficientemente numerosi, essi dovrebbero essere equivalenti relativamente al loro atteggiamento sulla carbonara. Verifichiamolo:
controllo=sample(tedeschi,size = 300)
sperimentale= sample(tedeschi,size = 300)
equi=t.test(sperimentale,controllo,paired = F,var.equal = T)
Effettivamente, il gruppo sperimentale ha una media di atteggiamento pari a 4.93 che non differisce significativamente (\(t(598) = -1.15\), \(p = .249\)) da quella del gruppo di controllo pari a 5.11.
Bene, adesso facciamo assaggiare - solo al gruppo sperimentale - la carbonare di Sora Lella e immagginiamo che questo cambi l'atteggiamento del gruppo sperimentale con uno shift nella scala preferenza di + 2. Rimisuriamo - su entrambi i gruppi al post-test - l'atteggiamento verso la carbonara introducendo anche un cambiamento per ogni individuo di tipo randomico. Il nostro disegno è quindi un pre-post a gruppo di controllo dove - per testare se Sora Lella ha cambiato l'atteggiamento - dovremo calcolare il cambio di atteggiamento individuale (post - pre) e confrontarlo tra gruppo sperimentale e di controllo. Facciamolo:
sperimentale_post= sperimentale +2 + rnorm(length(sperimentale),0,1)
controllo_post= controllo + rnorm(length(controllo),0,1)
shift_sperimentale= sperimentale_post - sperimentale
shift_controllo= controllo_post - controllo
dati=data.frame(shift=c(shift_sperimentale,shift_controllo),gruppi=c(rep("Sora Lella",length(shift_sperimentale)),rep("Controllo",length(shift_controllo))))
equi2=t.test(shift_sperimentale,shift_controllo,paired = F,var.equal = T)
# Bar plot of group means + points
ggbarplot(dati, x = "gruppi", y = "shift",
add = c("mean_se"),
color = "gruppi", fill = "gruppi", alpha = 0.5)
Effettivamente con un disegno pre-post siamo in grado di cogliere il cambio di atteggiamento (\(t(598) = 20.75\), \(p < .001\)).
E se invece di un pre-post avessimo misurato solo il post? saremmo riusciti a cogliere il cambio di atteggiamento? Testiamolo confrontando solo il post tra i due gruppi:
dati=data.frame(post=c(sperimentale_post,controllo_post),gruppi=c(rep("Sora Lella",length(shift_sperimentale)),rep("Controllo",length(shift_controllo))))
equi3=t.test(sperimentale_post,controllo_post,paired = F,var.equal = T)
# Bar plot of group means + points
ggbarplot(dati, x = "gruppi", y = "post",
add = c("mean_se"),
color = "gruppi", fill = "gruppi", alpha = 0.5)
Si! anche con un disegno solo post siamo in grado di cogliere il cambio di atteggiamento (\(t(598) = 9.16\), \(p < .001\)).
Ma noi non ci fidiamo; magari è stato un caso dovuto al particolare esempio fatto. Ok, allora estraiamo per 1000 volte i due gruppi causalmente e vediamo quanto volte un cambio di atteggiamento viene trovato da un disegno pre-post e quante da un disegno solo post. Per rendere le cose ancora più realistiche questa volta estraiamo dei gruppi più piccoli con una grandezza pari a 100 tedeschi per gruppo
solopost=prepost=NA
for(i in 1:1000){
controllo=sample(tedeschi,size = 100)
sperimentale= sample(tedeschi,size = 100)
sperimentale_post= sperimentale +2 + rnorm(length(sperimentale),0,1)
controllo_post= controllo + rnorm(length(controllo),0,1)
shift_sperimentale= sperimentale_post - sperimentale
shift_controllo= controllo_post - controllo
equi2=t.test(shift_sperimentale,shift_controllo,paired = F,var.equal = T)
if(equi2$p.value<.05){prepost[i]=1}
equi3=t.test(sperimentale_post,controllo_post,paired = F,var.equal = T)
if(equi3$p.value<.05){solopost[i]=1}
}
Risultati:
- Il disegno pre-post ha trovato il cambio di atteggiamento il 100% delle volte!
- Il disegno solo post ha trovato il cambio di atteggiamento il 100% delle volte!
Caspita! allora dobbiamo concludere che se a) i gruppi sono estratti casualmente e b) i gruppi sono sufficientemente grandi, non c'è alcuna differenza tra "pre-post" e "solo post" nella capacità di riuscire a rintracciare un cambio di atteggiamento.
E quando i gruppi sono piccoli piccoli? bhe qui dovremo aspettarci che il disegno pre-post è più potente. Testiamolo estraendo questa volte gruppi di numerosità pari a 20 tedeschi.
solopost=prepost=NA
for(i in 1:1000){
controllo=sample(tedeschi,size = 20)
sperimentale= sample(tedeschi,size = 20)
sperimentale_post= sperimentale +2 + rnorm(length(sperimentale),0,1)
controllo_post= controllo + rnorm(length(controllo),0,1)
shift_sperimentale= sperimentale_post - sperimentale
shift_controllo= controllo_post - controllo
equi2=t.test(shift_sperimentale,shift_controllo,paired = F,var.equal = T)
if(equi2$p.value<.05){prepost[i]=1}
equi3=t.test(sperimentale_post,controllo_post,paired = F,var.equal = T)
if(equi3$p.value<.05){solopost[i]=1}
}
Risultati:
- Il disegno pre-post ha trovato il cambio di atteggiamento il 100% delle volte!
- Il disegno solo post ha trovato il cambio di atteggiamento il 75.8% delle volte!
c.v.d e viva la carbonara!