Si possono ricavare facilmente le formule per ottenere la tabella ANOVA partendo dai dati descrittivi (in questo pdf sono presenti le formule per eseguire la one-way ANOVA, e le ANOVA bi- e tridimensionale partendo dai dati descrittivi). Supponiamo di avere i seguenti 4 gruppi:
a <- c(7.4, 6.6, 6.7, 6.1, 6.5, 7.2)
b <- c(7.1, 7.3, 6.8, 6.9, 7)
c <- c(6.8, 6.3, 6.4, 6.7, 6.5, 6.8)
d <- c(6.4, 6.9, 7.6, 6.8, 7.3)
Da questi dati calcoliamo: numerosità campionaria, media e deviazione standard, e raccogliamo tutti i dati in una tabella di riepilogo:
> mean(a)
[1] 6.75
> mean(b)
[1] 7.02
> mean(c)
[1] 6.583333
> mean(d)
[1] 7
>
> length(a)
[1] 6
> length(b)
[1] 5
> length(c)
[1] 6
> length(d)
[1] 5
>
> sd(a)
[1] 0.4764452
> sd(b)
[1] 0.1923538
> sd(c)
[1] 0.2136976
> sd(d)
[1] 0.4636809
Adesso dimentichiamo i dati campionari, e facciamo una ANOVA parametrica sui dati di quest'ultima tabella. Le formule sono:
La GrandMean è la media di tutti i gruppi; la SSB è la devianza tra gruppi, e la SSE è la devianza entro gruppi (o d'errore). Le altre formule sono quelle consuete, che già conoscevamo:
I df sono i gradi di liberta; MSB e MSE sono la varianza tra gruppi e d'errore; F è il valore della statistica test.
Traduciamo questi calcoli in R, e procediamo:
nA <- 6; nB <- 5; nC <- 6; nD <- 5
meanA <- 6.75; meanB <- 7.02; meanC <- 6.58; meanD <- 7
sdA <- .476; sdB <- .192; sdC <- .214; sdD <- .464
GrandMean <- (meanA * nA + meanB * nB + meanC * nC + meanD * nD) / (nA + nB + nC + nD)
> GrandMean
[1] 6.821818
SSB <- (((meanA - GrandMean)^2)*nA) + (((meanB - GrandMean)^2)*nB) + (((meanC - GrandMean)^2)*nC) + (((meanD - GrandMean)^2)*nD)
> SSB
[1] 0.7369273
SSE <- (sdA^2 * (nA-1)) + (sdB^2 * (nB-1)) + (sdC^2 * (nC-1)) + (sdD^2 * (nD-1))
> SSE
[1] 2.3705
dfSSB <- 4 - 1
dfSSE <- (nA+nB+nC+nD) - 4
MSB <- SSB / dfSSB
> MSB
[1] 0.2456424
MSE <- SSE / dfSSE
> MSE
[1] 0.1316944
F <- MSB / MSE
> F
[1] 1.865245
Possiamo calcolare il p-value di una distribuzione F, per prendere la nostra decisione statistica, in questo modo:
p.value <- 1 - pf(F, dfSSB, dfSSE)
> p.value
[1] 0.1716690
Raccogliamo tutti i dati nella classica tabella ANOVA:
Essendo p-value > 0.05, accettiamo l'ipotesi nulla: i 4 gruppi hanno medie uguali.
Adesso vediamo i valori che avremmo ottenuto, se avessimo utilizzato i dati campionari:
a <- c(7.4, 6.6, 6.7, 6.1, 6.5, 7.2)
b <- c(7.1, 7.3, 6.8, 6.9, 7)
c <- c(6.8, 6.3, 6.4, 6.7, 6.5, 6.8)
d <- c(6.4, 6.9, 7.6, 6.8, 7.3)
dati <- c(a,b,c,d)
gruppi = factor(rep(letters[1:4], times=c(length(a),length(b),length(c),length(d))))
anova(lm(dati ~ gruppi))
Analysis of Variance Table
Response: dati
Df Sum Sq Mean Sq F value Pr(>F)
gruppi 3 0.72730 0.24243 1.8402 0.1760
Residuals 18 2.37133 0.13174
Potete confrontare i valori contenuti nella tabella, dopo averla resa leggibile in Latex, con la funzione
xtable
, disponibile nel pacchetto xtable
(converte le tabelle di R in codice LaTeX):Confrontando i valori, essi risultano molto simili, approssimazioni a parte.
e il qqplot?
RispondiElimina