Sei sulla pagina 1di 238

.

Massimiliano Pastore
Analisi di dati quantitativi in
Psicologia
(e applicazioni con R)

-0.5 0.0 0.5 1.0

0.05 0.35
1.0

0.5

0.0

0.65 0.95
1.0

0.5

0.0

-0.5 0.0 0.5 1.0

Ver. 4.2 - Marzo 2015


2
.

Massimiliano Pastore
Analisi di dati quantitativi in Psicologia
(e applicazioni con R)
.

Premessa
Il presente manuale viene distribuito secondo la licenza Attribuzione - non commerciale -
non opere derivate 2.5. Questo significa che è possibile riprodurlo, distribuirlo, comunicarlo,
esporlo al pubblico, rappresentarlo ed eseguirlo ma alle seguenti condizioni:

• La paternità dell’opera va attribuita nei modi indicati dall’autore o da chi ha dato


l’opera in licenza e in modo tale da non suggerire che essi avallino l’utente o il modo in
cui l’utente utilizza l’opera.

• Non si può usare quest’opera per fini commerciali.

• Non si può alterare o trasformare quest’opera, né usarla per crearne un’altra.

Ogni volta che viene fatto uso o distribuzione di quest’opera, deve essere fatto secondo i
termini di questa licenza, che va comunicata con chiarezza. In ogni caso, è possibile concordare
col titolare dei diritti utilizzi di quest’opera non consentiti da questa licenza.
I contenuti del manuale sono quelli trattati nel corsi svolti negli AA dal 2007/08 presso
la Facoltà di Psicologia (attuale Scuola di Psicologia) dell’Università di Padova. Rispetto
alla versione precedente, riveduta e corretta, sono stati aggiunti dei nuovi capitoli trattati nel
corso Analisi dei dati in ambito di Comunità per l’anno accademico 2013/14.
Trattandosi di un lavoro in progress, non ha pretesa di essere esaustivo e neppure con-
clusivo. In esso vengono presentati gli argomenti dei corsi citati con le relative applicazio-
ni del software R. Per ulteriori approfondimenti si rimanda comunque ai testi citati nella
bibliografia.
Il manuale in formato pdf, i file dati ed il pacchetto ADati cui si fa riferimento nel testo
sono disponibili on-line alla pagina Moodle del corso Analisi dei dati in ambito di Comunità:
https://elearning.unipd.it/dpss/
Per tutto quanto riguarda R ed i suoi pacchetti aggiuntivi si può fare riferimento al sito
http://www.r-project.org/.
Sono gradite osservazioni per il miglioramento del manuale e segnalazioni di eventuali
errori inviandomi una e-mail (massimiliano.pastore@unipd.it). A tale proposito ringrazio
tutti quanti (studenti e colleghi) hanno dato, e continuano a dare, un prezioso contributo al
miglioramento di questo manuale.

Massimiliano Pastore
Padova, marzo 2014
Indice

1 Elementi di base 3
1.1 Variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Il processo di analisi dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Ipotesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Modelli e relazioni tra variabili . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Introduzione a R 9
2.1 Basi dell’ambiente R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Numeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.2 Oggetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.3 Variabili e vettori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.4 Matrici e data-frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.5 Accesso agli elementi di un vettore o di una matrice . . . . . . . . . . 13
2.1.6 Workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.7 Funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.8 Pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.9 Script o programmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Acquisizione file di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1 File testuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.2 File Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.3 File SPSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.4 Dati formattati per R . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 Statistiche descrittive e grafici 23


3.1 Tabelle di frequenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 Statistiche descrittive di una singola variabile . . . . . . . . . . . . . . . . . . 24
3.3 Statistiche descrittive per gruppi . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4 Grafici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Istogrammi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Boxplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Cumulata empirica delle frequenze . . . . . . . . . . . . . . . . . . . . 28
3.4.4 QQplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4.5 Grafico a dispersione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
vi Indice

4 Strutture di dati 33
4.1 Matrici rettangolari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.1 Matrice di dati grezzi . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.2 Matrice di frequenze (a doppia entrata) . . . . . . . . . . . . . . . . . 34
4.2 Matrici quadrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.1 Matrice di covarianza . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.2 Matrice di correlazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.3 Matrice di distanze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5 Elementi di teoria dei campioni 39


5.1 Definizioni di base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.1.1 Popolazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.1.2 Campione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.1.3 Parametri e statistiche . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2 Distribuzioni campionarie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.3 Distribuzione campionaria della media . . . . . . . . . . . . . . . . . . . . . . 42
5.3.1 Variabilità della distribuzione campionaria della media . . . . . . . . . 44
5.4 Distribuzione campionaria della varianza . . . . . . . . . . . . . . . . . . . . . 45

6 Inferenza statistica 49
6.1 La “verifica” di ipotesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.2 Limiti dello schema classico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.3 Alcuni errori frequenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.3.1 Relazione tra α e β . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.3.2 Interpretazioni del p-value . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.3.3 Significatività statistica del coefficiente di correlazione . . . . . . . . . 57
6.3.4 Relazione tra correlazione e miglioramento . . . . . . . . . . . . . . . . 59
6.3.5 Il problema della molteplicità . . . . . . . . . . . . . . . . . . . . . . . 62
6.3.6 Normalizzazione e standardizzazione . . . . . . . . . . . . . . . . . . . 63

7 Potenza e dimensione dell’effetto 67


7.1 Definizione di potenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.2 Dimensione dell’effetto (Effect Size) . . . . . . . . . . . . . . . . . . . . . . . 68
7.3 Relazione tra potenza ed ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.4 Potenza e numerosità campionaria . . . . . . . . . . . . . . . . . . . . . . . . 71
7.5 Potenza e variabilità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.6 Funzioni di R per la potenza e l’Effect Size . . . . . . . . . . . . . . . . . . . 74

8 Confronti tra medie 77


8.1 Test sulla media della popolazione . . . . . . . . . . . . . . . . . . . . . . . . 80
8.1.1 Valutazione degli assunti . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.1.2 t-test a campione singolo . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.1.3 Dimensione dell’effetto e potenza del test . . . . . . . . . . . . . . . . 83
8.2 Campioni indipendenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.2.1 Valutazione degli assunti . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.2.2 t-test a campioni indipendenti . . . . . . . . . . . . . . . . . . . . . . . 85
8.2.3 Dimensione dell’effetto e potenza del test . . . . . . . . . . . . . . . . 86
Indice vii

8.2.4 t-test a campioni indipendenti con varianze non omogenee . . . . . . . 87


8.3 Campioni non indipendenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.3.1 t-test a campioni appaiati . . . . . . . . . . . . . . . . . . . . . . . . . 90

9 Correlazione bivariata 91
9.1 Coefficiente di correlazione di Bravais-Pearson . . . . . . . . . . . . . . . . . . 92
9.1.1 Test per saggiare la significatività statistica di r . . . . . . . . . . . . 94
9.1.2 Caso in cui ρ 6= 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
9.2 Coefficiente di correlazione di Spearman . . . . . . . . . . . . . . . . . . . . . 97
9.3 Calcolo della potenza associata a r . . . . . . . . . . . . . . . . . . . . . . . . 99

10 Regressione lineare semplice 101


10.1 Scarti e devianze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
10.2 Modello di regressione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
10.2.1 Assunti del modello di regressione . . . . . . . . . . . . . . . . . . . . 104
10.2.2 La funzione lm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.2.3 Valutazione degli assunti . . . . . . . . . . . . . . . . . . . . . . . . . . 107
10.3 Inferenza sul coefficiente di regressione . . . . . . . . . . . . . . . . . . . . . . 108
10.4 Relazione tra regressione e correlazione . . . . . . . . . . . . . . . . . . . . . . 110

11 Analisi della varianza 113


11.1 Modello ad un fattore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
11.1.1 Assunti del modello . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
11.1.2 Scomposizione della devianza . . . . . . . . . . . . . . . . . . . . . . . 116
11.1.3 La distribuzione F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
11.1.4 La funzione anova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
11.1.5 Dimensione dell’effetto e potenza del test . . . . . . . . . . . . . . . . 119
11.1.6 Violazione all’assunto di omogeneità delle varianze . . . . . . . . . . . 121
11.2 Modello a due fattori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
11.2.1 Intervalli di confidenza . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
11.2.2 Scomposizione della devianza . . . . . . . . . . . . . . . . . . . . . . . 125
11.2.3 La funzione aov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
11.2.4 Interpretazione dell’interazione . . . . . . . . . . . . . . . . . . . . . . 127
11.2.5 Stima della dimensione degli effetti . . . . . . . . . . . . . . . . . . . . 128
11.2.6 Stima della potenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
11.3 Modello entro soggetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
11.3.1 Assunti del modello . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
11.3.2 Scomposizione della devianza . . . . . . . . . . . . . . . . . . . . . . . 132
11.3.3 Analisi con R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
11.3.4 Violazione dell’assunto di sfericità . . . . . . . . . . . . . . . . . . . . 134

12 Confronti multipli 137


12.1 Il problema della molteplicità . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
12.1.1 Controllo dell’errore di I tipo . . . . . . . . . . . . . . . . . . . . . . . 139
12.2 Aggiustamento delle probabilità . . . . . . . . . . . . . . . . . . . . . . . . . . 140
12.2.1 Metodo Bonferroni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
12.2.2 Test di Tukey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
viii Indice

12.2.3 Test di Scheffé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143


12.2.4 False Discovery Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
12.3 Confronti complessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

13 Regressione lineare multipla 147


13.1 Modelli lineari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
13.1.1 Assunti dei modelli lineari . . . . . . . . . . . . . . . . . . . . . . . . . 148
13.2 Modello con un solo predittore . . . . . . . . . . . . . . . . . . . . . . . . . . 149
13.2.1 Un solo predittore quantitativo . . . . . . . . . . . . . . . . . . . . . . 149
13.2.2 Un solo predittore dicotomico . . . . . . . . . . . . . . . . . . . . . . . 151
13.3 Modello con più predittori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
13.3.1 Modello senza interazioni . . . . . . . . . . . . . . . . . . . . . . . . . 153
13.3.2 Modello con interazioni . . . . . . . . . . . . . . . . . . . . . . . . . . 153
13.4 Confronto tra i modelli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

14 Regressione lineare multivariata 159


14.1 Modello multivariato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
14.1.1 Regressione multipla . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
14.1.2 Modelli ricorsivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
14.1.3 Modelli non-ricorsivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
14.2 Valutazione del modello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
14.2.1 Identificazione del modello . . . . . . . . . . . . . . . . . . . . . . . . . 172
14.2.2 Valutazione dell’adattamento . . . . . . . . . . . . . . . . . . . . . . . 174
14.2.3 Confronto tra i modelli . . . . . . . . . . . . . . . . . . . . . . . . . . 177
14.3 Analisi di mediazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
14.3.1 Effetti indiretti e totali con sem() . . . . . . . . . . . . . . . . . . . . 179

15 Regressione lineare multilivello 183


15.1 Strutture multilivello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
15.2 Applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
15.2.1 Impostazione classica . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
15.2.2 Modello con intercetta variabile . . . . . . . . . . . . . . . . . . . . . . 190
15.2.3 Modello con intercetta e pendenza variabili . . . . . . . . . . . . . . . 192
15.3 Analisi degli effetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
15.3.1 Significatività dei parametri . . . . . . . . . . . . . . . . . . . . . . . . 194
15.3.2 Analisi degli effetti fissi . . . . . . . . . . . . . . . . . . . . . . . . . . 196
15.3.3 Analisi degli effetti random . . . . . . . . . . . . . . . . . . . . . . . . 197
15.3.4 Rappresentazioni grafiche . . . . . . . . . . . . . . . . . . . . . . . . . 199
15.3.5 Analisi degli effetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

16 Analisi dei dati in forma (semi-)bayesiana 203


16.1 Limiti dell’approccio NHST (ancora) . . . . . . . . . . . . . . . . . . . . . . . 203
16.1.1 Inferenza bayesiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
16.1.2 Approccio bayesiano vs NHST . . . . . . . . . . . . . . . . . . . . . . 204
16.2 Inferenza bayesiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
16.2.1 Modelli delle osservazioni e modelli delle credenze . . . . . . . . . . . 205
16.2.2 Obiettivi dell’inferenza bayesiana . . . . . . . . . . . . . . . . . . . . . 206
Indice ix

16.2.3 Bayes Factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207


16.2.4 Bayesian Information Criterion . . . . . . . . . . . . . . . . . . . . . . 207
16.3 Applicazioni con R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
16.3.1 t-test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
16.3.2 Regressione lineare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
16.3.3 ANOVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

Bibliografia 217
.

L’uomo non si nutre di verità, l’uomo si nutre di risposte! [...]


Giovani delle generazioni future ascoltatemi:
non sappiate niente ma abbiate una risposta a tutto. [...]
Dio e la Statistica sono risposte che godono di ottima salute.

(Daniel Pennac)
Capitolo 1

Elementi di base

Le discipline empiriche non possono prescindere da una osservazione sistematica della realtà.
Tale osservazione si traduce nella raccolta di dati che poi debbono essere opportunamente ana-
lizzati ed interpretati. Nelle discipline sociali e psicologiche, che studiano fenomeni complessi
ed articolati, è particolarmente importante che la raccolta e l’analisi dei dati siano accurate,
pensate e, soprattutto, non eseguite meccanicamente (Gigerenzer & Marewski, 2014). Inol-
tre, i processi sociali e psicologici sono caratterizzati da una maggiore variabilità rispetto ai
fenomeni studiati nelle scienze fisiche (Gelman, 2014) e tale variabilità va tenuta in debita
considerazione; l’analisi statistica stessa ha senso solo in presenza di variabilità.
Il presente manuale si propone di illustrare alcuni aspetti di base dell’analisi dei dati quan-
titativi nel contesto delle discipline psicologiche e sociali. A tale fine, consapevoli del fatto
che i fenomeni studiati da tali discipline sono particolarmente complessi, abbiamo scelto di
puntare più sugli aspetti applicativi e meno su quelli teorici che saranno comunque presenti
almeno in generale. La struttura del manuale pertanto alternerà alcuni aspetti teorici, es-
senziali, ad esempi pratici di analisi dei dati, introducendo anche tecniche particolarmente
recenti, basate sull’approccio bayesiano. In questo capitolo concentreremo l’attenzione sugli
elementi principali che caratterizzano l’analisi dei dati.

1.1 Variabili
L’analisi statistica si basa su collezioni di valori risultanti dall’osservazione di un fenomeno
variabile (Scàrdovi, 1980). Una variabile è qualche proprietà di un evento reale che viene
misurata (McBurney, 1983); con questo termine si definisce qualsiasi caratteristica o attributo
di persone, oggetti o eventi che può assumere diversi valori numerici (e non) (Bohrnstedt &
Knoke, 1998). Come vedremo nel corso del presente manuale, le variabili e le loro relazioni
sono gli elementi su cui si fondano le analisi statistiche.
Possiamo individuare vari criteri di classificazione delle variabili. Un primo criterio, tipico
nella psicologia, è quello in base al quale distinguiamo tra variabili latenti ed osservate. Una
variabile latente rappresenta un concetto unidimensionale nella sua forma pura (Bollen, 1989).
Non è direttamente osservabile, ma misurabile solo per via indiretta, tramite appropriate
variabili chiamate indicatori. Spesso le variabili di cui si interessa la psicologia sono latenti, si
pensi ad esempio all’intelligenza, alla socievolezza, o alle abilità matematiche. Una variabile
osservata o manifesta è invece una variabile direttamente misurabile. Per esempio l’altezza
di un individuo è una variabile che può essere rilevata direttamente. Spesso in psicologia le
4 1 Elementi di base

variabili osservate sono utilizzate come indicatori indiretti delle variabili latenti; ad esempio le
risposte di un soggetto ad un test di rilevazione dell’ansia dovrebbero permettere di misurare
la variabile latente ansia.
Un secondo criterio di classificazione delle variabili è legato alla loro natura metrica. Clas-
sicamente si distinguono quattro livelli di misura (Stevens, 1946, 1951): nominale, ordinale,
ad intervalli e a rapporti. La scala nominale permette solo di raggruppare in classi di appar-
tenenza. Esempi di variabili nominali possono essere il genere (maschio, femmina), lo stato
civile (coniugato, single, separato, divorziato, vedovo), la nazionalità (europeo, americano,
asiatico, etc.). La scala ordinale si ha quando le categorie della variabile sono ordinate, cioè
esiste una relazione d’ordine. Ad esempio lo status socio-economico è una variabile ordinale
in quanto ha senso dire che gli individui di classe medio-alta godono di uno status maggiore
rispetto a quelli della classe medio-bassa. Anche il titolo di studio (elementare, medio, supe-
riore, laurea, etc.) è una variabile ordinale dal momento che si può affermare che un soggetto
con laurea ha un titolo di studio superiore rispetto ad un soggetto con licenza media. La scala
ad intervalli è una scala in cui è possibile misurare la distanza tra due punti. Il rapporto
tra due intervalli è indipendente sia dall’unità di misura, sia dalla posizione dello zero, che
sono entrambi arbitrari. Esempio classico di scala ad intervalli è la temperatura, che può
essere misurata con due scale diverse (Celsius e Fahrenheit) che danno la stessa informazione
pur avendo unità di misura e punto zero diversi tra loro. La scala a rapporti ha le stesse
proprietà della scala ad intervalli ma con un punto di origine non arbitrario. In questo caso, il
rapporto tra due punti qualsiasi della scala è indipendente dall’unità di misura. Il peso di un
oggetto si misura con una scala a rapporti, e qualunque sia l’unità di misura utilizzata (libbre
o grammi), il valore zero coincide. Inoltre, un rapporto tra i pesi di due oggetti espresso in
libbre risulterà identico al rapporto dei pesi degli stessi oggetti espresso in grammi.
Un terzo criterio, parzialmente sovrapposto al precedente, è quello che distingue tra varia-
bili qualitative (o mutabili), che possiamo identificare con quelle di scala nominale/ordinale,
e variabili quantitative. Queste ultime possono essere continue o discrete. Una variabile
è continua se può assumere qualunque valore reale nel suo campo di esistenza; le variabili
di questo tipo sono essenzialmente variabili fisiche, ad esempio altezza, peso, pressione del
sangue. Una variabile è discreta se assume valori interi e numerabili ad esempio il numero di
figli, il voto preso ad un esame universitario.

1.2 Il processo di analisi dei dati


Il processo di analisi dei dati è un percorso iterativo che può essere schematizzato in una serie
di fasi successive (fig. 1.1; Corbetta, Gasperoni, & Pisati, 2001). Il momento iniziale è quello
della riflessione teorica, in cui il ricercatore, interessato ad un certo argomento, studia lo
stato di conoscenza generale di tale argomento e si pone delle domande. In particolare cerca
di individuare quali sono gli elementi importanti, e quali le proprietà di tali elementi.
La riflessione teorica e le domande che ne seguono portano alla formulazione di una (o
più) ipotesi. In questa fase è importante che l’ipotesi si concentri su un problema definito
e circoscritto. In pratica, si tratta di tradurre in ipotesi le relazioni tra concetti astratti
basandosi su variabili osservabili e misurabili. Pertanto è necessario che i concetti siano definiti
tramite operazioni osservabili e ripetibili, altrimenti la ricerca, intesa scientificamente, non ha
senso (McBurney, 1983). La traduzione di un concetto in termini empirici avviene tramite
una definizione operativa. Nel campo della psicologia questo aspetto è costantemente presente
1.3 Ipotesi 5

Riflessione Ipotesi
teorica

Raccolta
dati
Risultati

Analisi dei
dati

Figura 1.1: Schema generale del processo di analisi dei dati.

visto che gli oggetti di cui ci si occupa sono spesso astratti e non direttamente misurabili.
Se ad esempio volessimo studiare la timidezza, avremmo bisogno di una definizione operativa
di tale concetto, ossia una definizione di quali sono le caratteristiche osservabili e misurabili
relative ad esso, in modo da poter disporre di uno strumento (test o questionario) che produca
dei valori analizzabili e trattabili oggettivamente.
Sulla base dell’ipotesi formulata, si sviluppa un piano di ricerca che inizia con la fase
di raccolta dei dati. Durante questa fase viene definita la popolazione di riferimento, si
identificano le variabili di interesse e si procede materialmente alla selezione di un campione
sul quale rilevare tali variabili. Ciascun elemento del campione è una unità statistica, cioè
l’entità sulla quale viene effettivamente realizzata la rilevazione. Nella stessa fase devono
essere pianificate anche le successive analisi statistiche. In altri termini, nel momento in cui
si individuano le variabili da osservare si definiscono anche le relative analisi statistiche in
quanto strettamente dipendenti dalla natura delle variabili rilevate.
Le ultime due fasi sono quelle di cui ci occuperemo in questo manuale, cioè l’analisi dei
dati e la lettura dei risultati. Si tratta di due momenti strettamente interconnessi, la prima è
relativa alle applicazioni dei modelli statistici sui dati raccolti, la seconda interpreta e cerca
di produrre un’immagine di insieme che risponda alle domande poste dall’ipotesi formulata.
Come si vede dalla figura 1.1 il processo non si arresta con l’interpretazione dei risultati,
può infatti capitare che i risultati portino ad una nuova riflessione teorica cosı̀ da riavviare
nuovamente il processo.

1.3 Ipotesi
Generalmente un’ipotesi è una proposizione che mette in relazione tra loro due o più variabili.
Si tratta di un elemento essenziale per il processo di analisi dei dati: sul controllo e la valu-
tazione delle ipotesi si fonda tutta la ricerca empirica, pertanto è fondamentale che essa sia
esplicitata prima di iniziare a condurre una ricerca. L’ipotesi infatti permette di progettare
la modalità di raccolta dei dati e definire il tipo di unità statistiche e variabili necessarie alla
6 1 Elementi di base

sua valutazione. Dopo aver formulato l’ipotesi è importante individuare le unità statistiche e
le variabili che la definiscono. In generale, se si definisce l’ipotesi e si identificano opportuna-
mente le unità statistiche e le variabili, si definisce allo stesso tempo la metodologia statistica
da applicare per l’analisi dei dati.
Consideriamo ad esempio, la seguente ipotesi: “Gli studenti di ingegneria sono più bra-
vi in matematica degli studenti di psicologia”. L’unità statistica relativa a questa ipotesi è
chiaramente lo studente. Le variabili sono l’abilità matematica e la facoltà di appartenenza
(ingegneria o psicologia). Pertanto, se volessimo studiare questa ipotesi avremmo bisogno di
un campione di studenti appartenenti alle due facoltà ai quali somministrare uno strumento
che rilevi le abilità matematiche. Non sempre le unità statistiche coincidono con persone fisi-
che; ad esempio, nella seguente ipotesi: “Nei paesi con un più alto grado di industrializzazione
si fanno meno figli rispetto ai paesi meno industrializzati”, l’unità statistica è uno stato. Nella
stessa ipotesi sono implicate due variabili: il grado di industrializzazione e il numero di figli.
Oppure, in quest’altra ipotesi: “I topi affamati sono più veloci dei topi sazi nel trovare il cibo
all’interno di un labirinto” l’unità statistica è un animale; anche in questo caso abbiamo due
variabili: il grado di sazietà e la velocità.

1.4 Modelli e relazioni tra variabili


Un insieme di ipotesi più o meno complesse su eventi specifici può costituire un modello
che, secondo la definizione di Kendall e Buckland (1957), è espressione formalizzata di una
teoria. A sua volta, un modello statistico può essere considerato come semplificazione di una
realtà più complessa, formulata in termini di relazioni tra variabili. Sotto questo punto di
vista possiamo dire che l’obiettivo di un modello statistico può essere lo studio delle relazioni
esistenti tra due o più variabili tramite l’analisi dei dati. I modelli di analisi si distinguono in
base al tipo di relazione che si suppone essere tra le variabili considerate. Esistono due tipi
di modelli interpretativi: modelli asimmetrici e modelli simmetrici.
Se l’obiettivo dell’analisi è l’individuazione di una relazione di dipendenza tra due o più
insiemi di variabili si parla di modello asimmetrico. In questo caso le variabili sono ripar-
tite in due insiemi: uno di variabili esplicative o predittori ed uno di variabili dipendenti.
Formalmente tale modello si può esprimere con

X⇒Y

in cui X indica l’insieme delle variabili esplicative e Y l’insieme delle variabili dipendenti
con la freccia che indica la direzione della relazione ipotizzata. Questo tipo di modello è
importante per la determinazione delle relazioni “causa-effetto” in quanto si suppone che X
sia la causa che genera l’effetto Y.
Nel contesto in cui ci collochiamo delle discipline sociali e psicologiche, è bene ricordare
che la relazione “causa-effetto” è una relazione forte e difficilmente dimostrabile. Non è
infatti sufficiente accertare l’esistenza di una relazione empirica fra due eventi per parlare
di causalità. Ad esempio, quante volte abbiamo sentito dire al telegiornale: “La nebbia ha
causato gli incidenti stradali”. Tale affermazione è priva di senso, almeno da un punto di vista
della supposta relazione di causa-effetto tra la nebbia e gli incidenti stradali. È certamente
vero che la variabile visibilità risulta associata alla variabile numero di incidenti stradali, nel
senso che questi ultimi aumentano al diminuire della visibilità. Ma siamo proprio sicuri che
1.4 Modelli e relazioni tra variabili 7

sia la variabile visibilità a causare gli incidenti e non piuttosto la variabile imprudenza dei
guidatori che non viene considerata?
Per qualificare come causale una relazione tra eventi occorre specificare il meccanismo cau-
sale attraverso cui la supposta causa produce il supposto effetto. In particolare sono richiesti
almeno tre requisiti: l’isolamento, l’associazione e la direzione (Bollen, 1989). L’isolamento
implica che le variabili X e Y siano accuratamente isolate da tutte le altre possibili variabili
intervenienti sulla loro relazione. Se causa ed effetto sono isolate da tutte le altre influenze
possibili, allora le variabili devono essere associate. Deve cioè essere presente un sufficiente
grado di associazione tra X e Y. Infine, deve essere appurata l’esistenza di una direzione
nell’associazione per cui la causa risulta antecedente all’effetto. Sia chiaro che questo non
è ottenibile con l’analisi statistica ma solo con un vero disegno sperimentale in cui si ha il
massimo grado di controllo, condizione difficilmente ottenibile in psicologia, dal momento
che è praticamente impossibile tenere sotto controllo totale le caratteristiche individuali delle
persone.
Nella sostanza, bisogna sempre fare attenzione a parlare di causalità, e ciò vale spesso nella
psicologia in cui risulta molto difficile disporre delle condizioni ottimali per farlo. Meglio
allora, quando si utilizza un modello asimmetrico, adottare un approccio probabilistico di
causalità (Suppes, 1970). Questo implica che si cerca di stabilire se X ha un’influenza attesa
su Y e con questa chiave di lettura interpreteremo i modelli di regressione di cui parleremo
nella seconda parte del volume.
Quando le variabili sono considerate tutte sullo stesso piano e le relazioni tutte bidirezio-
nali, si ha un modello simmetrico. Formalmente:

Xi ⇔ Xj ∀i, j
in cui il simbolo ∀ indica “per ogni”. Questo tipo di modello non obbliga la suddivisione
in variabili effetto e causa, esclude come finalità d’analisi la ricerca di nessi causali, e pertanto
risulta più debole di un modello asimmetrico (Fabbris, 1997). L’unico obiettivo del modello
simmetrico è la valutazione dell’intensità delle relazioni esistenti tra le variabili. Ad esempio,
se consideriamo due soggetti (indipendenti) affetti da cefalea potremmo essere interessati a
valutare la correlazione tra il numero di aspirine assunte dai due. Possiamo attenderci che,
essendo entrambi sofferenti, la correlazione tra le quantità di medicinale assunta sia alta ma
questo non implica che la quantità di medicinali assunta dal primo sia la causa della quantità
assunta dal secondo.
Capitolo 2

Introduzione a R

R è un pacchetto statistico nato con l’obiettivo di fornire un ambiente statistico di qualità a


costo zero. Si tratta infatti di un software gratuito, scaricabile dal sito
http://www.r-project.org/.
Ci sono varie ragioni che giustificano la scelta di R per un corso o per un manuale di
analisi dei dati. In primis, come già detto, è gratuito e disponibile per qualsiasi tipo di
sistema operativo (Windows, Mac, Linux). Con R è possibile la gestione di modelli statistici
dai più semplici a quelli più complessi, si possono creare grafici di alto livello e ciascun utente
può inserire nuove funzioni. Inoltre, negli ultimi anni R ha conosciuto un notevole sviluppo
che lo ha portato a costituire un vero e proprio punto di riferimento per l’analisi statistica e
non solo (Fox, 2009; Muenchen, 2012).
Di seguito presentiamo alcuni aspetti essenziali da conoscere per poter iniziare ad inte-
ragire con il software e che ci serviranno nel prosieguo del manuale. Dato che non è obiettivo
di questo manuale approfondire gli aspetti tecnici, rimandiamo gli interessati ai numerosi
manuali disponibili gratuitamente on-line in lingua italiana (ad esempio Muggeo & Ferrara,
2005; Mineo, 2003) o inglese (Verzani, 2002; Paradis, 2005) oppure a testi acquistabili (Iacus
& Masarotto, 2003; Crivellari, 2006).

2.1 Basi dell’ambiente R


Quando avviamo R ci si presenta una finestra del tipo di quella in figura 2.11 . La parte bianca
(o console) è quella in cui si possono scrivere i comandi, direttamente dopo il prompt (>).
Una volta scritto il comando, per mandarlo in esecuzione bisogna premere il tasto Enter. Alla
pressione di questo tasto R traduce il comando ed esegue l’operazione richiesta. Possiamo
anche scrivere dei commenti precedendoli dal simbolo #; tutto ciò che segue tale simbolo viene
ignorato da R. Oltre che direttamente sulla console, i comandi possono anche essere letti da
file esterni.
Gli aiuti possono essere richiamati da console con il comando help() oppure in formato
html dal menu “Aiuto-Guida Html”. Vediamo di seguito alcuni elementi fondamentali di
R.
1
Il tipo di interfaccia dipende dal sistema operativo, gli esempi qui presentati sono relativi alla versione per
Windows.
10 2 Introduzione a R

Figura 2.1: Schermata iniziale di R.

2.1.1 Numeri

Prima di tutto R può essere considerato come una calcolatrice molto sofisticata. Possiamo
infatti eseguire tutte le operazioni elementari ed anche quelle più complesse. Nel box 2.1
sono riportati alcuni esempi di operazioni. Più precisamente, R riconosce le operazioni +
(addizione), - (sottrazione), * (moltiplicazione), / (divisione) come le normali calcolatrici;
inoltre dispone di una sterminata dotazione di comandi per operazioni più complesse, ad
esempio sqrt() (estrazione della radice quadrata), log() (logaritmo), integrate() (calcolo
dell’integrale di una variabile in un intervallo definito) etc.
Nel caso in cui un numero risulti particolarmente piccolo o particolarmente grande R
utilizza la notazione esponenziale, secondo la quale il numero viene espresso con al forma

> 2+3 # addizione

[1] 5

> 8*4 # moltiplicazione

[1] 32

> 2/5 # divisione

[1] 0.4

> sqrt(8) # radice quadrata

[1] 2.8

Box 2.1: Esempi di operazioni numeriche.


2.1 Basi dell’ambiente R 11

[1] 5.79e-10 [2] 2.93e+15

Box 2.2: Esempi di numeri espressi con notazione esponenziale.

a × 10b , ovvero a moltiplicato 10 elevato a b. Nel box 2.2 ci sono due esempi di come viene
usata tale notazione in R: il primo è un numero molto piccolo, il secondo molto grande;
il numero dopo la lettera e rappresenta l’esponente di 10. Il primo numero si legge 5.79
moltiplicato 10 elevato a −10 in pratica
1
5.79 × 10(−10) = 5.79 = 0.000000000579
1010
mentre il secondo si legge 2.93 moltiplicato 10 elevato a 15 in pratica

2.93 × 1015 = 2930000000000000

Troveremo spesso notazioni di questo tipo negli output prodotti da R nei prossimi capitoli
del manuale.

2.1.2 Oggetti
Una sessione di lavoro con R consiste generalmente nella creazione e manipolazione di oggetti.
Ogni oggetto, identificato con un nome univoco ha una sua tipologia che può essere resa
disponibile con il comando str(). I nomi degli oggetti possono essere sequenze di lettere e
numeri, ma non iniziare con un numero. Per esempio g100 è un nome ammissibile, 100g no.
Inoltre le lettere maiuscole sono considerate diverse da quelle minuscole, cioè l’oggetto A sarà
altro dall’oggetto a. Alcune tipologie di oggetti sono le seguenti:

1. character: stringhe o sequenze di caratteri

2. numeric: numeri reali

3. integer: numeri interi

4. factor: variabili categoriali

5. logical: elementi logici, assumono valore TRUE (vero) o FALSE (falso)

6. complex: numeri complessi

7. list: vettore di oggetti

2.1.3 Variabili e vettori


Una variabile è un oggetto che ha un suo nome (univoco) e che può assumere valori diversi
durante l’esecuzione di un programma. Un vettore è un particolare tipo di variabile costituita
di più elementi. Si tenga presente che, in questo capitolo, le variabili sono intese in senso
informatico e non in senso statistico anche se, come poi sarà chiaro nel prosieguo del manuale,
i due concetti sono strettamente legati.
Nel box 2.3 vediamo un esempio di assegnazione di un valore ad una variabile. Le istruzioni
precedute dal simbolo “>” (chiamato prompt) sono quelle che vengono inserite a console. La
12 2 Introduzione a R

> x <- 5
> x

[1] 5

Box 2.3: Assegnazione (<-) del valore 5 alla variabile x.

> y <- c(3,4,2,7)


> y

[1] 3 4 2 7

Box 2.4: Creazione di un vettore y con i numeri 3, 4, 2, 7.

freccia (<-) sta ad indicare che il valore (in questo caso) 5 viene associato alla variabile x.
Infatti, come indicato nella seconda istruzione, se digitiamo x otteniamo come risposta 5.
Nel box 2.4 vediamo un esempio di vettore. c() è una funzione di R che indica concate-
nazione. In pratica, la variabile y viene creata come vettore che contiene 4 numeri.
Le variabili e i vettori possono essere costituite da elementi numerici, logici o caratteri. In
R esiste una modalità pratica che permette di distinguere tra le variabili numeriche (numeric
o integer) e le variabili di tipo categoriale (quelle che conosciamo come variabili su scala
nominale o ordinale). Queste ultime possono essere definite come factor, ovvero un tipo di
dato caratterizzato da livelli (levels) piuttosto che da valori quantitativi; pertanto, definen-
do una variabile con questa caratteristica è possibile controllare il tipo di analisi statistica
eseguibile. In pratica, se una variabile è definita come factor, R non consentirà di calcolare
su di essa delle statistiche improprie, come ad esempio la media.

> sex1 <- c("m","f","m","m","m","f","f")


> sex1

[1] "m" "f" "m" "m" "m" "f" "f"

> str(sex1)

chr [1:7] "m" "f" "m" "m" "m" "f" "f"

> sex2 <- factor(c("m","f","m","m","m","f","f"))


> sex2

[1] m f m m m f f
Levels: f m

> str(sex2)

Factor w/ 2 levels "f","m": 2 1 2 2 2 1 1

Box 2.5: Confronto tra due tipologie di variabili: sex1 è semplicemente un vettore di tipo character,
sex2 è un fattore con due livelli: f e m.
2.1 Basi dell’ambiente R 13

Nel box 2.5 vediamo la differenza tra la variabile sex1, che viene creata come vettore
di caratteri e sex2 che invece viene definita come fattore. Digitando il nome delle variabili,
anche se contengono gli stessi elementi, si vede che gli elementi di sex1 sono racchiusi tra apici
mentre quelli di sex2 no. Il comando str() permette di visualizzare la tipologia dell’oggetto:
nel primo caso vediamo che si tratta di una variabile character, nel secondo di un factor
con due livelli m e f.

2.1.4 Matrici e data-frame


Una matrice è un insieme di dati dello stesso tipo strutturato in righe e colonne. Per generare
una matrice si utilizza il comando matrix(data,nrow,ncol) nel modo illustrato nel box 2.6.
Al posto di data si inseriscono i valori da inserire nella matrice, nrow indica il numero di
righe e ncol il numero di colonne. Il comando nella prima riga del box 2.6 crea la matrice A
(numerica) contenente i numeri da 1 a 20 disposti su quattro righe e cinque colonne.
Un caso particolare di matrice, di cui faremo largo uso per tutto il manuale, è il data-
frame. Nelle matrici normali tutti gli elementi nelle celle devono essere dello stesso tipo. In
un data-frame invece è possibile avere colonne contenenti elementi di tipo diverso. Si badi
bene che questo vale tra le colonne e non entro, nel senso che gli elementi di ciascuna colonna
devono comunque essere dello stesso tipo. Il vantaggio dei data-frame è che ciascuna colonna
rappresenta una variabile con un suo nome e tipo specifico. Per creare un data-frame esiste
un apposito comando che si chiama appunto data.frame().
Il box 2.7 riporta un esempio di data-frame, di nome studenti, già creato e disponi-
bile nel pacchetto ADati. Il comando data() consente di caricarlo in R. Con il comando
str(studenti) viene stampata la struttura dell’oggetto studenti. Si tratta di un data-frame
con 58 righe (osservazioni) e 14 colonne (variabili). Possiamo notare due aspetti importanti:
ciascuna colonna ha un suo nome specifico (matricola, cognome, nome, etc.) e ci sono due
tipologie diverse di colonne, numeriche (num) e fattori (Factor).

2.1.5 Accesso agli elementi di un vettore o di una matrice


Tutte le matrici e i vettori sono indicizzati. Questo significa che, ciascun elemento può essere
identificato tramite uno (nel caso dei vettori) o due (nel caso delle matrici) indici. Quando
gli indici sono due, il primo indica la riga e il secondo la colonna della matrice.
Per selezionare uno o più elementi di un vettore o matrice si deve indicare il valore dell’in-
dice dentro parentesi quadra. Nel box 2.8 sono riportati alcuni esempi. Il primo caso indica
l’accesso al secondo elemento del vettore y generato al box 2.4. La scrittura y[2] indica che

> A <- matrix(1:20,4,5)


> A

[,1] [,2] [,3] [,4] [,5]


[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20

Box 2.6: Creazione di una matrice A.


14 2 Introduzione a R

> data(studenti,package="ADati")
> str(studenti)

’data.frame’: 58 obs. of 13 variables:


$ matricola: num 110 111 143 144 159 160 162 175 230 243 ...
$ cognome : Factor w/ 22 levels "A","B","C","D",..: 6 21 11 12 9 11 ...
$ nome : Factor w/ 24 levels "A","B","C","D",..: 19 5 7 23 22 11 ...
$ sesso : Factor w/ 2 levels "f","m": 2 2 1 2 2 2 2 1 2 1 ...
$ fac : Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
$ eta : num 23 24 23 24 19 21 19 21 23 19 ...
$ d1 : num 3 2 4 3 2 2 3 4 3 3 ...
$ d2 : num 5 5 2 4 4 4 4 2 3 3 ...
$ d3 : num 1 2 1 1 2 3 2 1 1 1 ...
$ d4 : num 3 3 3 3 3 3 3 4 4 3 ...
$ memo : num 20 20 19 18 16 20 18 20 26 21 ...
$ ore : num 13 16 8 8 28 0 18 26 18 24 ...
$ voti : num 8 19 20 20 21 21 13 22 23 23 ...

Box 2.7: Esempio di data-frame.

si vuole selezionare il secondo elemento del vettore y. I tre esempi seguenti (riportati nel box
2.8) fanno riferimento alla matrice A generata nel box 2.6. Inserendo entrambi gli indici, di
riga e di colonna, si ottiene un singolo elemento. Con A[2,3] si indica l’elemento della secon-
da riga e terza colonna. Omettendo il primo indice si identifica un’intera colonna, omettendo
il secondo si identifica una riga. A[,3] indica la terza colonna, A[1,] la prima riga.
Nel caso del data-frame valgono le stesse regole di accesso agli elementi con qualche pos-
sibilità in più. Ciascuna colonna, dato che viene considerata a tutti gli effetti una variabile
(come vedremo, anche in senso statistico), può essere identificata anteponendo al suo nome
il nome del data-frame ed il simbolo $ come si vede dall’esempio relativamente alla variabile
eta. Digitando studenti$eta si ottiene tutta la colonna del data-frame identificata con il
nome eta; si otterrebbe lo stesso risultato con studenti[,7], cioè richiedendo la settima
colonna. Se però utilizziamo il comando attach(), R è in grado di accedere direttamente
alle variabili del data-frame senza il prefisso. Si vede infatti, sempre nel box 2.8, che, dopo
il comando attach(studenti), digitando eta si ottiene lo stesso risultato. Per eliminare
l’effetto di tale comando si deve utilizzare il comando detach().

2.1.6 Workspace
Il Workspace è costituito dall’insieme degli oggetti creati durante la sessione di lavoro con R.
Per visualizzare gli oggetti presenti nel Workspace si può utilizzare il comando ls(). Con
il comando rm() si possono invece cancellare gli oggetti. Nel box 2.9 sono riportati alcuni
esempi. Il comando rm(x) cancella l’oggetto x, il comando rm(list=ls()) cancella tutti gli
oggetti del workspace.
Il contenuto del Workspace può essere salvato integralmente con il comando save.image(),
oppure si possono salvare solo alcuni oggetti selezionati con il comando save(). Gli oggetti
cosı̀ salvati possono essere recuperati con il comando load().
2.1 Basi dell’ambiente R 15

> y[2] # secondo elemento di y

[1] 4

> A[2,3] # elemento singolo di A

[1] 10

> A[1,] # prima riga di A

[1] 1 5 9 13 17

> A[,3] # terza colonna di A

[1] 9 10 11 12

> studenti$eta

[1] 23 24 23 24 19 21 19 21 23 19 21 20 22 19 19 19 24 20 21 24 22 22 23
[24] 23 22 22 20 22 20 19 24 22 20 21 20 23 20 22 21 19 24 19 23 24 22 23
[47] 19 24 20 23 23 24 20 21 23 21 24 22

> attach(studenti)
> eta

[1] 23 24 23 24 19 21 19 21 23 19 21 20 22 19 19 19 24 20 21 24 22 22 23
[24] 23 22 22 20 22 20 19 24 22 20 21 20 23 20 22 21 19 24 19 23 24 22 23
[47] 19 24 20 23 23 24 20 21 23 21 24 22

> detach(studenti)

Box 2.8: Accesso agli elementi di un vettore (y), di una matrice (A) e del data-frame studenti prima
e dopo il comando attach().

2.1.7 Funzioni
Le funzioni sono comandi non elementari che permettono di eseguire operazioni più o meno
complesse. Di fatto, come vedremo nei prossimi capitoli, l’interazione con R si svolge utilizzan-
do delle funzioni. Nella pratica, imparare ad usare R significa imparare a conoscere l’uso delle
sue funzioni. Ogni funzione è generalmente definita come nome funzione(lista parametri).
All’interno della parentesi tonda si possono specificare i parametri, chiamati anche argomenti,
per l’utilizzo della funzione, separati tra loro dalla virgola. Come già per le variabili, anche
per i parametri bisogna distinguere tra parametri in senso informatico, ovvero argomenti re-
lativi ad una funzione, e parametri statistici, ovvero valori generalmente incogniti, sui quali
torneremo più avanti. Vi sono argomenti obbligatori, cioè che vanno inseriti per forza, e ar-
gomenti opzionali, che hanno un valore definito a priori (default) e che si possono utilizzare
in base alle esigenze. Ogni funzione ha pertanto una sua modalità specifica di utilizzo. Il
metodo più veloce per accedere alle istruzioni su come utilizzare una determinata funzione è
digitare il comando help(nome funzione).
Nel box 2.9 sono illustrate alcune funzioni di esempio. mean() calcola la media aritme-
16 2 Introduzione a R

> ls() # elenca gli oggetti nel workspace

[1] "A" "N" "Ncat" "sex1" "sex2" "studenti"


[7] "x" "y"

> rm(x) # elimina l’oggetto x


> mean(y) # calcola la media di y

[1] 4

> t(A) # traspone la matrice A

[,1] [,2] [,3] [,4]


[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[4,] 13 14 15 16
[5,] 17 18 19 20

> cbind(A,y) # concatena la matrice A con il vettore y

y
[1,] 1 5 9 13 17 3
[2,] 2 6 10 14 18 4
[3,] 3 7 11 15 19 2
[4,] 4 8 12 16 20 7
> rm(list=ls()) # elimina tutti gli oggetti nel workspace

Box 2.9: Esempi di funzioni.

tica. t() traspone una matrice, cioè inverte le righe con le colonne. cbind() permette di
concatenare per colonna degli oggetti. Nei prossimi capitoli vedremo molte funzioni applicate
ai vari argomenti statistici di volta in volta trattati.

2.1.8 Pacchetti
Le varie funzioni di R sono raccolte in pacchetti (packages). Per poter utilizzare le funzioni
contenute in uno specifico pacchetto, questo deve essere installato e caricato.
Per comprendere il significato di questi termini si deve tenere presente che la disponibilità
dei pacchetti è articolata su tre livelli:

1. Pacchetti di default, ovvero già presenti in R nella propria versione installata e che
vengono caricati automaticamente quando si lancia il programma.

2. Pacchetti installati ma non caricati: si tratta di pacchetti presenti sul proprio computer
ma che non vengono caricati automaticamente; possono essere resi disponibili con il
comando library().
2.1 Basi dell’ambiente R 17

3. Pacchetti non installati; questi ultimi possono essere scaricati (in vari modi) dal sito
http://www.r-project.org/, dove ci sono quelli ufficiali, oppure da altri siti, e solo
dopo averli installati possono essere utilizzati.

Ad esempio, non appena iniziata una nuova sessione di lavoro con R, possiamo sapere
quali pacchetti sono stati resi disponibili automaticamente, con il seguente comando:

> (.packages())

[1] "stats" "graphics" "grDevices" "utils" "datasets" "methods"


[7] "base"

L’elenco che viene stampato ci indica i nomi dei pacchetti attivati, pertanto sarà possibile
utilizzare da subito tutte le funzioni presenti in essi. Se vogliamo conoscere l’elenco completo
dei pacchetti presenti nel nostro computer, basta digitare lo stesso comando .packages() nel
seguente modo:

> (.packages(TRUE))

[1] "abind" "acepack" "ADati"


[4] "ADGofTest" "AICcmodavg" "Amelia"
[7] "arm" "ast" "base"
[10] ...

Tale elenco può essere più o meno lungo, a seconda di quanti pacchetti sono installati nel
computer con cui si sta lavorando. Se poi vogliamo rendere attivo, ad esempio, il pacchetto
ADati, sarà sufficiente scrivere:

> library(ADati)

per rendere disponibili tutte le funzioni al suo interno. Se infine vogliamo utilizzare un
pacchetto non presente nel nostro computer, dovremo installarlo nel modo appropriato (per
le modalità di installazione di altri pacchetti si rimanda alle istruzioni riportate sul sito di
R).

2.1.9 Script o programmi


Finora abbiamo visto che l’interazione con R prevede di scrivere i comandi sulla console. Se
i comandi da eseguire sono molti, oppure se dobbiamo eseguire più volte lo stesso tipo di
comando, per esempio in sessioni di lavoro diverse, tale modalità di interazione può risultare
piuttosto scomoda. Uno dei vantaggi di R è dato dalla possibilità di scrivere una sequenza di
istruzioni o comandi in un file esterno (di tipo testuale) e mandarle in esecuzione senza bisogno
di scriverle sulla console direttamente. Per esempio, consideriamo le seguenti istruzioni:
18 2 Introduzione a R

> linf <- 0


> lsup <- .99
> passo <- (lsup-linf)/10000
> x <- seq(linf,lsup,passo)
> y <- x/(1-x)
> plot(x,y,type="l",lwd=2)

Lasciamo al lettore la scoperta del risultato prodotto da queste istruzioni; piuttosto, sup-
poniamo di riportarle in un file testuale e salvarlo nella cartella C:\temp\ con nome prova.R.
A questo punto, utilizziamo la funzione source() nel modo seguente:

> source("C:\\temp\\prova.R")

R andrà a leggere il file prova.R ed eseguirà le istruzioni scritte all’interno di esso.

2.2 Acquisizione file di dati


Nel capitolo 4 vedremo come per analizzare dei dati, sia fondamentale che essi risultino
opportunamente disposti in una matrice. Generalmente, tale matrice è composta di dati
grezzi (si veda 4.1.1), ossia strutturata con tante righe quante sono le unità statistiche e tante
colonne quante sono le variabili. Con R è possibile importare molti tipi di file esterni in cui
siano salvate tali matrici purché siano rispettate le seguenti regole:

• Il file deve contenere solo la matrice dei dati, strutturata in righe e colonne.

• Ogni riga della matrice rappresenta una unità statistica o una osservazione, ogni colonna
una variabile.

• All’interno di ciascuna cella della matrice ci deve essere un solo valore che può essere
numerico oppure no, a seconda del tipo di variabile e del tipo di codifica.

Di seguito vediamo come importare tre diversi tipi di file esterni.

2.2.1 File testuale


Un file testuale è caratterizzato da una struttura ordinata di righe, che possono essere di
lunghezza variabile, ciascuna delle quali è un insieme ordinato di caratteri. Prendiamo ad
esempio il file healdrug.dat. Esso contiene i dati di una ricerca sulla cura della propria salute
e la propensione all’uso di droga, basata su un campione di 465 donne di età compresa tra 20
e 59 anni, residenti nella San Fernando Valley, Los Angeles, nel Febbraio 1975 (Hoffman &
Fidell, 1979).
In figura 2.2 si può vedere come appare il file se viene aperto con un programma tipo
blocco-note. La matrice dati contiene 7 variabili, più una (subno) che identifica il soggetto:
timedrs (numero di visite mediche), attdrug (propensione all’uso di droga), atthouse (pro-
pensione a svolgere lavori domestici), income (classe di reddito), emplmnt (se sono impiegate o
casalinghe), mstatus (stato civile), race (gruppo etnico). Per importare in R il file possiamo
utilizzare la funzione read.table().
2.2 Acquisizione file di dati 19

Figura 2.2: Esempio di matrice dati riportata in un file testo (apribile con l’applicazione blocco-note).
Sulla prima riga ci sono i nomi delle variabili, le altre righe caratterizzano le unità statistiche. Ciascuna
colonna rappresenta una variabile numerica o categoriale.

Nel box 2.10 possiamo vedere come utilizzare tale funzione. Bisogna specificare, tra vir-
golette, l’indirizzo in cui si trova il file con il nome completo. Poi, visto che nella prima riga
sono riportati i nomi delle variabili, bisogna settare a TRUE il parametro header.
Con la prima istruzione R legge la matrice dati nel file healdrug.dat che si trova nel-
la cartella C:\temp e le assegna nome H. Si noti che in ambiente Windows, R richiede di
specificare gli indirizzi dei file scrivendo due volte la barra \.
In alternativa alla scrittura completa dell’indirizzo di collocazione del file da leggere, è
sicuramente più pratico l’utilizzo della funzione file.choose() scrivendo ad esempio:

> H <- read.table(file.choose(),header=TRUE)

In questo modo, la scelta del file da leggere viene guidata utilizzando le finestre di Win-
dows. Per controllare la corretta acquisizione, si può utilizzare la funzione str() che stampa
a video la struttura dell’oggetto specificato nell’argomento. Dall’esempio nel box 2.10 si vede
che l’oggetto H, la matrice dati contenente i valori acquisiti dal file healdrug.dat, è un data-

> H <- read.table("C:\\temp\\healdrug.dat",header=TRUE)


> str(H)

’data.frame’: 465 obs. of 8 variables:


$ subno : int 1 2 3 4 5 6 7 8 9 10 ...
$ timedrs : int 1 3 0 13 15 3 2 0 7 4 ...
$ attdrug : int 8 7 8 9 7 8 7 7 7 8 ...
$ atthouse: int 27 20 23 28 24 25 30 24 20 30 ...
$ income : int 5 6 3 8 1 4 6 6 2 8 ...
$ emplmnt : Factor w/ 2 levels "cas","lav": 2 1 1 2 2 1 2 2 2 1 ...
$ mstatus : Factor w/ 2 levels "coniug","single": 1 1 1 1 1 1 1 1 1 2 ...
$ race : Factor w/ 2 levels "bianca","nonbianca": 1 1 1 1 1 1 1 1 1 1 ...

Box 2.10: Esempio di acquisizione di file testo. La prima istruzione (read.table()) acquisisce il file.
La seconda (str()) stampa la struttura dell’oggetto.
20 2 Introduzione a R

> radar <- read.csv2("C:\\temp\\radar.csv")


> str(radar)

’data.frame’: 24 obs. of 3 variables:


$ subj : int 1 2 3 4 5 6 7 8 9 10 ...
$ hr : int 4 4 4 4 4 4 12 12 12 12 ...
$ score: int 37 22 22 25 25 95 36 45 47 23 ...

Box 2.11: Esempio di acquisizione di file CSV. La prima istruzione (read.csv2()) acquisice il file. La
seconda (str()) stampa la struttura dell’oggetto.

frame con 465 righe (obs.) e 8 colonne (variables). Sarà ora possibile accedere direttamente
a ciascuna variabile anteponendo al nome il suffisso H$ (si veda 2.1.5) . Per ciascuna variabile
viene riportato il tipo (int o factor). Le variabili int sono numeriche, le variabili factor
sono categoriali.

2.2.2 File Excel


I file testo hanno sicuramente il vantaggio di essere leggeri e indipendenti dal sistema opera-
tivo, ma sono piuttosto scomodi da produrre. È più semplice se la matrice dati viene inserita
in un foglio elettronico, tipo Excel, che preveda già l’organizzazione in righe e colonne. Per
importare un file di questo tipo in R si può procedere in due modi: convertire il file in formato
CSV (comma separated values) oppure utilizzare una libreria aggiuntiva.
Nel primo caso basta salvare il foglio Excel (utilizzando l’opzione “salva con nome”) se-
lezionando come tipo file l’opzione CSV. Supponiamo, ad esempio, di avere salvato nella
cartella C:\temp il file radar.csv. Per importare questo file possiamo utilizzare la funzione
read.csv2() come illustrato nel box 2.11.
Nel secondo caso, è necessario installare la libreria gdata, non direttamente disponibile
nella versione base di R ma scaricabile a parte. Successivamente, senza bisogno di alcuna con-
versione in CSV, si può procedere come illustrato nel box 2.12 Anche le funzioni read.csv2()
e read.xls() possono essere utilizzate insieme al comando file.choose() per evitare la
scrittura dell’indirizzo completo dei file, ad esempio:

> library(gdata)
> radar <- read.xls("C:\\temp\\radar.xls")
> str(radar)

’data.frame’: 24 obs. of 3 variables:


$ subj : int 1 2 3 4 5 6 7 8 9 10 ...
$ hr : int 4 4 4 4 4 4 12 12 12 12 ...
$ score: int 37 22 22 25 25 95 36 45 47 23 ...

Box 2.12: Esempio di acquisizione di file xls. Il comando library() serve a caricare la libreria e
rendere disponibili le funzioni in essa contenute. La seconda istruzione (read.xls()) acquisisce il file.
La terza (str()) stampa la struttura dell’oggetto.
2.2 Acquisizione file di dati 21

> library(foreign)
> sci <- read.spss("C:\\temp\\sciatori.sav",to.data.frame=TRUE)
> str(sci)

’data.frame’: 100 obs. of 5 variables:


$ stazione: num 4 5 2 2 5 1 3 4 1 1 ...
$ costo : num 57 34 38 45 33 64 45 37 36 66 ...
$ tipo : num 45 64 64 52 67 37 49 60 66 36 ...
$ spessore: num 40 22 46 40 61 38 59 55 46 50 ...
$ qualita : num 36 19 46 41 63 37 61 58 45 50 ...

Box 2.13: Esempio di acquisizione di file SPSS. La prima istruzione (library()) carica la libreria
foreign. La seconda (read.spss()) acquisice il file. La terza (str()) stampa la struttura dell’oggetto.

> radar <- read.csv2(file.choose()) # file csv


> radar <- read.xls(file.choose()) # file xls

2.2.3 File SPSS


Nel caso in cui la matrice dati sia stata salvata utilizzando qualche altro software statistico,
è possibile utilizzare la libreria foreign che contiene una serie di funzioni per importare
in R file da software quali SPSS, Systat, SAS ed altri. Ad esempio, per importare un file
SPSS si può utilizzare la funzione read.spss() come illustrato nel box 2.13. La prima
istruzione (library()) carica la libreria foreign. Con la seconda (read.spss()) viene letto
il file sciatori.sav, che si trova nella cartella C:\temp e gli viene assegnato nome sci. Si
noti l’uso del parametro to.data.frame: se viene impostato il valore TRUE, la matrice dati
viene caricata come data-frame, altrimenti, se si lascia il default (FALSE), le variabili vengono
caricate come lista.

2.2.4 Dati formattati per R


Spesso nelle varie librerie di R sono presenti dei data-set già pronti per essere letti. In questo
caso è sufficiente utilizzare il comando data() specificando eventualmente l’opzione package
per indicare il nome della libreria in cui si trova. Un esempio è riportato nella prima istruzione
del box 2.7.
Un altro formato di file riconoscibile da R è quello con estensione .Rda (Rdata). I file
di questo tipo possono contenere qualunque forma di oggetti prodotti da R (singoli valori,
data-frame, vettori, liste etc.). Per generare file esterni con questo formato si deve utilizzare
il comando save(), per importarli nel Workspace il comando load(). Un vantaggio di questo
formato è che i file possono contenere anche più oggetti.
Nel box 2.14 ci sono due semplici esempi di utilizzo di questi due comandi: con il comando
matrix() creiamo la matrice A (vedi anche box 2.6), con il comando save() la salviamo in un
file esterno che chiamiamo matrice.Rda, con il comando load() leggiamo il file matrice.Rda
e ne importiamo il contenuto nel workspace. Nel secondo esempio vediamo come lo stesso
comando save() permetta di salvare più oggetti di diverso tipo (la matrice A, il vettore
numerico B ed il vettore di stringhe nomi) all’interno di un unico file (dati.rda).
22 2 Introduzione a R

> # Esempio 1
> A <- matrix(1:20,4,5)
> save(A,file="C:\\temp\\matrice.Rda")
> rm(A) # elimino A dal workspace
> load("C:\\temp\\matrice.Rda")
> A

[,1] [,2] [,3] [,4] [,5]


[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> # Esempio 2
> B <- 1:8
> nomi <- c("Ado","Dado","Bado")
> save(A,B,nomi,file="C:\\temp\\dati.Rda") # più oggetti nello stesso file

Box 2.14: Esempi di uso delle funzioni save e load.


Capitolo 3

Statistiche descrittive e grafici

Prima di iniziare ad occuparci dei modelli statistici, nei prossimi capitoli, dedichiamo il pre-
sente capitolo alla spiegazione di come produrre alcune semplici statistiche descrittive e grafici
con R.

3.1 Tabelle di frequenza


Generalmente le tabelle di frequenza sono utilizzate per la descrizione di dati categoriali. La
funzione table() consente di generare tabelle di frequenza univariate e multivariate. Nel
box 3.1 troviamo un esempio di tale funzione per produrre le frequenze della variabile sesso
relativa al data-frame studenti. Dall’output leggiamo che nel campione ci sono 26 femmine
e 32 maschi.

> data(studenti,package="ADati")
> attach(studenti)
> table(sesso)
sesso
f m
26 32
> table(sesso)/length(sesso)
sesso
f m
0.4482759 0.5517241

Box 3.1: Tabella di frequenze assolute e relative.

Se vogliamo produrre la tabella con le frequenze relative è sufficiente dividere la tabella


per il numero di unità statistiche, ottenibile con la funzione length(). Sempre nel box 3.1
leggiamo che circa il 45% dei soggetti sono di sesso femminile, mentre il restante 55% di sesso
maschile.
Con la stessa funzione table() possiamo anche ottenere tabelle a doppia entrata. Per
esempio se vogliamo incrociare la facoltà di appartenenza con il sesso possiamo fare come
specificato nel box 3.2.
24 3 Statistiche descrittive e grafici

> fac.sesso <- table(fac,sesso)


> fac.sesso
sesso
fac f m
1 12 19
2 14 13
> margin.table(fac.sesso,margin=1)
fac
1 2
31 27
> margin.table(fac.sesso,margin=2)
sesso
f m
26 32

Box 3.2: Tabella di frequenze a doppia entrata e funzioni per il calcolo delle frequenze marginali di
riga e di colonna.

Abbiamo creato l’oggetto tabella che abbiamo chiamato fac.sesso. Su questa tabella,
con la funzione margin.table() possiamo calcolare le frequenze marginali di riga o di colonna
(settando il parametro margin rispettivamente a 1 o a 2).
La stessa funzione table() può essere utilizzata per generare tabelle a più di due entrate
semplicemente aggiungendo di seguito alle prime due le altre variabili che si vogliono inserire.

3.2 Statistiche descrittive di una singola variabile


Sempre con riferimento al data-frame studenti, possiamo calcolare alcune semplici statistiche
descrittive quali media, deviazione standard, varianza e mediana con le relative funzioni di
R. Nel box 3.3 vengono calcolate le statistiche relative alla variabile eta (età dei soggetti).

> mean(eta)
[1] 21.56897
> sd(eta)
[1] 1.748303
> var(eta)
[1] 3.056564
> median(eta)
[1] 22

Box 3.3: Funzioni per le statistiche descrittive: media (mean), deviazione standard (sd), varianza
(var) e mediana (median).

Si deve tenere presente però che queste funzioni agiscono correttamente solo se non ci
sono dati mancanti (che in R sono codificati con NA). Se una variabile presenta dati mancanti,
3.3 Statistiche descrittive per gruppi 25

il risultato della funzione mean() è NA. Per evitare questo, bisogna specificare il parametro
na.rm=TRUE, con il quale si comunica a R che non deve tenere conto dei dati mancanti.
Con il comando summary() si possono ottenere le statistiche descrittive relative a tutte
le variabili di un data-frame. Ad esempio, nel box 3.4 è riportato l’output relativo al data-
frame studenti. Per le variabili numeriche (eta, d1, d2, d3, d4, memo, ore e voti) vengono
calcolati il valore minimo (Min.), primo (1st Qu.), secondo (Median) e terzo quartile (3rd
Qu.), la media (Mean) ed il valore massimo (Max.). Per le variabili categoriali (sesso, fac
viene stampata la tabella delle frequenze.

> summary(studenti[,-(1:3)])
sesso fac eta d1 d2 d3
f:26 1:31 Min. :19.00 Min. :1.000 Min. :1.000 Min. :1.000
m:32 2:27 1st Qu.:20.00 1st Qu.:2.000 1st Qu.:3.000 1st Qu.:1.000
Median :22.00 Median :2.500 Median :3.500 Median :1.000
Mean :21.57 Mean :2.603 Mean :3.397 Mean :1.379
3rd Qu.:23.00 3rd Qu.:3.000 3rd Qu.:4.000 3rd Qu.:2.000
Max. :24.00 Max. :5.000 Max. :5.000 Max. :3.000
d4 memo ore voti
Min. :1.000 Min. : 7.00 Min. : 0.00 Min. : 8.00
1st Qu.:3.000 1st Qu.:17.00 1st Qu.:16.00 1st Qu.:21.00
Median :3.000 Median :19.00 Median :22.50 Median :24.50
Mean :3.121 Mean :18.67 Mean :20.93 Mean :23.79
3rd Qu.:4.000 3rd Qu.:21.00 3rd Qu.:28.00 3rd Qu.:28.00
Max. :5.000 Max. :27.00 Max. :30.00 Max. :30.00

Box 3.4: Esempio d’uso della funzione summary.

Si noti che la scrittura studenti[,-(1:3)] specifica di non considerare le prime tre co-
lonne che contengono variabili non rilevanti ai fini statistici: matricola, cognome e nome dei
soggetti.

3.3 Statistiche descrittive per gruppi

Quando i dati sono suddivisi per gruppi può essere necessario ottenere delle statistiche de-
scrittive calcolate entro ciascun gruppo. Ad esempio, vogliamo calcolare il punteggio medio
nel test di memoria (memo) separatamente per gli studenti delle due facoltà. Le funzioni che
possiamo utilizzare sono tapply() oppure aggregate().
Nel box 3.5 vediamo un esempio di entrambe le funzioni, con i tre parametri di base. Il
primo definisce la variabile sulla quale applicare una certa funzione, il secondo determina la
variabile (o le variabili) di raggruppamento ed il terzo indica la funzione da utilizzare (nel
caso in esame la media). La differenza evidente tra le due funzioni sta nel tipo di output
prodotto: in forma di tabella per la funzione tapply(), come data-frame per aggregate().
26 3 Statistiche descrittive e grafici

> tapply(memo,fac,mean)
1 2
19.93548 17.22222
> aggregate(memo,list(fac),mean)
Group.1 x
1 1 19.93548
2 2 17.22222

Box 3.5: Funzioni per ottenere statistiche descrittive per gruppi.

3.4 Grafici
3.4.1 Istogrammi
Il grafico ad istogrammi rappresenta le frequenze di quante osservazioni di una certa variabile
(riportata nell’asse x) cadono entro un determinato intervallo di valori. Le frequenze sono
indicate dall’altezza dei rettangoli.
La funzione per ottenere un grafico ad istogrammi è hist(). Ad esempio, prendiamo in
esame il data-frame donne del pacchetto ADati per produrre il grafico dei valori della variabile
attegg, con i seguenti comandi:

data(donne,package="ADati")
hist(donne$attegg)

otteniamo il grafico in figura 3.1.


I punteggi della variabile attegg vengono raggruppati automaticamente in 11 classi per
ciascuna delle quali viene prodotto un istogramma con altezza pari alla frequenza di unità
statistiche presenti nella classe.
Nella funzione hist() è possibile specificare una serie di parametri per abbellire il grafico.
I parametri xlim e ylim determinano i valori minimo e massimo dell’asse delle ascisse e di
quello delle ordinate. Il parametro freq, se posto a FALSE, fa si che in ordinata vengano
rappresentate le densità al posto delle frequenze; main permette di stampare un titolo sopra
il grafico, xlab e ylab, di stampare le etichette rispettivamente in ascissa e in ordinata. Un
parametro utile per gestire la suddivisione delle classi da rappresentare in ascissa è breaks;
se non specificato, la funzione hist() crea automaticamente delle classi di uguale ampiezza.
Potremmo però essere interessati a dividere diversamente le classi. Supponiamo, ad esempio,
di voler rappresentare la distribuzione della variabile attegg utilizzando come soglie i decili.
Possiamo scrivere i seguenti comandi:

Q <- quantile(donne$attegg,seq(0, 1, 0.10)) # calcolo dei decili


hist(donne$attegg,breaks=as.numeric(Q),main=" ",col="lightblue")

Con la funzione quantile() calcoliamo i decili della distribuzione, di seguito, specificando


con breaks di utilizzare i decili calcolati, otteniamo il grafico in figura 3.2.
Si noti che in questo grafico le ordinate non sono più le frequenze ma le densità, cioè le
altezze sono calcolate in modo che l’area complessiva degli istogrammi sia pari ad uno.
3.4 Grafici 27

Atteggiamento

15
Frequency

10
5
0

40 50 60 70 80 90

Figura 3.1: Esempio di istogramma.

3.4.2 Boxplot
Il boxplot, chiamato anche grafico a scatola e baffi, è un tipo di rappresentazione che consente
di visualizzare i quartili di una distribuzione. La funzione per produrre questo tipo di grafico
è boxplot(). Considerando sempre la variabile attegg, scriviamo:

boxplot(donne$attegg,col="red")
0.06
Density

0.04
0.02
0.00

50 60 70 80 90

Figura 3.2: Istogramma con larghezza degli intervalli basata sui decili della distribuzione.
28 3 Statistiche descrittive e grafici

90
80
70
60
50

Figura 3.3: Esempio di boxplot.

per ottenere il grafico in figura 3.3. Si noti l’uso del parametro col, posto uguale a red, che
colora di rosso la scatola. Tale scatola, ha come estremi il primo (Q1) e terzo (Q3) quartile
della distribuzione, leggibili in ordinata. La linea nera interna alla scatola rappresenta la
mediana (o secondo quartile, Q2). Le righe orizzontali (o baffi) sono poste ad una distanza da
Q1 e Q3 pari a 1.5 volte la distanza tra Q1 e Q3. I valori che non rientrano in tale intervallo,
indicati con dei puntini separati, sono casi anomali o outlier.
Poiché la mediana si trova circa a metà della scatola ed i baffi approssimativamente alla
stessa distanza dalla scatola, possiamo concludere che la variabile attegg ha una distribuzione
essenzialmente simmetrica, in più, rileviamo la presenza di due outlier.

3.4.3 Cumulata empirica delle frequenze


La funzione di ripartizione o funzione cumulata delle frequenze di una variabile casuale X
è una funzione che ha come dominio la retta reale e come codominio l’intervallo [0, 1]. Un
esempio è riportato nella seconda colonna della tabella 6.1. Nel caso di una variabile empirica,
la funzione di ripartizione ci consente di determinare la proporzione di dati minori o uguali di
un valore x specificato. La funzione cumulata empirica può essere rappresentata graficamente
come segue:

n <- length(donne$attegg)
plot(sort(donne$attegg),(1:n)/n,type="s",xlab="atteggiamento",ylab="Fn(x)")
grid()

ottenendo il grafico in figura 3.4. La funzione grid() serve a disegnare una griglia nel
grafico.
In ascissa leggiamo i valori della variabile attegg, in ordinata la proporzione di valori
minori o uguali al valore specificato in ascissa. Ad esempio, vediamo che poco più del 40%
dei punteggi della variabile sono inferiori o uguali a 70.
Lo stesso tipo di grafico può essere ottenuto servendosi delle funzioni ecdf() o stepfun().

3.4.4 QQplot
Il grafico quantile-quantile mette a confronto i quantili di due distribuzioni. Si utilizza quan-
do si vuole confrontare una distribuzione di dati empirici con una particolare distribuzione
teorica. In pratica serve come test grafico per valutare se dei dati osservati abbiano una certa
3.4 Grafici 29

1.0
0.8
0.6
Fn (x)

0.4
0.2
0.0

50 60 70 80 90

atteggiamento

Figura 3.4: Funzione cumulata empirica.

forma distributiva, per esempio normale. Il principio su cui si basa è il seguente: si calcolano i
quantili sulla distribuzione campionaria e si confrontano con quelli di una distribuzione nota,
rappresentandoli su un grafico a due dimensioni. Se la distribuzione empirica ha una forma
uguale a quella teorica di riferimento i punti riportati sul grafico si dovrebbero allineare lungo
una retta.
Supponiamo di voler valutare se la distribuzione dei punteggi della variabile attegg è
normale. Generiamo il QQplot con i seguenti comandi:

qqnorm(donne$attegg,datax=T,col="red")
qqline(donne$attegg,datax=T,col="green")

La prima funzione (qqnorm()) riporta sul grafico i punti individuati dai quantili osservati
(in ascissa) e i corrispondenti teorici della normale (in ordinata). Tale disposizione viene
definita ponendo a TRUE il parametro datax, altrimenti i quantili osservati sono riportati in
ordinata. La seconda funzione(qqline()) disegna la linea che si dovrebbe osservare se i dati
fossero distribuiti normalmente.
In figura 3.5 è riportato il grafico che si ottiene con i comandi descritti sopra. I punti sono
quasi tutti disposti intorno alla retta, ad eccezione di due valori che si discostano parecchio.
Si tratta anche in questo caso, come già visto per il boxplot, di valori anomali. Nel complesso
comunque, si può concludere che la distribuzione dei valori è approssimativamente normale.
In R esiste una terza funzione, qqplot(), che consente di analizzare i quantili osservati
in riferimento ad altre forme distributive oppure di confrontare tra loro due distribuzioni
empiriche.

3.4.5 Grafico a dispersione


Il grafico a dispersione o scatterplot permette di evidenziare la relazione tra due variabili.
Ciascun punto sul grafico è individuato dalla combinazione tra il valore di ascissa, relativo
30 3 Statistiche descrittive e grafici

Normal Q-Q Plot

2
Theoretical Quantiles

1
0
-1
-2

50 60 70 80 90

Sample Quantiles

Figura 3.5: Grafico quantile-quantile in riferimento alla distribuzione normale.

alla prima variabile, ed il valore di ordinata, relativo alla seconda variabile. Questa tipologia
di grafico permette di valutare il tipo di relazione esistente tra le due variabili, ne parleremo
più avanti, ai capitoli 9 e 10.
La funzione per produrre grafici a dispersione è plot(). Consideriamo come esempio le
variabili ore e voti del data-frame studenti:

plot(studenti$ore,studenti$voti,pch=19,xlab="ore di frequenza",
30
25
voto finale

20
15
10

0 5 10 15 20 25 30

ore di frequenza

Figura 3.6: Esempio di grafico a dispersione.


3.4 Grafici 31

+ ylab="voto finale")

I primi due parametri della funzione indicano le variabili da rappresentare. Poi sono stati
utilizzati altri parametri per abbellire il grafico: pch per scegliere la tipologia di punto, xlab
e ylab per scrivere le etichette relative alle variabili in ascissa e ordinata. Il grafico che si
ottiene è in figura 3.6.
Capitolo 4

Strutture di dati

Quando si devono analizzare dei dati, la prima operazione da compiere, dopo averli raccolti,
è l’organizzazione degli stessi in matrici. Una matrice di dati costituisce il punto di partenza
per l’analisi. Le matrici di dati possono essere catalogate in base a determinate caratteristiche
quali la metrica, il contenuto informativo e la forma (Fabbris, 1997).
Un’analisi è detta metrica quando si basa su dati quantitativi, non metrica quando può
essere applicata a qualunque livello di scala di misura delle variabili. Pertanto si distinguono
matrici per le quali è applicabile un’analisi di tipo metrico da quelle per le quali ciò non
avviene. La forma può essere quadrata, quando le entità di riga e di colonna sono le stesse,
rettangolare quando non vi è coincidenza.
In questo capitolo presentiamo alcune tipologie di matrici che vengono utilizzate nelle
analisi statistiche.

4.1 Matrici rettangolari


Nelle matrici rettangolari non vi è corrispondenza tra le entità riportate sulle righe e le entità
riportate sulle colonne. Questo implica che generalmente si tratta di matrici di dimensione
n × p (n righe e p colonne), in cui non necessariamente n = p.

4.1.1 Matrice di dati grezzi


Si tratta della prima modalità possibile di organizzazione dei dati. In questo tipo di matrice
n rappresenta il numero di unità statistiche e p il numero di variabili. Si può rappresentare
nel seguente modo:
 
x11 ... x1j ... x1p
 ... ... ... ... ... 
 
X=  xi1 ... xij ... xip 

 ... ... ... ... ... 
xn1 ... xnj ... xnp

In pratica, ciascuna riga è composta dai valori rilevati su ciascuna unità statistica nelle
p variabili considerate. Si tenga presente che tale modalità di organizzazione dei dati (unità
statistiche × variabili) è la principale utilizzata anche dai vari software statistici (tipo SPSS,
SAS, Systat, STATISTICA, etc.).
34 4 Strutture di dati

Esempio 4.1 Nel data set studenti del pacchetto ADati ci sono i dati di un campione
fittizio di n = 58 studenti, che rispondono a quattro domande di un test. Oltre alle quattro
domande ci sono anche la matricola, il nome, il cognome, il sesso, la facoltà di appartenenza,
l’età degli studenti, il punteggio ad un test di memoria, le ore di frequenza ad un corso e il
voto ottenuto nella prova finale.

Carichiamo il data set in R con il comando data().

> data(studenti,package="ADati")
> studenti[1:10,]
matricola cognome nome sesso fac eta d1 d2 d3 d4 memo ore voti
1 110 F T m 1 23 3 5 1 3 20 13 8
2 111 X E m 1 24 2 5 2 3 20 16 19
3 143 L G f 1 23 4 2 1 3 19 8 20
4 144 M X m 1 24 3 4 1 3 18 8 20
5 159 I W m 1 19 2 4 2 3 16 28 21
6 160 L K m 1 21 2 4 3 3 20 0 21
7 162 G J m 1 19 3 4 2 3 18 18 13
8 175 G F f 1 21 4 2 1 4 20 26 22
9 230 I R m 1 23 3 3 1 4 26 18 23
10 243 T M f 1 19 3 3 1 3 21 24 23

Box 4.1: Matrice di dati grezzi.

Nel box 4.1 abbiamo stampato solo le prime dieci righe della matrice. Scorrendo tale
matrice per riga possiamo leggere i valori delle 13 variabili per ciascun soggetto (unità stati-
stica). Ciascuna colonna della matrice è una variabile. La matrice è rettangolare perché righe
e colonne non hanno lo stesso significato, in più sono anche di numerosità diverse (58 e 13).

4.1.2 Matrice di frequenze (a doppia entrata)


La matrice di dati grezzi è l’unica tipologia di struttura in cui i dati sono riportati cosı̀
come vengono rilevati, tutti gli altri tipi di matrici, derivano generalmente da aggregazioni o
comunque da operazioni sui dati grezzi. Una matrice di frequenze a doppia entrata, o tabella
di contingenza, contiene le frequenze congiunte derivate dall’incrocio di due variabili. La
possiamo rappresentare nel seguente modo:

a1 ... ac ... aC totale


b1 n11 ... n1c ... n1C n1.
... ... ... ... ... ... ...
br nr1 ... nrc ... nrC nr.
... ... ... ... ... ... ...
bR nR1 ... nRc ... nRC nR.
totale n.1 ... n.c ... n.C n

in cui n indica il numero di unità statistiche sulle quali sono state rilevate due variabili
A e B, che assumono rispettivamente valori ac con c ∈ {1, 2, ..., C} e br con r ∈ {1, 2, ..., R}.
4.2 Matrici quadrate 35

I valori nrc rappresentano la frequenza con cui il valore ac della variabile A si presenta in
congiunzione con il valore br della variabile B.
A partire da matrici di frequenza possiamo effettuare, per esempio, analisi con modelli
loglineari, o analisi delle corrispondenze.
Esempio 4.2 Riprendendo in considerazione i dati dell’esempio 4.1, ed in particolare le va-
riabili sesso ed eta, per ottenere la tabella di frequenza con i totali di riga e colonna possiamo
utilizzare le funzioni table(), apply(), cbind() e rbind() nel seguente modo:

> attach(studenti)
> A <- table(sesso,eta)
> totale <- apply(A,1,sum)
> A <- cbind(A,totale)
> totale <- apply(A,2,sum)
> A <- rbind(A,totale)
> A
19 20 21 22 23 24 totale
f 4 6 3 6 7 0 26
m 6 3 5 4 4 10 32
totale 10 9 8 10 11 10 58

Box 4.2: Tabella di contingenza.

In questa matrice possiamo leggere le frequenze incrociate relative alle n = 58 unità


statistiche. Abbiamo 4 femmine di 19 anni, 6 di 20, 3 di 21, 6 di 22 e 7 di 23. Ci sono 6
maschi di 19, 3 di 20, 5 di 21, 4 di 22, 4 di 23 e 10 di 24 anni. I totali di riga e colonna
sono le distribuzioni di frequenza univariate, relative alle due variabili eta e sesso prese
separatamente.

Un altro esempio di tabella a doppia entrata si può trovare nel box 3.2.

4.2 Matrici quadrate


Si tratta di matrici in cui il significato delle entità di riga e di colonna è equivalente. Per
questa ragione il numero di righe coincide sempre con il numero di colonne. Possono essere
simmetriche, quando i valori al di sopra della diagonale principale sono speculari rispetto ai
valori al di sotto della diagonale, asimmetriche quando i valori sopra e sotto tale diagonale
sono diversi.

4.2.1 Matrice di covarianza


Si tratta di una matrice del tipo:
 
s11 ... s1j ... s1p
 ... ... ... ... ... 
 
 si1
S= ... sij ... sip 

 ... ... ... ... ... 
sp1 ... spj ... spp
36 4 Strutture di dati

in cui p è il numero di variabili (numeriche) considerate e sij indica la covarianza tra la


i-ma e la j-ma variabile.
Ciascun elemento della matrice è calcolato con
n
1 X
sij = (xhi − x.i )(xhj − x.j )
n−1
h=1

in cui xhi e xhj sono i generici valori, x.i e x.j sono le medie rispettivamente della i-ma e
della j-ma variabile, e n la numerosità campionaria.
Considerando come vengono calcolate le covarianze risulta evidente che:

1. la matrice di covarianza è simmetrica, in quanto sij = sji

2. gli elementi sulla diagonale principale, in quanto covarianze di ciascuna variabile con se
stessa, sono varianze; in pratica sii = s2i è la varianza dell’i-ma variabile

La matrice di covarianza viene utilizzata, ad esempio, come dato di partenza per i modelli
di equazioni strutturali.

Esempio 4.3 Utilizziamo ancora i dati dell’esempio 4.1, in particolare calcoliamo le covarian-
ze tra i punteggi delle domande (d1, d2, d3 e d4) utilizzando la funzione cov() nel seguente
modo:

> round(cov(studenti[,7:10]),4)
d1 d2 d3 d4
d1 1.3312 -0.1382 -0.0224 -0.0917
d2 -0.1382 1.2610 0.0048 0.3022
d3 -0.0224 0.0048 0.3799 0.0060
d4 -0.0917 0.3022 0.0060 0.9852

Box 4.3: Matrice di covarianza.

Per comodità di lettura è stata utilizzata la funzione round() che permette di arrotondare
i valori ad un certo numero prefissato di cifre decimali, quattro in questo caso.
I valori riportati in diagonale sono le varianze delle quattro variabili, ad esempio s11 =
s21 = 1.3312 è la varianza della domanda d1. I valori esterni alla diagonale sono le covarianze.
Si può notare, ad esempio, che s21 = s12 = −0.1382 è la covarianza tra la prima e la seconda
variabile.

4.2.2 Matrice di correlazione


Si tratta di una matrice del tipo:
 
1 ... r1j ... r1p
 ... ... ... ... ... 
 
 ri1
R= ... 1 ... rip 

 ... ... ... ... ... 
rp1 ... rpj ... 1
4.2 Matrici quadrate 37

in cui p è il numero di variabili (numeriche) considerate, rij rappresenta la correlazione


tra la i-ma e la j-ma variabile.
La correlazione rij non è altro che la covarianza calcolata sui valori standardizzati della
i-ma e della j-ma variabile. Si può ottenere con
Pn
− x.i )(xhj − x.j )
h=1 (xhi
rij = pPn pPn
2 2
h=1 (xhi − x.i ) h=1 (xhj − x.j )

Notiamo che il numeratore della formula per il calcolo della correlazione è identico a quello
della covarianza. Ciò che cambia è il denominatore, in cui troviamo il prodotto tra le radici
quadrate delle devianze della i-ma e della j-ma variabile.
Considerando come vengono calcolate le correlazioni risulta evidente che:

1. la matrice di correlazione è simmetrica, in quanto rij = rji

2. gli elementi sulla diagonale principale, in quanto correlazioni di ciascuna variabile con
se stessa, sono tutti pari ad uno

La matrice di correlazione viene utilizzata, ad esempio, come dato di partenza per l’analisi
fattoriale o per i modelli di equazioni strutturali. Il concetto di correlazione sarà ripreso ed
approfondito al capitolo 9.

Esempio 4.4 Utilizziamo ancora i dati dell’esempio 4.1, calcoliamo le correlazioni tra i
punteggi delle domande (d1, d2, d3 e d4) servendoci della funzione cor() nel seguente modo:

> round(cor(studenti[,7:10]),4)
d1 d2 d3 d4
d1 1.0000 -0.1067 -0.0315 -0.0800
d2 -0.1067 1.0000 0.0070 0.2711
d3 -0.0315 0.0070 1.0000 0.0099
d4 -0.0800 0.2711 0.0099 1.0000

Box 4.4: Matrice di correlazione.

Osserviamo che gli elementi della diagonale sono tutti pari ad uno. Nelle altre celle della
matrice sono riportate le correlazioni tra le coppie di variabili. Ad esempio, r23 = r32 = 0.0070
è la correlazione tra la seconda e la terza domanda.

4.2.3 Matrice di distanze


Si tratta di una matrice del tipo:
 
0 ... d1j ... d1p
 ... ... ... ... ... 
 
 di1
D= ... 0 ... dip 

 ... ... ... ... ... 
dp1 ... dpj ... 0
38 4 Strutture di dati

in cui p è il numero di variabili considerate, dij indica la distanza tra la i-ma e la j-ma
variabile. Si noti che gli elementi della diagonale sono tutti nulli, in quanto esprimono la
distanza di ciascuna variabile da se stessa. Tale distanza può essere calcolata in molti modi.
Ad esempio la distanza di Minkowsky data da
v
u n
uX
k
dij = t (xhi − xhj )k
h=1

Nel caso particolare in cui k = 2 otteniamo la distanza Euclidea


v
u n
uX
dij = t (xhi − xhj )2
h=1

La matrice di distanze viene utilizzata, per esempio nei metodi di scaling multidimensio-
nale e nei metodi di raggruppamento (cluster analysis).

Esempio 4.5 Ancora con i dati dell’esempio 4.1, per ottenere la matrice di distanze euclidee
possiamo utilizzare la funzione dist():

> round(dist(t(studenti[,7:10]),diag =TRUE,upper =TRUE),4)


d1 d2 d3 d4
d1 0.0000 14.1421 13.6748 12.5698
d2 14.1421 0.0000 18.1384 9.8995
d3 13.6748 18.1384 0.0000 15.9060
d4 12.5698 9.8995 15.9060 0.0000

Box 4.5: Matrice di distanze euclidee.

Con la stessa funzione, possiamo calcolare altri tipi di distanze, tra cui ad esempio la
minkowski, modificando il parametro method.
Capitolo 5

Elementi di teoria dei campioni

In questo capitolo riassumiamo alcuni concetti base legati alla teoria dei campioni ovvero quel-
la parte della statistica interessata a come estendere ad una popolazione le caratteristiche in-
dividuate su uno specifico campione di dati. In particolare, saranno trattate le caratteristiche
della distribuzione campionaria della media e della varianza.

5.1 Definizioni di base


5.1.1 Popolazione
In statistica, con il termine popolazione, si intende un insieme comprendente la totalità di
determinati eventi dotati di proprietà specifiche comuni. Una popolazione può essere l’insieme
degli abitanti dell’Italia, oppure l’insieme di individui affetti da una determinata patologia.
Una popolazione non necessariamente è costituita da persone, ad esempio in linguistica, la po-
polazione può essere l’insieme delle parole di una determinata lingua o ancora, in architettura,
una popolazione può essere un insieme degli edifici costruiti in un’area definita.
La popolazione può essere finita, quando gli elementi che la compongono sono in numero
finito, infinita quando è costituita da infiniti elementi; è qualunque insieme di riferimento da
cui raccogliamo delle informazioni, generalmente codificate in variabili.

5.1.2 Campione
Il campione è quella parte limitata di popolazione che viene presa in esame. La numerosità o
ampiezza del campione è determinata dal numero di elementi che lo compongono. Le modalità
di estrazione del campione possono seguire uno schema probabilistico, quando ogni elemento
della popolazione ha una probabilità nota di essere estratto, uno schema non probabilistico
altrimenti.
Un campione si definisce rappresentativo quando è un’immagine ridotta e fedele della
popolazione da cui proviene. In altre parole, vuol dire che esso contiene tutte le più importanti
caratteristiche della popolazione da cui è stato estratto.
Quando tutti gli elementi della popolazione hanno la stessa probabilità di essere inseriti
nel campione si parla di campionamento casuale semplice, tale tipologia di campionamento
(quando effettivamente possibile) è quello che garantisce maggiormente la rappresentatività
della popolazione.
40 5 Elementi di teoria dei campioni

Supponiamo, ad esempio, di voler studiare l’altezza degli studenti iscritti a Psicologia a


Padova. In questo caso la popolazione di riferimento è data da tutti gli studenti iscritti. Se
disponessimo dell’elenco completo degli iscritti potremmo avere un campione rappresentativo
sorteggiando a caso un certo numero di studenti sui quali andare poi a calcolare l’altezza.
Si distinguono molti tipi di campionamento casuale, una distinzione frequente è tra cam-
pionamento con reinserimento e senza reinserimento.

Campionamento con reinserimento


Implica che dopo aver estratto un elemento dalla popolazione, esso viene reinserito. Ciascun
elemento quindi può essere presente più volte nel campione.
Ad esempio consideriamo una popolazione formata dai primi dieci numeri naturali Ω =
{1, 2, ..., 10}. Nel box 5.1 vediamo come estrarre da tale popolazione un campione con rein-
serimento di dimensione n = 6 con la funzione sample(). Dato che ad ogni estrazione la
popolazione di riferimento non cambia, possiamo avere più volte lo stesso valore. Nel box
vediamo che il valore 10 è uscito due volte ed il valore 5 tre volte.

> set.seed(31)
> omega <- 1:10
> n <- 6
> sample(omega,n,replace=TRUE)
[1] 6 10 5 5 10 5

Box 5.1: Esempio di campionamento con reinserimento.

Campionamento senza reinserimento


Implica che dopo aver estratto un elemento dalla popolazione, esso non viene reinserito.
Ciascun elemento quindi può essere presente solo una volta nel campione.
Nel box 5.2 vediamo come ottenere, dalla stessa popolazione Ω un campione di dimensione
n = 6 senza reinserimento. In questo tipo di campionamento la popolazione di riferimento
cambia dopo ogni estrazione, pertanto nessun elemento del campione sarà ripetuto.

> set.seed(31)
> omega <- 1:10
> n <- 6
> sample(omega,n)
[1] 6 9 4 3 10 7

Box 5.2: Esempio di campionamento senza reinserimento.

5.1.3 Parametri e statistiche


Un parametro è una caratteristica della popolazione espressa con un certo valore (numerico
o meno). Una statistica è un valore che, per mezzo di una funzione, viene associato ad una
caratteristica di un qualsiasi campione di ampiezza n, appartenente ad una data popolazione.
5.2 Distribuzioni campionarie 41

Generalmente i parametri sono valori incogniti e vengono indicati con lettere greche (es.
µ, σ 2 ), mentre le statistiche sono valori rilevati empiricamente dai campioni che vengono
utilizzati come stimatori dei parametri incogniti e sono indicati con lettere latine (es. x, s2 ).
Ad esempio, l’altezza media (incognita) di tutti gli studenti iscritti a Padova ai corsi di
Psicologia sarà indicata con µ, mentre l’altezza media calcolata su un campione di studenti
sarà indicata con x.

5.2 Distribuzioni campionarie


Sia data una popolazione Ω con un certo parametro incognito θ. Sia t(X) una statistica che
viene utilizzata su un campione di numerosità n per stimare il parametro θ. La distribuzione di
tutti i valori della statistica t(X) calcolata su tutti i campioni possibili di dimensione n ottenuti
da Ω è la distribuzione campionaria di t(X). In pratica, per ciascuna statistica che
utilizziamo (ad esempio media, deviazione standard, varianza, etc.) esisterà una distribuzione
campionaria che sarà caratterizzata da propri parametri.
Esempio 5.1 Sia data la popolazione Ω = {1, 2, 3, 4, 5, 6}. La media aritmetica di questa
popolazione è data da
1+2+3+4+5+6
= 3.5
6
Indicheremo la media della popolazione con la lettera greca µ, quindi possiamo scrivere

µ = 3.5

Supponiamo ora di estrarre da questa popolazione un campione senza reinserimento di


n = 2 unità. Ci possiamo aspettare che la media del campione (x) sia uguale a quella della
popolazione (µ)? Evidentemente no, a meno di non estrarre delle particolari combinazioni di
valori (ad esempio 3 e 4). Immaginiamo allora di considerare tutte le possibili coppie di valori
che possiamo estrarre da Ω il cui numero complessivo è
 
6
= 15
2
Riportiamo in una opportuna tabella tutti i possibili esiti di un’estrazione senza reinserimento
di 2 valori da Ω:
2 3 4 5 6
1 (1, 2) (1, 3) (1, 4) (1, 5) (1, 6)
2 – (2, 3) (2, 4) (2, 5) (2, 6)
3 – – (3, 4) (3, 5) (3, 6)
4 – – – (4, 5) (4, 6)
5 – – – – (5, 6)

Possiamo produrre tutte queste coppie in R servendoci della funzione combinations() nel
pacchetto gtools nel modo descritto nel box 5.3. Tale funzione riceve in input la numerosità
della popolazione (6), la numerosità del campione (2) e gli elementi della popolazione (1:6)
e produce in output tutte le coppie possibili senza ripetizioni.
Dato quindi l’insieme dei 15 campioni possibili, per ciascuno di essi possiamo calcolare la
media aritmetica dei valori estratti, ottenendo cosı̀ le 15 medie riportate nella tabella seguente:
42 5 Elementi di teoria dei campioni

> library(gtools)
> (S <- combinations(6, 2, 1:6))
[,1] [,2]
[1,] 1 2
[2,] 1 3
[3,] 1 4
[4,] 1 5
[5,] 1 6
[6,] 2 3
[7,] 2 4
[8,] 2 5
[9,] 2 6
[10,] 3 4
[11,] 3 5
[12,] 3 6
[13,] 4 5
[14,] 4 6
[15,] 5 6

Box 5.3: Generazione delle coppie di campioni possibili di dimensione 2 senza reinserimento da Ω =
{1, 2, 3, 4, 5, 6}.

2 3 4 5 6
1 1.5 2.0 2.5 3.0 3.5
2 – 2.5 3.0 3.5 4.0
3 – – 3.5 4.0 4.5
4 – – – 4.5 5.0
5 – – – – 5.5

Se ora calcoliamo la media delle medie ottenute ci ritroviamo lo stesso valore medio relativo
alla popolazione di partenza:
1.5 + 2 + 2.5(2) + 3(2) + 3.5(3) + 4(2) + 4.5(2) + 5 + 5.5
= 3.5
15
Sulla base di questo semplice esempio, abbiamo verificato che la media delle medie di tutti
i possibili campioni estratti da una certa popolazione coincide con la media vera (µ) della
popolazione. Nel box 5.4 vediamo come effettuare la stessa verifica in R.
Allo stesso modo è possibile verificare che tale proprietà è rispettata anche nel caso di
campionamento con ripetizione. Nella prossima sezione vediamo in dettaglio cosa si intende
per distribuzione campionaria della media e quali sono le relative proprietà.

5.3 Distribuzione campionaria della media


Data una popolazione Ω con media µ, si definisce come distribuzione campionaria della
media la distribuzione dei valori medi che si ottengono da tutti i possibili campioni estratti
da Ω per una data numerosità n. È abbastanza facile osservare che quando la popolazione
5.3 Distribuzione campionaria della media 43

> (mcamp <- apply(S,1,mean))


[1] 1.5 2.0 2.5 3.0 3.5 2.5 3.0
[8] 3.5 4.0 3.5 4.0 4.5 4.5 5.0
[15] 5.5
> (mx <- mean(mcamp))
[1] 3.5

Box 5.4: Calcolo della media delle possibili medie di campioni di dimensione n = 2 estratti senza
reinserimento da Ω = {1, 2, 3, 4, 5, 6}.

di riferimento è grande, i possibili valori che compongono la distribuzione campionaria della


media tendono all’infinito. Quello che interessa in questa sede è sapere che la distribuzione
campionaria della media ha un proprio valore medio (che indicheremo con µx ) ed una propria
varianza (che indicheremo con σx2 ).

Esempio 5.2 Sia data la popolazione Ω composta da 150 valori compresi tra 1 e 20. In figura
5.1 è rappresentata la distribuzione dei valori che compongono la popolazione Ω. I parametri
di questa popolazione sono i seguenti: media µ = 10.767, varianza σ 2 = 31.245, deviazione
standard σ = 5.59. Dalla figura possiamo anche notare che la forma della distribuzione non
è normale.
Da questa popolazione possiamo immaginare di estrarre (con o senza ripetizione) dei
campioni di varia dimensione. Ad  esempio, se estraiamo campioni di dimensione 2 senza
reinserimento potremo avere 150 2 = 11175 campioni diversi.
La distribuzione campionaria della media è la distribuzione che si viene a creare dalle
medie di tutti i campioni possibili di numerosità pari a 2. Tale distribuzione avrà una sua
14
12
10
8
6
4
2
0

1 2 3 4 5 6 7 8 9 11 13 15 17 19

Figura 5.1: Distribuzione di frequenze relative agli elementi di una popolazione composta da 150
valori compresi tra 1 e 20.
44 5 Elementi di teoria dei campioni

media (µx ) (ed una sua varianza, σx2 ).


In figura 5.2 sono rappresentate tre distribuzioni campionarie della media ottenute da
10000 campioni di numerosità 3, 15 e 30 estratti dalla popolazione Ω. Osservando le tre
distribuzioni rileviamo che sono tutte approssimativamente normali. Le relative medie sono
(3) (15) (30)
rispettivamente: µx = 10.730, µx = 10.767 e µx = 10.775, tutte molto vicine al valore
vero della media della popolazione Ω. La ragione della non esatta coincidenza si deve al
fatto che le tre medie sono calcolate su 10000 campioni casuali estratti da Ω e non sull’intero
universo di campioni possibili.

Questo semplice esempio dimostra una importante proprietà: la distribuzione campionaria


della media ha una forma approssimativamente normale con valore atteso pari al vero valore
della media della popolazione da cui sono estratti i campioni, formalmente:

E(x) = µx = µ

In altre parole, se i campioni sono estratti in modo casuale, la media di tutte le medie
campionarie è uguale a quella della popolazione. Questo vale sia per il campionamento con
reinserimento che per quello senza reinserimento.

5.3.1 Variabilità della distribuzione campionaria della media


Concentriamo ora la nostra attenzione sulla variabilità. Sempre dalla figura 5.2 si osserva che
la variabilità della distribuzione campionaria della media si riduce aumentando la numero-
sità del campione. In altre parole, la variabilità della distribuzione campionaria della media
dipende dalla numerosità campionaria.
In particolare, si può dimostrare che la deviazione standard della distribuzione campionaria
della media (σx ), nel caso di campionamento con reinserimento, è data dalla seguente
relazione

n=3 n = 15 n = 30
0.5

0.5

0.5
0.4

0.4

0.4
0.3

0.3

0.3
0.2

0.2

0.2
0.1

0.1

0.1
0.0

0.0

0.0

0 5 10 15 20 0 5 10 15 20 0 5 10 15 20

Figura 5.2: Esempi di distribuzioni campionarie della media per tre diverse numerosità campionarie.
5.4 Distribuzione campionaria della varianza 45

σ
σx = √
n
in cui σ è la deviazione standard vera della popolazione e n la numerosità del campione.
Tale quantità prende il nome di errore standard della media.
Si faccia bene attenzione a non confondere l’errore standard della media (indicato con σx ),
con la deviazione standard di un campione (indicata con s): s è una misura della variabilità
del singolo campione, σx una misura della variabilità della distribuzione campionaria della
media. Nella pratica, dato che difficilmente disponiamo del vero valore di σ (o della vera
varianza σ 2 ), utilizziamo s come suo stimatore (oppure utilizziamo s2 , varianza campionaria,
come stimatore di σ 2 varianza incognita della popolazione). Vedremo nella successiva sezione
5.4 le proprietà relative alla distribuzione campionaria della varianza.
Nel caso di campionamento senza reinserimento σx è data dalla relazione
s 
σ N −n
σx = √
n N −1
r 
N −n
Il fattore di correzione N −1 al crescere della numerosità della popolazione tende a
uno. Possiamo quindi considerare che, nelle popolazioni cui facciamo riferimento di solito (che
sono virtualmente infinite), non c’è differenza tra il campionamento con e senza reinserimento.
In sintesi:

• Data Ω una popolazione di valori con qualunque forma distributiva, media µ e varianza
σ 2 (e deviazione standard σ).

• La distribuzione campionaria della media dei possibili campioni estratti da Ω avrà forma
2
normale con media µ e varianza σn .

• Stante questa proprietà si dice che la media aritmetica campionaria (x) è uno stimatore
corretto della media (generalmente incognita) di una popolazione (µ).

5.4 Distribuzione campionaria della varianza


Data una popolazione Ω con varianza σ 2 , si definisce come distribuzione campionaria
della varianza la distribuzione delle varianze che si ottengono da tutti i possibili campioni
estratti da Ω. Anche questa distribuzione, cosı̀ come quella della media, avrà una sua media
(µs2 ) ed una sua varianza (σs22 ). In questa sede ci occuperemo solo della media delle varianze
campionarie.

Esempio 5.3 Riprendiamo in considerazione la popolazione Ω relativa all’esempio 5.2 com-


posta da 150 valori compresi tra 1 e 20. I parametri di questa popolazione sono i seguenti:
media µ = 10.767, varianza σ 2 = 31.245, deviazione standard σ = 5.59. Vogliamo studiare la
media di tutte le possibili varianze che si possono ottenere nei campioni estratti da Ω.
In figura 5.3 sono rappresentate le distribuzioni campionarie delle varianza ottenute con
10000 campioni di numerosità n = 3, 15, 30. Se calcoliamo la media di tali distribuzioni
(3) (15) (30)
otteniamo rispettivamente µs2 = 31.251, µs2 = 31.287 e µs2 = 31.502. Tutti e tre questi
valori, seppure vicini, sono superiori alla vera varianza della popolazione (σ 2 = 31.245). In
46 5 Elementi di teoria dei campioni

n=3 n = 15 n = 30

0.08

0.08

0.08
0.06

0.06

0.06
0.04

0.04

0.04
0.02

0.02

0.02
0.00

0.00

0.00
0 20 40 60 80 120 0 20 40 60 80 120 0 20 40 60 80 120

Figura 5.3: Esempi di distribuzioni campionarie della varianza per tre diverse numerosità campionarie.

pratica si osserva che il valore atteso della varianza campionaria s2 risulta non essere uguale
alla varianza vera della popolazione; formalmente possiamo scrivere:

E(s2 ) = µs2 6= σ 2
Si può dimostrare che la vera relazione tra il valore atteso di s2 e σ 2 è la seguente:
n−1 2
E(s2 ) = µs2 = σ
n
nel caso di campionamento con reinserimento e
 
N n−1 2
E(s2 ) = µs2 = σ
N −1 n
nel caso senza reinserimento, in cui N indica la numerosità della popolazione da cui cam-
pioniamo e n la numerosità dei campioni. È facile osservare che quando la numerosità della
popolazione tende all’infinito il fattore (NN−1) tende ad uno e pertanto il campionamento senza
reinserimento risulta uguale a quello con reinserimento.

Un’ultima importante distinzione va fatta tra la varianza campionaria e la stima della


varianza della popolazione. La varianza campionaria è definita dalla seguente formula:

(xi − x)2
P
2
s = i
n
in cui x indica la media campionaria e n la numerosità del campione. Dato che questa
statistica non risulta essere uno stimatore corretto di σ 2 dobbiamo apportare una modifica a
tale formula nel seguente modo
(xi − x)2
P
2
σ̂ = i
n−1
5.4 Distribuzione campionaria della varianza 47

Cosı̀ facendo possiamo distinguere tra s2 che indica la varianza del campione e σ̂ 2 che indica
la stima della varianza della popolazione. Nella prassi comune si utilizza sempre la seconda
statistica e si deve tenere presente che anche R, come molti software statistici, con le funzioni
sd() e var() calcola rispettivamente deviazione standard e varianza dividendo per n − 1.
Capitolo 6

Inferenza statistica

L’inferenza è un processo logico per il quale, data una o più premesse, è possibile trarre
una conclusione (Zingarelli, Vocabolario della lingua italiana). Può essere di tipo deduttivo,
quando, a partire da informazioni certe, arriva a conclusioni certe. Ad esempio, se poniamo
le seguenti due premesse:

1. Ogni triangolo rettangolo ha un angolo di 90◦

2. Il triangolo T è rettangolo

la conclusione è inevitabilmente:

Il triangolo T ha un angolo di 90◦ .

L’inferenza induttiva invece, anche partendo da premesse certe porta a risultati probabili.
Se ad esempio consideriamo le seguenti premesse:

1. Ho visto un corvo ed era nero.

2. Ho visto un secondo corvo ed era nero.

3. Ho visto un terzo corvo ed era nero.

....

La conclusione può essere:

Probabilmente tutti i corvi sono neri.

L’inferenza statistica può essere considerata come un insieme di procedure che, basandosi
sulla teoria della probabilità, permettono di stimare le caratteristiche di una popolazione, sulla
base di un campione di osservazioni estratto da essa. In questo senso, l’inferenza statistica è
induttiva.
In questo capitolo vogliamo riprendere alcuni concetti basilari relativi al processo di in-
ferenza statistica. Viene illustrata la logica della verifica di ipotesi e sono presentati alcuni
errori frequenti in cui si può incorrere.
50 6 Inferenza statistica

6.1 La “verifica” di ipotesi


Il processo che si usa prevalentemente nella ricerca psicologica per la verifica di ipotesi trae
la sua origine da due approcci distinti, uno ad opera di Fisher (1935) e l’altro di Neyman e
Pearson (1933), che oggi si ritrovano combinati in una specie di ibrido (Bachmann, Luccio, &
Salvadori, 2005). In figura 6.1 è riportato uno schema di massima del procedimento operativo
che viene tradizionalmente seguito.
In primis, vengono formulate due ipotesi contrapposte, indicate con H0 e H1 . La prima è
l’ipotesi di casualità dei risultati. Con H0 si ipotizza che i risultati osservati siano dovuti al
solo effetto del caso. Per esempio, supponiamo di voler stabilire con un esperimento se una
moneta sia truccata o meno. Indichiamo con π la probabilità, incognita, di ottenere testa
lanciando la moneta. Se la moneta non è truccata, evidentemente la probabilità di ottenere
testa risulta essere 0.5. Pertanto, la nostra ipotesi potrà essere definita nel seguente modo:

H0 : π = 0.5

In altri termini, l’ipotesi cosı̀ formulata significa che la moneta non è truccata e quindi la
probabilità di ottenere testa è identica alla probabilità di ottenere croce, cioè 0.5.
H1 è invece l’ipotesi secondo la quale i risultati non sono casuali, ma spiegabili alla luce
di qualche fenomeno o teoria. Nel caso in esempio sarebbe a dire che la moneta è truccata e
pertanto la probabilità di ottenere testa non è 0.5, formalmente:

H1 : π 6= 0.5

Definizione
delle ipotesi
H0 e H1
Calcolo di una
statistica,
senza funzione dei
software dati T0=T(X)

Confronto di T0 con
con il valore software
critico derivato Confronto del
dalle tavole
p-value con la
soglia fissata
alpha

Decisione

Figura 6.1: Schema generale del processo di verifica di ipotesi.


6.1 La “verifica” di ipotesi 51

x P (x) P (X ≤ x) P (X ≥ x)
0 0.0010 0.0010 1.0000
1 0.0098 0.0107 0.9990
2 0.0439 0.0547 0.9893
3 0.1172 0.1719 0.9453
4 0.2051 0.3770 0.8281
5 0.2461 0.6230 0.6230
6 0.2051 0.8281 0.3770
7 0.1172 0.9453 0.1719
8 0.0439 0.9893 0.0547
9 0.0098 0.9990 0.0107
10 0.0010 1.0000 0.0010

Tabella 6.1: Distribuzione binomiale. P (x) = Probabilità di ottenere esattamente x teste in 10 lanci
di una moneta bilanciata. P (X ≤ x) = Probabilità di ottenere al massimo x teste in 10 lanci di una
moneta bilanciata. P (X ≥ x) = Probabilità di ottenere almeno x teste in 10 lanci di una moneta
bilanciata.

Nel secondo passo vengono raccolti i dati e calcolata una statistica T0 , funzione dei dati,
che permetta di prendere una decisione sull’ipotesi H0 e, di conseguenza, su H1 . In genere
si parla di accettare o rifiutare H0 ma, posto che non ha molto senso accettare un’ ipotesi
dal momento che non la possiamo verificare, in questa sede preferiamo utilizzare la dicitura
rigettare-non rigettare.
Per stabilire se rigettare o meno H0 è necessario conoscere la distribuzione campionaria
della statistica T quando tale ipotesi è vera. Conoscendo la distribuzione campionaria di T
è possibile dividere lo spazio campionario, ossia l’insieme dei valori che T può assumere, in
due sottoinsiemi complementari. Un primo insieme sarà dato da quei valori che portano a
non rigettare H0 . Il secondo, chiamato anche regione critica, sarà composto dai valori che
portano alla conclusione di rigettare H0 .
Nell’esempio considerato potremmo eseguire 10 lanci della moneta e contare il numero di
teste uscito che sarà pertanto la nostra statistica T0 . L’insieme dei risultati possibili di T
è il numero di teste che possono uscire in 10 lanci di una moneta, lo possiamo indicare con
Ω = {0, 1, 2, ..., 10}. Data la natura dicotomica dell’evento testa/croce, risulta che T ha una
distribuzione di tipo binomiale.
Anche se la moneta fosse perfettamente bilanciata, risulta abbastanza ovvio che non ci
possiamo attendere di osservare esattamente 5 teste. Più verosimilmente, con una moneta
bilanciata, ci aspettiamo che il numero di teste risulti comunque non troppo diverso dal
numero di croci. Con la distribuzione binomiale è possibile calcolare la probabilità di ottenere
un certo numero x di teste lanciando n = 10 volte una moneta, se la probabilità dell’evento
testa è π = 0.5, che nel nostro caso equivale a dire che H0 è vera. Tale probabilità è data
dalla seguente formula:
 
n k
P (x = k|π = 0.5) = π (1 − π)n−k
k
a partire dalla quale, sostituendo a k i valori da 0 a 10, possiamo ottenere tutte le proba-
bilità degli eventi possibili e che sono riportate in tabella 6.1. Dalla lettura della tabella 6.1
52 6 Inferenza statistica

possiamo vedere che, fissato un livello di significatività α = 0.05, il valore critico del numero
di teste perSrigettare H0 risulta essere 5 ± 3. Infatti, P (2 ≤ x ≤ 8) = 0.9785 e di conseguenza
P ((x < 2) (x > 8)) = 0.0215. In pratica, se il numero di teste ottenuto in 10 lanci è minore
di 2 o maggiore di 8, dal momento che tale evento ha una probabilità di accadere inferiore a
0.05, rigetteremo l’ipotesi H0 .
Questo tipo di test può essere eseguito semplicemente consultando le tavole della distribu-
zione binomiale, che riportano, per alcune combinazioni di n (numero di prove), π (probabilità
di successo secondo l’ipotesi H0 ) e x (numero di successi), le probabilità relative.

> binom.test(3,10)

Exact binomial test

data: 3 and 10
number of successes = 3, number of trials = 10, p-value = 0.3438
alternative hypothesis: true probability of success is not equal to 0.5
95 percent confidence interval:
0.06673951 0.65245285
sample estimates:
probability of success
0.3

Box 6.1: Test binomiale.

Lo stesso test è eseguibile utilizzando direttamente un software statistico. In questo modo


non è più necessario disporre delle tavole perché otteniamo direttamente la probabilità asso-
ciata alla statistica T ed è sufficiente confrontare tale probabilità con il valore soglia fissato
in α = 0.05. In R disponiamo della funzione binom.test(). Ipotizzando di avere osservato
nei 10 lanci tre volte testa, possiamo scrivere come riportato nel box 6.1.
Nell’output che si ottiene si leggono nell’ordine:

• le informazioni relative ai dati inseriti: 10 = numero di lanci, 3 = numero di teste


ottenute (successi)

• la probabilità associata al test (p-value = 0.3438)

• l’intervallo di confidenza al 95% della stima della probabilità di ottenere testa

• la stima della probabilità di ottenere testa basata sul campione (0.3)

In particolare, dato che la probabilità associata al test (p-value = 0.3438) risulta su-
periore al valore fissato di α = 0.05 il test non è significativo, di conseguenza non possiamo
rigettare l’ipotesi H0 e concludiamo che la moneta non è truccata.
Si tenga presente che il non rifiuto di H0 non implica la dimostrazione che essa sia vera.
A questo proposito è bene tener presente che il termine verifica, sebbene di uso corrente è
improprio e, al limite, anche fuorviante. I metodi statistici descritti e utilizzati in questo
manuale non possono mai arrivare a stabilire se un’ipotesi è vera o meno, e di conseguenza
6.2 Limiti dello schema classico 53

non verificano nulla. In più, bisogna fare attenzione a non trarre conclusioni quali l’impro-
babile “accettazione dell’ipotesi nulla”, espressione disapprovata anche dall’APA Task Force
on Statistical Inference (Wilkinson & the Task Force on Statistical Inference, 1999, p. 599).
Pertanto, in questa sede, facendo riferimento alla decisione che si prende su H0 , preferiamo
utilizzare la dicitura rigetto/non-rigetto, che riteniamo essere più adeguata.

6.2 Limiti dello schema classico


Nel 1994 Cohen pubblica un lavoro in cui mette in evidenza i limiti dello schema classico
di verifica di ipotesi, definito “null hypothesis significance testing” (NHST). Utilizzando tale
schema si ottiene la risposta alla seguente domanda: “Assumendo che H0 sia vera, qual’è la
probabilità di osservare un risultato uguale o più estremo rispetto a quello empiricamente
rilevato?”. Nella realtà succede spesso che tale domanda sia confusa con la seguente: “Dato
un certo risultato osservato, qual’è la probabilità che l’ipotesi H0 sia vera?”. In pratica,
molti utilizzano lo schema classico pensando di rispondere a quest’ultima domanda, che non
è equivalente alla prima.
Per spiegare dove nasce l’equivoco Cohen ricorre ad alcuni sillogismi. Si consideri il
seguente:

- Se H0 è vera, non si ottiene il risultato R.

- Ho ottenuto il risultato R.

- Quindi H0 è falsa.

Sebbene il ragionamento sia formalmente corretto, non rispetta la logica del NHST.
Bisogna modificare il sillogismo in senso probabilistico:

- Se H0 è vera, il risultato R è altamente improbabile.

- Ho ottenuto il risultato R.

- Quindi H0 è altamente improbabile.

A questo punto però il ragionamento non è più valido. Sarebbe infatti equivalente al
seguente ragionamento:

- Se una persona è cittadino italiano, è altamente improbabile che sia membro del parlamento.
(Al 31 dicembre 2004 i cittadini italiani erano 58462375. I membri del parlamento sono
630 deputati e 315+7 senatori. Pertanto, la probabilità che un italiano sia membro del
parlamento è 952/58462375 ' 0.00002)

- Il deputato X è membro del parlamento.

- Quindi è altamente improbabile che il deputato X sia un italiano.

Questi due ultimi sillogismi sono formalmente identici, ma mentre nel secondo appare
evidente l’assurdità, nel primo non si avverte la fallacia logica. Per capirla bisogna prendere
in esame il teorema di Bayes e specificare la differenza tra P (R|H0 ) e P (H0 |R), in cui R
indica il risultato ottenuto dai dati empirici.
54 6 Inferenza statistica

P (R|H0 ) è la probabilità di osservare il risultato R condizionato al fatto che l’ipotesi H0


sia vera. Si tratta, in pratica, della probabilità che si ottiene eseguendo un test statistico.
P (H0 |R) è la probabilità che sia vera H0 se è stato ottenuto il risultato R. Le due probabilità
sono legate tra loro dalla formula del teorema di Bayes:

P (Ai )P (E|Ai )
P (Ai |E) = P
P (Ai )P (E|Ai )
in cui Ai con i ∈ 1, ..., n è un insieme di eventi o possibili cause dell’effetto E, P (Ai ) la
probabilità a priori dell’evento Ai , P (E|Ai ) la verosimiglianza, ossia la probabilità dell’effetto
E condizionata all’evento Ai , e P (Ai |E) è la probabilità a posteriori.
Il seguente esempio, ripreso da Cohen (1994), può illustrare bene come applicare la formula
di Bayes. L’incidenza della schizofrenia negli adulti è circa del 2%. Supponiamo di avere un
test per la diagnosi di tale patologia con il 95% di accuratezza nell’individuazione dei soggetti
realmente schizofrenici, e circa il 97% nell’individuazione dei soggetti sani. Immaginiamo di
dover analizzare un paziente, indicheremo con

H0 : il soggetto è realmente normale (non malato)

R0 : l’esito negativo del test per la schizofrenia (il soggetto è classificato come non patologico)

H1 : il soggetto è realmente schizofrenico

R1 : l’esito positivo del test per la schizofrenia (il soggetto è classificato come patologico)

Pertanto, potremo indicare formalmente con P (R0 |H0 ) ' 0.97 la probabilità di diagno-
sticare come non schizofrenico un soggetto sano, e con P (R1 |H1 ) ' 0.95 la probabilità di
diagnosticare come schizofrenico un soggetto realmente malato. A quest’ultima probabilità
segue che P (R0 |H1 ) ' 0.05. In altri termini, se il test riconosce al 95% come patologici i
soggetti realmente malati significa che ci sarà comunque un 5% di soggetti malati non rico-
nosciuti. Poichè viceversa, se il soggetto è sano, la probabilità di corretta classificazione è
0.97, vuol dire che ci sarà un 3% di soggetti sani ma diagnosticati come malati (falsi positivi).
Applicando a questi dati la formula di Bayes è facile vedere che P (R1 |H0 ) 6= P (H0 |R1 ), ossia:
la probabilità che un soggetto sano venga diagnosticato come malato è diversa dalla proba-
bilità che un soggetto sia normale essendo stato diagnosticato come schizofrenico. Posto che
la probabilità a priori di non essere schizofrenici è P (H0 ) = 0.98, ricavata come complemento
ad uno dalla probabilità che un individuo sia malato, ovvero P (H1 ) = 0.02, avremo:

P (H0 )P (R1 |H0 ) (0.98)(0.03)


P (H0 |R1 ) = = = 0.607
P (H0 )P (R1 |H0 ) + P (H1 )P (R1 |H1 ) (0.98)(0.03) + (0.02)(0.95)

Adottando la logica del test statistico, i termini del problema potrebbero essere i seguenti:
visto che H0 rappresenta l’ipotesi che il soggetto sia normale, P (R1 |H0 ) è la probabilità
di commettere un errore di primo tipo. Dall’esempio abbiamo visto che, pur essendo tale
probabilità minore di 0.05 (nello specifico 0.03), non cosı̀ è per la probabilità a posteriori che
risulta essere P (H0 |R1 ) = 0.607.
Insomma, bisogna sempre ricordare che i test statistici classici stimano la probabilità
associata ad un certo risultato R nella condizione in cui H0 sia vera e non la probabilità a
priori di H0 o la probabilità a posteriori.
6.3 Alcuni errori frequenti 55

status dell’ipotesi
decisione H0 vera H0 falsa
non rigetto H0 corretto errore di II tipo
rigetto H0 errore di I tipo corretto

Tabella 6.2: Schema delle situazioni possibili nel processo decisionale legato alla verifica di ipotesi.

6.3 Alcuni errori frequenti

6.3.1 Relazione tra α e β

Uno dei limiti evidenziati del NHST è di focalizzare l’attenzione sull’errore di I tipo trascu-
rando quasi completamente l’errore di II tipo. Nello schema classico sappiamo che, quando
prendiamo una decisione in relazione ad una ipotesi, possiamo cadere in una tra quattro
situazioni possibili, riassunte in tabella 6.2.
Come si può leggere, a fronte del possibile status dell’ipotesi (che generalmente è inco-
gnito), la decisione di rigettare o meno H0 può essere corretta o sbagliata. Se la rigettiamo
quando è vera commettiamo un errore di I tipo, se non la rigettiamo quando è falsa, un errore
di II tipo. Lo schema decisionale classico è costruito in modo da fissare la probabilità di com-
mettere un errore di I tipo. Generalmente questa probabilità, indicata con la lettera greca
α, è fissata a 0.05. Tale valore però, anche se (quasi) universalmente condiviso, è puramente
arbitrario. Pare addirittura che si sia arrivati a questo valore a causa dei contrasti esistenti
tra Fisher e Pearson. Fisher infatti, nel suo Statistical Methods for Research Workers (1925),
pubblicò solo una selezione di tabelle di valori critici. Tale selezione avvenne sia per ragioni di
spazio che per evitare problemi di copyright con Pearson, con il quale era in forte contrasto e
che, per primo, aveva pubblicato, nel 1914, una raccolta di tabelle con le probabilità calcolate
per molti valori delle statistiche Z, t, F , χ2 e r.
Nella sostanza, dato che α = 0.05 rappresenta la probabilità, fissata a priori, di commettere
un errore di I tipo, si potrebbe ingenuamente pensare che, per avere una probabilità più bassa
di sbagliare, sia sufficiente abbassare il valore di α. In realtà questo tipo di ragionamento non
tiene conto di β, cioè la probabilità di commettere un errore di II tipo.
Per capire la relazione esistente tra α e β, consideriamo il caso più semplice possibile, di test
con ipotesi alternativa unidirezionale destra. Nella figura 6.2 è rappresentata la distribuzione
campionaria teorica di una generica statistica T nel caso in cui sia vera l’ipotesi H0 (curva a
sinistra) e nel caso in cui sia vera H1 (curva a destra). Quando fissiamo α al 5%, vuol dire
che individuiamo un valore (critico) Tc sull’ascissa, indicato in figura con l’asterisco, tale che
l’area sottostante la curva di H0 da Tc a +∞ (infinito) è pari a 0.05. Quest’area è raffigurata
in grigio. Il processo decisionale classico utilizza il seguente criterio: se T0 , il valore calcolato
della statistica T , supera il valore critico Tc , l’ipotesi H0 viene rigettata, altrimenti no.
Lo stesso valore critico determina anche l’area relativa all’errore di II tipo, cioè l’area
sottostante la curva di H1 da −∞ a Tc (tratteggiata in figura). Risulta pertanto evidente che,
scegliendo un valore di α più basso, ad esempio 0.01 oppure 0.001, si riduce la probabilità
di commettere un errore di I tipo, ma al tempo stesso si aumenta il valore di β ossia della
probabilità di commettere un errore di II tipo. In sostanza, i due errori sono connessi tra loro
e cosı̀ pure le probabilità ad essi associate; riducendo α si aumenta β e viceversa.
56 6 Inferenza statistica

H0 H1

β
α
*
Figura 6.2: Rappresentazione grafica degli errori di I e II tipo per test unidirezionale. L’area in grigio
è α = 0.05, probabilità di commettere un errore di I tipo. L’area tratteggiata è β, probabilità di
commettere un errore di II tipo. L’asterisco in ascissa indica il valore critico (Tc ).

6.3.2 Interpretazioni del p-value


Come già illustrato in figura 6.1, da un punto di vista pratico il processo decisionale può seguire
due strade alternative: la prima consiste nel confrontare il valore calcolato della statistica T0
con il relativo valore critico ricavato dalle tavole, la seconda, servendosi del software, arriva a
calcolare direttamente la probabilità (p-value) associata a T0 . Da quando i personal computer
hanno raggiunto una diffusione capillare, e con essi i software statistici, la seconda strada è la
più praticata. In effetti per decidere è sufficiente leggere il p-value: se risulta inferiore a 0.05
il test è significativo e si rigetta H0 , altrimenti no.
Questa semplicità d’uso si porta però dietro alcuni problemi di interpretazione della pro-
babilità messi più volte in evidenza da molti autori (si veda ad esempio Tversky & Kahneman,
1971 o Wagenmakers, 2007).
Immaginiamo di avere effettuato un certo esperimento. Analizzando i dati si ottiene una
statistica t(18) = 2.7. La probabilità associata a tale statistica è 0.0073; quindi il test è
significativo per p < 0.01. Replicando per molte volte lo stesso esperimento, quante volte
possiamo attenderci di giungere allo stesso tipo di decisione, cioè rigettare H0 ?
Ponendo questa domanda ad un campione di 70 accademici, Oakes (1986) si sentı̀ rispon-
dere da 42 di essi che lo stesso risultato significativo si sarebbe ottenuto il 99% delle volte.
Tale tipo di risposta indica un’errata interpretazione del significato del p-value. In realtà,
avere ottenuto p = 0.0073 significa un risultato poco probabile, se fosse vera H0 . In generale,
il p-value indica la probabilità di un risultato uguale o più estremo di quello osservato, po-
sto che sia vera H0 . Nel caso dell’esempio sarebbe la probabilità di ottenere un valore della
statistica t maggiore o uguale a quello osservato (2.7), formalmente P (t ≥ 2.7|H0 ) = 0.0073.
Pertanto, fosse vera H0 , lo stesso tipo di risultato dovrebbe ottenersi meno del 5% (in questo
caso anche meno dell’ 1%) delle volte.
6.3 Alcuni errori frequenti 57

a1 a2 totale
b1 5 (25) 4 (20) 9 (45)
b2 2 (10) 9 (45) 11 (55)
totale 7 (35) 13 (65) 20 (100)

Tabella 6.3: Tabella di frequenze. Tra parentesi le frequenze percentuali calcolate sul totale (20).

Prendiamo in considerazione un secondo esempio, siano date due variabili nominali dico-
tomiche A e B. Incrociando le frequenze dei valori su un campione (fittizio) di 20 osservazioni
si ottiene la tabella di frequenze 6.3.
Eseguendo un test Chi-quadrato su tale tabella si ottiene χ2(1) = 3.0392, p = 0.0813. Il
risultato non è significativo, pertanto si conclude che non vi è associazione tra le due variabili
A e B.
Supponiamo ora di avere un campione di 40 osservazioni e di ottenere, incrociando le fre-
quenze, la tabella 6.4. È facile vedere, leggendo i dati in percentuale (riportati tra parentesi),
che tra le due tabelle non vi è alcuna differenza, in quanto le frequenze nella 6.4 sono sem-
plicemente il doppio di quelle nella 6.3. Eppure, ripetendo il test Chi-quadrato sulla tabella
6.4 si arriva ad una conclusione diversa, infatti si ottiene: χ2(1) = 6.0784, p = 0.0137; il test è
significativo e porta a rigettare H0 . Si nota in particolare che il valore calcolato di χ21 nella
seconda tabella (6.0784) è esattamente il doppio di quello calcolato nella prima (3.0392).
I due esempi riportati servono per capire tre aspetti essenziali:

1. p-value è la probabilità di ottenere un risultato uguale o più estremo, rispetto a quello


rilevato empiricamente se l’ipotesi H0 è vera. Non rappresenta in alcun modo la pro-
babilità che sia vera H0 e pertanto non può essere considerato come un misuratore del
grado di falsità della stessa ipotesi.

2. p-value risente, in generale, della numerosità campionaria. Più precisamente, aumen-


tando la dimensione del campione il valore di p tende a diminuire.

3. p-value non può essere considerato una misura dell’evidenza statistica (Wagenmakers,
2007), va usato solo come criterio decisionale per rigettare o meno H0 . Se è inferiore
a 0.05 si rigetta H0 , altrimenti no. Parlare di alta o bassa significatività basandosi sul
valore di p non ha alcun senso.

6.3.3 Significatività statistica del coefficiente di correlazione


Prendiamo in esame il coefficiente di correlazione, già descritto nella sezione 4.2.2, e che sarà
approfondito nel capitolo 9. A differenza di altre statistiche usate di frequente (Z, t, F , χ2 ),

a1 a2 totale
b1 10 (25) 8 (20) 18 (45)
b2 4 (10) 18 (45) 22 (55)
totale 14 (35) 26 (65) 40 (100)

Tabella 6.4: Tabella di frequenze. Tra parentesi le frequenze percentuali calcolate sul totale (40).
58 6 Inferenza statistica

n rc
5 0.878
10 0.632
20 0.444
50 0.279
100 0.197
200 0.139
500 0.088

Tabella 6.5: Valori critici al 5% del coefficiente di correlazione per ipotesi bidirezionale in funzione
della numerosità campionaria (n).

si tratta di un indice che ha un campo di esistenza limitato ai valori compresi tra -1 e 1. In


tabella 6.5 sono riportati i valori critici al 5% del coefficiente di correlazione nel caso di ipotesi
bidirezionale.
Si nota subito che, aumentando la numerosità campionaria, il valore di r necessario per
rigettare H0 diminuisce. Questo fatto risulta perfettamente in linea con quanto descritto
nel paragrafo precedente, e cioè che, aumentando la dimensione del campione, diventa in
qualche modo più “facile” ottenere risultati significativi. Ma soffermiamoci sul significato di
questi valori critici. Il test cui fanno riferimento è relativo all’ipotesi H0 : ρ = 0, in altri
termini l’ipotesi di assenza di correlazione. Se consideriamo, ad esempio di avere ottenuto
un coefficiente di correlazione r = 0.2 con un campione di 20 soggetti saremmo portati a
concludere che tale valore di correlazione non si differenzia significativamente da 0. 0.2 infatti
risulta inferiore al valore critico 0.444. Ma se avessimo ottenuto lo stesso valore di r con
100 o più soggetti la conclusione sarebbe stata di rigettare H0 in quanto la correlazione
risulterebbe superiore al valore critico (0.197) e quindi significativamente diversa da 0. Dato
che r esprime l’intensità della relazione lineare tra due variabili, saremmo portati a concludere
che la relazione tra le due variabili è statisticamente significativa. Da ciò si potrebbe arrivare a
pensare che la relazione tra le variabili sia forte. In realtà non è esattamente cosı̀. Elevando al
quadrato il coefficiente di correlazione si ottiene il coefficiente di determinazione lineare (r2 ).
Riprenderemo più avanti nel dettaglio il significato di questo coefficiente (vedi sezione 10.3),
al momento ci basti sapere che può essere interpretato come la proporzione di variabilità della
variabile assunta come dipendente (Y ) spiegata dalla variabilità della variabile assunta come
indipendente (X). Di conseguenza, a fronte di una correlazione di 0.2, si ha r2 = 0.04, in
pratica la porzione di variabilità spiegata è appena del 4%.
In conclusione, determinare la salienza di r sulla base della significatività statistica può
essere fuorviante. Dire che r è statisticamente significativo, vuol dire che è statisticamente
diverso da 0, non che è espressione di una relazione forte tra variabili. Cohen (1988) propone,
come criterio generale il seguente:
• |.10| ≤ r < |.30| significa relazione debole
• |.30| ≤ r < |.50| significa relazione media
• r ≥ |.50| significa relazione forte
senza ricorrere al test di significatività. Lo stesso Cohen riconosce come tale suddivisione
sia sostanzialmente arbitraria e deve essere osservata con una qualche flessibilità in quanto
6.3 Alcuni errori frequenti 59

va tenuto conto del contesto in cui il coefficiente viene calcolato. Una correlazione di 0.8
potrebbe essere bassa se riferita a variabili fisiche misurate con strumenti di altissima preci-
sione. Viceversa, una correlazione di 0.5 potrebbe essere forte se riferita a variabili sociali o
psicologiche in cui l’errore di misura è più pregnante. In ogni caso, una correlazione di 0.2
risulta essere bassa, anche se statisticamente significativa.

6.3.4 Relazione tra correlazione e miglioramento


Supponiamo di voler confrontare tra loro due diverse tecniche (che indicheremo con A e B) per
il miglioramento delle capacità di memoria. Somministriamo ad un campione di 40 soggetti
un test di memoria, i cui punteggi si esprimono su una scala da 0 a 10. Poi dividiamo a
caso i soggetti in due gruppi da 20 ciascuno. Al primo dei due gruppi applichiamo la tecnica
A, al secondo la tecnica B. Al termine del periodo di addestramento risomministriamo il
test di memoria per valutare se vi sia stato un miglioramento nelle prestazioni dei soggetti.
Rileviamo che la correlazione dei punteggi tra la prima e la seconda somministrazione del test
è 0.78 per il gruppo della tecnica A e 0.92 per il gruppo della tecnica B. Possiamo sostenere
che la tecnica B sia più efficace visto che il valore di r è più elevato?
In figura 6.3 sono rappresentate le distribuzioni dei punteggi (fittizi) nella prima e seconda
somministrazione dei due gruppi. Ciascun punto del grafico rappresenta un soggetto, in ascissa
si legge il punteggio ottenuto nella prima somministrazione, in ordinata quello ottenuto nella
seconda. I soggetti della tecnica A sono rappresentati da cerchi rossi, quelli della tecnica B
da triangoli blu. Dalla lettura di questo grafico troviamo conferma a quanto espresso dai
coefficienti di correlazione. Infatti, i punteggi del gruppo B sono più concentrati e disposti
secondo una ipotetica linea retta. I punteggi del gruppo A sono invece più dispersi.
Attenzione però, questo tipo di informazione (e di grafico) non ci dice nulla sugli even-
tuali miglioramenti, almeno in via diretta. Proviamo a rappresentare i dati in altro modo,
10
seconda somministrazione

8
6
4
2

tec. A
tec. B
0

0 2 4 6 8 10

prima somministrazione

Figura 6.3: Distribuzione dei punteggi nella prima e seconda somministrazione (dati fittizi). I cerchi
indicano i soggetti trattati con la tecnica A, i triangoli quelli trattati con la tecnica B.
60 6 Inferenza statistica

tecnica A tecnica B
10

10
8

8
6

6
4

4
2

t0 t1 2 t0 t1

Figura 6.4: Distribuzione dei punteggi nella prima e seconda somministrazione (dati fittizi).

servendoci del boxplot. In figura 6.4 sono rappresentate le distribuzioni degli stessi punteggi
della figura precedente, ma in forma unidimensionale. Ciascuna scatola (box) rappresenta la
distribuzione dei punteggi di un gruppo in una somministrazione. t0 è la somministrazione
prima dell’addestramento, t1 dopo l’addestramento. In rosso, a sinistra, ci sono i punteggi
dei soggetti della tecnica A, a destra, in blu, quelli della tecnica B. Dalla lettura di questo
grafico emerge chiaramente che i punteggi dei soggetti del gruppo A sono aumentati, mentre
quelli del gruppo B sono praticamente rimasti invariati (per l’interpretazione del grafico si
veda 3.4.2).
L’esempio appena illustrato permette di capire che il coefficiente di correlazione non è e non
può essere una misura per esprimere un cambiamento. Anzi, r è assolutamente indipendente
al fatto che tra due variabili ci sia un cambiamento in termini di media.
Vediamo un altro esempio: sia dato il seguente vettore x1 = (9, 8, 10, 9, 2, 1, 2, 2). La
media di questo vettore è 5.375. Consideriamo ora un secondo vettore identico a x1 , sia
x2 = (9, 8, 10, 9, 2, 1, 2, 2). La correlazione tra i due vettori è esattamente 1 ma il cambiamento,
in termini di media è 0. Formalmente:

cor(x1 , x2 ) = 1

x1 − x2 = 5.375 − 5.375 = 0

Ora calcoliamo un terzo vettore moltiplicando per 10 i valori di x1 , sia x3 = 10x1 =


(90, 80, 100, 90, 20, 10, 20, 20). Avremo che

cor(x1 , x3 ) = 1

x1 − x3 = −48.375

Anche se la correlazione è sempre 1, la differenza tra le medie risulta consistente.


Ancora, sia x4 = (7, 5, 5, 4, 5, 2, 8, 7). Confrontiamo anche questo vettore con x1 :
6.3 Alcuni errori frequenti 61

[A1] [A2] [B1] [B2]


r=1

120
120
r=1
2.0

2.0

80
80
y2

y3
1.0

1.0

40
40
0.0

0.0

0
0
0.0 1.0 2.0 y1 y2 0.0 1.0 2.0 y1 y3

y1 y1
[C1] [C2] [D1] [D2]
r=0

120
120
r=0
2.0

2.0

80
80
y4

y5
1.0

1.0

40
40
0.0

0.0

0
0
0.0 1.0 2.0 y1 y4 0.0 1.0 2.0 y1 y5

y1 y1

Figura 6.5: [A] Grafico a dispersione ([A1]) e boxplot ([A2]) di due variabili identiche y1 e y2 = y1 . [B]
Grafico a dispersione ([B1]) e boxplot ([B2]) di due variabili y1 e y3 = 50y1 . [C] Grafico a dispersione
([C1]) e boxplot ([C2]) di due variabili y1 e y4 non correlate e con la stessa media. [D] Grafico a
dispersione ([D1]) e boxplot ([D2]) di due variabili y1 e y5 = 50y4 non correlate e con media diversa.

cor(x1 , x4 ) = −0.002
x1 − x4 = 0
Abbiamo una correlazione bassa ed una differenza tra medie nulla.
Infine, moltiplichiamo x4 per 10, ottenendo il vettore x5 e ricalcoliamo correlazione e
differenza tra medie rispetto ad x1 .
cor(x1 , x5 ) = −0.002
x1 − x5 = −48.375
Otteniamo una correlazione praticamente nulla ma una differenza tra le medie elevata.
Nella figura 6.5 osserviamo alcuni esempi relativi ad una serie di campioni di 50 osserva-
zioni. Più precisamente la fig. 6.5[A1] rappresenta la distribuzione congiunta di due variabili
identiche: y1 e y2 = y1 . Si osserva, ovviamente, che i punti sono perfettamente allineati. In
fig. 6.5[A2] sono rappresentate le distribuzioni dei valori delle due variabili.
Nelle figure 6.5 [B1] e [B2] sono rappresentate rispettivamente: la distribuzione congiunta
di y1 e y3 = 50y1 , la cui correlazione è pari ad uno (fig. 6.5[B1]), e le due distribuzioni
separate (fig. 6.5[B2]) da cui risulta evidente la differenza in termini di media.
In figura 6.5[C1] è rappresentata la distribuzione congiunta di 50 osservazioni con corre-
lazione nulla e, come si vede in 6.5[C2], medie identiche. La stessa situazione si osserva nelle
figure 6.5 [D1] e [D2] che riportano la distribuzione congiunta di y1 e y5 = 50y4 che hanno
correlazione nulla ed evidente differenza tra le medie.
In conclusione, si deve fare attenzione a non leggere nel coefficiente di correlazione delle
informazioni che non contiene. r indica l’intensità della relazione (lineare) tra due variabili,
ma nulla ci dice sulla differenza tra le medie delle stesse.
62 6 Inferenza statistica

6.3.5 Il problema della molteplicità


Come abbiamo già visto in precedenza, quando fissiamo α al 5% significa che accettiamo tale
probabilità di incorrere in un errore di I tipo. Effettuando però un numero k di test, ciascuno
con α = 0.05, la probabilità che almeno uno di essi risulti significativo per errore aumenta.
Prendiamo ad esempio il lancio di un dado. La probabilità di ottenere 6 con un lancio
è 1/6. Risulta però abbastanza intuitivo che, eseguendo in sequenza una serie di k lanci,
la probabilità che esca 6 in almeno un lancio aumenta all’aumentare di k. Ad esempio, se
indichiamo con x il numero di sei ottenuti in due lanci, la probabilità di ottenere almeno un
sei è data da

2    i  2−i
X 2 1 5
P (x ≥ 1) = = .3056
i 6 6
i=1

Se indichiamo con n il numero di lanci effettuati e con x il numero di volte che esce il sei,
la probabilità che il sei esca almeno una volta (x ≥ 1) sarà data in generale dalla seguente:
n    i  n−i
X n 1 5
Pn (x ≥ 1) =
i 6 6
i=1

In figura 6.6 sono riportate le probabilità di ottenere almeno un sei in funzione del numero
di lanci del dado. È facile vedere come con 10 lanci tale probabilità diventi superiore all’80%.
Se parliamo di test statistici possiamo applicare lo stesso ragionamento. Dato che in un
singolo test si ha una probabilità pari al 5% (α) di rigettare per errore H0 , eseguendo k test
la probabilità che almeno uno di essi risulti significativo per errore (αF W , in cui FW sta per
Family-Wise) risulta pari a
0.8
probabilità di almeno un 6

0.6
0.4
0.2
0.0

1 2 3 4 5 6 7 8 9 10

numero di lanci

Figura 6.6: Distribuzione delle probabilità di ottenere almeno un sei lanciando k volte un dado. In
ascissa il numero di lanci, in ordinata le probabilità.
6.3 Alcuni errori frequenti 63

αF W = 1 − (1 − α)k
Risulta facile verificare che, all’aumento del numero di test eseguiti (k), aumenta anche
la probabilità di errore. Di conseguenza è sbagliato eseguire tanti test senza tenere conto
della molteplicità perché si aumenta artificialmente la probabilità di ottenere dei risultati
statisticamente significativi. La soluzione adottata più comunemente, per la risoluzione di
tale problema, consiste nel rendere il test statistico più conservativo, cosı̀ da rendere più
difficile il rifiuto di H0 .
Le procedure per il controllo dell’errore di I tipo sono moltissime. Tra le più note possiamo
citare il metodo Bonferroni (1936), i test LSD di Fisher (1935), di Scheffé (1953), Tukey
(1951), Newman-Keuls (Newman, 1939; Keuls, 1952). Tra i metodi più recenti ricordiamo
quelli connessi al False Discovery Rate (Benjamini & Hochberg, 1995; Benjamini & Yekutieli,
2001) o ancora, quelli basati sul ricampionamento (Westfall & Young, 1993). Alcune di queste
saranno prese in esame nel capitolo 12.

6.3.6 Normalizzazione e standardizzazione


Con il termine normalizzazione si possono intendere due cose diverse. In senso matematico, la
normalizzazione è un processo di trasformazione di un insieme di dati atto a riportarli ad un
sistema di riferimento che ne renda più semplice l’interpretazione. Ad esempio, se abbiamo un
campione di 75 soggetti, 24 dei quali sono maschi, possiamo calcolare la frequenza percentuale
dei maschi con la seguente operazione: (24/75) · 100. In questo modo, otteniamo un valore
(32) che sappiamo provenire da un sistema in cui il minimo è zero ed il massimo 100. Facendo
riferimento a questa di definizione, la standardizzazione può essere considerata un tipo di
normalizzazione. Più precisamente, la standardizzazione è una procedura che trasforma i
valori originari in puri numeri, svincolati dall’unità di misura e dalla variabilità. Questo tipo
di trasformazione consente di confrontare tra loro variabili di natura diversa. Ad esempio,
consideriamo due diversi test di abilità matematiche, il test A con punteggi possibili tra 0
e 100 (media 50 e deviazione standard 16) e il test B con punteggi tra 0 e 30 (media 15 e
deviazione standard 6). Dati due soggetti, il primo dei quali ottiene 75 al test A ed il secondo
che ottiene 22 al test B non possiamo sapere, sulla base dei punteggi osservati, quale dei
due soggetti abbia avuto una prestazione migliore. Trasformiamo allora i valori osservati in
punti standard con due semplici operazioni: calcoliamo la differenza del punteggio osservato
dalla media e dividiamo tale differenza per la deviazione standard. Nel primo caso otteniamo
(75 − 50)/16 = 1.56, nel secondo (22 − 15)/6 = 1.17. A questo punto, i due valori sono
confrontabili. Il fatto che siano positivi indica che sono entrambi superiori alla media. Inoltre
possiamo dire che la prima prestazione è superiore alla seconda in quanto si allontana dalla
media di 1.56 deviazioni standard, mentre la seconda di 1.17.
Data una generica variabile x con media x e deviazione standard sx , l’operazione di
standardizzazione consiste in una trasformazione secondo la seguente formula:

(x − x)
z=
sx
da cui si ottiene z, una nuova variabile (standardizzata) che ha media 0 e varianza 1. In
R possiamo standardizzare i valori di un vettore numerico x nel seguente modo:

z <- (x-mean(x))/sd(x)
64 6 Inferenza statistica

[A]

10 20
0
0 2 4 6 8 10 12 14

x
[B]
0 10 20

-2 -1 0 1 2 3

z
[C]
10
0

-1 0 1 2 3 4 5

Figura 6.7: Confronto tra standardizzazione e normalizzazione. [A] Distribuzione di 220 dati fittizi
con distribuzione asimmetrica. [B] Dati standardizzati. [C] Dati normalizzati.

oppure, più semplicemente, utilizzando la funzione scale() come segue:

z <- scale(x)

Un altro modo di intendere il termine normalizzazione è una trasformazione dei dati in


modo da rendere la loro distribuzione più simile a quella normale. La ragione di una simile
operazione può essere legata all’utilizzo dei modelli statistici classici che richiedono delle
assunzioni forti sulla distribuzione dei dati, tra cui appunto la normalità. Quando però, come
avviene spesso, i dati non rispettano gli assunti richiesti, sarebbe più appropriato ricorrere a
modelli meno vincolati e, generalmente, non parametrici. Poiché tali modelli possono essere
in pratica piuttosto complessi, risulta più semplice il ricorso ad una trasformazione dei dati
in modo da facilitarne la modellazione, nello specifico operare una trasformazione che renda
normale la loro distribuzione. Esistono vari algoritmi per la normalizzazione dei dati, ad
esempio, possiamo utilizzare il metodo Box-Cox (1964), disponibile nella libreria car (Fox &
Weisberg, 2011). Sia x un vettore numerico, lo possiamo normalizzare con i seguenti comandi:

library(car)
nx <- bcPower(x,0)

La prima istruzione (library()) carica la libreria car, la seconda (bcPower()) trasforma


i dati x in un nuovo vettore nx normalizzato (nel senso che la distribuzione dei valori viene
forzata ad assumere la forma di una curva normale).
Bisogna tenere presente che, mentre la standarizzazione è una operazione lineare, trasfor-
mazioni atte a modificare la distribuzione dei dati generalmente non lo sono. In sostanza,
la standardizzazione è invariante della forma distributiva mentre la normalizzazione no. In
figura 6.7[A] è rappresentata la distribuzione di 220 dati fittizi. Si tratta chiaramente di
una distribuzione asimmetrica. In figura 6.7[B] gli stessi dati sono stati standardizzati con
6.3 Alcuni errori frequenti 65

l’operazione (x − x)/sx . Come si può notare, la forma della distribuzione è identica a quella
dei dati non standardizzati. Nel terzo grafico invece (fig. 6.7[C]) i dati sono normalizzati, e
si nota che la distribuzione è diventata simmetrica.

> library(car)
> set.seed(20121215)
> x <- rchisq(220,5) # dati con distribuzione asimmetrica
> z <- (x-mean(x))/sd(x) # dati standardizzati
> nx <- bcPower(x,.5) # dati normalizzati
>
> ## grafico
> par(mfrow=c(3,1),mar=c(4,3,2,1),cex.axis=2,cex.lab=2,cex.main=2)
> hist(x,nclass=28,col="gray",xlab="x",ylab="",main="[A]")
> hist(z,nclass=28,col="lightgreen",xlab="z",ylab="",main="[B]")
> hist(nx,nclass=28,col="pink",xlab="n",ylab="",main="[C]")

Box 6.2: Esempio di script per produrre dati asimmetrici, standardizzati e normalizzati. Il grafico
prodotto è quello in figura 6.7.

Nel box 6.2 sono riportati i comandi per ottenere il grafico in figura 6.7. La funzio-
ne set.seed() serve solo a fare in modo che i valori generati dalla successiva funzione
rchisq() siano sempre gli stessi. La funzione rchisq() produce 220 numeri estratti casual-
mente da una distribuzione χ2 con 5 gradi di libertà. Questi dati sono prima standardizzati
((x-mean(x))/sd(x)) e poi normalizzati con la funzione bcPower(). Nelle ultime quattro
righe ci sono i comandi grafici per la rappresentazione comparata delle tre distribuzioni di
valori ottenute.
Capitolo 7

Potenza e dimensione dell’effetto

Come abbiamo visto nel capitolo precedente, nella pratica comune si tende a focalizzare
l’attenzione sull’errore di I tipo e trascurare l’errore di II tipo, senza considerare che i due
errori sono legati tra loro. In particolare, non considerare l’errore di II tipo significa ignorare
la potenza del test, cioè la capacità del test statistico di rigettare correttamente l’ipotesi H0
quando è falsa. Per comprendere il significato della potenza e la sua relazione con gli errori
possiamo vedere i grafici in figura 7.1.
La curva di sinistra rappresenta la distribuzione della statistica test (T ) nel caso sia
vera H0 , la curva di destra la distribuzione nel caso sia vera H1 . La linea verticale (rossa)
rappresenta il valore critico di T (Tc ), che divide i valori in ascissa in due insiemi: i valori
inferiori a Tc ed i valori superiori. Abbiamo già illustrato nel precedente capitolo la relazione

[A]
H0 H1

β α
*
[B]
H0 H1

1−β

*
Figura 7.1: Rappresentazione grafica degli errori di I e II tipo e della potenza per test unidirezionale.
L’asterisco in ascissa indica il valore critico (Tc ). [A] L’area in grigio è la probabilità di commettere
un errore di I tipo, l’area tratteggiata, la probabilità di commettere un errore di II tipo. [B] L’area
tratteggiata è la probabilità di rigettare correttamente H0 quando è falsa (potenza).
68 7 Potenza e dimensione dell’effetto

tra Tc e le probabilità degli errori α e β. In questo capitolo analizzeremo il significato della


potenza e gli elementi che la caratterizzano.

7.1 Definizione di potenza


La potenza di un test statistico è la probabilità di rigettare correttamente l’ipotesi H0 quando
è falsa. Poichè l’ipotesi H0 postula generalmente che i risultati ottenuti sono puramente
casuali, o, in altri termini, che non ci sia alcun effetto, si può anche dire che la potenza è
la capacità di un test di rilevare un effetto quando ci sia realmente. In figura 7.1[B] l’area
tratteggiata verticalmente rappresenta la potenza del test. Tale area è data da 1 − β, in cui
β è la probabilità di commettere un errore di II tipo.
La potenza è determinata dalla combinazione di quattro fattori: il valore di α, la grandezza
dell’effetto (Effect Size, ES), la numerosità campionaria e la variabilità.
Abbiamo già illustrato nel precedente capitolo come le probabilità α e β siano legate tra
loro (si veda sezione 6.3.1), nel senso che l’aumento di una implica la diminuzione dell’altra e
viceversa. Ora, considerando che la potenza è data da 1−β, risulterà evidente che aumentando
il valore di α anche la potenza tenderà ad aumentare. Riprendiamo in esame la figura 7.1
e supponiamo di accettare un maggiore rischio di errore di I tipo. Da un punto di vista
geometrico, questo significa spostare verso sinistra il valore critico della statistica (cioè verso
un valore più basso) e con esso spostare la linea verticale rossa. Questo implica l’aumento
dell’area relativa ad α, ma nello stesso spostamento si aumenta anche l’area relativa a 1 − β.
Appare scontato il ragionamento inverso, cioè che se diminuiamo il valore di α avremo una
diminuzione della potenza. Nella pratica comune il valore di α è fissato (generalmente al
5%) e di conseguenza le variazioni in termini di potenza dipendono dagli altri tre fattori, che
analizziamo di seguito nei prossimi paragrafi.
Si tenga comunque presente che quello di potenza è un concetto che ha senso se utilizzato a-
priori, il calcolo della potenza effettuato a posteriori, ovvero dopo avere raccolto ed analizzato
i dati non fornisce alcuna informazione ulteriore a quanto già definito dalla dimensione del
campione, dalla natura dell’ipotesi considerata e dal valore ottenuto di p (Hoenig & Heisey,
2001; Francis, 2013). Pertanto, tutti gli esempi che vedremo nei capitoli sucessivi (vedi ad
es. box 8.6, 8.10) sono da considerarsi solo come esercitazioni a puro scopo illustrativo e
didattico.

7.2 Dimensione dell’effetto (Effect Size)


L’ES esprime il grado in cui un certo fenomeno è presente nella popolazione (Cohen, 1988),
o il grado in cui una relazione osservata differisce da una relazione nulla (Di Nuovo, 1995).
Rispetto al classico approccio della NHST, descritto nel precedente capitolo, quello dell’ES si
differenzia in almeno due punti importanti. Mentre la NHST cerca di stabilire se un fenomeno
osservato è non-casuale, l’ES cerca di stimare il grado in cui un fenomeno è presente. La
NHST arriva a decisioni di tipo dicotomico (rigettare/non rigettare l’ipotesi H0 ) fondate
sulla probabilità. Con l’ES invece, l’effetto è valutato come variabile continua e si arriva ad
indicarne l’intensità in base ai valori che assume (debole, medio o forte).
Esistono molti indici di ES, classificabili in due categorie: indici di grandezza dell’effetto
in senso stretto e indici di intensità della relazione tra variabili o misure di associazione.
Vediamo alcuni esempi:
7.2 Dimensione dell’effetto (Effect Size) 69

Indice d di Cohen. È un indice di grandezza in senso stretto, basato sulla differenza


tra medie. Si utilizza per determinare il grado di sovrapposizione tra due gruppi. La formula
per il calcolo, nel caso di due gruppi indipendenti è

(x1 − x2 )
d=
σ̂
in cui x1 e x2 sono le medie campionarie
p e σ̂ la stima della deviazione standard composita
2 2
dei due gruppi calcolata con: σ̂ = (σ1 + σ2 )/2. Questo indice vale zero nel caso di assenza
di effetto ed aumenta all’aumentare della distanza tra i gruppi. Cohen (1988) ha proposto i
seguenti criteri per l’interpretazione di d:

• d = .20 indica un effetto debole

• d = .50 indica un effetto medio

• d = .80 indica un effetto forte

Indice f di Cohen. È un’estensione dell’indice d nel caso in cui i gruppi siano più di
due. Si può calcolare nel seguente modo:
q Pk
2
i=1 (xi −x)
k
f=
σ̂
in cui k è il numero di gruppi, x la media generale, xi la media del gruppo i-simo e σ̂ la
stima della deviazione standard composita.

Indice eta quadro (η 2 ). È una misura di associazione legata all’Analisi della Varian-
za (ANOVA, che analizzeremo in dettaglio nel capitolo 11). In particolare rappresenta la
proporzione di devianza attribuibile all’effetto:

SSef f
η2 =
SST
in cui SSef f è la devianza dell’effetto e SST la devianza totale. Tale indice varia teorica-
mente tra 0 (assenza di effetto) e 1 (effetto massimo).

Indice omega quadro (ω 2 ). Si tratta di una misura di associazione ottenuta modificando


la formula dell’η 2 . Nel caso di ANOVA ad un fattore si ha:

SSef f − (a − 1)(M Serr )


ω2 =
SST + M Serr
in cui a è il numero di livelli del fattore e M Serr la varianza d’errore. Anche questo indice
varia teoricamente tra 0 e 1. In realtà, con dati empirici può assumere valori negativi quando
il valore di F , ottenuto con l’ANOVA, è minore di 1. Cohen (1988) ha proposto i seguenti
criteri per l’interpretazione di ω 2 :

• ω 2 = .01 indica un effetto debole

• ω 2 = .06 indica un effetto medio

• ω 2 ≥ .15 indica un effetto forte


70 7 Potenza e dimensione dell’effetto

Coefficiente di determinazione (R2 ). È una misura di associazione utilizzata in re-


lazione al modello di regressione lineare (che vedremo in seguito, capitolo 10). Indica la
proporzione di devianza della variabile dipendente spiegata dalla relazione con la variabile
indipendente:

SSreg
R2 =
SST
In cui SST rappresenta la devianza totale e SSreg la devianza spiegata dalla relazione tra
le variabili. Anche questo indice varia tra 0 e 1.

Phi di Cramer (φ). Si utilizza per misurare il grado di associazione tra variabili nominali
in tabelle di contingenza:
s
χ2
φ=
n(k − 1)

in cui χ2 è la statistica calcolata, n la numerosità del campione, k il valore minore tra R


(numero di righe) e C (numero di colonne) della matrice di frequenze. Il valore massimo di φ
è 1, sarà uguale a 0 quando le variabili considerate sono indipendenti.

7.3 Relazione tra potenza ed ES


Per capire la relazione esistente tra potenza ed ES, è utile ricorrere alla curva di potenza. Si
tratta di una rappresentazione grafica della potenza del test (1 − β) in funzione di uno degli
elementi che la caratterizzano tenendo fissi gli altri. In figura 7.2 sono rappresentate le curve
1.0
0.8
0.6
1−β

0.4
0.2
0.0

-4 -2 0 2 4

µ1 − µ2 = δ

Figura 7.2: Curve di potenza, in funzione della differenza tra le medie (µ1 − µ2 = δ), per test t a
gruppi indipendenti con ipotesi alternativa bidirezionale (linea blu continua) e unidirezionale (linea
rossa tratteggiata). α = 0.05 e n = 16.
7.4 Potenza e numerosità campionaria 71

1.0
0.8
0.6
1−β

0.4
0.2
0.0

0 5 10 15 20 25 30

Figura 7.3: Curve di potenza, in funzione della numerosità campionaria, per test t a gruppi indipenden-
ti con ipotesi alternativa bidirezionale (linea blu continua) e unidirezionale (linea rossa tratteggiata).
α = 0.05 e δ = 1.25.

di potenza relative al test t per gruppi indipendenti con un campione di numerosità n = 16


ed α fissato a 0.05. In ascissa è riportato il valore della differenza (vera) tra le medie (δ), in
ordinata il valore di probabilità.
La linea (blu) continua è relativa al test con ipotesi alternativa bidirezionale (H1 : µ1 6=
µ2 ). Si nota che, al crescere della dimensione dell’effetto (cioè per valori assoluti crescenti
di δ) cresce anche la potenza. Tale relazione equivale a dire, banalmente, che quanto più
ampia è la differenza (vera) tra le medie di due gruppi indipendenti, tanto più sarà facile che
il test statistico arrivi a rigettare l’ipotesi H0 . Il punto più basso della curva si ha per δ = 0.
Bisogna ricordare però che, se δ è zero, vuol dire che i due gruppi appartengono a popolazioni
con la stessa media, e che pertanto H0 è vera. Di conseguenza, per δ = 0 l’ordinata della
curva corrisponde alla probabilità dell’errore di I tipo.
La linea (rossa) tratteggiata è relativa al test con ipotesi alternativa monodirezionale
(H1 : µ1 > µ2 ). Nella zona con valori positivi di δ, la curva sta sopra a quella relativa
al test bidirezionale. Per contro, nella zona con valori negativi, si osserva che la potenza è
praticamente nulla. Questo equivale a dire che, in generale, il test unidirezionale è più potente
rispetto a quello bidirezionale, a patto che la direzione dell’ipotesi sia corretta. Se infatti si
sbaglia la specificazione dell’ipotesi, prevedendo che µ1 sia maggiore di µ2 quando in realtà è
il contrario, si incorre nell’errore di III tipo (Kaiser, 1960).

7.4 Potenza e numerosità campionaria


In figura 7.3 sono rappresentate le curve di potenza in funzione della numerosità campionaria
per test t a campioni indipendenti con ipotesi alternativa bidirezionale (H1 : µ1 6= µ2 ; linea
blu continua) e unidirezionale (H1 : µ1 > µ2 ; linea rossa tratteggiata).
72 7 Potenza e dimensione dell’effetto

1.0
0.8
0.6
1−β

0.4
0.2
0.0

0 1 2 3 4 5

Figura 7.4: Curve di potenza, in funzione della variabilità, per test t a gruppi indipendenti con ipotesi
alternativa bidirezionale (linea blu continua) e unidirezionale (linea rossa tratteggiata). α = 0.05,
δ = 1.25, n = 16.

Anche in questo caso abbiamo una relazione diretta con la potenza, nel senso che aumen-
tando la numerosità del campione aumenta anche la potenza del test. Si tenga presente che
l’aumento della numerosità campionaria comporta anche una riduzione della probabilità di
commettere un errore di I tipo. Gli errori di I e II tipo dipendono dal fatto che, lavorando con
dati campionari, non possiamo conoscere il vero status delle ipotesi considerate. Ricordiamo
che, nel processo di inferenza statistica, le conclusioni sono sempre probabilistiche e pertanto
soggette ad errore. L’aumento della numerosità del campione riduce l’errore perché ci avvici-
niamo sempre di più alla popolazione. Pertanto, nel caso estremo in cui potessimo disporre
di tutta la popolazione di riferimento, potremmo conoscere i veri valori dei parametri e di
conseguenza sapere quale ipotesi fosse vera ed azzerare entrambi gli errori.
In conclusione, da un punto di vista operativo, la numerosità campionaria è l’unico ele-
mento effettivamente manipolabile per aumentare la potenza di un test. Infatti il valore di α
è fissato a priori e la dimensione dell’effetto può essere incognita e di conseguenza va stimata
sulla base dei risultati ottenuti.

7.5 Potenza e variabilità


Un altro elemento che ha effetto sulla potenza di un test è la variabilità. Tenendo fissi α,
numerosità ed ES, si osserva che l’aumento della variabilità comporta una diminuzione della
potenza.
In figura 7.4 sono rappresentate le curve di potenza per test t a campioni indipendenti
con ipotesi alternativa bidirezionale (H1 : µ1 6= µ2 ; linea blu continua) e unidirezionale
(H1 : µ1 > µ2 ; linea rossa tratteggiata) in funzione della variabilità espressa in termini di
deviazione standard (s); α è fisso a 0.05, δ = 1.25 e n = 16.
7.5 Potenza e variabilità 73

[A]
H0 H1

1−β
*
[B]

H0 H1

1−β
*
Figura 7.5: Rappresentazione grafica della potenza (area tratteggiata) per test unidirezionale. Con-
fronto tra due casi con identica differenza tra medie (3) ma diverse variabilità. L’asterisco in ascissa
indica il valore critico (Tc ). [A] µH0 = 0, µH1 = 3, σ = 0.7, 1 − β = 0.99 [B] µH0 = 0, µH1 = 3,
σ = 1.2, 1 − β = 0.80

Si osserva chiaramente come l’aumento di variabilità comporti una drastica diminuzione


della potenza. Per capire come ciò accada si può vedere la figura 7.5 in cui sono rappresentate
due situazioni in cui la differenza tra le medie rimane costante ma la varianza è differente.
Nel secondo caso (fig. 7.5[B]) la varianza delle due distribuzioni è circa il triplo rispetto a
quella del primo caso (fig. 7.5[A]). L’effetto che si ottiene è una maggiore sovrapposizione tra
le curve ed un conseguente aumento della difficoltà di distinguerle l’una dall’altra. Calcolando
le rispettive potenze, si ottiene circa 0.99 nel primo caso e circa 0.80 nel secondo.
Per ottenere i valori della potenza nei due casi, possiamo procedere come nel box 7.1.

> qnorm(.95,sd=.7) #[A]


[1] 1.151398
> pnorm(1.151398,mean=3,sd=.7,lower.tail=FALSE)
[1] 0.9958652
> qnorm(.95,sd=1.2) #[B]
[1] 1.973824
> pnorm(1.973824,mean=3,sd=1.2,lower.tail=FALSE)
[1] 0.803765

Box 7.1: Calcolo della potenza relativa alla figura 7.5.

La funzione qnorm() permette di calcolare i quantili (cioè le ascisse) dei valori della di-
stribuzione normale a partire dall’area sotto la curva. Sappiamo che, nel test unidirezionale,
il valore critico (Tc ) delimita l’area della curva in due porzioni, una pari a 0.95 ed una pari a
74 7 Potenza e dimensione dell’effetto

0.05. In figura 7.5 sono le porzioni a sinistra e a destra della linea verticale rossa sotto le distri-
buzioni H0 . Il comando qnorm(.95) calcola l’ascissa della distribuzione normale (con media
0 e varianza 1), a sinistra della quale l’area sotto la curva è pari a 0.95. Dato che nel caso [A]
la deviazione standard è pari a 0.7 e nel caso [B] 1.2, con i due comandi qnorm(.95,sd=.7)
e qnorm(.95,sd=1.2) calcoliamo i valori critici dei due casi rappresentati, cioè i valori di
ascissa segnati con asterisco.
A questo punto dobbiamo considerare che la potenza è l’area sotto la curva di H1 a de-
stra del valore Tc . La funzione pnorm() consente di calcolare le aree sotto la curva normale
a partire dal punto specificato in ascissa. Di conseguenza, considerando che le medie del-
le distribuzioni in H1 sono pari a 3 e che le deviazioni standard sono uguali a prima, con
i comandi pnorm(1.151398,mean=3,sd=.7,lower.tail=FALSE) in relazione al caso [A] e
pnorm(1.973824,mean=3,sd=1.2,lower.tail=FALSE) in relazione al caso [B], calcoliamo le
aree tratteggiate in figura 7.5. Il primo argomento inserito nella funzione pnorm è il valore cri-
tico, il secondo la media (mean), il terzo la deviazione standard (sd) ed il quarto (lower.tail
posto a FALSE) serve a specificare che si vuole calcolare l’area nella porzione destra rispetto
al valore di ascissa.

7.6 Funzioni di R per la potenza e l’Effect Size


In R disponiamo di varie funzioni per il calcolo della potenza e dell’ES. Nel pacchetto stats
(che viene installato e caricato di default) troviamo, tra le altre, le funzioni power.t.test(),
che permette il calcolo della potenza in relazione al test t e power.anova.test() , relativa
alla potenza nell’ANOVA bilanciata ad una via.
Il pacchetto pwr (Champely, 2012), contiene sia funzioni per il calcolo della potenza che
per l’ES. In particolare segnaliamo la funzione cohen.ES() che permette di determinare le
soglie convenzionali di ES per stabilire se un effetto è debole, medio o forte in relazione ad
alcune statistiche quali, ad esempio, t, r e χ2 . Un esempio d’uso è riportato nel box 7.2.

> library(pwr)
> cohen.ES(test="r",size="medium")

Conventional effect size from Cohen (1982)

test = r
size = medium
effect.size = 0.3

Box 7.2: Esempio di uso della funzione cohen.ES() per determinare il valore che indica un effetto
medio relativamente al coefficiente di correlazione.

La funzione richiede come argomenti la statistica oggetto, in questo caso il coefficiente di


correlazione r, ed il livello di ES desiderato (medio). Nell’output ottenuto leggiamo che il
valore di tale coefficiente che indica un effetto medio è pari a 0.3
Il pacchetto ADati contiene alcune funzioni per il calcolo degli indici di dimensione del-
l’effetto presentati nella sezione 7.2. Cohen.d() e Cohen.f() permettono di calcolare rispet-
tivamente la d e la f di Cohen, cramer.phi() il coefficiente φ di Cramer, eta2() e omega2()
7.6 Funzioni di R per la potenza e l’Effect Size 75

rispettivamente gli indici η 2 e ω 2 . Nei prossimi capitoli vedremo come utilizzare alcune di
queste funzioni.
Capitolo 8

Confronti tra medie

Uno tra i casi più elementari di test statistico si ha quando si utilizzano una o più medie
campionarie per valutare delle ipotesi. Nel presente capitolo, ci occupiamo dei casi in cui le
medie sono al massimo due, nel capitolo 11 analizzeremo i casi in cui le medie sono più di
due. Vediamo due casi utili per introdurre i problemi connessi al confronto tra le medie.

Problema 1. Supponiamo di utilizzare un test per valutare le funzioni cognitive di due


gruppi di bambini di una scuola elementare. Tale test può essere usato per diagnosi cliniche,
in quanto, un punteggio inferiore a 50 indica una situazione di seria compromissione delle
funzioni in oggetto. Nella prima classe considerata (C1) otteniamo un punteggio medio pari
a 90, nella seconda (C2) il punteggio medio è pari a 100. Possiamo dire che il secondo gruppo
presenta una situazione migliore del primo in quanto ha un punteggio medio superiore?
Il problema, per come viene posto, manca di alcune informazioni necessarie. Immaginiamo,
per semplicità, che le distribuzioni dei punteggi al test siano normali in entrambe le classi.
Se nella prima classe la deviazione standard è pari a 15 avremmo una distribuzione teorica
dei punteggi come quella in figura 8.1[A1]. Possiamo allora calcolare la probabilità che un
bambino della classe C1 si trovi al di sotto del punteggio 50 utilizzando la funzione pnorm().
Tale funzione calcola l’area della curva normale in un certo intervallo specificato. Nel box
8.1 vediamo come utilizzare pnorm(): il primo parametro è il valore di ascissa (il punteggio
critico), il secondo la media ed il terzo la deviazione standard della distribuzione.

> pnorm(50,90,15) # classe C1


[1] 0.003830381
> pnorm(50,100,45) # classe C2
[1] 0.1332603

Box 8.1: Utilizzo della funzione pnorm().

La probabilità che un bambino, appartenente ad una popolazione normale con media (µ)
90 e deviazione standard (σ) 15, abbia un punteggio inferiore a 50, indicante una compromis-
sione nelle funzioni cognitive, è circa 0.004.
Analizziamo ora la classe C2. La media dei punteggi di questa classe è 100 e la deviazione
standard 45. Con il secondo comando nel box 8.1 otteniamo la probabilità che un bambino
di questa classe presenti un punteggio inferiore a 50 e notiamo che è circa 35 volte superiore.
78 8 Confronti tra medie

[A1] [A2]

0.8
0.015

F (x)
p(x)

0.4
0.000

0.0
0 50 100 150 200 0 50 100 150 200

[B1] [B2]

0.8
0.015

F (x)
p(x)

0.4
0.000

0.0
0 50 100 150 200 0 50 100 150 200

Figura 8.1: [A1] Densità teorica dei punteggi al test con µ = 90 e σ = 15. L’area grigia rappresenta la
proporzione attesa di soggetti con punteggio minore o uguale a 50. [A2] Funzione di ripartizione della
distribuzione con µ = 90 e σ = 15. [B1] Densità teorica dei punteggi al test con µ = 100 e σ = 45.
L’area grigia rappresenta la proporzione attesa di soggetti con punteggio minore o uguale a 50. [B2]
Funzione di ripartizione della distribuzione con µ = 100 e σ = 45.

Possiamo confermare questo dato graficamente, osservando la figura 8.1[B1]. L’area in


grigio rappresenta la probabilità di osservare un punteggio inferiore a 50 o anche la proporzione
attesa di soggetti con compromissioni serie. Si nota chiaramente che quest’area è maggiore
di quella relativa alla classe C1 (fig. 8.1[A1]).
La stessa informazione si può ricavare dal confronto delle funzioni di ripartizione (fig.
8.1[A2] e 8.1[B2]). In ascissa sono riportati i punteggi e in ordinata le aree sottostanti la
curva normale nell’intervallo da −∞ al valore di ascissa relativo. Fissato il valore 50, nella
classe C1 (fig. 8.1[A2]) il valore di ordinata della funzione di ripartizione è 0.004, nella classe
C2 (fig. 8.1[B2]) è 0.133.

Problema 2. Il reddito medio per abitante in un certo paese B è stimato pari a circa 20$
al giorno, in un altro paese V circa 16$ al giorno. Possiamo dire che la situazione economica,
relativamente al reddito, sia migliore in B rispetto al paese V ?
Supponiamo di disporre del reddito medio giornaliero di due campioni rappresentativi
composti da 1000 soggetti residenti in B e 1000 residenti in V . Nelle figure 8.2[A1] e 8.2[B1]
sono rappresentate le distribuzioni dei redditi rispettivamente in B e V , in entrambi i ca-
si le distribuzioni non sono normali. Utilizzando la funzione tapply(), calcoliamo media,
deviazione standard e range relativi ai due campioni (box 8.2).
Nel paese B il reddito medio è maggiore rispetto al paese V , ma anche la variabilità risulta
superiore. In particolare, la deviazione standard in B è più del doppio che in V e l’intervallo
dei valori più del triplo. La funzione range() restituisce i valori minimo e massimo di una
variabile, pertanto leggiamo che in B i valori dei redditi vanno da 0 a 327, mentre in V da 0
a 105.
79

> data(redditi,package="ADati")
> attach(redditi)
> tapply(reddito,nazion,mean)
B V
20.176 15.530
> tapply(reddito,nazion,sd)
B V
48.49853 18.72404
> tapply(reddito,nazion,range)
$B
[1] 0 327

$V
[1] 0 105

Box 8.2: Statistiche descrittive.

Osservando le cumulate empiriche (fig. 8.2[A2] e 8.2[B2]), rileviamo un’altra informazione


cruciale: nel paese V , la percentuale di soggetti con reddito medio giornaliero inferiore ai 5$ è
circa del 30%, nel paese B più del 70%. Nella sostanza, anche se nel paese B il reddito medio
è più alto, il numero di soggetti sotto la soglia di povertà risulta essere più del doppio.

I due problemi appena analizzati rendono bene l’idea che non ha senso confrontare delle

[A1] [A2]
0.04

0.8
Density

F (x)
0.02

0.4
0.00

0.0

0 50 100 150 200 250 300 0 50 100 150 200 250 300

[B1] [B2]
0.04

0.8
Density

F (x)
0.02

0.4
0.00

0.0

0 50 100 150 200 250 300 0 50 100 150 200 250 300

Figura 8.2: [A1] Densità empirica dei redditi nel campione del paese B. [A2] Funzione cumulata
empirica nel campione del paese B. [B1] Densità empirica dei redditi nel campione del paese V . [B2]
Funzione cumulata empirica nel campione del paese V .
80 8 Confronti tra medie

medie senza tenere conto della variabilità. In generale, ci si dovrebbe accertare che le popola-
zioni da cui derivano i campioni sui quali abbiamo calcolato le medie, oltre che normali nella
forma distributiva, abbiano la stessa varianza.
Quando si formulano ipotesi che coinvolgono la media possiamo distinguere due tipologie
di problemi:

• test sulla media della popolazione, quando si deve decidere se un campione con
media x possa provenire o meno da una popolazione che ha media µ.

• test sulla differenza tra le medie di due campioni, quando si deve decidere se la
differenza riscontrata è tale da far ritenere che i campioni provengano da due popolazioni
diverse o meno.

8.1 Test sulla media della popolazione


In questo tipo di problema, è dato un campione di osservazioni indipendenti x1 , ..., xn con
media x e deviazione standard sx . L’obiettivo è di stabilire se tali valori possano provenire da
una distribuzione (normale) con una certa media µ. Il test indicato in questo caso è il test-t
a campione singolo.

Esempio 8.1 Si sa che la distribuzione del tempo impiegato da ragazzi maschi normali di 18
anni nell’esecuzione di una prova di abilità meccanica di incastro ha media 200 secondi. Uno
sperimentatore vuole verificare se ragazzi sordomuti maschi della stessa età diano analoghi
risultati nella prova; per fare ciò sceglie un campione di n = 64 ragazzi sordomuti, che
sottopone alla prova, ottenendo una media x = 193.34 (data-frame sordomuti). A questo
punto lo sperimentatore si chiede se il risultato ottenuto possa indicare una differenza dei
soggetti sordomuti rispetto alla popolazione dei ragazzi maschi.

In altre parole, si tratta di valutare se la media dei tempi di esecuzione osservata sia com-
patibile o meno con la media della popolazione, le ipotesi contrapposte si possono esprimere
formalmente con:
H0 : µ = 200
H1 : µ 6= 200
in cui H0 equivale a dire che la differenza di media osservata nel campione rispetto a quella
della popolazione è solamente casuale, mentre H1 afferma che la differenza di media osservata
è tale da indicare che il campione proviene da un’altra popolazione.

8.1.1 Valutazione degli assunti


Prima di effettuare il test vero e proprio, analizziamo la distribuzione dei dati osservati per
valutare se essi possano provenire da una distribuzione normale. Possiamo analizzare i grafici
in figura 8.3.
In figura 8.3[A] è riportata la distribuzione delle frequenze dei tempi di esecuzione con
un grafico ad istogrammi; in figura 8.3[B] il boxplot relativo alla stessa variabile; infine, in
figura 8.3[C] il qqplot. Tutti i grafici permettono di osservare che la distribuzione dei tempi
di esecuzione è sostanzialmente normale.
8.1 Test sulla media della popolazione 81

[A] [B] [C]

300

2
20

250

1
Theoretical Quantiles
15

200
Frequency

0
10

150

-1
100
5

-2
50
0

0 50 150 250 350 50 100 200 300

tempo di esecuzione Sample Quantiles

Figura 8.3: [A] Distribuzione di frequenze dei tempi di esecuzione in secondi. [B] Boxplot della
distribuzione dei tempi di esecuzione in secondi. [C] Grafico quantile-quantile.

In aggiunta all’analisi grafica, possiamo effettuare un test di normalità. Si tratta di un test


che permette di stabilire se la forma distributiva dei valori di una variabile sia approssimati-
vamente normale. Nel pacchetto base di R sono disponibili due versioni di tale test: quella
di Kolmogorov-Smirnov (ks.test()) e quella di Shapiro-Wilk (shapiro.test()). Esiste poi
nortest, un pacchetto aggiuntivo (scaricabile in rete) con altri test di normalità.

> data(sordomuti,package="ADati")
> attach(sordomuti)
> ks.test(tempo,"pnorm",mean(tempo),sd(tempo))

One-sample Kolmogorov-Smirnov test

data: tempo
D = 0.0663, p-value = 0.9408
alternative hypothesis: two-sided

Box 8.3: Test di Kolmogorov-Smirnov.

Nel box 8.3 è riportato il test di Kolmogorov-Smirnov eseguito con la funzione ks.test().
Tale funzione riceve in input quattro argomenti, nell’ordine: la variabile da analizzare (tempo),
la funzione cumulata teorica di riferimento (pnorm), media campionaria e stima della de-
viazione standard della popolazione. L’ipotesi H0 del test si può esprimere formalmente
con

H0 : X ∼ N (µ, σ)
82 8 Confronti tra medie

in cui il simbolo ∼ sta ad indicare “si distribuisce come...”. In sostanza, l’ipotesi H0 assume
che i punteggi osservati derivano da una distribuzione normale con media µ e deviazione
standard σ.
Dalla lettura dell’output (box 8.3) rileviamo che la statistica test calcolata è D = 0.0663
e la probabilità ad essa associata pari a 0.9408. Dal momento che questa probabilità risulta
essere superiore al valore critico di α = 0.05, non possiamo rigettare H0 e concludiamo per-
tanto che i tempi di esecuzione dei ragazzi sordomuti nel campione in esame sono compatibili
con una distribuzione normale.

8.1.2 t-test a campione singolo


A questo punto possiamo passare al test vero e proprio sulla media. La funzione indicata
è t.test(). Tale funzione può essere utilizzata per qualunque tipo di test t. Nel box 8.4
vediamo come usarla per il test a campione singolo. Gli argomenti da inserire sono la variabile
oggetto del test (tempo) e la media della popolazione di riferimento ricavata dall’ipotesi H0
(µ = 200).

> t.test(tempo,mu=200)

One Sample t-test

data: tempo
t = -0.9801, df = 63, p-value = 0.3308
alternative hypothesis: true mean is not equal to 200
95 percent confidence interval:
179.7721 206.9154
sample estimates:
mean of x
193.3438

Box 8.4: t-test a campione singolo.

Nell’output possiamo leggere: il valore della statistica calcolata (t = -0.9801), con re-
lativi gradi di libertà (df = 63) e probabilità associata (p-value = 0.3308). Abbiamo poi
la formulazione dell’ipotesi alternativa (true mean is not equal to 200, formalmente µ 6=
200), l’intervallo di confidenza della media (95 percent confidence interval) e la media
calcolata sul campione (mean of x).
Poiché il valore osservato di probabilità risulta essere superiore a 0.05 non possiamo ri-
gettare H0 e concludiamo che non esiste l’evidenza di una differenza di prestazione tra il
campione dei sordomuti e la popolazione normale. Alla stessa conclusione si può giungere
osservando l’intervallo di confidenza (vedi anche sez. 11.2.1, pag. 124). I valori 179.7721 e
206.9154 indicano gli estremi dell’intervallo che, con una probabilità pari al 95%, contiene la
stima della media se µ = 200. Formalmente:

P (179.7721 ≤ µ ≤ 206.9154|µ = 200) = 0.95


Dato che la media ipotizzata (200) è compresa nell’intervallo non possiamo rigettare H0 .
8.1 Test sulla media della popolazione 83

8.1.3 Dimensione dell’effetto e potenza del test


Per calcolare la dimensione dell’effetto possiamo utilizzare la d di Cohen (vedi 7.2). Si può
utilizzare la funzione Cohen.d() nel modo illustrato nel box 8.5.

> Cohen.d(tempo,mu=200)

One Sample Cohen’s d

data.name = tempo
statistic = 0.1225
effect = small

Box 8.5: Calcolo dell’ES con la d di Cohen per campione singolo.

Argomenti della funzione sono la variabile oggetto del test (tempo) e la media di riferi-
mento della popolazione (µ = 200). Se viene inserita una sola variabile, la funzione esegue
automaticamente il calcolo di d per campione singolo. Nell’output leggiamo che il valore sti-
mato di ES in questo caso risulta d = 0.1225. Seguendo le indicazioni di Cohen, tale effetto
risulta debole (effect = small).
Stimiamo ora la potenza del test eseguito servendoci della funzione power.t.test() come
illustrato nel box 8.6. Gli argomenti utilizzati nella funzione sono i seguenti: n = numero-
sità del campione, delta = differenza osservata tra la media del campione e la media della
popolazione (in valore assoluto), sd = stima della deviazione standard, type = tipo di t-test.

> power.t.test(n=length(tempo),delta=(abs(mean(tempo)-200)),
+ sd=sd(tempo),type="one.sample")

One-sample t test power calculation

n = 64
delta = 6.65625
sd = 54.33179
sig.level = 0.05
power = 0.1599270
alternative = two.sided

Box 8.6: Calcolo della potenza per t-test a campione singolo.

I valori inseriti in input vengono riportati nell’output con l’aggiunta del livello di signifi-
catività (sig.level = 0.05) e la potenza (power = 0.1599270).
La funzione power.t.test() può essere utilizzata, oltre che come illustrato, per determi-
nare la potenza, anche, ad esempio, per stabilire la numerosità necessaria al fine di ottenere
un certo livello di potenza. Oppure per stimare la dimensione dell’effetto che, per una certa
numerosità produce un determinato livello di potenza. In pratica, si possono creare tutte
le combinazioni possibili tra potenza, ES, numerosità campionaria, variabilità e valore di α.
84 8 Confronti tra medie

Per fare ciò è sufficiente omettere quale tra queste caratteristiche si vuole stimare in funzione
delle altre.
Prima di commentare i risultati ottenuti si deve ribadire che la potenza è un concetto a
priori. Sarebbe infatti buona norma calcolarla prima di raccogliere i dati, cosa che aiuterebbe
anche a stabilire la dimensione campionaria più idonea. Non sempre però è possibile la stima
a priori, ad esempio se non abbiamo informazioni sulla dimensione dell’effetto oppure se non
possiamo stabilire la numerosità campionaria. In questi casi possiamo ricorrere alla stima
a posteriori, ma va tenuto conto che tale stima utilizza la dimensione dell’effetto calcolata
sul campione come se fosse vera e pertanto l’utilità della potenza calcolata in questo modo è
molto limitata (Hoenig & Heisey, 2001; Francis, 2013) e deve essere interpretata con cautela.
A questo punto possiamo utilizzare le informazioni ricavate da potenza ed ES come inte-
grazione al risultato del t-test. L’effetto risulta essere debole (0.1225) ed anche la potenza è
piuttosto bassa (0.1599). Evidentemente il risultato di non significatività statistica ottenuto
nel t-test (vedi box 8.4) è dovuto da una parte al fatto che non esiste un effetto particolarmen-
te rilevante, dall’altra che la numerosità campionaria non è sufficiente a rilevare una differenza
nei tempi di esecuzione tra il campione di sordomuti e la popolazione di riferimento.

8.2 Test sulla differenza tra le medie di due campioni indipen-


denti
In questo tipo di problema, sono dati due campioni di osservazioni indipendenti x1 , ..., xnx
e y1 , ..., yny con medie x, y e deviazioni standard sx , sy rispettivamente. L’obiettivo è di
stabilire se i due campioni possano provenire da una stessa popolazione con media µ, o, in
altri termini, se provengano da due popolazioni con media uguale. Il test indicato in questo
caso è il test-t a campioni indipendenti.

Esempio 8.2 Un ricercatore vuole sapere se vi siano differenze nell’atteggiamento verso l’at-
tività extradomestica tra le donne sposate con figli e quelle senza figli. Allo scopo somministra
una scala di atteggiamento a due campioni casuali di donne coniugate, di cui n1 = 45 con
figli e n2 = 36 senza figli. Si vuole sapere se i due campioni siano estratti da popolazioni
con media uguale oppure no, in altri termini, se vi siano differenze di atteggiamento tra i due
gruppi di donne.

Formalmente possiamo esprimere le ipotesi come segue:

H0 : µ1 = µ2

H1 : µ1 6= µ2

in cui µ1 indica la media (incognita) della popolazione di donne con figli e µ2 la media
(sempre incognita) della popolazione di donne senza figli relativamente al punteggio sulla scala
di atteggiamento. L’ipotesi H0 sentenzia che la differenza di medie osservata nei due campioni
è solo effetto del caso, H1 invece che i due gruppi provengono da popolazioni differenti e che
pertanto esista una differenza di atteggiamento tra le donne con figli e quelle senza. I dati
sono nel data-frame donne, nel pacchetto ADati.
8.2 Campioni indipendenti 85

8.2.1 Valutazione degli assunti


Come abbiamo già visto, per confrontare le medie di due campioni è necessario, oltre a
valutare se le distribuzioni dei punteggi sono approssimativamente normali anche stabilire se
le varianze dei punteggi sono omogenee. Nella sezione 8.1.1 abbiamo già illustrato l’uso della
funzione ks.test() per eseguire il test di normalità.
Vediamo ora come eseguire il test di omogeneità delle varianze. Tale test può essere
eseguito in R con la funzione var.test() come illustrato nel box 8.7.

> data(donne,package="ADati")
> var.test(attegg~figli,data=donne)

F test to compare two variances

data: attegg by figli


F = 0.8664, num df = 35, denom df = 44, p-value = 0.6662
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.4635148 1.6576284
sample estimates:
ratio of variances
0.8663805

Box 8.7: Test di omogeneità delle varianze.

Come argomento della funzione è sufficiente inserire i nomi delle variabili legati dal simbolo
∼(tilde). La prima variabile (attegg) è quella relativa ai punteggi, la seconda (figli) indica
il gruppo di appartenenza. Questo test valuta se le varianze delle popolazioni da cui sono
stati campionati i due gruppi (donne con e senza figli) sono uguali o meno, formalmente:

H0 : σ12 = σ22

H1 : σ12 6= σ22
in cui σ12 indica la varianza (incognita) della popolazione di donne con figli e σ22 la varianza
(sempre incognita) della popolazione di donne senza figli relativamente al punteggio sulla scala
di atteggiamento.
L’output prodotto per questo test (vedi box 8.7) è molto simile a quello già visto per il t-
test (box 8.4). Possiamo, in particolare, leggere la statistica test calcolata (F = 0.8664), i gra-
di di libertà (num df = 35, denom df = 44) e la probabilità associata (p-value = 0.6662).
Poiché tale probabilità risulta essere superiore a 0.05 non possiamo rigettare l’ipotesi H0 e
concludiamo che le varianze sono omogenee.

8.2.2 t-test a campioni indipendenti


Ora possiamo eseguire il test vero e proprio per il confronto tra le medie dei due campioni.
Anche in questo caso utilizziamo la funzione t.test() (box 8.8). Le variabili sono inserite
nello stesso modo del test sulle varianze, la prima (attegg), essendo la variabile oggetto del
86 8 Confronti tra medie

test, è quella sulla quale vengono calcolate le medie, la seconda (figli) quella che individua
il gruppo di appartenenza. Dato che le varianze sono omogenee, dobbiamo specificarlo con
var.equal=TRUE. R per default considera le varianze come non omogenee.

> t.test(attegg~figli,data=donne,var.equal=TRUE)

Two Sample t-test

data: attegg by figli


t = 3.5449, df = 79, p-value = 0.0006634
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
3.191369 11.364186
sample estimates:
mean in group no mean in group si
75.16667 67.88889

Box 8.8: t-test per campioni indipendenti con varianze omogenee.

La statistica calcolata è t = 3.5449, con 79 gradi di libertà. La probabilità associata


risulta essere minore di 0.05 (p-value = 0.0006634) pertanto il risultato del test è stati-
sticamente significativo, rigettiamo l’ipotesi H0 e concludiamo che esiste una differenza di
atteggiamento tra le donne con figli e quelle senza. Alla stessa conclusione possiamo giungere
osservando l’intervallo di confidenza della differenza tra le medie. Poiché, secondo H0 , le me-
die delle popolazioni sono uguali, in altri termini possiamo dire che la differenza tra le medie
deve essere nulla:
H0 : µ1 − µ2 = 0
Leggendo i valori minimo e massimo dell’intervallo di confidenza (3.191369 e 11.364186)
osserviamo che lo zero non è compreso in tale intervallo e pertanto possiamo rigettare l’ipotesi
H0 .

8.2.3 Dimensione dell’effetto e potenza del test


Valutiamo ora ES e potenza del test. In relazione alla dimensione dell’effetto utilizziamo
ancora la funzione Cohen.d(), come illustrato nel box 8.9.
La prima variabile è la variabile sulla quale vengono calcolate le medie. La seconda il
fattore di raggruppamento, cioè la variabile con la quale sono costituiti i gruppi. Di fatto il
valore d viene calcolato confrontando tra loro le medie dei punteggi di atteggiamento delle
donne con figli e quelle senza. Il valore ottenuto 0.7959 corrisponde ad un effetto medio/alto.
Nel box 8.10 viene stimata la potenza relativa al test eseguito. In generale, le funzioni di R
per il calcolo della potenza considerano la numerosità dei gruppi come una costante (cioè tutti
i gruppi hanno la stessa numerosità n). La ragione di questo risiede nel fatto che la massima
potenza si ha quando i gruppi sono composti dallo stesso numero di unità statistiche.
Poiché i due campioni dell’esempio non hanno la stessa numerosità, seguendo le indica-
zioni di Cohen (1988, p. 42), calcoliamo la media armonica delle numerosità. Tale media
può essere calcolata con la funzione mean.a() nel pacchetto labstatR (Iacus & Masarot-
to, 2012). Di seguito carichiamo anche il pacchetto pwr (Champely, 2012) per utilizzare la
8.2 Campioni indipendenti 87

> Cohen.d(attegg,figli)

Two Sample Cohen’s d

data.name = attegg by figli


statistic = 0.7959
effect = medium/large

Box 8.9: Calcolo dell’ES con la d di Cohen per campioni indipendenti.

funzione pwr.t.test(). Quest’ultima funzione, a differenza di power.t.test(), vista pre-


cedentemente (box 8.6), permette il calcolo della potenza direttamente dal valore calcolato d.
Inseriremo allora n, ovvero la media armonica delle numerosità dei due campioni, e d=.7959,
ES calcolato precedentemente.

> library(labstatR)
> n <- mean.a(c(36,45))
> library(pwr)
> pwr.t.test(n=n,d=.7959)

Two-sample t test power calculation

n = 40
d = 0.7959
sig.level = 0.05
power = 0.9400569
alternative = two.sided

NOTE: n is number in *each* group

Box 8.10: Calcolo della potenza per t-test a campioni indipendenti.

Come possiamo notare, R nell’output ci ricorda che n indica la numerosità di ciascun


gruppo (n is number in *each* group). In alternativa all’uso della media armonica, si può
inserire la numerosità più bassa in modo da ottenere una misura prudenziale della potenza
(Glantz, 1988).
Anche per la funzione pwr.t.test() valgono le regole già descritte per power.t.test(),
nel senso che è possibile stimare uno qualunque tra potenza, ES, numerosità campionaria,
variabilità e valore di α a partire dagli altri.

8.2.4 t-test a campioni indipendenti con varianze non omogenee


Esaminiamo ora un caso in cui le varianze dei due gruppi non risultano essere omogenee.

Esempio 8.3 Due campioni di studenti di due diverse facoltà si sottopongono ad un test di
memoria. Il primo gruppo è composto da n1 = 31 soggetti e riporta un punteggio medio al
88 8 Confronti tra medie

test x1 = 19.94; nel secondo gruppo n2 = 27 soggetti, il punteggio medio è x2 = 17.22 (data-
frame studenti). Si sa che in generale la facoltà 1 richiede, nel corso degli studi, maggiori
capacità di memoria rispetto alla facoltà 2 e pertanto ci si aspetta che gli studenti della prima
facoltà ottengano prestazioni migliori rispetto a quelli della seconda. Si vuole sapere se la
differenza osservata, in termini di medie, sia statisticamente significativa.

Il test di omogeneità delle varianze è riportato nel box 8.11. L’ipotesi zero relativa al test
è H0 : σ12 = σ22 , i due gruppi di studenti provengono da popolazioni con varianze identiche.
La probabilità associata al test (p-value = 0.0004306) risulta inferiore a 0.05. Il test è
pertanto statisticamente significativo, rigettiamo H0 e concludiamo che le varianze non sono
omogenee.

> data(studenti,package="ADati")
> var.test(memo~fac,data=studenti)

F test to compare two variances

data: memo by fac


F = 0.2539, num df = 30, denom df = 26, p-value = 0.0004306
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.1177357 0.5363377
sample estimates:
ratio of variances
0.2539003

Box 8.11: Test di omogeneità delle varianze.

Il confronto tra le medie può essere eseguito ancora con la funzione t.test(), ma questa
volta dobbiamo utilizzare il default dell’ argomento var.equal=FALSE, in quanto le varianze
non sono omogenee. Le ipotesi contrapposte si possono formalmente esprimere con:
H0 : µ1 = µ2
H1 : µ1 > µ2
L’ipotesi alternativa (H1 ) è monodirezionale in quanto, come già detto, ci si aspetta una
prestazione migliore da parte degli studenti della prima facoltà. Come si può leggere nel
box 8.12, per eseguire un test unidirezionale con questo tipo di ipotesi alternativa specifi-
chiamo l’argomento alternative come greater (maggiore). Per quanto riguarda le variabili
implicate nel test (memo e fac) utilizziamo la stessa scrittura del test precedente.
Nel caso di varianze non omogenee, R esegue automaticamente il test di Welch (1951),
che apporta una correzione ai gradi di libertà.
Dal momento che, secondo l’ipotesi alternativa, ci aspettiamo che la differenza tra µ1 e µ2
sia positiva (true difference in means is greater than 0), prima di tutto dobbiamo
controllare se la statistica calcolata risulti coerente con tale ipotesi. La statistica t viene
calcolata con la seguente formula:
x1 − x2
t=
σ
bx1 −x2
8.3 Campioni non indipendenti 89

in cui x1 e x2 sono le medie campionarie e σ


bx1 −x2 la stima dell’errore standard della
differenza tra le medie campionarie.

> t.test(memo~fac,data=studenti,alternative="greater")

Welch Two Sample t-test

data: memo by fac


t = 2.6859, df = 37.194, p-value = 0.005374
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
1.009179 Inf
sample estimates:
mean in group 1 mean in group 2
19.93548 17.22222

Box 8.12: t-test per campioni indipendenti con varianze non omogenee.

Il segno, positivo o negativo, di t dipende dal segno della differenza a numeratore. Avendo
ipotizzato che µ1 > µ2 dovremmo avere una differenza tra le medie positiva, e di conseguenza
un valore di t positivo. Dalla lettura dell’output (box 8.12) otteniamo conferma di ciò: t =
2.6859. Questa statistica, con 37.194 gradi di libertà, ha una probabilità associata minore di
0.05 (p-value = 0.005374). Concludiamo pertanto che il test è statisticamente significativo
e rigettiamo H0 . Vi sono differenze tra le prestazioni al test di memoria tra gli studenti delle
due facoltà nel senso che quelli della prima hanno punteggi in media migliori degli altri.

8.3 Test sulla differenza tra le medie di due campioni non


indipendenti
Abbiamo un campione formato da coppie di osservazioni relative a ciascuna unità statistica,
(x11 , x12 ), (x21 , x22 ), ..., (xn1 , xn2 ), con medie (x1 , x2 ) e deviazioni standard (s1 , s2 ). Se
vogliamo confrontare le medie per valutare se possano provenire dalla stessa popolazione il
test indicato è il test-t a dati appaiati. Il caso più frequente si ha nelle misure prima-dopo.
Tutte le volte cioè in cui si misura due volte, in tempi successivi, sulle stesse unità statistiche.

Esempio 8.4 Nel data-frame lesi sono riportati i punteggi (fittizi) di 50 soggetti cerebrolesi
ad un test per la valutazione delle funzioni cognitive al momento del ricovero (variabile test)
e al termine di un periodo di terapia (variabile follup). I punteggi sono espressi in modo tale
che valori bassi indicano compromissioni più serie delle funzioni cognitive rispetto ai valori
più alti. Pertanto, se la terapia avesse avuto qualche effetto, ci si aspetta di ottenere punteggi
più alti nella seconda somministrazione. Si vuole sapere se esista una differenza significativa
nelle medie dei punteggi tra il prima e il dopo, formalmente:

H0 : µ0 = µ1

H1 : µ0 < µ1
90 8 Confronti tra medie

in cui l’indice 0 indica il momento del ricovero e 1 il momento della rilevazione dopo la
terapia.

8.3.1 t-test a campioni appaiati


Ancora una volta utilizziamo la funzione t.test(). Nel box 8.13 possiamo leggere come
utilizzare la funzione in questo caso. Si nota che le due variabili sono riportate di seguito,
separate da una virgola. Inoltre dobbiamo specificare che i dati sono appaiati (paired=TRUE)
e che l’ipotesi alternativa è espressa per minore di (alternative=’less’).

> data(lesi,package="ADati")
> attach(lesi)
> t.test(test,follup,paired=TRUE,alternative="less")

Paired t-test

data: test and follup


t = -1.7641, df = 49, p-value = 0.04198
alternative hypothesis: true difference in means is less than 0
95 percent confidence interval:
-Inf -0.2629964
sample estimates:
mean of the differences
-5.3

Box 8.13: t-test per dati appaiati.

L’output ottenuto è identico a quello degli altri test visti precedentemente. C’è il valore
della statistica calcolata (t = -1.7641) con relativi gradi di libertà (df = 49) e probabilità
associata (p-value = 0.04198). Poi viene specificata l’ipotesi alternativa (true difference
in means is less than 0) e di seguito riportato l’intervallo di confidenza e la media delle
differenze calcolate tra le coppie di valori.
Il segno della t è coerente con l’ipotesi (se la media dei punteggi aumenta la differenza
µ0 −µ1 deve essere negativa), la probabilità associata minore di 0.05. Pertanto il test è statisti-
camente significativo, rigettiamo H0 e concludiamo che vi è stato un incremento significativo
dei punteggi.
Capitolo 9

Correlazione bivariata

Abbiamo già accennato più volte, nei capitoli precedenti al concetto di correlazione. In
questo capitolo ci si propone di approfondire il concetto in questione specificandone il campo
di applicazione.
Premettiamo che, in questa sede, si farà riferimento al solo caso bivariato. Si tratta del
caso in cui disponiamo di due variabili X e Y (numeriche o al più ordinali) e siamo interessati
a quantificare la forza dell’associazione (eventuale) tra di esse. La prima operazione che
possiamo fare per valutare il grado di associazione è una rappresentazione grafica con un
grafico a dispersione (vedi par. 3.4.5).
In figura 9.1 sono rappresentati quattro tipi di relazione tra due variabili. Si ha una
relazione lineare quando i punti nel grafico tendono a disporsi lungo una ipotetica retta. Tale
relazione può essere positiva (fig. 9.1[A]) quando all’aumento dei valori della variabile in
ascissa corrisponde un aumento dei valori della variabile in ordinata. Viceversa la relazione è

[A] [B]

[C] [D]

Figura 9.1: Esempi di distribuzioni bivariate: [A] Relazione lineare positiva. [B] Relazione lineare
negativa. [C] Relazione nulla. [D] Relazione non lineare.
92 9 Correlazione bivariata

negativa (9.1[B]). Se i punti si distribuiscono sul piano senza regolarità significa che non vi è
relazione tra le variabili (9.1[C]). Se infine i punti si dispongono sul piano con conformazioni
approssimativamente regolari, ma che non sono interpolabili con una retta, si ha una relazione
non lineare (9.1[D]).
Per quantificare l’intensità delle relazioni si utilizza generalmente il coefficiente di correla-
zione. Si tratta di un indice costruito in modo da variare tra -1 e +1. Quando vale +1 indica
perfetta relazione lineare positiva, significa che i punti sono tutti perfettamente disposti lun-
go una retta crescente. Quando vale -1 i punti sono perfettamente disposti lungo una retta
decrescente, si ha allora una perfetta relazione lineare negativa. Quando vale 0 vuol dire che
le variabili non sono correlate, o, in altri termini, che sono tra loro indipendenti. In generale,
più il valore si allontana da 0 (e si avvicina a ±1) più la relazione è forte. Negli esempi in
figura 9.1, i valori calcolati di correlazione sono rispettivamente: [A] 0.838, [B] -0.689, [C]
0.089, [D] -0.124.
Esistono vari tipi di coefficienti di correlazione, in questo capitolo ne vediamo due: il
coefficiente di Bravais-Pearson e quello di Spearman.

9.1 Coefficiente di correlazione di Bravais-Pearson


Abbiamo già introdotto tale coefficiente nella sezione 4.2.2. Date due variabili osservate x e
y, la formula per il calcolo del coefficiente di correlazione di Bravais-Pearson è
Pn
(xh − x)(yh − y) covxy
rp = pPn h=1 pPn =
h=1 (xh − x)
2
h=1 (yh − y)
2 sx sy
in cui (xh , yh ), h = 1, ..., n, sono i valori delle due variabili, x e y le medie. Tale formula è
equivalente al rapporto tra la covarianza (covxy ) e il prodotto delle deviazioni standard delle
due variabili (sx sy ).
Notiamo un aspetto importante: dal momento che nella formula per il calcolo di r com-
paiono le medie (e le deviazioni standard) delle variabili, è evidente che x e y devono essere
variabili per cui la media ha senso, devono cioè essere variabili numeriche (almeno su scala
ad intervalli).

soggetto età statura (cm)


1 6 115
2 6 120
3 7 122
4 8 130
5 8 128
6 9 134
7 10 136
8 10 140
9 11 147
10 12 151

Tabella 9.1: Età e statura in cm di un campione di 10 bambini.


9.1 Coefficiente di correlazione di Bravais-Pearson 93

Esempio 9.1 Supponiamo di avere misurato la statura di 10 bambini di età compresa tra 6 e
12 anni e di riportare i dati in tabella 9.1. Per il calcolo della correlazione possiamo utilizzare
la funzione cor(), come illustrato nel box 9.1.

> anni <- c(6,6,7,8,8,9,10,10,11,12)


> cm <- c(115,120,122,130,128,134,136,140,147,151)
> cor(anni,cm)
[1] 0.9866425

Box 9.1: Calcolo della correlazione tra due variabili.

Abbiamo ottenuto un’alta correlazione positiva in quanto r è molto vicino a +1. La


correlazione tra età ed altezza nel campione considerato è molto forte.
Nell’interpretazione di r bisogna però essere molto cauti. Vediamo il seguente esempio.

Esempio 9.2 In figura 9.2[A] è rappresentata la distribuzione di due variabili con correla-
zione 0.031. Se ci attenessimo a tale indicazione saremmo portati a concludere che non esiste
una relazione tra le due variabili.
In realtà la relazione tra le due variabili è perfettamente determinata dalla funzione coseno
y = cos(x). Se tracciamo la curva di tale funzione (fig. 9.2[B]) osserviamo che essa passa
esattamente per tutti i punti.

Questo esempio ci dimostra che un valore di r basso, non necessariamente implica assenza
di relazione. Il coefficiente di Bravais-Pearson permette infatti di valutare l’intensità delle
relazioni lineari, non altre. Nel caso di questo esempio la relazione è perfetta ma non lineare
e pertanto r non è in grado di rilevarla.

[A] [B]
1.0

1.0
0.5

0.5
0.0

0.0
-0.5

-0.5
-1.0

-1.0

r = 0.031 r = 0.031

5 10 15 20 5 10 15 20

Figura 9.2: Caso di apparente non relazione.


94 9 Correlazione bivariata

[A] [B]
15

15
10

10
5

5
r = 0.82 r = 0.82
0

0
0 5 10 15 20 0 5 10 15 20

[C] [D]
15

15
10

10
5

r = 0.82 5 r = 0.82
0

0 5 10 15 20 0 5 10 15 20

Figura 9.3: Quattro casi esemplari con correlazione identica r = 0.82 (Anscombe, 1973).

Esempio 9.3 In figura 9.3 sono riportati quattro casi particolari in cui, a parità di correla-
zione (r = 0.82) si osservano distribuzioni molto diverse tra loro (Anscombe, 1973).
In particolare si può osservare che nei casi [C] e [D] basta togliere il dato anomalo rispetto
agli altri per ottenere dei risultati molto diversi. Nel caso [C], togliendo il valore di coordinate
(13, 12.74) si ottiene una correlazione perfetta (r = 0.999); tutti gli altri punti infatti si trovano
lungo la stessa ipotetica retta. Nel caso [D] invece, togliendo il caso di coordinate (19, 12.50),
non è più possibile calcolare la correlazione in quanto i valori in ascissa sono tutti uguali e di
conseguenza X non è più una variabile.

Da questi esempi, sembra evidente che l’interpretazione del coefficiente di correlazione


dovrebbe sempre essere sostenuta anche da un’analisi grafica che permetta di osservare quale
sia l’effettiva relazione tra le variabili considerate.

9.1.1 Test per saggiare la significatività statistica di r


Nella sezione 6.3.3 abbiamo già discusso le criticità relative alla significatività statistica di r.
Vediamo ora come eseguire il test statistico in R. La funzione da utilizzare è cor.test().
Riprendiamo i dati dell’esempio 8.4 (pag. 89, data-frame lesi), vogliamo calcolare la
correlazione tra i punteggi al momento del ricovero (variabile test) e al termine della terapia
(variabile follup) e valutare se tale correlazione risulti statisticamente significativa. L’ipotesi
zero può essere espressa formalmente con:

H0 : ρ = 0

Ricordiamo che tale tipo di test valuta semplicemente se la correlazione osservata risulti
significativamente diversa da zero, non se la relazione tra le variabili sia forte.
Nel box 9.2 si vede come utilizzare la funzione cor.test(). Tale funzione riceve co-
me argomenti obbligatori i nomi delle variabili (test e follup). Per default R esegue il
9.1 Coefficiente di correlazione di Bravais-Pearson 95

> data(lesi,package="ADati")
> attach(lesi)
> cor.test(test,follup)

Pearson’s product-moment correlation

data: test and follup


t = -0.8152, df = 48, p-value = 0.419
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.3827513 0.1669242
sample estimates:
cor
-0.1168529

Box 9.2: Test sul coefficiente di correlazione.

test bidirezionale (H1 : ρ 6= 0), per modificare l’ipotesi alternativa si può utilizzare il pa-
rametro alternative, allo stesso modo del test t. Anche l’output è equivalente a quello
già visto; troviamo nell’ordine: la statistica test (t = -0.8152) con relativi gradi di libertà
(df = 48) e probabilità associata (p-value = 0.419), la formulazione dell’ipotesi alternativa
(true correlation is not equal to 0), gli estremi dell’intervallo di confidenza relativi al
coefficiente di correlazione e il valore di r stimato (-0.1168529).
La probabilità associata risulta maggiore di 0.05, conseguentemente il test non è stati-
sticamente significativo e pertanto la correlazione non è significativamente diversa da zero.
Inoltre, il valore osservato di r indica una relazione debole tra i punteggi del test nella prima
somministrazione e dopo la terapia.

9.1.2 Caso in cui ρ 6= 0


Il test eseguibile con la funzione cor.test() considera sempre come ipotesi H0 che la cor-
relazione vera nella popolazione sia nulla (ρ = 0). Tale test può anche essere considerato
superfluo in quanto, data la natura particolare del coefficiente di correlazione (compreso tra
-1 e +1), r può essere letto come misura di relazione nella sostanza (Cohen, 1988).
Supponiamo però di sapere che, nella popolazione, il vero valore di correlazione (ρ) sia
diverso da zero. Possiamo pertanto essere interessati ad un test con ipotesi del tipo

H0 : ρ = θ

in cui θ è un valore qualunque compreso tra -1 e 1. Per valutare tale ipotesi dobbiamo
tenere conto di alcune proprietà della distribuzione campionaria di r. È noto che, se il vero
coefficiente di correlazione nella popolazione (ρ) è uguale a zero, la distribuzione campionaria
di r è normale con media zero. Quanto più il valore vero si allontana da zero tanto più la
distribuzione campionaria di r diventa asimmetrica, e quindi si allontana dalla normale.
Abbiamo già trattato nel capitolo 5 il concetto di distribuzione campionaria con partico-
lare attenzione per la media e la varianza. Per capire il concetto di distribuzione campionaria
96 9 Correlazione bivariata

della correlazione, si consideri una popolazione Ω e due variabili X1 e X2 che, in tale po-
polazione, hanno correlazione ρ = θ. Se estraiamo da Ω un campione di numerosità n, cioè
di n coppie di valori rispettivamente da X1 e X2 , e calcoliamo la correlazione tra i valori
campionari ci aspettiamo di ottenere un certo valore r non necessariamente uguale al vero
valore di correlazione θ. Immaginando di ripetere il campionamento per B volte, calcolando
la correlazione in ciascun campione, otterremo una distribuzione di valori rj∗ con j = 1, ..., B.
Tale insieme di valori calcolati è la distribuzione campionaria di r. Si verifica che il valore
atteso di tale distribuzione campionaria risulta essere uguale al valore vero di correlazione
nella popolazione, formalmente:
E(r) = ρ = θ

Se ρ = 0 la distribuzione campionaria è anche di forma normale, se ρ 6= 0 essa diventa sempre


più asimmetrica all’aumentare del valore di ρ.
In figura 9.4 sono rappresentate alcune distribuzioni campionarie di r per vari valori di ρ.
Tali distribuzioni sono state ottenute estraendo per B = 5000 volte delle coppie di variabili
di numerosità n = 50 da popolazioni con correlazione 0 (fig. 9.4[A]), 0.3 (fig. 9.4[B]), 0.6 (fig.
9.4[C]), 0.9 (fig. 9.4[D]). Si osserva che, aumentando il valore di ρ le distribuzioni diventano
sempre più asimmetriche.
La ricaduta pratica di questo fatto è che il test utilizzato per saggiare l’ipotesi H0 : ρ = 0
non può essere utilizzato quando si ipotizzi che ρ = θ con θ 6= 0. Di conseguenza anche la
funzione cor.test() non è utilizzabile.
Fisher (1921) ha dimostrato che se si trasforma r con la seguente formula

1 + r
z = (0.5)ln

1 − r

[A]

-1.0 -0.5 0.0 0.5 1.0

[B]

-1.0 -0.5 0.0 0.5 1.0

[C]

-1.0 -0.5 0.0 0.5 1.0

[D]

-1.0 -0.5 0.0 0.5 1.0

Figura 9.4: Distribuzioni campionarie del coefficiente di correlazione con valori diversi del valore vero
di ρ: [A] ρ = 0. [B] ρ = 0.3. [C] ρ = 0.6. [D] ρ = 0.9.
9.2 Coefficiente di correlazione di Spearman 97

si ottiene una statistica (z) la√cui distribuzione campionaria è approssimativamente nor-


male con errore standard σz = 1/ n − 3, in cui n è la numerosità del campione. Nel pacchetto
ADati è disponibile la funzione cor.testF() che utilizza tale trasformazione per eseguire il
test.

Esempio 9.4 In una ricerca sulla relazione esistente tra consumo di alcool e tabacco in Gran
Bretagna, è stata rilevata una correlazione pari a 0.78 tra la spesa media in alcolici e la spesa
media in tabacco (Moore & McCabe, 1989). Un ricercatore vuole valutare se in Italia vi sia lo
stesso tipo di correlazione. A tale fine seleziona un campione di 90 città e rileva per ciascuna
di esse le stesse due variabili ottenendo una correlazione pari a 0.65. Le ipotesi relative al
test sono formulate con:
H0 : ρ = 0.78
H1 : ρ 6= 0.78
in cui H0 postula che il campione proviene da una popolazione in cui la correlazione tra
le variabili consumo di alcool e di tabacco è 0.78.

> library(ADati)
> cor.testF(r=.65,N=90,rho=.78)

Fisher’s correlation test

data: N = 90 r = 0.65
z = -2.5191, p-value = 0.01177
alternative hypothesis: true correlation is not equal to 0.78

Box 9.3: Test sul coefficiente di correlazione con ipotesi H0 = 0.78.

Nel box 9.3 è illustrato come utilizzare la funzione cor.testF() per eseguire il test. Gli
argomenti richiesti sono: il valore calcolato di r, la numerosità del campione (N) e il valore
ipotizzato della correlazione nella popolazione (rho). Esiste anche la possibilità di eseguire test
unidirezionali con il parametro alternative posto a less (minore) o greater (maggiore).
Nell’output viene stampato il valore della statistica test (z = -2.5191) con relativa pro-
babilità associata (p-value = 0.01177). Il valore di p, minore di 0.05, porta a rigettare H0
e concludere che il campione non proviene da una popolazione in cui la correlazione è 0.78.

9.2 Coefficiente di correlazione di Spearman


Il coefficiente di Bravais-Pearson può essere utilizzato solo per variabili numeriche in cui la
media e la varianza abbiano senso e nel caso in cui la relazione tra esse sia lineare. Per essere
una statistica valida rp richiede inoltre che il campione sia tratto da una popolazione in cui
entrambe le variabili hanno distribuzione normale. Nel caso di variabili che non rispettano
tali condizioni possiamo ricorrere al coefficiente di correlazione di Spearman. Tale coefficiente
si basa, anziché sui punteggi, sui ranghi, pertanto richiede che le variabili siano almeno di
scala ordinale e non risente del tipo di distribuzione dei punteggi stessi.
98 9 Correlazione bivariata

Per utilizzare il coefficiente di Spearman è sufficiente aggiungere la specifica ’spearman’


nell’argomento method nelle funzioni cor() o cor.test(). Nel box 9.4 vediamo come utiliz-
zare le due funzioni in questione con gli stessi dati dell’ esempio 8.4 (pag. 89). In particolare,
si confronti il risultato del test sul coefficiente di correlazione con quello eseguito nel box 9.2.

> cor(test,follup,method="spearman")
[1] -0.09929027
> cor.test(test,follup,method="spearman")

Spearman’s rank correlation rho

data: test and follup


S = 22892.72, p-value = 0.4927
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
-0.09929027

Warning message: Impossibile calcolare p-value esatti in presenza


di ties in: cor.test.default(test, follup, method = "spearman")

Box 9.4: Test sul coefficiente di correlazione di Spearman.

L’ipotesi sottoposta a test è H0 : ρs = 0, cioè che la correlazione (per ranghi) osservata sul
campione (rs = −0.099) è diversa da zero solo per effetto del caso. La probabilità associata
alla statistica test (S = 22892.72) è 0.49, superiore a 0.05, di conseguenza non possiamo
rigettare H0 e concludiamo che la correlazione osservata non è statisticamente significativa.
Il messaggio di warning avverte di un limite del coefficiente. Può capitare che due o più
unità statistiche ottengano lo stesso punteggio nella stessa variabile. Quando ciò accade,
a ciascun punteggio viene associata la media dei ranghi che avrebbero ottenuto se fossero
stati diversi (vedi box 9.5). Se la proporzione di osservazioni identiche (ties) è molto grande
si possono avere effetti di distorsione sul coefficiente calcolato e conseguentemente risulta
impossibile il calcolo della probabilità esatta associata alla statistica test.

> x <- c(1,2,2,3,4,4,4,4)


> x
[1] 1 2 2 3 4 4 4 4
> rank(x)
[1] 1.0 2.5 2.5 4.0 6.5 6.5 6.5 6.5

Box 9.5: Esempio di calcolo dei ranghi con la funzione rank().

Come ultima osservazione, riprendiamo i dati di Anscombe (1973) riportati in figura 9.3
e calcoliamo su questi il coefficiente di correlazione per ranghi1 . Mentre con Bravais-Pearson
1
I dati sono disponibili in un data-frame di R ottenibile con il comando data(anscombe).
9.3 Calcolo della potenza associata a r 99

otteniamo sempre lo stesso valore (0.82), con il coefficiente di Spearman otteniamo i seguenti
valori: [A] rs = 0.82, [B] rs = 0.69, [C] rs = 0.99, [D] rs = 0.50. Solo nel caso [A] il valore
ottenuto è lo stesso del coefficiente di Bravais-Pearson, in tutti gli altri casi l’uso dei ranghi
comporta una variazione sensibile nella correlazione calcolata.

9.3 Calcolo della potenza associata a r


Nella sezione 6.3.3 abbiamo già visto che r può, di fatto, essere considerato un indice di dimen-
sione dell’effetto. Supponiamo allora di voler stimare la potenza associata al test eseguito nel
box 9.2. Il pacchetto pwr (Champely, 2012) dispone di una funzione apposita: pwr.r.test().
Nel box 9.6 è illustrato come utilizzare tale funzione. Per il caso in esame è sufficiente inserire
la numerosità campionaria (n) e il valore della correlazione calcolato nel campione (r).

> library(pwr)
> pwr.r.test(n=50,r=cor(test,follup))

approximate correlation power calculation (arctangh transformation)

n = 50
r = 0.1168529
sig.level = 0.05
power = 0.1237547
alternative = two.sided

Box 9.6: Funzione per il calcolo della potenza associata a r.

Abbiamo ottenuto una potenza piuttosto bassa (0.12). Questo significa che il campione è
troppo ridotto per individuare una correlazione significativamente diversa da zero qualora ρ
fosse realmente uguale alla correlazione rilevata nel campione (0.12).
Capitolo 10

Regressione lineare semplice

Abbiamo visto, nel precedente capitolo, che per quantificare la forza della relazione tra due va-
riabili utilizziamo il coefficiente di correlazione. Tale approccio si può formalmente ricondurre
ad un modello di tipo simmetrico in quanto ci interessa solamente determinare l’intensità della
relazione tra le variabili coinvolte. Immaginiamo ora di essere interessati a valutare in quale
misura una variabile tenda, in media, ad aumentare (o diminuire) al modificarsi di un’altra
variabile. In altri termini, vogliamo descrivere, con una forma matematica, la modalità con
cui una variabile agisce su un’altra. Le funzioni matematiche per descrivere tale relazione
sono virtualmente infinite ma in questa sede ci concentreremo sul modello più semplice, quel-
lo lineare. Si tratta in pratica di determinare il legame tra due variabili X (predittore) e Y
(variabile dipendente) con una funzione lineare del tipo

Y = β0 + β1 X

Tale funzione può essere rappresentata graficamente con una retta in cui β0 rappresenta
l’intercetta, cioè il valore che assume Y quando X vale zero, e β1 il coefficiente angolare, cioè
l’incremento di Y per ogni incremento unitario di X.
Riprendiamo i dati della tabella 9.1 e rappresentiamoli graficamente con un grafico a
dispersione (fig. 10.1[A]). Il problema che ci poniamo è di individuare una retta che interpoli
i vari punti e ci permetta di descrivere sinteticamente la relazione tra le due variabili (età ed
altezza). Come si può vedere dalla figura 10.1[B], le rette possibili sono moltissime. Si tratta
allora di individuare una retta in maniera rigorosa ed oggettiva, in pratica di scegliere quella
che possiamo ritenere la migliore per qualche ragione. In particolare, dato che i valori di X
e Y sono noti, il problema diventa la stima dei parametri β0 e β1 . La retta individuata da
questi parametri si definisce retta di regressione.

10.1 Scarti e devianze


Date due variabili osservate x e y, indicheremo con xi e yi il valore dell’osservazione i-sima,
con i = 1, 2, ..., n in cui n è la numerosità delle osservazioni. Siano y e ybi rispettivamente la
media della variabile y ed il valore teorico relativo all’osservazione yi . Quest’ultimo è il valore
atteso di yi nel caso in cui la relazione tra x ed y fosse perfetta e tutti i punti si trovassero
disposti esattamente lungo la retta di regressione.
102 10 Regressione lineare semplice

[A] [B]
145

145
135

135
125

125
115

115
6 7 8 9 10 11 12 6 7 8 9 10 11 12

Figura 10.1: [A] Grafico a dispersione dei valori di età ed altezza (in cm) per un campione di 10
bambini. [B] Rappresentazione di alcune ipotetiche possibili rette che interpolano i punti.

Per capire meglio questi aspetti, in figura 10.2[A] abbiamo selezionato una parte del grafico
in figura 10.1. La linea continua (blu) rappresenta la retta di regressione, la linea tratteggiata
(rossa) indica la media della variabile y.
Data una generica osservazione yi possiamo definire tre tipi di scarto e, a partire da questi,
tre tipi di devianze. La differenza tra il valore osservato e la media delle osservazioni (yi − y)
rappresenta lo scarto dalla media. La rappresentazione grafica di tale scarto è riportata in
figura 10.2[B]. La somma di tutti questi scarti elevati al quadrato è detta devianza totale
n
X
SST = (yi − y)2
i=1

La devianza totale è un indicatore generale di dispersione dei valori intorno alla media,
aumenta all’aumentare della variabilità dei valori di y.
Il secondo tipo di scarto è dato dalla differenza tra i valori attesi sulla retta di regressione
e la media generale (b yi − y). Questo tipo di scarto è rappresentato graficamente in figura
10.2[C]. La somma dei quadrati di tali scarti è detta devianza di regressione.
n
X
SSreg = yi − y)2
(b
i=1

Il terzo tipo di scarto è dato dalla differenza tra il valore osservato ed il corrispondente
valore atteso sulla retta di regressione (yi − ybi ). La rappresentazione di questo scarto è visibile
in figura 10.2[D]. La somma di questi scarti elevati al quadrato è detta devianza residua
n
X
SSres = (yi − ybi )2
i=1
10.2 Modello di regressione 103

[A] [B]
150

150
140

140
yi − ȳ
130

130
9 10 11 12 13 9 10 11 12 13

[C] [D]
150

150
yi − ŷi
140

140
ŷi − ȳ
130

130

9 10 11 12 13 9 10 11 12 13

Figura 10.2: Selezione del grafico in figura 10.1. [A] La linea continua (blu) è la retta di regressione,
la linea tratteggiata (rossa) rappresenta l’altezza media dei bambini. [B] La linea verticale (gialla)
rappresenta lo scarto tra il valore osservato yi e la media y. [C] La linea verticale (gialla) rappresenta
lo scarto tra il valore atteso ybi e la media y. [D] La linea verticale (gialla) rappresenta lo scarto tra il
valore osservato yi e il valore atteso ybi .

Dalle rappresentazioni grafiche nelle figure 10.2[B], [C] e [D] è facile vedere che il primo
scarto è uguale alla somma degli altri due. Si può altresı̀ dimostrare che la devianza totale è
data dalla somma tra devianza di regressione e residua, formalmente:

SST = SSreg + SSres


Utilizzando quest’ultima relazione è possibile determinare in qualche modo la bontà della
retta come espressione della relazione tra le variabili x e y. Infatti, ci si attende che quanto più
la relazione è lineare, tanto maggiormente i punti empirici tenderanno a concentrarsi vicino
alla retta teorica, pertanto la devianza residua sarà più bassa e la variabilità sarà dovuta
ai soli scarti tra valori teorici e media generale. In pratica possiamo dire che la devianza
di regressione rappresenta la quota di variabilità spiegata dalla relazione lineare mentre la
devianza residua è la quota non spiegata.

10.2 Modello di regressione


A questo punto possiamo formulare più precisamente il modello di regressione. La stima dei
parametri β0 e β1 consente di esprimere la retta di regressione come
ybi = β0 + β1 xi
in cui ybi sono i valori attesi relativi ai corrispondenti valori xi .
La relazione tra i valori empirici sarà invece
yi = β0 + β1 xi + i
104 10 Regressione lineare semplice

[A] [B]

Y =X

Y = β0

Figura 10.3: [A] Caso di massima dipendenza funzionale; i valori empirici coincidono con i valori della
retta di regressione: Y = X. [B] Caso di massima indipendenza; la retta di regressione coincide con il
valore medio di Y : Y = β0 = E(Y ).

in cui i rappresenta la componente di errore del modello, cioè la differenza tra il valore
osservato yi ed il corrispondente atteso ybi .
Se la relazione tra x e y fosse perfettamente lineare, tutti i punti sarebbero disposti lungo
la retta di regressione, pertanto gli scarti yi − ybi sarebbero tutti nulli e conseguentemente
sarebbe nulla anche la devianza residua. Si avrebbe in questo caso la massima dipendenza
funzionale (fig. 10.3[A]). Nel caso in cui la retta di regressione fosse coincidente con la media
dei valori di y si annullerebbero tutte le differenze ybi − y e con esse la devianza di regressione.
Si parla in questo caso di massima indipendenza tra le variabili (fig. 10.3[B]).
Pertanto, l’algoritmo di stima dei parametri β0 e β1 ha come obiettivo di minimizzare
la devianza residua, cioè di individuare quei valori dei parametri che rendono minima tale
quantità. Tale algoritmo prende il nome di metodo dei minimi quadrati.

10.2.1 Assunti del modello di regressione


Come tutti i modelli statistici, anche quello di regressione lineare si basa su una serie di
assunti che devono essere rispettati ovvero:

• Indipendenza dei predittori dall’errore. Le X sono misurate senza errore. Tale


assunto è evidente nei disegni sperimentali in cui i valori dei predittori sono sotto il
diretto controllo dello sperimentatore. Nel resto dei casi le X sono ottenute come
risultato di un campionamento e quindi questa assunzione implica che i predittori e gli
errori siano indipendenti nella popolazione da cui abbiamo campionato.

• Indipendenza delle osservazioni. Tutte le coppie di errori i ed j sono tra lo-


ro indipendenti per ogni i 6= j. Detto in altri termini significa semplicemente che le
osservazioni sono state campionate in modo indipendente l’una dall’altra.
10.2 Modello di regressione 105

[A] [B]

Y
[C] X
[D] X

Figura 10.4: Esempi di relazioni: i punti neri indicano i valori osservati (ovvero le coppie (xi , yi )),
i punti rossi indicano i residui (ovvero le coppie (xi , i )). Per ciascun gruppo di punti, le linee rap-
presentano la forma della distribuzione. [A] caso ideale in cui tutti gli assunti sono rispettati; [B]
violazione dell’assunto di linearità; [C] violazione dell’assunto di normalità; [D] violazione dell’assunto
di omoschedasticità.

• Linearità. Il valore atteso dell’errore per un dato valore di X è zero: E(i ) = E(|xi ) =
0. In pratica significa che il valore atteso della variabile dipendente (E(Y )) è una
funzione lineare del predittore.

• Normalità. Gli errori sono distribuiti normalmente: i ∼ N (0, σ 2 ). Questo implica


che anche la distribuzione di yi sia normale con media pari a β0 + β1 xi .

• Varianza costante. La varianza degli errori è costante per qualunque valore di X:


V (|xi ) = σ 2 . Anche in questo caso la varianza costante negli errori implica valori
costanti anche della variabile Y per ciascun valore dato di X.

Per comprendere meglio questi ultimi tre assunti osserviamo la figura 10.4. Nel pannello
[A] è rappresentata la situazione ideale. I punti neri rappresentano i valori osservati, ovvero
le coppie (xi , yi ), mentre i punti rossi rappresentano i residui, ovvero le coppie (xi , i ). Per
ciascun gruppo di punti, le linee rappresentano la forma della distribuzione. Si osserva che
per ciascun valore di xi le distribuzioni dei residui sono normali, con media 0 e varianza
costante σ 2 . Nel pannello [B] osserviamo la violazione all’assunto di linearità: possiamo
notare che il valore atteso dei residui per i diversi valori della X risulta sistematicamente
diverso da zero e, di conseguenza, la relazione tra le variabili risulta di tipo non lineare. Nel
pannello [C] è rappresentato un caso di violazione dell’assunto di normalità: le distribuzioni
dei residui infatti, pur essendo tutte centrate sullo zero, risultano di forma non normale.
Infine, nel pannello [D] si osserva cosa accade quando è violato l’assunto di omoschedasticità:
all’aumentare dei valori di X infatti la variabilità delle distribuzioni aumenta.
106 10 Regressione lineare semplice

10.2.2 La funzione lm
Per la stima dei parametri β0 e β1 con il metodo dei minimi quadrati in R si può utilizzare
la funzione lm() in cui la sigla sta per linear model (modello lineare).
Riprendiamo il dataset studenti, già utilizzato in precedenza (vedi capitolo 4, ed esempio
8.3, pag. 87). In questo archivio sono presenti le variabili ore e voti. La prima indica il
numero di ore di frequenza ad un corso universitario e la seconda il voto ottenuto all’esame
finale del corso. Si vuole sapere se le ore di frequenza siano predittive del voto.
In figura 10.5[A] sono rappresentati i valori dei voti ottenuti (in ordinata) in funzione delle
ore di frequenza (in ascissa). Risulta abbastanza evidente che l’aumento di ore di frequenza
è associato ad un aumento dei voti. Ipotizzando un aumento lineare, possiamo ricorrere alla
funzione lm() come illustrato nel box 10.1. Gli argomenti della funzione sono le due variabili
del modello (ore e voti) legate tra loro dal simbolo ∼, che in questo contesto si legge come
è funzione di. L’aspetto fondamentale da tenere presente è che la prima variabile da inserire
deve essere la dipendente e la seconda il predittore.
Nell’output che si ottiene si possono leggere le stime dei due parametri, rispettivamente
b0 (stima di β0 ) che è l’intercetta (15.3142) e b1 (stima di β1 ; 0.4051). A partire da questi
valori stimati possiamo scrivere la retta di regressione teorica che sarà:
yb = 15.3142 + 0.4051x
in cui yb rappresenta il voto atteso in funzione di x, numero di ore frequentate. In pratica,
sostituendo ad x le ore si ottiene il voto atteso. Per rappresentare graficamente tale retta, si
può utilizzare la funzione abline() subito dopo il comando plot() nel seguente modo:

abline(lm(voti~ore,data=studenti),col="red")

ottenendo cosı̀ la retta in figura 10.5[B].

[A] [B]
30

30
25

25
20

20
voto

15

15
10

10

0 5 10 15 20 25 30 0 5 10 15 20 25 30

ore di frequenza ore di frequenza

Figura 10.5: Distribuzione dei voti in funzione delle ore di frequenza. [B] La linea (rossa) rappresenta
la retta di regressione stimata.
10.2 Modello di regressione 107

> data(studenti,package="ADati")
> lm(voti~ore,data=studenti)

Call: lm(formula = voti ~ ore)

Coefficients:
(Intercept) ore
15.3142 0.4051

Box 10.1: Uso della funzione lm() per la stima dei parametri di regressione.

10.2.3 Valutazione degli assunti


Per valutare graficamente il rispetto degli assunti possiamo servirci della funzione plot() nel
seguente modo:

plot(lm(voti~ore,data=studenti))

ottenendo i grafici in figura 10.6, ciascuno dei quali offre delle informazioni per stabilire se le
assunzioni del modello lineare sono rispettate:
• Il pannello in alto a sinistra (Residuals vs Fitted) rappresenta i residui i in funzione dei
valori attesi ŷi . I residui dovrebbero distribuirsi sopra e sotto lo zero (indicato con la

Residuals vs Fitted Normal Q-Q


Standardized residuals

2
5

1
Residuals

-3 -2 -1 0
-5

52 52
18 18
1
-15

16 18 20 22 24 26 -2 -1 0 1 2

Fitted values Theoretical Quantiles


Scale-Location Residuals vs Leverage
Standardized residuals
Standardized residuals

1
-1 0 1 2

18
1.5

52 6
1.0
0.5

11
0.5
Cook’s
1 distance
-3
0.0

16 18 20 22 24 26 0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14

Fitted values Leverage

Figura 10.6: Metodo grafico per la valutazione degli assunti. Il pannello in alto a sinistra (Residuals
vs Fitted) rappresenta i residui i in funzione dei valori attesi ŷi ; il pannello in alto a destra (Normal
Q-Q) rappresenta i residui standardizzati in funzione dei quantili della normale; il pannello in basso
a sinistra (Scale-Location) rappresenta la radice quadrata dei residui standardizzati in funzione dei
valori attesi; il pannello in basso a destra (Residuals vs Leverage) rappresenta i residui in funzione del
valore di leverage (leva).
108 10 Regressione lineare semplice

linea tratteggiata grigia). La linea rossa indica il trend stimato delle medie dei residui,
tale linea, nel caso ideale, non deve esprimere alcun tipo di trend particolare (come ac-
cade in figura 10.6); viceversa, ovvero se dovesse individuare un trend, indicherebbe una
violazione dell’assunto di indipendenza dei residui. In questo caso possiamo concludere
che non ci sono problemi in tal senso.

• Il pannello in alto a destra (Normal Q-Q) rappresenta i residui standardizzati in funzione


dei quantili della normale; si tratta di un QQ-plot di cui abbiamo parlato nella sezione
3.4.4 (pag. 28). In pratica i residui standardizzati sono ordinati in senso crescente e
rappresentati in relazione ai quantili della normale standard. Se la distribuzione dei
residui è approssimativamente normale dovremmo osservare che i punti si concentrano
intorno alla linea tratteggiata grigia che indica la perfetta normalità. Anche in questo
caso non rileviamo problemi, possiamo concludere che la distribuzione dei residui è
approssimativamente normale.

• Il pannello in basso a sinistra (Scale-Location) rappresenta la radice quadrata dei re-


sidui standardizzati in funzione dei valori attesi; la linea rossa indica il trend stimato.
Anche in questo caso, come per il grafico del pannello in alto a sinistra, tale linea ros-
sa dovrebbe non esprimere alcun tipo di trend indicando l’omogeneità delle varianze
dei residui. Pertanto, sulla base di questo grafico possiamo, in questo caso, assumere
l’omoschedasticità dei residui.

• Il pannello in basso a destra (Residuals vs Leverage) rappresenta i residui in funzione


del valore di leverage (leva). Tale valore misura la potenziale influenza di un dato sulle
stime dei parametri del modello. Ad esempio un alto valore di leverage unito ad un
alto residuo implica che il dato ha un forte impatto sulle stime. Nel caso rappresentato
si osserva che i soggetti 6 e 11 sono potenzialmente influenti. Una buona misura che
riassume l’influenza di ciascun dato è la distanza di Cook. Nel grafico tale informazione
viene riportata utilizzando delle linee rosse tratteggiate. I punti che cadono nelle aree
esterne delimitate da tali linee presentano distanze grandi e quindi risultano essere valori
influenti. Nel caso riportato in figura 10.6 non abbiamo dati oltre la linea tratteggiata
rossa in basso a destra e quindi concludiamo che non ci sono valori particolarmente
influenti.

10.3 Inferenza sul coefficiente di regressione


Ci poniamo ora il problema di stabilire se le ore frequentate rappresentino un predittore sta-
tisticamente significativo del voto ottenuto. L’intensità della relazione tra le due variabili
è legata al parametro β1 chiamato anche coefficiente di regressione. Geometricamente, tale
coefficiente determina l’inclinazione della retta di regressione ad esso associata. È facile verifi-
care che, quando β1 = 0 la retta risulta parallela all’asse delle ascisse, come nel caso illustrato
in figura 10.3[B]. Come già discusso, questo caso indica che le variabili non sono correlate e
pertanto che la predittività dell’una rispetto all’altra è nulla. Viceversa, ci aspettiamo che
all’aumentare del valore di β1 aumenti la capacità predittiva della variabile x rispetto alla y.
Possiamo pertanto formulare la seguente ipotesi:

H0 : β1 = 0
10.3 Inferenza sul coefficiente di regressione 109

intendendo che, se il coefficiente di regressione è nullo, la relazione tra le variabili è nulla, o al


limite non lineare. Cioè, nell’esempio in questione, che le ore di frequenza non sono predittive
del voto finale. L’ipotesi alternativa dipende dal livello di conoscenza della relazione tra le
due variabili. Poiché in questo caso ci aspettiamo una relazione positiva, confidando nella
bravura del docente, l’ipotesi alternativa sarà:

H1 : β1 > 0

> summary(lm(voti~ore,data=studenti))

Call: lm(formula = voti ~ ore)

Residuals:
Min 1Q Median 3Q Max
-12.5804 -2.5329 0.5968 2.6095 7.4196

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 15.31424 1.61546 9.480 3.05e-13 ***
ore 0.40509 0.07214 5.615 6.37e-07 ***
---
Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

Residual standard error: 4.373 on 56 degrees of freedom


Multiple R-Squared: 0.3602, Adjusted R-squared: 0.3488
F-statistic: 31.53 on 1 and 56 DF, p-value: 6.368e-07

Box 10.2: Uso della funzione summary() per il test sulla significatività statistica dei parametri di
regressione.

Le informazioni relative al test sul coefficiente di regressione e molte altre sono già presenti
nell’oggetto che viene generato dalla funzione lm(). Abbiamo visto però che, in mancanza
di altre indicazioni, R stampa solo i valori stimati dei parametri (box 10.1). Per estrarre
altre informazioni possiamo utilizzare la funzione summary() come illustrato nel box 10.2.
In pratica, inseriamo come argomento di questa funzione l’oggetto che viene creato con la
funzione lm(). Otteniamo un output che può essere diviso in tre parti: statistiche sui residui,
test sui parametri della regressione, altre informazioni generali.
Nella prima parte sono riportate delle statistiche generali sui residui (Residuals), nell’or-
dine: minimo, primo quartile, mediana, terzo quartile e massimo. I residui non sono altro che
gli scarti tra valori osservati e valori attesi dal modello di regressione (yi − ybi ). Per definizione,
la media dei residui è zero e la loro distribuzione dovrebbe essere normale. L’analisi dei residui
permette una prima valutazione sulla bontà dell’adattamento ai dati della retta stimata. In
generale dovremmo attenderci dei residui non troppo elevati (in termini di unità di misura di
y) con valori sia positivi che negativi. La mediana dovrebbe essere vicino allo zero e minimo
e massimo approssimativamente uguali. Nel caso in esame la mediana non è esattamente zero
(ma 0.5968), minimo (-12.5804) e massimo (7.4196) piuttosto diversi. Notiamo però che il
110 10 Regressione lineare semplice

primo (-2.5329) ed il terzo (2.6095) quartile sono quasi uguali e ciò depone a favore di una
distribuzione abbastanza simmetrica.
Nella seconda parte dell’output (Coefficients) sono riportati i risultati relativi ai test
sull’intercetta (Intercept) e sul coefficiente di regressione (ore). Nell’ordine si possono leg-
gere i valori stimati dei parametri (Estimate) con relativo errore standard (Std. Error),
la statistica test utilizzata (t value) con relativa probabilità associata (Pr(>|t|)). Le ipo-
tesi saggiate sono rispettivamente H0 : β0 = 0 e H0 : β1 = 0, in pratica che i parametri
siano uguali a zero. Entrambi i valori di probabilità sono inferiori a 0.05, pertanto i test
sono statisticamente significativi e portano a rigettare H0 . In particolare, con riferimento al
coefficiente di regressione dovremmo concludere che le ore di frequenza sono predittive dei
voti ottenuti. Notiamo però che il test eseguito ha un’ipotesi alternativa bidirezionale. La
dicitura Pr(>|t|) indica infatti che quella riportata è la probabilità di ottenere, se è vera H0 ,
un valore della statistica test (t) superiore a quello osservato (5.615) o minore del suo opposto
(-5.615). Poichè la nostra ipotesi alternativa era unidirezionale (H1 : β1 > 0), dobbiamo
dividere per 2 tale probabilità, dopo avere verificato che il valore stimato di β1 è coerente
con l’ipotesi alternativa, cioè positivo. In questo caso, visto che la probabilità calcolata è già
minore di 0.05, lo sarà ovviamente anche se la dividiamo per 2. In conclusione possiamo dire
che le ore di lezione frequentate sono predittive del voto, nel senso che l’aumento di ore di
frequenza implica un aumento nel voto atteso.
Nell’ultima parte dell’output sono riportate alcune misure che permettono di valutare
l’intensità della relazione tra le variabili ore e voti. Il Residual standard error chiamato
anche errore standard della regressione, indica la variabilità media dei punti intorno alla retta
di regressione. Pertanto, quanto maggiore sarà questo valore tanto minore sarà il potere pre-
dittivo della retta di regressione. R-Squared chiamato anche coefficiente di determinazione
(R2 ) rappresenta la porzione di devianza spiegata dalla relazione lineare (vedi sezione 7.2).
Nel caso in esame di regressione semplice, cioè con un solo predittore ed una sola variabile
dipendente, esso è esattamente il quadrato del coefficiente di correlazione r. Questo indice
varia tra 0 (quando l’influenza di x su y è nulla) e 1 (quando tutti i valori di y sono perfet-
tamente predetti dalla retta di regressione). Adjusted R-squared è lo stesso coefficiente di
determinazione corretto per i gradi di libertà. La lettura di questo indice ci consente di dire
che, nonostante la significatività statistica di β1 , le ore di frequenza sono predittive del voto
solo per meno del 40% (circa il 35%).
Infine, nell’ultima riga c’è il test F per la valutazione dell’ipotesi che il coefficiente di
regressione sia uguale a 0. Nella regressione semplice, con un solo predittore, tale test non è
particolarmente interessante in quanto replica esattamente il test già riportato. Si noti infatti
che la statistica F = 31.53 è il quadrato del valore di t = 5.615 e le probabilità associate a
tali statistiche sono identiche.

10.4 Relazione tra regressione e correlazione


Da un punto di vista prettamente matematico possiamo dire che regressione e correlazione
sono più o meno la stessa cosa. Prendiamo in esame la formula per il calcolo del coefficiente
di correlazione
Pn
(xi − x)(yi − y) covxy
r = pPn i=1 pPn =
i=1 (xi − x)
2
i=1 (yi − y)
2 sx sy
10.4 Relazione tra regressione e correlazione 111

e confrontiamola con la formula per il calcolo del coefficiente di regressione


Pn
(x − x)(yi − y) covxy
b1 = i=1 Pn i 2
=
i=1 (xi − x) s2x

Entrambi hanno al numeratore la covarianza tra le variabili, differiscono invece per il deno-
minatore in quanto r ha il prodotto delle deviazioni standard e b1 la varianza della variabile
assunta come predittore.
In pratica vuol dire che è possibile ottenere r a partire da b1 e viceversa, utilizzando le
seguenti relazioni
sx sy
r = b1 e b1 = r
sy sx
Se analizziamo però il significato statistico dei due coefficienti dobbiamo fare dei distinguo
importanti. Il coefficiente di correlazione ha come obiettivo la misurazione dell’intensità della
relazione (lineare). Si utilizza cioè un modello di tipo simmetrico in cui le variabili sono messe
tutte sullo stesso piano. La regressione invece assegna un ruolo a ciascuna variabile, una come
predittore ed una come dipendente. In questo caso il modello è di tipo asimmetrico ed ha
come obiettivo la misurazione del grado con cui il predittore influenza la variabile dipendente.
Ricordiamo che la presenza di una relazione statisticamente significativa non implica in alcun
modo l’esistenza di una relazione di causa-effetto tra le due variabili (si veda 1.4).
Capitolo 11

Analisi della varianza

L’Analisi della Varianza (ANOVA) è una tecnica statistica che si utilizza per confrontare delle
medie. Si tratta di una estensione del test t, che è in pratica un caso particolare di ANOVA
quando le medie da confrontare sono due. L’ANOVA a sua volta è un caso particolare di
regressione in cui i predittori non sono variabili numeriche ma variabili qualitative oppure
quantitative ma raggruppate in classi. L’obiettivo generale dell’ANOVA è il confronto tra due
o più medie campionarie per valutare se provengano dalla stessa popolazione e, indirettamente,
valutare se vi sia una relazione tra i predittori e le variabili dipendenti.
Vi sono molte tipologie di modelli ANOVA a seconda del numero dei predittori, che in
questo caso vengono chiamati fattori, e di variabili dipendenti. In questo capitolo prendiamo
in considerazione i tre casi più semplici: i modelli ad uno e due fattori tra soggetti ed il
modello entro soggetti. Per comodità, in questo capitolo adotteremo una simbologia ad hoc
(derivata da Keppel, 1991) e un po’ diversa da quella classica dei modelli di regressione. Nel
capitolo 13 riprenderemo il caso dei predittori di tipo categoriale, inserendoli nel modo più
opportuno nella famiglia dei modelli di regressione.

11.1 Modello ad un fattore


Siano A = {a1 , ..., ak } e Y = {yij ; i = 1, ..., nj , j = 1, ..., k} rispettivamente una variabile
discreta (qualitativa o numerica in classi) ed una variabile numerica. La variabile discreta è
il predittore o fattore, con k livelli, ciascuno dei quali corrisponde ad un gruppo o campione
distinto. La variabile numerica Pè la dipendente in cui i indica l’unità statistica e j il gruppo
di appartenenza. Sia poi n = kj=1 nj la numerosità complessiva ottenuta come somma delle
numerosità di ciascun gruppo (nj , con j = 1, ..., k). Se le nj sono tutte uguali si parla di
disegno bilanciato.
Ogni valore osservato della variabile dipendente, yij , può essere scomposto nella somma
di tre elementi:
yij = µ + αj + ij

in cui µ è la media della popolazione da cui è estratta l’unità statistica, αj l’effetto del fat-
tore A nel gruppo j, ij l’errore relativo all’unità i-sima del gruppo j. Da questa formulazione
del modello ANOVA ad un fattore si nota chiaramente la similitudine con l’equazione che
definisce il modello di regressione lineare semplice visto nel precedente capitolo (pag. 104).
114 11 Analisi della varianza

Esempio 11.1 Si vuole studiare l’effetto della deprivazione da sonno in un compito attentivo.
Tale compito consiste nell’individuazione di un oggetto in movimento su uno schermo radar.
16 soggetti vengono suddivisi in quattro gruppi, ciascuno dei quali viene privato del sonno
per un certo numero di ore (4, 12, 20 e 28). I punteggi dei soggetti nel compito sono espressi
nel numero di mancate individuazioni durante un periodo di 30 minuti. I dati (da Keppel,
1991) sono disponibili nel data-frame radar del pacchetto ADati.

Nel box 11.1 vediamo come acquisire i dati e produrre, utilizzando la funzione tapply()
una tabella con medie e deviazioni standard dei punteggi ottenuti dai soggetti dei quattro
gruppi.

> data(radar,package="ADati")
> attach(radar)
> me <- tapply(score,hr,mean)
> ds <- tapply(score,hr,sd)
> ds <- round(ds,2)
> rbind(me,ds)
4 12 20 28
me 26.50 37.75 57.5 61.75
ds 7.14 10.94 15.5 13.82

Box 11.1: Statistiche descrittive relative all’ esempio 11.1.

In questo caso il fattore a si compone di quattro livelli (k = 4) cioè i valori relativi al


tempo di deprivazione da sonno. Si noti che tale variabile è numerica ma con classi precise
di valori.
Sulla base delle medie (e deviazioni standard) rilevate si può sostenere che esista una
relazione tra le ore di deprivazione da sonno ed il numero di mancate individuazioni?

11.1.1 Assunti del modello


Per rispondere alla domanda dell’esempio 11.1 possiamo utilizzare l’ANOVA. Si deve però
tenere presente che tale tecnica richiede che siano verificati i seguenti assunti.

Indipendenza dei punteggi


Significa che i punteggi della variabile dipendente (y) rilevati non sono in alcun modo correlati
tra loro. Tale condizione può essere controllata assegnando a caso i soggetti nelle condizioni
dell’esperimento, cioè nei vari livelli del fattore (a). Si badi bene che l’assegnazione casuale è
condizione non sufficiente a garantire l’assunto. Inoltre, non sempre tale assegnazione risulta
effettivamente praticabile. Ancora, è importante tenere presente che il controllo dell’indipen-
denza dei punteggi va effettuato durante la raccolta dei dati. La non indipendenza dei dati
può confondere i risultati e rendere difficile la determinazione degli effetti.

Distribuzione normale nella popolazione


Significa che i punteggi della variabile dipendente (y), nelle popolazioni da cui sono stati
selezionati i soggetti, si distribuiscono normalmente intorno alla loro media. Alcuni studi
11.1 Modello ad un fattore 115

condotti con metodi Monte Carlo (Clinch & Keselman, 1982) hanno comunque dimostrato
che se le distribuzioni dei punteggi sono non-normali, ma simmetriche, o quando la numerosità
campionaria è sufficientemente elevata l’ANOVA non ne risente particolarmente. Se invece le
distribuzioni sono asimmetriche il problema diventa più rilevante (Bradley, 1980a, 1980b).
Nella sezione 8.1.1 abbiamo già illustrato come valutare graficamente e con la funzione
ks.test() se l’assunto di normalità è rispettato. Nel box 11.2 è illustrato come esempio l’uso
della funzione shapiro.test() per eseguire il test di normalità con il metodo Shapiro-Wilk.
La scrittura which(hr==12), riportata tra parentesi quadre relative alla variabile score, serve
a far eseguire il test solo per i soggetti deprivati di sonno per 12 ore.

> shapiro.test(score[which(hr==12)])

Shapiro-Wilk normality test

data: score[which(hr == 12)]


W = 0.9023, p-value = 0.4424

Box 11.2: Test di normalità di Shapiro-Wilk.

Il test non risulta statisticamente significativo (0.4424 > 0.05), pertanto non possiamo ri-
gettare l’ipotesi H0 secondo la quale la distribuzione dei dati è normale, almeno per i punteggi
relativi al gruppo “12 ore”.

Omogeneità delle varianze

Significa che le varianze dei punteggi della variabile dipendente (y), nelle popolazioni da
cui sono stati selezionati i soggetti, sono uguali. La violazione a questa assunzione è par-
ticolarmente critica quando il rapporto tra la varianza campionaria maggiore e la varianza
campionaria minore è maggiore o uguale a 9. Un altro caso in cui l’effetto di eterogeneità
delle varianze ha un peso considerevole è quando i gruppi che si stanno confrontando hanno
numerosità differenti.
Per controllare tale assunto possiamo effettuare un test di omogeneità delle varianze.
Abbiamo già presentato, nella sezione 8.2.1, tale test eseguito con la funzione var.test().
Un’altra funzione disponibile in R è bartlett.test() che fa riferimento al test di Bartlett.
Nel box 11.3 è illustrato un esempio d’uso di tale funzione. La prima variabile inserita è la
dipendente (score), la seconda il fattore (hr).

> bartlett.test(score,hr)

Bartlett test of homogeneity of variances

data: score and hr


Bartlett’s K-squared = 1.5938, df = 3, p-value = 0.6608

Box 11.3: Test di Bartlett per l’omogeneità delle varianze.


116 11 Analisi della varianza

L’ipotesi H0 del test eseguito può essere formalmente espressa come segue:

H0 : σ42 = σ12
2 2
= σ20 2
= σ28

cioè che le varianze delle popolazioni da cui provengono i quattro campioni sono identiche.
Dal momento che il test non è statisticamente significativo (0.6608 > 0.05), non possiamo
rigettare H0 e concludiamo che le varianze sono tra loro omogenee.

11.1.2 Scomposizione della devianza


Una volta che siano stati valutati gli assunti possiamo passare all’ANOVA vera e propria. Le
ipotesi contrapposte saranno definite con:

H0 : µ1 = ... = µk

H1 : µi 6= µj per almeno una coppia con i 6= j; i = 1, ..., k, j = 1, ..., k

H0 postula in pratica che le medie delle popolazioni da cui sono stati estratti i gruppi
sono uguali. H1 che almeno due medie sono diverse tra di loro. Si tenga presente questa
formulazione di H1 in quanto risulta abbastanza frequente travisarla con l’ipotesi secondo la
quale le medie sono tutte diverse tra loro. Nella sostanza, con l’ANOVA possiamo solamente
stabilire se le medie rilevate possano considerarsi omogenee o meno. Infatti, è sufficiente
che una media si discosti dalle altre per ottenere un risultato statisticamente significativo e
rigettare H0 , ma questo non implica che tutte le medie siano diverse tra loro. Il problema
di stabilire quante e quali medie si differenziano dalle altre non è risolvibile con l’ANOVA
ma richiede un altro tipo di analisi (post hoc, confronti multipli, etc.) di cui tratteremo nel
capitolo 12.
Il principio su cui si basa l’ANOVA è quello di scomposizione della devianza. Nella sezione
10.1 abbiamo definito la devianza come la somma dei quadrati degli scarti dalla media ed
abbiamo visto come tale devianza si scomponga in una quota di regressione ed una quota
residua. Nell’ANOVA, dato che si tratta di un caso particolare di regressione, avremo una
scomposizione molto simile. Avremo pertanto una devianza totale, definita con
nj
k X
X
SST = (yij − y)2
j=1 i=1

ossia la somma dei quadrati degli scarti di tutte le osservazioni (yij ) dalla media generale
(y). Tale quantità si scompone in una devianza tra i gruppi :
k
X
SSA = nj (y j − y)2
j=1

cioè la somma dei quadrati degli scarti tra le medie dei k gruppi (y j ) e la media generale
(y);
ed una devianza entro i gruppi :
nj
k X
X
SSS/A = (yij − y j )2
j=1 i=1
11.1 Modello ad un fattore 117

2.0
(1,2)
(2,4)
(3,6)
1.5

(5,10)
(10,30)
d(F )

1.0
0.5
0.0

0.0 0.5 1.0 1.5 2.0 2.5 3.0

Figura 11.1: Esempi di densità F per varie combinazioni di gradi di libertà.

vale a dire la somma dei quadrati degli scarti tra le singole osservazioni (yij ) e la media
del gruppo di appartenenza (y j ). Si può dimostrare che SSA + SSS/A = SST .
Dividendo le devianze appena definite per i rispettivi gradi di libertà (N − 1 per SST ,
k − 1 per SSA , N − k per SSS/A ) si ottengono le corrispondenti varianze, che indicheremo
con M ST , M SA e M SS/A .

11.1.3 La distribuzione F
La logica basilare dell’ANOVA è la seguente: quanto più sarà forte l’effetto del fattore a,
tanto più possiamo attenderci che la variabilità sarà a carico della differenza tra le medie
dei gruppi e di conseguenza avremo un aumento di SSA (o M SA ) ed una diminuzione di
SSS/A (o M SS/A ). Per valutare tale aspetto si ricorre al rapporto tra le varianze che ha una
distribuzione campionaria nota chiamata F :

SSA
k−1 M SA
Fb = SSS/A
= ∼ F((k−1),(N −k))
M SS/A
N −k

in cui Fb è la statistica calcolata e F((k−1),(N −k)) la distribuzione teorica di riferimento con


(k −1) e (N −k) gradi di libertà. Il simbolo ∼ sta ad indicare che la statistica Fb si distribuisce
con densità F .
In figura 11.1 sono rappresentate alcune funzioni di densità F per alcune combinazioni di
gradi di libertà. Si nota come, al variare dei gradi di libertà vari la forma della distribuzione.
In particolare, va sempre tenuto presente che la distribuzione F dipende da due parametri: i
gradi di libertà della varianza al numeratore (varianza tra i gruppi, M SA ) e i gradi di libertà
della varianza al denominatore (varianza entro i gruppi, M SS/A ).
118 11 Analisi della varianza

11.1.4 La funzione anova


A questo punto possiamo eseguire il test statistico vero e proprio. Riprendiamo i dati
dell’esempio 11.1 (pag. 113), l’ ipotesi zero può essere definita come segue

H0 : µ4 = µ12 = µ20 = µ28

ovvero che non vi è differenza tra le medie delle popolazioni con vari livelli di deprivazione da
sonno. In pratica che la deprivazione da sonno non influisce sulle prestazioni dei soggetti.
La funzione che si può utilizzare è anova() in combinazione con la funzione lm() già
presentata nel precedente capitolo. Osserviamo nel box 11.4 come procedere.

> str(radar)
’data.frame’: 16 obs. of 3 variables:
$ subj : num 1 2 3 4 5 6 7 8 9 10 ...
$ hr : num 4 4 4 4 12 12 12 12 20 20 ...
$ score: num 37 22 22 25 36 45 47 23 43 75 ...
> radar$hr <- factor(radar$hr)
> anova(lm(score~hr,data=radar))
Analysis of Variance Table

Response: score
Df Sum Sq Mean Sq F value Pr(>F)
hr 3 3314.2 1104.7 7.3426 0.00471 **
Residuals 12 1805.5 150.5
---
Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

Box 11.4: Analisi della varianza ad un fattore.

La prima istruzione, str(), serve a vedere la struttura del data-frame radar. In partico-
lare, notiamo che la variabile hr è definita come numerica (num) e pertanto, se la utilizzassimo
cosı̀ come è, la funzione lm() produrrebbe un modello di regressione lineare semplice. Dal mo-
mento che vogliamo considerare tale variabile come fattore, utilizziamo il comando factor()
per trasformarla. A questo punto, la funzione anova(), con argomento il risultato del mo-
dello generato da lm(), produce in output la tabella tipica dell’ANOVA. Si noti che vale
sempre la scrittura già trovata precedentemente in cui va inserita prima la variabile dipen-
dente (in questo caso score) e poi il predittore (o, in questo caso, il fattore hr), legate tra
loro dall’operatore ∼.
La tabella finale è organizzata con due righe e cinque colonne. Le righe indicano la
sorgente di variabilità cui si riferiscono le colonne. Le colonne indicano nell’ordine: i gradi di
libertà (Df), le devianze (Sum Sq), le varianze (Mean Sq), il valore calcolato di F (F value) e
la probabilità ad esso associata (Pr(>F)). Nella prima riga, indicata con hr, gradi di libertà,
devianza e varianza sono riferite al fattore. Pertanto indicano la quota di variabilità spiegata
dalla differenza tra le medie. Per riprendere la simbologia utilizzata avremo che 3314.2 = SSA ,
devianza tra i gruppi, e 3314.2/3 = 1104.7 = M SA , varianza tra i gruppi. Nella seconda riga
(Residuals), le stesse quantità sono riferite alla quota di variabilità residua. Di conseguenza
11.1 Modello ad un fattore 119

1805.5 = SSS/A sarà la devianza entro i gruppi e 1805.5/12 = 150.5 = M SS/A la varianza
entro i gruppi. Il rapporto tra le varianze è la statistica F calcolata (7.3426). La probabilità
di osservare un valore di F maggiore di quello calcolato, a condizione che sia vera H0 , è
0.00471. Tale probabilità risulta minore di 0.05, pertanto il test è statisticamente significativo.
Concluderemo rigettando H0 , da cui segue che le medie rilevate non provengono da popolazioni
con la stessa media e pertanto che esiste una relazione tra le ore di deprivazione da sonno e
la prestazione dei soggetti nel compito di riconoscimento.

11.1.5 Dimensione dell’effetto e potenza del test


Nella sezione 7.2 sono stati già presentati alcuni indici di ES relativi all’ANOVA: f di Cohen,
η 2 e ω 2 . Per ciascuno di essi è presente una funzione nel pacchetto ADati, rispettivamente:
Cohen.f(), eta2() e omega2(). Nel box 11.5 è illustrato un esempio di utilizzo delle tre
funzioni in relazione ai dati dell’esempio 11.1 (vedi pag. 113).

> library(ADati)
> Cohen.f(score,hr)

One-way ANOVA Cohen’s f

data.name = score by hr
statistic = 1.1733
effect = large

> eta2(SS.eff=3314.2,SS.tot=1805.5+3314.2)
[1] 0.6473426
> omega2(Fcal=7.3426,k=4,n=4)
[1] 0.54322

Box 11.5: Funzioni per il calcolo dell’ES nell’ANOVA bilanciata ad un fattore.

Cohen.f() richiede in input le variabili implicate, la prima è la variabile dipendente


(score) e la seconda il fattore (hr). L’output prodotto è simile a quello già visto per il
calcolo dell’indice d (capitolo 8). Il valore ottenuto di f (da non confondere con la F ottenuta
nell’ANOVA) è 1.1733 che, secondo le indicazioni riportate da Cohen (1988), indica un effetto
forte.
eta2() si basa sulle devianze dell’effetto (SS.eff=3314.2) e totale (SS.tot=1805.5 +
3314.2) ricavabili dalla tabella dell’ANOVA (vedi box 11.4). Il valore ottenuto, 0.647, ci dice
che il 65% circa della variabilità è attribuibile all’effetto del fattore. Si noti che tale indice è
l’equivalente del coefficiente di determinazione (r2 ) della regressione lineare.
omega2() utilizza il valore di F ottenuto nell’ANOVA (Fcal=7.3426), il numero di gruppi
(k=4) e la numerosità di ciascun gruppo (n=4). Il valore ottenuto, 0.543, indica un effetto
forte.
Per il calcolo della potenza sono disponibili due funzioni: power.anova.test(), che uti-
lizza le varianze e pwr.anova.test(), che si basa sull’indice f , quest’ultima nel pacchetto
pwr (Champely, 2012). Il box 11.6 illustra come utilizzare queste funzioni.
120 11 Analisi della varianza

power.anova.test() richiede in input il numero dei gruppi (groups=4), la numerosità (n=4)


e le varianze tra (between.var=1104.7) ed entro i gruppi (within.var=150.5). La potenza
osservata, relativa all’ANOVA eseguita (box 11.4) risulta molto alta (0.999).
pwr.anova.test() al posto delle varianze utilizza il valore calcolato di ES (f=1.1733), il
numero (k=4) e la dimensione campionaria (n=4) dei gruppi. Anche in questo caso la potenza
osservata è molto alta (0.930).

> power.anova.test(groups=4,n=4,between.var=1104.7,within.var=150.5)

Balanced one-way analysis of variance power calculation

groups = 4
n = 4
between.var = 1104.7
within.var = 150.5
sig.level = 0.05
power = 0.9999999

NOTE: n is number in each group

> library(pwr)
> pwr.anova.test(k=4,n=4,f=1.1733)

Balanced one-way analysis of variance power calculation

k = 4
n = 4
f = 1.1733
sig.level = 0.05
power = 0.9295545

NOTE: n is number in each group

Box 11.6: Funzioni per il calcolo della potenza nell’ANOVA bilanciata ad un fattore.

Come abbiamo già osservato nella sezione 8.2.3 nella stima della potenza va considerato
che essa è massima nel caso in cui i gruppi abbiano la stessa numerosità. Notiamo che infatti
le relative funzioni di R richiedono un unico valore di numerosità in quanto si aspettano che
tale condizione sia rispettata. Nel caso in cui non fosse cosı̀, ovvero in cui ci trovassimo con
gruppi di numerosità diverse, possiamo utilizzare una delle seguenti strategie alternative: 1)
Utilizzare come valore di n quello più basso, ottenendo cosı̀ una stima per difetto (Glantz,
1988); 2) Utilizzare la media armonica delle numerosità (Cohen, 1988); 3) Calcolare due
valori utilizzando la numerosità più bassa e quella più alta individuando quindi un intervallo
di valori possibili per la potenza.
11.1 Modello ad un fattore 121

11.1.6 Violazione all’assunto di omogeneità delle varianze


In generale, l’ANOVA è una tecnica piuttosto robusta, cioè in grado di tollerare un certo
grado di violazione delle assunzioni. Se, ad esempio, la distribuzione nella popolazione, pur
non essendo normale, è simmetrica, oppure se il rapporto tra la varianza maggiore e la varianza
minore non supera 4, l’ANOVA si può considerare applicabile.
L’eterogeneità delle varianze implica un incremento nella possibilità di incorrere in un
errore di I tipo. Ad esempio, un caso particolarmente critico si ha quando i gruppi non sono
numericamente omogenei, specialmente se le numerosità risultano molto diverse. In generale,
tutte le volte che non è rispettata l’omogeneità delle varianze si deve ricorrere a metodi
alternativi.
Un metodo di correzione tra i più noti è quello proposto da Box (1954), basato sul calcolo
di un diverso valore critico per la statistica F . Tale test ha però come limite di essere molto
conservativo, cioè aumenta la probabilità di un errore di II tipo.
Il metodo proposto da Welch (1951) sembra da questo punto di vista migliore sia in termini
di potenza che di controllo dell’errore di I tipo (Kohr & Games, 1974; Keselman, Games, &
Rogan, 1979). Nel pacchetto ADati c’è la funzione Welch() che esegue l’ANOVA con la
correzione per l’eterogeneità delle varianze.
Nel box 11.7 è riportato un semplice esperimento per valutare le differenze tra l’ANOVA
tradizionale ed il metodo di Welch. La prima istruzione utilizza la funzione set.seed(); tale
funzione serve solo a fare in modo che i valori generati dalla successiva funzione rnorm() siano
sempre gli stessi ed i risultati di conseguenza quelli che si leggono nel box.
Le istruzioni di seguito (n1 <- 10; n2 <- 15; n3 <- 20) assegnano le numerosità rispet-
tivamente a 10, 15 e 20, di tre ipotetici campioni.
La quinta istruzione utilizza la funzione rnorm() per generare dati pseudocasuali. In par-
ticolare, l’istruzione rnorm((n1+n2),5,2) genera 25 valori campionati da una distribuzione
normale con media 5 e deviazione standard 2. L’istruzione rnorm(n3,7,8) genera 20 valori
campionati da una distribuzione normale con media 7 e deviazione standard 8. In questo
modo abbiamo il corrispondente di tre campioni con numerosità e medie diverse e varianze
non omogenee. L’istruzione successiva, factor(c(rep(1,n1),rep(2,n2),rep(3,n3))), crea
la variabile fattore assegnando i valori 1, 2 e 3 come etichetta per i gruppi.
Con la funzione bartlett.test() si effettua il test di omogeneità delle varianze che risulta
statisticamente significativo, come era dato attendersi.
Di seguito viene eseguita l’ANOVA senza correzione. Il risultato di questo test è che, non
essendo significativo, non viene rilevata alcuna differenza tra le medie dei tre campioni.
Nell’ultima parte del box si utilizzano le funzioni Welch() e oneway.test() per eseguire
l’analisi con la correzione.
Gli argomenti della funzione Welch() sono nell’ordine: il vettore delle numerosità cam-
pionarie (n=c(n1,n2,n3)), il vettore delle medie campionarie (mx=me), e quello delle varianze
(s2x=va). L’output della funzione è quello classico dei modelli ANOVA (vedi box 11.4), orga-
nizzato in due righe, una per le informazioni relative al fattore (Factor) ed una per i residui
(Residuals), e quattro colonne, contenenti nell’ordine: i gradi di libertà (Df), le varianze cal-
colate (Mean Sq), il valore della statistica test (F value) e la probabilità associata (Pr(>F)).
Come si nota, in questo caso tale probabilità risulta inferiore a 0.05. Il test è statisticamen-
te significativo quindi porta a rigettare l’ipotesi di uguaglianza delle medie, a differenza di
quanto avvenuto con il test senza correzione.
122 11 Analisi della varianza

> # preparazione dati


> set.seed(20120009)
> n1 <- 10
> n2 <- 15
> n3 <- 20
> y <- c(rnorm((n1+n2),5,2),rnorm(n3,7,8))
> A <- factor(c(rep(1,n1),rep(2,n2),rep(3,n3)))

# test di omogeneita’ delle varianze


> bartlett.test(y,A)

Bartlett test of homogeneity of variances

data: y and A
Bartlett’s K-squared = 37.5044, df = 2, p-value = 7.178e-09

# ANOVA senza correzione


> anova(lm(y~A))
Analysis of Variance Table

Response: y
Df Sum Sq Mean Sq F value Pr(>F)
A 2 132.47 66.236 1.6764 0.1993
Residuals 42 1659.43 39.510

# ANOVA con correzione di Welch


> me <- tapply(y,A,mean)
> va <- tapply(y,A,var)
> Welch(n=c(n1,n2,n3),mx=me,s2x=va)
Analysis of Variance Table (Welch correction)

Df Mean Sq F value Pr(>F)


Factor 2.000 4.1497 4.0472 0.02935 *
Residuals 26.309 1.0253

# ANOVA con correzione di Welch (metodo alternativo)


> oneway.test(y~A)
One-way analysis of means (not assuming equal variances)

data: y and A
F = 4.0472, num df = 2.000, denom df = 26.309, p-value = 0.02935

Box 11.7: Confronto tra ANOVA senza correzione e metodo di Welch nel caso di varianze non
omogenee.
11.2 Modello a due fattori 123

Lo stesso test viene eseguito con la funzione oneway.test() cui basta semplicemente
passare la formula y∼A in cui y indica la variabile dipendente e A il fattore. L’output, più
ridotto rispetto a quello della precedente funzione, riporta solo il valore di F con relativi gradi
di libertà e probabilità associata.

11.2 Modello a due fattori


Siano A = {a1 , ..., ak1 } e B = {b1 , ..., bk2 } due variabili discrete (qualitative o numeriche
raggruppate in classi) e Y = {yijh ; i = 1, ..., njh , j = 1, ..., k1 , h = 1, ..., k2 } una variabile
numerica. A e B sono i fattori, rispettivamente con k1 e k2 livelli, Y la variabile dipendente
in cuiPi indica l’unità statistica, j il livello del fattore A e h il livello del fattore B. Sia poi
k1 Pk2
n = j=1 h=1 njh la numerosità complessiva ottenuta come somma delle numerosità di
ciascun gruppo. Anche in questo caso, come nel modello ad un fattore, se le njh sono tutte
uguali si parla di disegno bilanciato.
Ogni valore osservato della variabile dipendente yijh può essere scomposto nella somma
di cinque elementi:
yijh = µ + αj + βh + (αβ)jh + ijh
in cui µ è la media della popolazione da cui è estratta l’unità statistica, αj l’effetto del
fattore A nel livello j, βh l’effetto del fattore B nel livello h, (αβ)jh l’effetto di interazione
nella combinazione di livelli jh e ijh l’errore.
Rispetto al modello ad un unico fattore, l’introduzione di un secondo fattore consente
di effettuare un’analisi saggiando più ipotesi contemporaneamente. In pratica, mentre nel
modello ad una via si valuta solo l’effetto del fattore A, in questo secondo caso valutiamo
contemporaneamente anche l’effetto del fattore B e dell’interazione tra i due fattori.

Esempio 11.2 Consideriamo un esperimento sulle capacità di apprendimento delle scimmie


in relazione al tempo di deprivazione da cibo e l’assunzione di determinati farmaci. Gli animali
vengono sottoposti ad una serie di problemi di identificazione di oggetti e vengono ricompen-
sati con del cibo quando rispondono correttamente. La variabile dipendente è rappresentata
dal numero di errori commessi su 20 tentativi (score). I fattori sono il tipo di farmaco (x, y
e nessuno, indicato con la lettera c, variabile drug) e il tempo di deprivazione da cibo (1 e 24
ore, variabile fdep). Le ipotesi che andremo a saggiare saranno pertanto le seguenti:

1. Se il tipo di farmaco somministrato abbia influenza sul numero di errori (effetto princi-
pale del fattore drug).

2. Se il numero di ore di deprivazione da cibo abbia influenza sul numero di errori (effetto
principale del fattore fdep).

3. Se vi sia un effetto congiunto dei due fattori (effetto di interazione).

I dati (da Keppel, 1991) sono disponibili nel data-frame monkeys del pacchetto ADati.

Il disegno sperimentale dell’esempio implica che ciascun animale riceve un unico tipo di
trattamento dato dalla combinazione dei livelli dei due fattori (disegno tra soggetti). Pertanto,
visto che un fattore ha 3 livelli e l’altro 2, ci saranno in totale 3 × 2 = 6 gruppi diversi di
scimmie e, di conseguenza, 6 medie campionarie. Per avere una prima idea di come queste
124 11 Analisi della varianza

n.ro medio di errori

15
10
5

fdep=1
0

fdep=24

control drug x drug y

Figura 11.2: Numero medio di errori dei sei gruppi di scimmie. In ascissa il tipo di farmaco sommi-
nistrato. Ciascuna linea rappresenta un livello del fattore fdep, tempo di deprivazione da cibo. La
rappresentazione è incorretta perché mancano informazioni relative alla variabilità.

medie si distribuiscano possiamo realizzare una rappresentazione grafica del tipo in figura
11.2.
L’ascissa della figura rappresenta i livelli del fattore drug. L’ordinata indica il numero
medio di risposte errate (score). Per distinguere tra le scimmie deprivate di cibo per un’ora
da quelle deprivate per 24 ore sono utilizzati due simboli diversi. In questo modo è possibile
visualizzare, in particolare, l’effetto di interazione, di cui parleremo tra breve. Per il momento
ci basti segnalare che una figura come la 11.2 è sostanzialmente incorretta perché manca
completamente di informazioni relative alla variabilità.

11.2.1 Intervalli di confidenza


Abbiamo già accennato, nel capitolo 8, al significato dell’intervallo di confidenza in relazione
all’uso della funzione t.test(). L’intervallo di confidenza per un parametro θ (IC) è un
insieme di valori compresi tra un limite inferiore τ l (X) ed uno superiore τ u (X) per cui vale

P [τ l (X) < θ̂ < τ u (X)|θ] = 1 − α

in cui τ (X) è una funzione dei dati osservati X e 1 − α il livello scelto di confidenza, con α
solitamente posto uguale a 0.05. L’IC pertanto individua un insieme di valori all’interno dei
quali ci si attende di trovare il valore della stima del parametro con probabilità 1 − α se θ è
il vero valore del parametro. In altri termini, quando si parla di IC al 95% si intende che la
probabilità che la stima del parametro, il cui valore vero è θ, si collochi tra T1 e T2 è 0.95. Il
calcolo dell’IC si basa sulla stima dell’errore standard del parametro.
Nel pacchetto ADati è disponibile la funzione CI.mean() che permette di calcolare l’in-
tervallo di confidenza relativo ad una o più medie. Il box 11.8 illustra come utilizzare tale
funzione in relazione alle medie dei sei gruppi di scimmie dell’esempio 11.2. Gli argomenti
11.2 Modello a due fattori 125

> me <- aggregate(score,list(drug,fdep),mean)


> ds <- aggregate(score,list(drug,fdep),sd)
> CI.mean(me[,3],ds[,3],4)
$input
mean sd n level
[1,] 3 3.16 4 0.95
[2,] 10 4.76 4 0.95
[3,] 14 3.92 4 0.95
[4,] 11 3.92 4 0.95
[5,] 12 5.48 4 0.95
[6,] 10 4.08 4 0.95

$err.st
[1] 1.581139 2.380476 1.957890 1.957890 2.738613 2.041241

$CI
inf sup
[1,] -2.031889 8.03189
[2,] 2.424262 17.57574
[3,] 7.769120 20.23088
[4,] 4.769120 17.23088
[5,] 3.284512 20.71549
[6,] 3.503859 16.49614

Box 11.8: Calcolo degli intervalli di confidenza.

richiesti sono, nell’ordine, il vettore delle medie, il vettore delle deviazioni standard, ottenuti
con la funzione aggregate() e la numerosità di ciascun gruppo. Dato che, in questo caso, i
gruppi hanno tutti la stessa numerosità (4) è sufficiente inserire tale valore. In alternativa, si
può inserire un vettore con le diverse numerosità campionarie.
La funzione CI.mean() produce in output una lista di tre oggetti: una tabella con i valori
inseriti ($input), il vettore degli errori standard ($err.st) ed una tabella con gli estremi
degli IC ($CI).
Utilizzando l’output della funzione possiamo rappresentare le medie campionarie con i
relativi errori standard (fig. 11.3[A]) oppure con l’intervallo di confidenza associato (fig.
11.3[B]). Questo permette una rappresentazione grafica più appropriata.

11.2.2 Scomposizione della devianza


Il principo di scomposizione della devianza, già illustrato per il caso a fattore singolo, vale
allo stesso modo nel modello a due fattori. Più precisamente, la devianza tra i gruppi viene
ulteriormente scomposta in devianza del fattore A, devianza del fattore B e devianza di inte-
razione (fig. 11.4). Dividendo ciascuna devianza per i rispettivi gradi di libertà si ottengono
le varianze. A questo punto, rapportando le varianze relative agli effetti alla varianza residua
avremo tre statistiche F , ciascuna delle quali relativa ad una delle tre ipotesi del test, che
potremo formalmente formulare come segue:
126 11 Analisi della varianza

[A] [B]
n.ro medio di errori

15

15
10

10
5

5
fdep=1
0

0
fdep=24

control drug x drug y control drug x drug y

Figura 11.3: Rappresentazioni corrette delle medie e relativi indici di variabilità. [A] le linee verticali
rappresentano l’errore standard. [B] le linee verticali rappresentano l’intervallo di confidenza al 95%.

1. H0 : αj = 0; ∀j
ovverosia, l’effetto del fattore A è nullo, le medie relative ai gruppi definiti dai livelli di
A, indipendentemente dai livelli di B, sono tutte uguali.

2. H0 : βh = 0; ∀h
ovverosia, l’effetto del fattore B è nullo, le medie relative ai gruppi definiti dai livelli di
B, indipendentemente dai livelli di A,sono tutte uguali.

3. H0 : (αβ)jh = 0; ∀j, h
ovverosia, l’effetto di interazione è nullo.

11.2.3 La funzione aov


In R esistono numerose funzioni per l’ANOVA, abbiamo già visto la funzione anova() appli-
cata al modello a fattore singolo. Ora vediamo come utilizzare la funzione aov(), sempre in
relazione ai dati dell’esempio 11.2, tenendo presente che entrambe le funzioni possono essere
utilizzate sia per il modello a fattore singolo che per quello a due o più fattori.
Il procedimento è illustrato nel box 11.9. Il primo argomento della funzione aov() è una
formula che definisce il modello. La variabile dipendente (score) è inserita prima dell’opera-
tore ∼, i fattori (drug e fdep) subito dopo. La scrittura drug*fdep indica al programma che
il modello è saturo, cioè che comprende tutti gli effetti possibili (dei fattori drug e fdep e di
interazione). In pratica, con questa scrittura, si esegue la scomposizione illustrata in figura
11.4 e si ottengono tre valori di F . Il secondo argomento della funzione aov() è il nome del
data-frame che contiene le variabili. Si tratta di un parametro opzionale, se inserito rende
inutile il comando attach() perché comunica a R dove sono le tre variabili del modello.
11.2 Modello a due fattori 127

SST
(n -1)

SStra SSS/AB
(k1k2-1) (n - k1k2)

SSA SSB SSA×B


(k1-1) (k2-1) (k1-1)(k2-1)

Figura 11.4: Schema della scomposizione della devianza in un disegno a due fattori tra soggetti. Tra
parentesi sono indicati i gradi di libertà relativi. n è la numerosità campionaria complessiva, k1 i livelli
del fattore A, k2 i livelli del fattore B.

La funzione aov() produce un oggetto contenente una serie di informazioni relative ai dati
e all’analisi svolta. Utilizzando la funzione summary() su tale oggetto si ottiene in output
la tabella dell’ANOVA. Osserviamo che la tabella si compone delle stesse colonne osservate
per il modello ad un solo fattore (vedi box 11.4) mentre cambia il numero di righe in quanto
vengono eseguiti tre test anziché uno.
La riga drug è relativa all’effetto principale del farmaco, prima ipotesi formulata. Il
risultato non è significativo (Pr(>F)=0.07208) quindi concludiamo che non vi è un effetto
del tipo di farmaco somministrato sulle prestazioni delle scimmie. La riga fdep è relativa
alla seconda ipotesi, cioè all’effetto delle ore di deprivazione da cibo. Anche in questo caso
non otteniamo un risultato statisticamente significativo (Pr(>F)=0.26755), pertanto neppure
questo fattore ha effetto. La scrittura drug:fdep indica l’effetto di interazione. Questa volta il
test è significativo (Pr(>F)=0.03843), l’interazione tra i due fattori influisce sulle prestazioni
degli animali.
Se anziché utilizzare un modello a due fattori avessimo fatto due analisi separate, una per
il fattore drug, ed una per fdep, non avremmo trovato alcuna differenza tra le medie dei tre
e due gruppi. Il modello a due fattori ci permette di ottenere un’informazione in più, relativa
alla relazione che può esistere tra i fattori. Vediamo meglio cosa significa.

11.2.4 Interpretazione dell’interazione


In un disegno fattoriale, gli effetti principali indicano gli effetti di ciascun singolo fattore, al
netto degli altri fattori coinvolti. L’interazione indica l’effetto congiunto dei fattori considerati.
In altre parole vuol dire che un fattore agisce diversamente sulla variabile dipendente in
128 11 Analisi della varianza

> monkeys.aov <- aov(score~drug*fdep,monkeys)


> summary(monkeys.aov)
Df Sum Sq Mean Sq F value Pr(>F)
drug 2 112.00 56.00 3.0545 0.07208 .
fdep 1 24.00 24.00 1.3091 0.26755
drug:fdep 2 144.00 72.00 3.9273 0.03843 *
Residuals 18 330.00 18.33
---
Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

Box 11.9: Analisi della varianza a due fattori.

relazione ai vari livelli dell’altro. Il numero di possibili interazioni cresce al crescere del numero
di fattori. Ad esempio: se i fattori sono due (A e B) ci può essere un’unica interazione (AB).
Se i fattori sono tre (A, B, C), ci sono quattro interazioni possibili (AB, AC, BC e ABC) e
cosı̀ via.
Le interazioni a due fattori possono essere comprese bene con una rappresentazione grafica,
riportando le medie dei livelli di un fattore in relazione ai livelli di un altro. Nel caso di
interazione, si osserva che le linee di congiunzione tra le medie determinano dei segmenti tra
loro non paralleli. Nei grafici [A] e [C] in figura 11.5 sono rappresentate due situazioni in cui
non c’è interazione. Nei grafici [B] e [D] invece è presente interazione tra i fattori in quanto i
segmenti non sono paralleli.
Si tenga presente che l’effetto di interazione non è solo un effetto aggiuntivo dovuto all’au-
mento dei fattori nel modello. Esso infatti ha influenza anche sull’interpretazione degli effetti
principali. Se non vi è interazione statisticamente significativa o di modesta entità gli effetti
principali possono essere anche analizzati separatamente. Viceversa, se vi è interazione gli
effetti principali non sono interpretabili (Keppel, 1991). Dire che due variabili interagiscono
significa negare che abbiano effetti separati (Caudek & Luccio, 2001).
In ultimo, va specificato che l’interazione è cosa diversa dalla correlazione tra i fattori.
Quest’ultima infatti si riferisce alla relazione tra di essi, mentre l’interazione è riferita al modo
in cui i fattori hanno un effetto combinato sulla variabile dipendente (Fox, 1997).

11.2.5 Stima della dimensione degli effetti


Dal momento che, nel modello a due fattori, gli effetti analizzati sono tre, avremo un indice
di dimensione dell’effetto per ciascuno di essi. Si possono pertanto calcolare tre valori di η 2 e
tre di ω 2 .
Le formule per il calcolo di questi due indici sono un rapporto tra la variabilità dovuta
all’effetto rispetto alla variabilità totale

σ 2
2 SSef f 2
bef f
ηef f = e ωef f =
SST bT2
σ
Nel caso di un solo fattore, la variabilità totale viene stimata come somma della quota di
variabilità spiegata dal fattore e la quota non spiegata. Nel caso di più fattori, la variabilità
totale è la somma di tutte le quote di variabilità spiegate dai vari effetti (principali e di
11.2 Modello a due fattori 129

[A] [B]
8

8
6

6
Y
4

4
b1 b1
2

2
b2 b2
0

0
a1 a2 a1 a2
[C] A
fattore [D] A
fattore
6

6
4

4
b1 Y b1
2

2
b2 b2
b3 b3
0

a1 a2 a3 a1 a2 a3

Figura 11.5: Esempi di situazioni con e senza interazione tra due fattori A e B. I livelli del fattore
A sono indicati in ascissa, quelli di B con linee separate. [A] Caso senza interazione per fattori a due
livelli ciascuno. [B] Caso con interazione per fattori a due livelli ciascuno. [C] Caso senza interazione
per fattori a tre livelli ciascuno. [D] Caso con interazione per fattori a tre livelli ciascuno.

interazione) più la quota residua. Con questo tipo di calcolo i due indici considerati tendono
a sottostimare la dimensione dell’effetto. Per ovviare a tale inconveniente sono stati proposti
due indici corrispondenti: η 2 parziale (Cohen, 1973; Haase, 1983; Kennedy, 1970) e ω 2 parziale
(Keren & Lewis, 1979). Tali indici si differenziano da quelli classici in quanto prendono in
esame solo il rapporto tra la variabilità dell’effetto specificato e la variabilità residua:

σ 2
2 SSef f 2
bef f
p ηef f = e p ωef f = 2 2
SSef f + SSerr σ
bef f +σ
berr

È ovvio che, nel caso di modello ad un solo fattore, si ha η 2 =p η 2 e ω 2 =p ω 2 in quanto i


denominatori risultano essere identici.
Nel pacchetto ADati i due indici sono calcolabili con partial.eta2() e partial.omega2().
Il box 11.10 presenta un esempio d’uso per ciascuna delle due funzioni.
La funzione partial.eta2() ha come primo argomento il vettore delle devianze ricava-
te dall’ANOVA (SS.eff=c(112,24,144)), e come secondo il valore della devianza residua
(SS.err=330). Il terzo parametro (eff.lab) è opzionale, serve solo per ottenere in stampa
delle etichette relative a ciascun effetto.
La funzione partial.omega2() riceve in input: il vettore con le varianze degli effetti, rica-
vate dall’ANOVA (eff.Var=c(56,24,72)), e i rispettivi gradi di libertà (eff.df=c(2,1,2)),
la varianza residua (err.Var=18.33) con gradi di libertà relativi (err.df=18). Il quinto
parametro (eff.lab) ha lo stesso uso dell’equivalente nella funzione partial.eta2().
Un’altra funzione disponibile per il calcolo degli η 2 totali e parziali è etasq() nella libreria
heplots. Un esempio di uso di questa funzione si può vedere nel box 11.11.
130 11 Analisi della varianza

> partial.eta2(SS.eff=c(112,24,144),SS.err=330,
+ eff.lab=c("drug","fdep","drug:fdep"))
drug fdep drug:fdep
0.2534 0.0678 0.3038
> partial.omega2(eff.Var=c(56,24,72),eff.df=c(2,1,2),
+ err.Var=18.33,err.df=18,eff.lab=c("drug","fdep","drug:fdep"))
drug fdep drug:fdep
0.1462 0.0127 0.1961

Box 11.10: Indici di ES per ANOVA a due fattori.

11.2.6 Stima della potenza


Le funzioni disponibili in R per la stima della potenza nell’ANOVA sono sempre limitate al
caso ad un fattore (e disegni bilanciati). Nel caso a due fattori possiamo ricorrere ad una
strategia alternativa sfruttando la relazione tra la f di Cohen e η 2 :
s
η2
f=
(1 − η 2 )

e quindi utilizzare la funzione pwr.f2.test() della libreria pwr.

> library(heplots)
> (eta2 <- etasq(monkeys.aov,partial=FALSE)[1:3,])
[1] 0.18360656 0.03934426 0.23606557
> library(pwr)
> f2 <- sqrt(eta2/(1-eta2))
> pwr.f2.test(c(2,1,2),18,f2)
Multiple regression power calculation

u = 2, 1, 2
v = 18
f2 = 0.4742358, 0.2023750, 0.5558893
sig.level = 0.05
power = 0.7397329, 0.4778167, 0.8085724

Box 11.11: Stima della potenza per ANOVA a due fattori.

Nel box 11.11 è riportato un esempio di come procedere. Calcoliamo i valori di η 2 relativi
ai tre effetti servendoci della funzione etasq() disponibile nella libreria heplots. Si noti
che questa funzione richiede come input un oggetto prodotto dalle funzioni lm() o aov().
Nell’esempio viene utilizzato l’oggetto monkeys.aov prodotto nel box 11.9 (vedi pag. 128). I
tre valori calcolati di η 2 vengono quindi trasformati in valori di f e questi ultimi passati alla
funzione pwr.f2.test() che ci restituisce in output le tre relative stime di potenza: 0.740
per l’effetto del fattore tipo di farmaco, 0.478 per l’effetto del fattore ore di deprivazione e
0.809 per l’effetto di interazione.
11.3 Modello entro soggetti 131

11.3 Modello entro soggetti


I modelli visti fino a qui sono anche detti modelli tra soggetti (o tra casi) in quanto ciascuna
unità statistica è portatrice di un unico valore per ciascuno dei fattori coinvolti. Si è visto
ad esempio che nel caso di un fattore a quattro livelli c’erano quattro gruppi di soggetti, nel
caso a due fattori il numero di gruppi era dato dal prodotto del numero di livelli: 2 × 3 = 6.
Prendiamo ora in esame il caso in cui ciascuna unità statistica venga misurata più volte.
Siano A = {a1 , ..., ak } e Y = {yij ; i = 1, ..., n, j = 1, ..., k} rispettivamente una variabile
discreta (qualitativa o numerica in classi) ed una variabile numerica. La variabile discreta
è il predittore o fattore, con k livelli. La variabile numerica è la dipendente in cui i indica
l’unità statistica e j il livello del fattore corrispondente. Ciascuna unità statistica ha un valore
per ogni livello del fattore A pertanto n è la numerosità campionaria e N = nk il numero
complessivo di osservazioni.
I valori osservati della variabile dipendente, yij , possono essere scomposti nella somma di
cinque elementi:
yij = µ + αj + πi + (απ)ij + ij
in cui µ è la media della popolazione da cui è estratta l’unità statistica, αj l’effetto del
fattore A nel livello j, πi l’effetto del soggetto i-simo, (απ)ij l’effetto di interazione fattore-
soggetto, ij l’errore. Il modello è formalmente identico a quello a due fattori. La differenza
sta nel fattore relativo ai soggetti π, la cui quota di variabilità viene esclusa dall’analisi, come
vedremo di seguito.
Esempio 11.3 Un campione di 13 soggetti con deficit attentivo viene valutato con il Trail
Making Test (TMT) in tre condizioni diverse (che indicheremo con tmtB1, tmtB2, tmtB3).
Nel data-frame tmt, del pacchetto ADati, sono raccolti i punteggi dei 13 soggetti nelle due
forme del TMT (forma A e forma B). Limitandoci all’analisi della forma B, si vuole sapere
se vi siano differenze tra le medie nelle tre condizioni diverse. Formalmente la nostra ipotesi
sarà:
H0 : µB1 = µB2 = µB3
ovvero, non ci sono differenze tra i punteggi medi rilevati nelle tre somministrazioni del test.

11.3.1 Assunti del modello


L’analisi del modello entro soggetti richiede che siano rispettati gli stessi assunti dei modelli
tra soggetti: indipendenza delle osservazioni, normalità ed omogeneità delle varianze. In
aggiunta, per questo tipo di modello, vi è un’ ulteriore assunzione, relativa alla correlazione
tra le misure rilevate, che viene chiamata assunzione di sfericità o di circolarità.

Sfericità
Sia Σ la matrice di covarianza nella popolazione tra k variabili. L’assunto di circolarità è
rispettato se esiste una matrice C ortonormale, cioè composta di vettori tra loro ortogonali e
di lunghezza 1, di dimensione k × (k − 1) tale che

C 0 ΣC = λI

in cui λ è un valore positivo e I è la matrice identità, una matrice quadrata con degli uno
sulla diagonale e tutti zeri negli altri elementi (per maggiori dettagli si veda Kirk, 1995).
132 11 Analisi della varianza

Per comprendere in maniera meno formale il concetto di sfericità si può considerare il


data-frame tmt dell’ esempio 11.3, in cui ci sono tre variabili che esprimono le misurazioni al
test tmtB1, tmtB2 e tmtB3. Ricordiamo che l’assunto di omogeneità delle varianze prevede
che σB12 = σ 2 = σ 2 , ossia che le tre variabili in oggetto provengano da popolazioni con
B2 B3
varianze uguali. Immaginiamo ora di costruire tre nuove variabili ottenute come differenza
tra i punteggi osservati: siano δ12 la differenza tra i valori di tmtB1 e tmtB2, δ13 la differenza tra
i valori di tmtB1 e tmtB3, δ23 la differenza tra i valori di tmtB2 e tmtB3. L’assunto di sfericità
prevede che siano omogenee anche le varianze di queste tre nuove variabili: σδ212 = σδ213 = σδ223 .
Per valutare se l’assunto di sfericità è rispettato si può utilizzare il test di Mauchly con la
funzione mauchly.test(), come illustrato nel box 11.12.

> data(tmt,package="ADati")
> fit <- lm(as.matrix(tmt[,6:8])~1)
> mauchly.test(fit, X=~1)

Mauchley’s test of sphericity


Contrasts orthogonal to
~1

data: SSD matrix from lm(formula = as.matrix(tmt[, 6:8]) ~ 1)


W = 0.7365, p-value = 0.1860

Box 11.12: Test di sfericità di Mauchly.

L’uso di questa funzione è piuttosto complesso ed esula dai nostri obiettivi un approfon-
dimento in proposito. Ci basti sapere che la funzione mauchly.test() riceve in input un
oggetto creato dalla funzione lm(). Nell’argomento di quest’ultima funzione vengono inserite
le variabili osservate (tmtB1, tmtB2 e tmtB3 che sono le colonne 6, 7 e 8 del data-frame) come
dipendenti rispetto ad una costante (~1). In particolare, va tenuto presente che l’organizza-
zione dei dati è quello classico di unità statistiche (in riga) × variabili (in colonna) (vedi sez.
4.1.1, pag. 33).
L’oggetto ottenuto, che abbiamo chiamato fit, non è altro che un modello che stima le me-
die delle variabili coinvolte, e viene inserito come argomento della funzione mauchly.test()
insieme all’argomento X=~1, che indica appunto che non vi è alcun predittore.
Anche per questo test avremo il calcolo di una statistica (W = 0.7365) con relativa pro-
babilità associata (p-value = 0.1860). Dal momento che la probabilità rilevata risulta su-
periore a 0.05, non possiamo rigettare l’ipotesi H0 (ipotesi di sfericità) e concludiamo che
l’assunto è rispettato.

11.3.2 Scomposizione della devianza


Anche in questo caso l’analisi si basa sul principio di scomposizione della devianza. In figura
11.6 vediamo una rappresentazione schematica del processo di scomposizione nel caso di un
fattore entro soggetti.
A differenza del caso a due fattori tra soggetti (vedi fig. 11.4) il secondo livello di scom-
posizione riguarda la devianza entro (SSS/A ) che risulta dalla combinazione della devianza
11.3 Modello entro soggetti 133

dovuta all’effetto soggetti (SSS ) e l’interazione tra il fattore a e il fattore soggetti (SSA×S ).
Quest’ultima quantità viene considerata il vero residuo, dopo che è stato eliminato il contri-
buto alla variabilità dato dai soggetti. Essa pertanto viene utilizzata per calcolare la varianza
al denominatore di F :
SSA
k−1 M SA
Fb = SSA×S
= ∼ F((k−1),(k−1)(n−1))
M SA×S
(k−1)(n−1)

Utilizzando questa statistica è possibile valutare se sia sostenibile o meno l’ipotesi di


omogeneità delle medie.

11.3.3 Analisi con R


Per effettuare l’ANOVA entro soggetti possiamo utilizzare la funzione aov(), già vista prece-
dentemente, con alcune accortezze legate alla specificità del modello. Per l’esattezza, dobbia-
mo creare tre variabili distinte: la prima con un numero (o comunque un codice) che permetta
di identificare il soggetto, la seconda con i livelli del fattore A e la terza con tutti i valori os-
servati della variabile dipendente. In altri termini, significa modificare il set di dati passando
dalla tradizionale forma unità statistiche (in riga) × variabili (in colonna) (vedi sez. 4.1.1,
pag. 33) ad una forma detta lunga organizzata in osservazioni × variabili.
Vediamo nel box 11.13 un esempio completo di analisi.
Ogni soggetto ha tre misurazioni, pertanto, con il comando stack(), creiamo un data-
frame Y nella forma lunga (osservazioni × variabili) che contiene una variabile chiamata

SST
(nk-1)

SSA SSS/A
(k-1) k(n-1)

Effetto
trattamento
SSS SSA×S
(n-1) (k-1)(n-1)

Figura 11.6: Schema della scomposizione della devianza in un disegno ad un fattore entro soggetti.
Tra parentesi sono indicati i gradi di libertà relativi. n è la numerosità campionaria, k i livelli del
fattore a.
134 11 Analisi della varianza

values con i punteggi del test ed una variabile ind che identifica il momento della sommi-
nistrazione. Il successivo comando (factor()) ci permette di aggiungere al data-frame Y
l’identificativo dei soggetti. A questo punto possiamo eseguire l’analisi combinando aov()
all’interno di summary(). In particolare, notiamo come viene definito il modello utilizzando
l’operatore Error().
Di seguito, sempre nel box 11.13, si ottiene l’output dell’analisi, diviso in due parti: la parte
superiore con le informazioni sulla variabilità tra i soggetti (Error: subj) e quella inferiore
con il test sulla variabilità entro i soggetti (Error: subj:ind). La tabella è identica a quella
già vista per i modelli precedenti. La probabilità associata alla statistica F è inferiore a 0.05,
il test è statisticamente significativo. Pertanto possiamo rigettare l’ipotesi H0 e concludere
che le medie non sono tutte uguali.

> Y <- stack(tmt[,c("tmtB1","tmtB2","tmtB3")])


> Y$subj <- factor(tmt$subj)
> summary(aov(values~ind+Error(subj/ind),data=Y))

Error: subj
Df Sum Sq Mean Sq F value Pr(>F)
Residuals 12 122867 10239

Error: subj:ind
Df Sum Sq Mean Sq F value Pr(>F)
ind 2 49155 24577 8.719 0.00142 **
Residuals 24 67652 2819

Box 11.13: Analisi della varianza entro soggetti.

11.3.4 Violazione dell’assunto di sfericità


L’ANOVA entro soggetti è particolarmente sensibile alla violazione dell’assunto di sfericità.
In particolare, questo tipo di violazione produce un aumento della probabilità di commettere
un errore di I tipo. Per tenere sotto controllo tale errore anche in condizioni di non-sfericità
sono stati proposti molti metodi che per lo più eseguono degli aggiustamenti sui gradi di
libertà.
Riprendiamo il data-frame tmt, già descritto nell’esempio 11.3. Consideriamo questa
volta le tre scale del TMT nella forma A e ripetiamo il test (visto nel box 11.12) per valutare
l’assunzione di sfericità su queste nuove variabili.
Questa volta (vedi box 11.14) il p-value è minore di 0.05, il risultato statisticamente
significativo e pertanto concludiamo che l’assunto di sfericità non è rispettato. Di conseguenza
non possiamo eseguire l’ANOVA come abbiamo fatto nel caso precedente (box 11.13) ma
dobbiamo utilizzare una procedura di aggiustamento.
Nel box 11.15 vediamo come procedere in R per ottenere l’ANOVA aggiustata con i metodi
Geisser-Greenhouse (Geisser & Greenhouse, 1958) e Huynh-Feldt (Huynh & Feldt, 1970).
La prima istruzione crea l’oggetto fit, che contiene le medie delle tre variabili implicate.
La seconda crea fit0, un oggetto che rappresenta una specie di modello lineare degenere,
11.3 Modello entro soggetti 135

> data(tmt,package="ADati")
> fit <- lm(as.matrix(tmt[,3:5])~1)
> mauchly.test(fit, X=~1)

Mauchley’s test of sphericity


Contrasts orthogonal to
~1

data: SSD matrix from lm(formula = as.matrix(tmt[, 3:5]) ~ 1)


W = 0.3478, p-value = 0.003001

Box 11.14: Test di sfericità di Mauchly.

senza coefficienti, che in questo caso serve solo come riferimento. Nella terza istruzione viene
eseguita l’ANOVA per confrontare i due oggetti prodotti fit e fit0.
Nell’output che viene prodotto è possibile leggere il valore di F e la relativa probabilità as-
sociata che si otterrebbe dall’ANOVA senza correzione: (F = 7.2542; Pr(>F) = 0.003434).
In più, a destra di tale probabilità, sono riportati due valori aggiustati, utilizzando i metodi
Geisser-Greenhouse (G-G Pr = 0.013504) e Huynh-Feldt (H-F Pr = 0.012101).
In pratica, non essendo rispettato l’assunto di sfericità (box 11.14), per valutare se l’A-
NOVA risulti significativa o meno, dobbiamo utilizzare una di queste due ultime probabilità.
Essendo entrambe minori di 0.05 possiamo concludere, rigettando l’ipotesi H0 , che le medie

> fit <- lm(as.matrix(tmt[,3:5])~1)


> fit0 <- update(fit,~0)
> anova(fit,fit0,X=~1,test="Spherical")

Analysis of Variance Table

Model 1: as.matrix(tmt[, 3:5]) ~ 1


Model 2: as.matrix(tmt[, 3:5]) ~ 1 - 1

Contrasts orthogonal to
~1

Greenhouse-Geisser epsilon: 0.6053


Huynh-Feldt epsilon: 0.6366

Res.Df Df Gen.var. F num Df den Df Pr(>F) G-G Pr H-F Pr


1 12 317.66
2 13 1 379.73 7.2542 2 24 0.0034345 0.013504 0.012101

Box 11.15: ANOVA entro soggetti con correzione per la non sfericità.
136 11 Analisi della varianza

delle tre somministrazioni della forma A del TMT non siano uguali.
Notiamo che in questo caso, avremmo rigettato l’ipotesi di uguaglianza tra le medie anche
senza l’aggiustamento, infatti è significativo anche il test senza correzione. Si deve però
ricordare che quando è violato l’assunto di sfericità l’ANOVA tende ad aumentare l’errore
di I tipo e quindi a farci trovare più facilmente risultati statisticamente significativi anche
quando gli effetti non lo sono.
Capitolo 12

Confronti multipli

L’analisi della varianza, nelle sue varie forme, è un test per valutare l’ipotesi H0 che le medie
delle popolazioni da cui è stato effettuato il campionamento siano uguali. Si deve però tenere
presente che un risultato statisticamente significativo permette solo di concludere che vi sia
almeno una media differente dalle altre, non ci permette di dire quale o quali siano. Per
rispondere a questa domanda è necessario effettuare dei confronti più mirati.
Si parla di confronti pianificati nel caso in cui tali confronti siano progettati e previsti
prima dell’esecuzione dell’esperimento (o più in generale della raccolta dei dati). Si parla
di confronti post-hoc se vengono eseguiti a posteriori. Nel primo caso si tratta in pratica
di decidere a priori quali confronti effettuare, nel secondo caso andremo ad effettuare dei
confronti solo nel caso in cui l’ANOVA avesse dato un risultato significativo.

Esempio 12.1 Ad un campione di 15 bambini viene presentata una serie di problemi di


ragionamento (da Keppel, Saufley, & Tokunaga, 2001). I bambini sono divisi in tre gruppi
10
8
punteggi

6
4
2

- + 0

rinforzo

Figura 12.1: Distribuzioni dei punteggi di 15 bambini in funzione del tipo di rinforzo: − rinforzo
negativo, + rinforzo positivo, 0 nessun rinforzo. I punti rossi indicano le medie.
138 12 Confronti multipli

di cinque soggetti ciascuno: ai bambini del primo gruppo viene dato un rinforzo positivo
ad ogni risposta corretta, ai soggetti del secondo gruppo viene dato un rinforzo negativo ad
ogni risposta errata, il terzo gruppo non riceve nessun tipo di rinforzo. Le distribuzioni dei
punteggi ottenuti dai bambini sono rappresentate in figura 12.1.
Supponiamo di essere interessati a valutare se vi sia una differenza nei punteggi medi in
funzione del tipo di rinforzo ovvero a testare la seguente ipotesi : H0 : µ− = µ+ = µ0 in cui
−, + e 0 indicano il tipo di rinforzo: negativo, positivo o nullo (condizione di controllo).

> data(rinforzo)
> anova(lm(risp~rinforzo,data=rinforzo))

Analysis of Variance Table

Response: risp
Df Sum Sq Mean Sq F value Pr(>F)
rinforzo 2 30.4 15.2 4.2222 0.04089 *
Residuals 12 43.2 3.6

Box 12.1: ANOVA sul campione dell’esempio 12.1.

Nel box 12.1 abbiamo il risultato dell’ANOVA. Essendo il test statisticamente significativo
(p = 0.04089) possiamo rigettare l’ipotesi di uguaglianza delle medie. A questo punto però ci
possiamo chiedere in quale modo le tre medie si differenzino tra loro. Ad esempio, guardando
la figura 12.1 sembrerebbe esserci una differenza tra il gruppo di controllo e gli altri due
gruppi. Potremmo allora pensare di eseguire tre t-test separatamente confrontando i tre
gruppi due alla volta. Nel box 12.2 è riportato l’esito dei tre test ottenuti con la funzione
pairwise.t.test(). Nella prossima sezione spiegheremo meglio i dettagli relativi all’uso di
tale funzione. Per il momento ci basta sapere che essa esegue tre test t separati e riporta in
output i relativi p-value dai quali si evince che l’unica differenza statisticamente significativa
è quella tra il gruppo di controllo (0) ed il gruppo con rinforzo positivo (+). Solo in questo
confronto infatti si ha p < 0.05, per l’esattezza p = 0.021.

12.1 Il problema della molteplicità


Abbiamo già anticipato, nella sezione 6.3.5, del problema legato ai test multipli. Ovvero,
aumentando il numero di test che si eseguono senza un adeguato controllo, si incrementa la
probabilità di commettere un errore di I tipo. In particolare, eseguendo k test, ciascuno dei
quali ad un livello di significatività α = 0.05, la probabilità globale di errore (Familiwise Error
Rate) è
αF W = 1 − (1 − α)k

Sulla base di tale formula possiamo facilmente verificare che con tre confronti, la probabilità
che almeno uno risulti significativo per caso è pari a 0.14, con cinque confronti la probabilità
sale a 0.23, con 10 confronti addirittura 0.40.
12.1 Il problema della molteplicità 139

> pairwise.t.test(rinforzo$risp,rinforzo$rinforzo,
+ p.adjust="none",pool.sd=FALSE)

Pairwise comparisons using t tests with non-pooled SD

data: X$risp and X$rinforzo

- +
+ 0.745 -
0 0.064 0.021

P value adjustment method: none

Box 12.2: Confronti a coppie con test t sul campione dell’esempio 12.1.

12.1.1 Controllo dell’errore di I tipo


Per controllare l’errore di I tipo sono stati proposti molti metodi diversi. Tali metodi, in
linea generale, modificano il valore della statistica calcolata in modo da rendere il test più
conservativo. Si deve però tenere presente che un test più conservativo rischia anche di essere
meno potente e quindi per la scelta del metodo da utilizzare è importante considerare anche
l’aspetto legato alla potenza del test.
Tra i più noti si ricordano il metodo di Scheffé (1953), di Tukey (1953), di Dunnett (1955),
il least significant difference test (lsd; Fisher, 1935) ed il metodo di Bonferroni (1936). Nel
(1995) Benjamini & Hochberg hanno introdotto un nuovo metodo (False Discovery Rate,
FDR) che coniuga efficacemente il controllo dell’errore di I tipo e il mantenimento di un buon
livello di potenza.
Esempio 12.2 Riprendiamo in esame i dati dell’esempio 11.1 (pag. 113). L’analisi della
varianza su questi dati (vedi box 11.4) ha prodotto un risultato statisticamente significativo
(p = 0.00471). Questo implica che possiamo rigettare l’ipotesi H0 di uguaglianza tra le medie
dei punteggi dei soggetti in funzione delle ore di deprivazione da sonno. Dalla lettura delle
statistiche descrittive (vedi box 11.1) sembra evidente che il numero di errori aumenta con
l’aumentare delle ore di deprivazione. Supponiamo allora di voler confrontare tra loro tutte
le medie a coppie.

Il box 12.3 riporta un esempio di output dei confronti a coppie ottenuti utilizzando la
funzione pairwise.t.test(). Il primo argomento della funzione indica la variabile di cui
vengono calcolate le medie (score), il secondo specifica la variabile sulla base della quale sono
definiti i gruppi (hr). Il terzo argomento (p.adjust) viene utilizzato per definire il metodo
di aggiustamento delle probabilità, il quarto (pool.sd) definisce se la deviazione standard
debba essere calcolata mettendo tutti i gruppi insieme o meno; in questo caso, scrivendo
p.adjust=’none’ e pool.sd=FALSE, indichiamo che i test vengano eseguiti senza alcun tipo
di controllo, ovvero come se fossero dei test indipendenti.
Dalla lettura dell’output rileviamo che risultano significative le seguenti differenze: tra
il gruppo deprivato di 4 ore e quelli deprivati di 20 (p = 0.020) e di 28 ore (p = 0.008), e
tra il gruppo deprivato di 12 ore ed il gruppo deprivato di 28 (p = 0.036). A questo punto
140 12 Confronti multipli

> pairwise.t.test(radar$score, radar$hr, p.adjust="none", pool.sd=FALSE)

Pairwise comparisons using t tests with non-pooled SD

data: radar$score and radar$hr

4 12 20
12 0.144 - -
20 0.020 0.088 -
28 0.008 0.036 0.697

P value adjustment method: none

Box 12.3: Confronti a coppie con test t senza controllo dell’errore di I tipo.

dobbiamo però considerare che, dati i 6 confronti, avremmo una probabilità di errore globale
pari a αF W = 1 − (1 − 0.05)6 = 0.26. Pare pertanto evidente che non possiamo considerare i
risultati ottenuti senza tenere conto di questo aspetto.

12.2 Aggiustamento delle probabilità


Consideriamo una generica situazione in cui abbiamo k ipotesi H1 , H2 , . . . , Hk . Per ciascuna
di esse possiamo calcolare una statistica test ed una probabilità associata pi , i = 1, 2, . . . , k.
In questi casi è possibile calcolare delle probabilità aggiustate p̃i relative a ciascun test tali
che la decisione di rigettare l’ipotesi Hi ad un livello di errore globale pari ad α si ottiene
semplicemente se p̃ ≤ α.
La definizione matematica della probabilità aggiustata è la seguente (Westfall & Young,
1993):
p̃i = inf{α|Hi è rigettata con errore globale = α}
ovvero p̃i è il più basso livello di significatività rispetto al quale si rigetta l’ipotesi Hi , dato
un insieme di test multipli.
In pratica, si tratterà di modificare opportunamente i vari p-value ottenuti e quindi con-
siderare significativi i valori al di sotto della soglia α prestabilita (convenzionalmente 0.05).
Vediamo ora alcuni metodi per l’aggiustamento delle probabilità.

12.2.1 Metodo Bonferroni


Consiste semplicemente nel moltiplicare ciascuna probabilità osservata pi per il numero di
confronti effettuati, k. Nel caso in cui il valore superi l’unità allora si considera come p
aggiustato 1, formalmente:
p̃i = min(kpi , 1)
Per questo metodo di aggiustamento possiamo rifarci alla funzione pairwise.t.test()
come illustrato nel box 12.4, ovvero ponendo l’argomento della stessa p.adjust=’bonferroni’.
Dalla lettura dell’output notiamo che solo un confronto risulta statisticamente significativo
ovvero la differenza tra il gruppo 4 ore ed il gruppo 28 ore (p = 0.048). Il metodo Bonferroni
12.2 Aggiustamento delle probabilità 141

> pairwise.t.test(radar$score,radar$hr,p.adjust="bonferroni",pool.sd=FALSE)

Pairwise comparisons using t tests with non-pooled SD

data: radar$score and radar$hr

4 12 20
12 0.862 - -
20 0.121 0.526 -
28 0.048 0.218 1.000

P value adjustment method: bonferroni

Box 12.4: Confronti a coppie con aggiustamento basato sul metodo Bonferroni.

presenta infatti il difetto di ridurre drasticamente la potenza dei test all’aumentare del numero
di confronti. Nel caso in esame, con 6 test effettuati, sarebbe analogo dire che per ottenere
una significatività statistica è necessario osservare un valore di probabilità non aggiustata
p ≤ 0.05/6 = 0.008.

12.2.2 Test di Tukey


Si tratta di un test post-hoc in quanto fa riferimento al risultato ottenuto con l’analisi della
varianza. La correzione delle probabilità dei confronti a coppie viene effettuata utilizzando
una particolare distribuzione (Studentized Range Distribution) definita con:

X (i) − X (j)
qij = q con i > j
MSerr
n

in cui i e j indicano il rango occupato nel’ordinamento crescente delle medie, X la media,


MSerr la varianza dell’errore ottenuta dall’ANOVA e n la numerosità campionaria di cia-
scun gruppo. Utilizzando questa formula vengono calcolati i quantili q della distribuzione
studentizzata a partire dai quali è possibile calcolare le probabilità aggiustate.
Per eseguire questo test in R disponiamo della funzione TukeyHSD() che prende in input
un oggetto creato tramite la funzione aov().
Nel box 12.5 è riportato un esempio di applicazione. Come possiamo osservare, all’interno
della funzione TukeyHSD() viene passato l’oggetto ottenuto con la funzione aov(), ovvero
l’esito dell’ANOVA. La tabella in output presenta 6 righe, una per ciascun confronto, con le
seguenti informazioni: differenza osservata tra le medie dei gruppi (diff), gli estremi inferiore
(lwr) e superiore (upr) dell’intervallo di confidenza della differenza tra le medie e la probabilità
aggiustata (p adj). Leggendo tale tabella possiamo concludere che risultano statisticamente
significative le differenze tra il gruppo 4 ore ed il gruppo 20 ore (p = 0.017) e quella tra il
gruppo 4 ore ed il gruppo 28 ore (p = 0.007).
Un ulteriore vantaggio della funzione TukeyHSD() è di permettere facilmente la rap-
presentazione grafica degli intervalli di confidenza delle differenze tra le medie. Scrivendo
semplicemente:
142 12 Confronti multipli

> TukeyHSD(aov(score~as.factor(hr),data=radar))
Tukey multiple comparisons of means
95% family-wise confidence level

Fit: aov(formula = score ~ as.factor(hr), data = radar)

$‘as.factor(hr)‘
diff lwr upr p adj
12-4 11.25 -14.500689 37.00069 0.5817551
20-4 31.00 5.249311 56.75069 0.0173828
28-4 35.25 9.499311 61.00069 0.0073920
20-12 19.75 -6.000689 45.50069 0.1581707
28-12 24.00 -1.750689 49.75069 0.0706593
28-20 4.25 -21.500689 30.00069 0.9598438

Box 12.5: Confronti a coppie con test di Tukey.

plot(TukeyHSD(aov(score∼as.factor(hr),data=radar)))

si ottiene il grafico in figura 12.2. Ogni linea orizzontale rappresenta un intervallo di confidenza
relativo ad una specifica differenza. Dalla lettura di questo grafico possiamo rilevare che gli
unici intervalli che non comprendono lo zero sono quelli della linea 20-4 e quelli della linea
28-4, ovvero che esiste una differenza statisticamente significativa tra le medie dei relativi
gruppi. Si noti che tale conclusione è coerente con quella cui si arriva dalla lettura dell’output
nel box 12.5.

95% family-wise confidence level


12-4
20-4
28-4
20-12
28-12
28-20

-20 0 20 40 60

Differences in mean levels of as.factor(hr)

Figura 12.2: Intervalli di confidenza delle differenze tra le medie basati sul test di Tukey.
12.2 Aggiustamento delle probabilità 143

12.2.3 Test di Scheffé


Anche il test di Scheffé è un post-hoc in quanto fa riferimento al risultato ottenuto con l’analisi
della varianza. Rispetto al test di Tukey ha il vantaggio di essere utilizzato anche per confronti
complessi (dei quali parleremo nella sezione 12.3) e non solo per quelli a coppie.
Il test si basa sul calcolo della seguente statistica:

n( i ci X i )2
P
F(dfA ,dferr ) =
(k − 1)MSerr ( i c2i )
P

in cui X i è la media del gruppo i, k il numero di gruppi, MSerr la varianza dell’errore,


P n la
numerosità campionaria di ciascun gruppo e ci dei pesi scelti con il vincolo che i ci = 0.
In pratica, una volta calcolato il valore di F si può determinare la probabilità ad esso
associata facendo riferimento alla relativa distribuzione con gradi di libertà dati dal fattore
(dfA ; ovvero numero di gruppi - 1) e dalla varianza d’errore (dferr ).
La funzione Scheffe() nella libreria ADati per default esegue il test per tutti i confronti
a coppie a partire dalle medie dei gruppi e la varianza d’errore ottenuta con l’ANOVA. Nel
box 12.6 vediamo un esempio; il primo argomento della funzione è dato dalle quattro medie
calcolate in funzione del numero di ore di deprivazione, il secondo indica la numerosità di
ciascun gruppo (4) ed il terzo argomento (150.4583) è la varianza d’errore calcolata con
l’ANOVA (vedi box 11.4). L’output della funzione riporta due elementi: $prob, ovvero le
probabilità aggiustate e $w, ovvero la matrice dei pesi utilizzata per i confronti. Torneremo
tra breve su come utilizzare questa matrice, per il momento ci basta osservare che essa presenta
un numero di righe pari al numero di confronti a coppie eseguiti ed un numero di colonne pari
al numero dei gruppi. Osserviamo altresı̀ che la somma dei valori per riga ha sempre come
risultato zero.
Sulla base delle probabilità aggiustate possiamo giungere alla stessa conclusione del test di
Tukey, ovvero che risultano statisticamente significative le differenze tra le medie dei gruppi
4 ore vs. 20 ore (p = 0.029), e 4 ore vs. 28 ore (p = 0.013).

12.2.4 False Discovery Rate


Nel 1995 Benjamini & Hochberg hanno proposto un metodo che modifica l’approccio tradi-
zionale, ponendo l’attenzione sul numero atteso di ipotesi rigettate per errore.
Siano date k ipotesi, e sia k0 il numero (incognito) di ipotesi vere. In seguito ad una
procedura che esegue k test arriveremo a rigettare un certo numero R di ipotesi, mentre
le rimanenti k − R non saranno rigettate. Possiamo quindi supporre che, tra le R ipotesi
rigettate, S saranno rigettate correttamente mentre V = R − S saranno rigettate per errore.
Allo stesso modo, tra le k − R ipotesi non rigettate avremo un numero U di decisioni corrette
e T = (k − R) − U errori. Possiamo riassumere i vari esiti possibili con la seguente tabella:

Status dell’ipotesi
decisione H vera H falsa
non rigetto H U T k−R
rigetto H V S R
k0 k − k0 k
144 12 Confronti multipli

> medie <- tapply(radar$score,list(radar$hr),mean)


> Scheffe(medie,4,150.4583)
$prob
pval
c4-12 0.651
c4-20 0.029
c4-28 0.013
c12-20 0.214
c12-28 0.105
c20-28 0.970

$w
26.5 37.75 57.5 61.75
c4-12 1 -1 0 0
c4-20 1 0 -1 0
c4-28 1 0 0 -1
c12-20 0 1 -1 0
c12-28 0 1 0 -1
c20-28 0 0 1 -1

Box 12.6: Confronti a coppie con test di Scheffé.

Il False Discovery Rate (FDR) viene definito come il valore atteso della proporzione di
ipotesi rigettate per errore sul totale di ipotesi rigettate, formalmente:

E(V /R)

Grazie a questo tipo di controllo dell’errore sono garantite due importanti proprietà:
1. Se tutte le ipotesi H sono vere, FDR è equivalente ad un controllo di tipo Familywise.

2. Se k0 < k allora FDR risulta essere minore o uguale rispetto al controllo Familywise,
in particolare, maggiore è il numero di ipotesi H non vere, maggiore tende ad essere S
(numero di ipotesi rigettate correttamente).
La procedura di aggiustamento delle probabilità proposta da Benjamini e Hochberg (1995)
richiede come prima operazione l’ordinamento crescente delle probabilità osservate nei singoli
k confronti, siano p(1) ≤ p(2) ≤ . . . p(k) . Successivamente, per il calcolo delle probabilità
aggiustate si utilizza la seguente formula:
 
k
p̃i = min p(j) : per i ≤ j
j
Questo metodo ha il vantaggio di essere indipendente dall’ANOVA e di poter essere uti-
lizzato per qualunque tipo di confronti indipendenti e qualunque tipo di statistica test (si
veda ad esempio Keselman, Cribbie, & Holland, 2002). Inoltre, risulta essere più potente
rispetto agli altri e, in generale, aumenta in potenza all’aumentare del numero di confronti in
particolare all’aumentare del numero di ipotesi false (Benjamini & Hochberg, 1995; Williams,
Jones, & Tukey, 1999).
12.3 Confronti complessi 145

> pairwise.t.test(radar$score,radar$hr,p.adjust="BH",pool.sd=FALSE)

Pairwise comparisons using t tests with non-pooled SD

data: radar$score and radar$hr

4 12 20
12 0.172 - -
20 0.061 0.132 -
28 0.048 0.073 0.697

P value adjustment method: BH

Box 12.7: Confronti a coppie con correzione Benjamini-Hochberg.

Per aggiustare le probabilità con il metodo Benjamini-Hochberg possiamo ancora una volta
utilizzare la funzione pairwise.t.test() come possiamo leggere nel box 12.7, modificando
il metodo di aggiustamento con p.adjust=’BH’. In questo caso arriviamo alla conclusione
di identificare come significativa la sola differenza tra il gruppo 4 ore ed il gruppo 28 ore
(p = 0.048).

12.3 Confronti complessi


Nella sezione precedente abbiamo visto come aggiustare le probabilità nel caso di semplici
confronti tra coppie di medie. Potremmo però essere interessati ad effettuare dei confronti
complessi, ovvero coinvolgendo più di due medie per volta. Sempre con riferimento ai dati
degli esempi 11.1 (pag. 113) e 12.2 (pag. 139), potremmo essere interessati a confrontare un
gruppo con gli altri tre insieme, oppure i primi due con gli altri due.
Nel primo caso possiamo formulare la seguente ipotesi:
µ12 + µ20 + µ28
H0 : µ4 =
3
ovvero che la media del gruppo deprivato di sonno per 4 ore è uguale alla media degli altri
gruppi insieme. La modalità più semplice per impostare i confronti complessi consiste nel
definire opportunamente dei coefficienti o pesi a seconda del tipo di confronto. In questo
caso, per ricavare i coefficienti si procede definendo una statistica che chiameremo ψ nel
seguente modo:
µ12 + µ20 + µ28
ψ = µ4 −
3
La stessa si può riscrivere nel seguente modo:

ψ = (+1)µ4 + (−1/3)µ12 + (−1/3)µ20 + (−1/3)µ28

I coefficienti saranno pertanto: +1, −1/3, −1/3, −1/3 la cui somma è evidentemente pari a
zero. La nostra H0 sarà allora formulata con ψ = 0 ovvero che non c’è differenza tra la media
del gruppo 4 ore e la media complessiva degli altri tre gruppi.
146 12 Confronti multipli

Nel caso in cui volessimo confrontare i primi due gruppi con gli altri due possiamo
procedere come segue:
µ4 +µ12 µ20 +µ28
• L’ipotesi H0 sarà: 2 = 2

• Quindi avremo:
µ4 + µ12 µ20 + µ28
ψ= −
2 2
ψ = (+1/2)µ4 + (+1/2)µ12 + (−1/2)µ20 + (−1/2)µ28

• I coefficienti saranno pertanto: +1/2, +1/2, −1/2, −1/2

In pratica, è possibile definire i confronti in molti modi diversi con l’unico vincolo che la
somma dei coefficienti scelti sia pari a zero. Possiamo utilizzare la funzione Scheffe() come
illustrato nel box 12.8. A differenza del caso presentato nel precedente box 12.6 aggiungiamo
al comando un quarto elemento, ovvero la matrice dei pesi costruita con la funzione matrix().
Tale matrice W presenta due righe, una per ciascun confronto, e quattro colonne, una per
ciascun gruppo. Nel relativo output, in testa alle colonne possiamo leggere le medie osservate
dei quattro gruppi. Ciascuna riga contiene i coefficienti scelti per il test. La conclusione è
che entrambe le ipotesi H0 vengono rigettate, in quanto è significativa sia la differenza tra
il gruppo 4 ore e gli altri gruppi insieme, sia la differenza tra i due gruppi 4-12 insieme ed i
gruppi 20-28 insieme.

> W <- matrix(c(1,-1/3,-1/3,-1/3,


+ 1/2,1/2,-1/2,-1/2),2,4,byrow=TRUE)
> Scheffe(c(26.50,37.75,57.50,61.75),4,150.4583,W)
$prob
pval
c1 0.026
c2 0.007

$w
26.5 37.75 57.5 61.75
c1 1.0 -0.3333333 -0.3333333 -0.3333333
c2 0.5 0.5000000 -0.5000000 -0.5000000

Box 12.8: Confronti complessi con il test di Scheffé.


Capitolo 13

Regressione lineare multipla

Nel capitolo 10 abbiamo introdotto il concetto di modello di regressione considerando il caso


più elementare, ovvero quello in cui si hanno due sole variabili: un predittore (X) ed una
variabile dipendente (Y ), entrambe di tipo quantitativo. Nel capitolo 11 abbiamo trattato il
caso in cui il predittore (oppure i due predittori, vedi sez. 11.2, pag. 123) è di tipo categoriale
e siamo interessati a valutare le eventuali differenze tra le medie nei valori della variabile
dipendente in funzione dei livelli del predittore (chiamato anche fattore). Nel medesimo
capitolo avevamo fatto notare come il modello ANOVA sia di fatto un caso particolare di
modello di regressione (vedi sez. 11.1) e a riprova di ciò si è visto come si utilizzi anche per
l’ANOVA la funzione lm() (box 11.4).
In questo capitolo vogliamo estendere il concetto di modello lineare ai casi più generali in
cui possiamo avere più predittori, sia di tipo quantitativo che categoriale.

13.1 Modelli lineari


Un modello lineare è un modello statistico che assume la forma

Y = Xβ +  (13.1)

in cui Y è una variabile risposta di tipo quantitativo, X un insieme di predittori che possono
essere sia di natura quantitativa che categoriale, β indica i coefficienti di regressione e  è la
componente di errore. L’obiettivo del modello è la stima dei coefficienti di regressione. Si parla
di modelli lineari in quanto la relazione ipotizzata tra i predittori e la variabile dipendente
si suppone lineare. In pratica questo significa che nel caso più semplice di due variabili (già
trattato nel capitolo 10) la relazione si rappresentare geometricamente con una retta, con tre
variabili (due X ed una Y ) si può rappresentare con un piano e con più di tre variabili con
iperpiani.
La formula (13.1), nel caso in cui i predittori siano tutti quantitativi, può essere scritta
anche in modo esteso in forma matriciale come segue:

      
y1 1 x11 . . . x1p β0 1
 y2   1 x21 . . . x2p   β1   2 
 ...  =  ... ...
    +  (13.2)
... ...  ...   ... 
yn 1 xn1 . . . xnp βp n
148 13 Regressione lineare multipla

in cui n indica il numero di unità statistiche e p il numero di predittori, di conseguenza


y1 , y2 , . . . yn sono le osservazioni della variabile Y , x11 , x21 , . . . xn1 le osservazioni del predittore
1, x1p , x2p , . . . xnp le osservazioni del predittore p e β0 , β1 , . . . βp i coefficienti di regressione.
Notiamo che in questo tipo di formulazione, viene definita una colonna di valori 1, associati
all’intercetta del modello, indicata con il coefficiente β0 .

Esempio 13.1 Il data-frame electrosmoke contiene le seguenti variabili relative ad un


campione di 258 soggetti fumatori:

• age: età del soggetto in anni compiuti

• smokyears: numero di anni da fumatore

• MQS: punteggio di motivazione a smettere di fumare (Motivation to Quit Scale; Pokhrel,


Fagan, Little, Kawamoto, & Herzog, 2013)

• gender: genere del soggetto (maschio o femmina)

• cigday: sigarette fumate al giorno

• elcig: variabile dicotomica che esprime se il soggetto ha provato (yes) o no la sigaretta


elettronica.

Supponiamo di essere interessati a valutare il grado di motivazione a smettere di fumare in


funzione del numero di anni in cui i soggetti hanno fumato e dell’età. Pertanto consideriamo:
il numero di anni da fumatori (smokyears, x1 ), l’età (age, x2 ) e la motivazione a smettere di
fumare (MQS, y) in cui a punteggi più alti corrisponde una maggiore motivazione. Possiamo
rappresentare il modello di regressione nel seguente modo:
     
17 1 14 32   1
 19   1 28 47  β0
  2 
 
 . . .  =  . . . . . . . . .  β1 +  . . . 
   
β2
16 1 27 43 n
in cui la matrice colonna a sinistra dell’uguale riporta i valori di y, mentre nella parte
destra abbiamo le tre matrici che riportano rispettivamente i valori dei predittori (x1 e x2 ,
più una colonna di 1), dei coefficienti di regressione (da stimare) e gli errori del modello
associati alle osservazioni.

13.1.1 Assunti dei modelli lineari


Nella sezione 10.2.1 sono già stati elencati gli assunti del modello di regressione lineare sem-
plice; li riassumiamo allo stesso modo qui in quanto valgono anche a livello generale, per la
spiegazione più dettagliata rimandiamo a pag. 104:

• Indipendenza dei predittori dall’errore. Le X sono misurate senza errore.

• Indipendenza delle osservazioni. Tutte le coppie di errori i ed j sono tra loro


indipendenti per ogni i 6= j.

• Linearità. Il valore atteso dell’errore per un dato valore di X è zero: E(i ) = E(|xi ) =
0.
13.2 Modello con un solo predittore 149

• Normalità. Gli errori sono distribuiti normalmente: i ∼ N (0, σ 2 ).

• Varianza costante. La varianza degli errori è costante per qualunque valore di X:


V (|xi ) = σ 2 .

13.2 Modello con un solo predittore


Nel caso di un solo predittore la formulazione del modello può essere espressa in due modi a
seconda del tipo di predittore, se quantitativo o categoriale.
Nel primo caso, ovvero se X è quantitativo, come abbiamo ormai visto più volte, la
scrittura è semplicemente:

Y = β0 + β1 X + 

Nel caso in cui il predittore sia di tipo categoriale la forma del modello dipende dal numero
di possibili valori che assume il predittore. Se il predittore categoriale è dicotomico, ovvero
assume due soli valori (generalmente 0 e 1), la scrittura del modello è praticamente uguale a
quella del modello con predittore quantitativo, con la sola differenza che tale predittore sarà
indicato dalla lettera D:

Y = β0 + β1 D + 

Nel caso in cui il predittore assuma k valori, la formulazione del modello prevederà un numero
k − 1 di predittori dicotomici (ovvero con valori 0 e 1): ad esempio se k = 3 il modello avrà
due predittori dicotomici D1 e D2 :

Y = β0 + β1 D1 + β2 D2 + 

In questa sede non ci interessa approfondire ulteriormente la modalità con cui un fattore
di tipo categoriale venga ricodificato in una serie di variabili dicotomiche, riprenderemo la
questione più avanti nel cap. 15. Ci basti sapere che tale codifica viene effettuata automa-
ticamente da R (e da qualunque altro software statistico) quando il predittore è definito di
tipo factor. Gli interessati comunque possono trovare degli approfondimenti su Fox (1997)
e Fox e Weisberg (2011).

13.2.1 Un solo predittore quantitativo


Consideriamo i dati dell’esempio 13.1; vogliamo sapere se l’età dei soggetti è predittiva della
motivazione a smettere di fumare. In figura 13.1 vediamo come rappresentare la relazione con
un grafico a dispersione: in ascissa riportiamo le età dei soggetti ed in ordinata i punteggi
MQS, ciascun punto nella figura rappresenta un soggetto1 .
Per stimare i parametri del modello di regressione possiamo utilizzare la funzione lm()
come illustrato nel box 13.1. Nel capitolo 10 abbiamo già visto come si utilizza tale funzione
(vedi 10.2.2, pag. 106) e come valutare gli assunti del modello (vedi 10.2.3, pag. 107). Ora
consideriamo più in dettaglio il significato dei parametri stimati: β0 e β1 , per poi estendere il
concetto ai modelli con più predittori.
1
Dal momento che le variabili age e MQS sono espresse con numeri interi, e quindi non sono variabili continue
in senso stretto, vi sono alcuni soggetti che presentano una identica coppia di valori e quindi i punti possono
identificare più di un soggetto.
150 13 Regressione lineare multipla

> data(electrosmoke)
> fit1 <- lm(MQS~age,data=electrosmoke)
> fit1
Call:
lm(formula = MQS ~ age, data = electrosmoke)

Coefficients:
(Intercept) age
12.51623 0.09156

Box 13.1: Modello di regressione con un solo predittore quantitativo.

Nel modello considerato abbiamo una variabile dipendente Y (motivazione a smettere di


fumare, MQS) ed un predittore quantitativo X (età del soggetto, age); l’equazione stimata di
regressione può essere scritta nel modo seguente:

MQS = 12.52 + 0.09age + 

I punti sulla retta di regressione, rappresentata in figura 13.1, indicano i valori attesi di
MQS in relazione all’età dei soggetti; l’intercetta, β0 = 12.52, indica il punteggio atteso di
MQS per soggetti di età 0, il coefficiente di regressione, β1 = 0.09, indica che, osservando i
punteggi MQS in una sottopopolazione di soggetti in cui le età differiscono di una unità, ci
aspettiamo una differenza nei punteggi MQS in media di 0.09 punti. Da questa interpretazione
si possono capire due aspetti interessanti: 1) Non è detto che l’intercetta (β0 ) abbia un
significato empirico. In questo caso ad esempio, non ha senso sostenere che i soggetti di
zero anni abbiano una motivazione a smettere di fumare pari a 12.52. 2) Il solo valore del
motivazione a smettere di fumare

24
22
20
18
16
14
12

20 30 40 50 60

età dei soggetti

Figura 13.1: Relazione tra età e motivazione a smettere di fumare. La retta rappresenta l’equazione
del modello di regressione MQS = 12.52 + 0.09age.
13.2 Modello con un solo predittore 151

coefficiente di regressione (β1 ) non permette di stabilire la forza della relazione (o grandezza
dell’effetto) tra le variabili coinvolte. La grandezza di β1 infatti dipende dal range della
variabile dipendente, che in questo caso varia da un minimo di 12 ad un massimo di 25.
L’unica conclusione che possiamo trarre da questi dati è che aumentando l’età ci attendiamo
che aumenti anche la motivazione a smettere di fumare. Per stabilire se tale aumento sia
significativo e di quale ordine di grandezza rimandiamo a quanto già visto nel capitolo 10.

13.2.2 Un solo predittore dicotomico


Supponiamo ora di essere interessati a valutare se l’avere o meno utilizzato una sigaretta
elettronica sia un predittore per la motivazione a smettere, facendo sempre riferimento ai dati
dell’esempio 13.1. In questo secondo modello di regressione la variabile dipendente è la stessa
del caso precedente (motivazione a smettere, MQS). Il predittore invece è di tipo diverso: la
variabile che identifica se il soggetto interpellato ha fatto uso o meno della sigaretta elettronica
(elcig) è categoriale, con due soli valori possibili: yes e no. La rappresentazione grafica della
relazione, in figura 13.2, rende subito evidente la differenza di questo modello dal precedente,
in questo caso infatti abbiamo una rappresentazione con due boxplot, uno per i soggetti che
non hanno ed uno per quelli che hanno utilizzato la sigaretta elettronica, ciascuno dei quali
rappresenta i punteggi del MQS.
Nel box 13.2 vediamo come vengono stimati i parametri del modello di regressione e
possiamo notare che il processo è identico a quello già visto per il caso a predittore quantitativo
(box 13.1). Facendo però attenzione all’output del modello notiamo che il nome assegnato
al parametro di regressione non è semplicemente il nome della variabile (elcig) ma contiene
anche la dicitura yes. Il predittore categoriale dicotomico viene automaticamente ricodificato
in una variabile D con valori 0-1 (chiamata dummy), per default seguendo l’ordine alfabetico,
pertanto in questo caso i no diventano 0 e gli yes diventano 1. L’equazione di regressione
motivazione a smettere di fumare

24
22
20
18
16
14
12

no yes

uso della sigaretta elettronica

Figura 13.2: Relazione tra utilizzo della sigaretta elettronica e motivazione a smettere di fumare.
152 13 Regressione lineare multipla

> data(electrosmoke)
> fit2 <- lm(MQS~elcig,data=electrosmoke)
> fit2
Call:
lm(formula = MQS ~ elcig, data = electrosmoke)

Coefficients:
(Intercept) elcigyes
15.667 2.137

Box 13.2: Modello di regressione con un solo predittore dicotomico.

può allora essere scritta nel modo seguente:

MQS = 15.667 + 2.137D + 

in cui D = 0 se elcig è no e D = 1 se elcig è yes. Sebbene la modalità con cui abbiamo


ottenuto le stime dei parametri non cambi, la loro interpretazione è diversa rispetto al caso
del predittore quantitativo: l’intercetta β0 = 15.667 indica il punteggio MQS medio (o atteso)
dei soggetti che non hanno fatto uso della sigaretta elettronica, il coefficiente di regressione
β1 = 2.137 indica la differenza attesa tra le medie dei punteggi MQS nei due gruppi di soggetti.
Nel box 13.3 si vede, calcolando le medie della variabile MQS nei due gruppi, che la media
del gruppo no è uguale a β0 e la differenza tra le medie 17.804 − 15.667 = 2.137 è uguale a
β1 .

> tapply(electrosmoke$MQS,electrosmoke$elcig,mean)
no yes
15.66667 17.80392

Box 13.3: Punteggi medi MQS nei soggetti che hanno e non hanno usato la sigaretta elettronica.

Ancora, si noti che questo modello è dello stesso tipo trattato nella sezione 8.2 (pag. 84)
con il t-test in quanto stiamo confrontando le medie di due gruppi indipendenti osservando che
la motivazione a smettere di fumare è mediamente più alta per i soggetti che hanno utilizzato
la sigaretta elettronica. Pertanto dovrebbe essere chiaro una volta di più che il t-test non è
altro che un caso particolare di modello lineare.

13.3 Modello con più predittori


Nel caso in cui vi siano più predittori la formulazione del modello può essere come già riportato
nelle equazioni (13.1) e (13.2). In forma estesa, dati p predittori si può esprimere con:

Y = β0 + β1 X1 + β2 X2 + ... + βp Xp + 

Inoltre, avendo più predittori è possibile considerare nel modello anche le eventuali interazioni
tra essi, come già visto nel caso dell’ANOVA (vedi 11.2.4, pag. 127).
13.3 Modello con più predittori 153

13.3.1 Modello senza interazioni


Vogliamo sapere se l’età dei soggetti e l’uso della sigaretta elettronica siano predittivi della
motivazione a smettere di fumare. In pratica prendiamo entrambi i predittori considerati
nelle sezioni precedenti per valutare un modello che li considera entrambi. In questo caso, dal
momento che ci sono due predittori, uno dei quali dicotomico, dovremo stimare tre parametri:
l’intercetta β0 e due coefficienti di regressione, β1 e β2 , uno per ciascun predittore.

> fit3 <- lm(MQS~age+elcig,data=electrosmoke)


> fit3
Call:
lm(formula = MQS ~ age + elcig, data = electrosmoke)

Coefficients:
(Intercept) age elcigyes
9.3652 0.1397 2.6622

Box 13.4: Modello di regressione con due predittori senza interazione.

Nel box 13.4 abbiamo stimato i tre parametri per cui l’equazione del modello sarà:

MQS = 9.37 + 0.14age + 2.66D + 

in cui D = 0 se elcig vale no, D = 1 se elcig vale yes. Questa equazione rappresenta
geometricamente due rette, riportate in figura 13.3, una per i soggetti che non hanno usato
la sigaretta elettronica (retta blu) ed una per quelli che l’hanno usata (retta rossa):

Ŷ = 9.37 + 0.14age + 2.66 × 0 se elcig=’no’
Ŷ = 9.37 + 0.14age + 2.66 × 1 se elcig=’yes’

É facile verificare che le due rette risultano essere parallele, distanziate tra loro di un valore
costante pari a β2 = 2.66. Per quanto riguarda i parametri, si interpretano come segue:

• β0 = 9.37 (intercetta) punteggio MQS atteso di un soggetto di 0 anni che non ha usato
la sigaretta elettronica.

• β1 = 0.14 (coefficiente relativo a age) differenza attesa tra soggetti appartenenti allo
stesso gruppo (utilizzatori o non utilizzatori della sigaretta elettronica) che differiscono
di un punto nell’età.

• β2 = 2.66 (coefficiente relativo a elcig) differenza attesa tra soggetti utilizzatori e


soggetti non utilizzatori a parità di età.

In generale i coefficienti di regressione indicano le differenze attese nei valori della variabile
dipendente per differenze unitarie in un predittore tenendo fissi i valori degli altri predittori.

13.3.2 Modello con interazioni


Modifichiamo ora il modello introducendo anche l’interazione tra i predittori. Ammettere che
esista una interazione tra i predittori significa ammettere che essi agiscano in forma integrata
154 13 Regressione lineare multipla

motivazione a smettere di fumare

24
22
20
18
16
14
12

20 30 40 50 60

età dei soggetti

Figura 13.3: Relazione tra età, utilizzo della sigaretta elettronica e motivazione a smettere di fumare.
I pallini rossi indicano i soggetti che hanno fatto uso della sigaretta elettronica, i triangoli blu i soggetti
che non ne hanno fatto uso.

sulla variabile dipendente, ovvero che il loro effetto combinato è diverso dalla semplice somma
degli effetti dei predittori. Per ottenere la stima del parametro di interazione è sufficiente
sostituire il segno + con il segno * nella specificazione del modello, come illustrato nel box
13.5.

> fit4 <- lm(MQS~age*elcig,data=electrosmoke)


> fit4
Call:
lm(formula = MQS ~ age * elcig, data = electrosmoke)

Coefficients:
(Intercept) age elcigyes age:elcigyes
7.54233 0.18005 5.08980 -0.05502

Box 13.5: Modello di regressione con due predittori ed interazione.

Otteniamo 4 parametri, l’equazione di regressione potrà pertanto essere scritta come segue:

MQS = 7.54 + 0.18age + 5.09D − 0.055(age × D) + 

in cui, come nel modello precedente, D = 0 se elcig vale no, D = 1 se elcig vale yes. Anche
questa equazione rappresenta geometricamente due rette, riportate in figura 13.4, una per i
soggetti che non hanno usato la sigaretta elettronica (retta blu) ed una per quelli che l’hanno
usata (retta rossa).
Come si vede dalla figura, in questo caso le rette non sono parallele ed hanno, oltre alle
intercette diverse (rispettivamente 7.54 per il gruppo di soggetti che non hanno usato la
13.4 Confronto tra i modelli 155

motivazione a smettere di fumare

24
22
20
18
16
14
12

20 30 40 50 60

età dei soggetti

Figura 13.4: Relazione tra età, utilizzo della sigaretta elettronica e motivazione a smettere di fumare.
I pallini rossi indicano i soggetti che hanno fatto uso della sigaretta elettronica, i triangoli blu i soggetti
che non ne hanno fatto uso.

sigaretta elettronica e 7.54+5.089=12.63 per gli altri), anche diversi coefficienti di regressione
(rispettivamente 0.18 e 0.18-0.055=0.12). Il significato dei parametri in questo modello sarà:

• β0 = 7.54 (intercetta) valore atteso nel punteggio MQS di un soggetto di 0 anni che non
ha usato la sigaretta elettronica.

• β1 = 0.18 (coefficiente relativo a age) differenza attesa tra i soggetti che non hanno
usato la sigaretta elettronica e che differiscono di un anno di età.

• β2 = 5.09 (coefficiente relativo a elcig) differenza attesa tra i punteggi dei soggetti
di 0 anni che non hanno usato la sigaretta elettronica e quelli di 0 anni che l’hanno
utilizzata.

• β3 = −0.55 (coefficiente relativo all’interazione) differenza in termini di pendenza del-


le rette in funzione dell’età, confrontando i soggetti che hanno utilizzato la sigaretta
elettronica con quelli che non l’hanno utilizzata.

Si noti anche qui come i coefficienti β0 e β2 non abbiano alcun senso da un punto di vista
empirico.

13.4 Confronto tra i modelli


Nella sezione 10.3 ci siamo occupati di come testare la significatività del coefficiente di regres-
sione e stimare la grandezza dell’effetto. Lo stesso discorso si può replicare per i modelli con
più predittori. Nel box 13.6 è riportato l’output che si ottiene con la funzione summary() sul
156 13 Regressione lineare multipla

> summary(fit4)
Call:
lm(formula = MQS ~ age * elcig, data = electrosmoke)

Residuals:
Min 1Q Median 3Q Max
-5.0089 -1.1046 -0.1593 1.1752 6.9914

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.54233 1.56234 4.828 2.39e-06 ***
age 0.18005 0.03445 5.226 3.61e-07 ***
elcigyes 5.08980 1.79244 2.840 0.00488 **
age:elcigyes -0.05502 0.04021 -1.368 0.17240
---
Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

Residual standard error: 1.942 on 254 degrees of freedom


Multiple R-squared: 0.3527,Adjusted R-squared: 0.345
F-statistic: 46.12 on 3 and 254 DF, p-value: < 2.2e-16

Box 13.6: Modello di regressione con due predittori ed interazione.

modello con due predittori ed interazione. Tale output è identico a quello già visto nel box 10.2
e quindi rimandiamo a quella sezione (pag. 109) per la spiegazione dettagliata dell’output.
Un modo alternativo di procedere si basa sul confronto tra i modelli, fondato sulla logica
di individuare quello che permette di spiegare meglio i dati osservati. Nelle sezioni precedenti
abbiamo preso in esame quattro modelli di regressione con la stessa variabile dipendente:

• Modello 1: un solo predittore quantitativo, l’età dei soggetti (age).

• Modello 2: un solo predittore categoriale, uso della sigaretta elettronica (elcig).

• Modello 3: i due predittori dei modelli 1 e 2 senza interazione.

• Modello 4: i due predittori dei modelli 1 e 2 con interazione.

In pratica, il modello 4 è quello più completo e contiene tutti gli effetti, mentre i primi tre
possono essere considerati casi semplificati di quest’ultimo. Per confrontare i modelli possiamo
utilizzare vari metodi.
Un primo metodo si basa su un uso diverso dell’Analisi della Varianza; nel box 13.7
vediamo come fare utilizzando la funzione anova(), semplicemente inserendo in sequenza gli
oggetti fit1, fit2, fit3 e fit4, ottenuti precedentemente (vedi box 13.1, 13.2, 13.4 e 13.5).
Un limite di questo metodo è che consente solo il confronto di modelli nidificati, ovvero in cui
uno dei due sia parte dell’altro. Pertanto, il confronto tra modello 1 e 2 in questo caso non
risulta possibile perchè non sono nidificati. Un altro limite è che permette solo un confronto
sequenziale ovvero tra modelli adiacenti. In questo caso, ad esempio possiamo comparare il
13.4 Confronto tra i modelli 157

> anova(fit1,fit2,fit3,fit4)
Analysis of Variance Table

Model 1: MQS ~ age


Model 2: MQS ~ elcig
Model 3: MQS ~ age + elcig
Model 4: MQS ~ age * elcig
Res.Df RSS Df Sum of Sq F Pr(>F)
1 256 1372.87
2 256 1198.75 0 174.125
3 255 965.44 1 233.306 61.8335 1.07e-13 ***
4 254 958.37 1 7.065 1.8725 0.1724
---
Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

Box 13.7: Confronto tra i modelli con ANOVA.

modello 4 con il 3 ma non con il 2, per farlo dovremmo modificare l’ordine in cui li inseriamo
nella funzione anova().
L’output presenta una tabella con quattro righe, una per ciascun modello, e 6 colonne:
Res.DF, gradi di libertà dei residui, RSS, devianza residua, Df, differenza tra i gradi di libertà
della prima colonna, Sum of Sq, differenza tra le devianze residue, F, statistica test, Pr(>F),
probabilità associata alla statistica test. Leggendo questa tabella possiamo confrontare il mo-
dello 3 (due predittori senza interazione) con il modello 2 (solo un predittore) e con il modello
4 (due predittori con interazione) utilizzando il valore di probabilità dell’ultima colonna.
Sulla riga 3 abbiamo il confronto tra i modelli 2 e 3; il modello 3 non è altro che il modello 2
con l’aggiunta del predittore age. L’ipotesi H0 è che non ci siano differenze tra il modello 2 ed il
modello 3, e quindi, detto in altri termini, che il predittore age non migliora significativamente
il modello. Il valore di p = 1.07e − 13 < .05 indica un risultato statisticamente significativo,
pertanto possiamo rigettare l’ipotesi H0 e concludere che introducendo il predittore age il
modello migliora oppure che il modello con due predittori spiega meglio i dati rispetto a
quello con uno solo.
Sulla riga 4 troviamo il confronto tra il modello 3 (due predittori senza interazione) ed il
modello 4 (due predittori con interazione). Anche in questo caso l’ipotesi H0 sentenzia che
non ci sono differenze tra i modelli. La probabilità associata al test p = .17 è maggiore di
.05 quindi il risultato non è statisticamente significativo pertanto l’interazione tra i predittori
non comporta un miglioramento del modello. Si noti che questo valore di probabilità è lo
stesso che si osserva nel box 13.6 relativamente al test per la significatività dell’interazione:
age:elcigyes.

Akaike Information Criterion


Un altro modo per confrontare modelli si basa sull’Akaike Information Criterion (AIC; Akai-
ke, 1974). Questa statistica misura la qualità relativa di un modello M per un definito insieme
di dati, ed è definita in generale con la formula

AIC(M ) = 2k − 2 ln(L) (13.3)


158 13 Regressione lineare multipla

in cui k è il numero di parametri del modello e ln(L) il logaritmo naturale di L, valore


di massima verosimiglianza. Senza entrare nel dettaglio (gli interessati possono trovare utili
approfondimenti in Burnham & Anderson, 2004) diremo semplicemente che, dato un gruppo di
modelli tra loro in competizione, quello con il valore di AIC più basso è il migliore. Rispetto al
metodo ANOVA visto precedentemente, ha il vantaggio che permette il confronto simultaneo
di tutti i modelli anche se non sono nidificati.

> AIC(fit1,fit2,fit3,fit4)
df AIC
fit1 3 1169.471
fit2 3 1134.479
fit3 4 1080.635
fit4 5 1080.740

Box 13.8: Confronto tra i modelli con AIC.

Nel box 13.8 vediamo come procedere: basta utilizzare la funzione AIC(), all’interno della
quale vengono inseriti i modelli da confrontare fit1, fit2, fit3 e fit4 (gli stessi già utilizzati
nella funzione ANOVA nel box 13.7). Sulla base di questo risultato possiamo concludere che
il modello migliore è il 3, ovvero quello con i due predittori senza interazione.

> BIC(fit1,fit2,fit3,fit4)
df BIC
fit1 3 1180.130
fit2 3 1145.137
fit3 4 1094.847
fit4 5 1098.505

Box 13.9: Confronto tra i modelli con BIC.

Bayesian Information Criterion


Il Bayesian Information Criterion (BIC; Schwarz, 1978) è una statistica ottenuta modificando
AIC:
BIC(M ) = k ln(n) − 2 ln(L) (13.4)
in cui k è il numero di parametri del modello, ln(n) il logaritmo naturale di n, numero
di osservazioni e ln(L) il logaritmo naturale di L, valore di massima verosimiglianza. Ne
riparleremo più in dettaglio nel successivo capitolo 16, per il momento possiamo vedere nel box
13.9 come utilizzarlo tramite la funzione BIC() esattamente come prima abbiamo utilizzato
la funzione AIC().
Anche per BIC vale la regola di AIC: più è basso il valore migliore è il modello. Pertanto
la conclusione è ancora una volta che il modello migliore tra quelli presi in esame è il 3.
Capitolo 14

Regressione lineare multivariata

Nel capitolo 13 abbiamo esteso il concetto di regressione lineare introdotto nel capitolo 10 ai
casi in cui abbiamo una variabile dipendente e più predittori (quantitativi e/o categoriali).
In generale un modello lineare si definisce sulla base di una equazione matematica (vedi 13.1,
pag. 147), ad esempio
Y = β0 + β1 X1 + β2 X2 + β3 X3 + 

esprime un modello lineare con tre predittori (X1 , X2 e X3 ) ed una variabile dipendente (Y ).
Lo stesso modello può essere rappresentato con lo schema di figura 14.1 in cui i rettangoli
di colore grigio sono predittori ed il rettangolo azzurro la variabile dipendente. Le tre frecce
unidirezionali, che partono dalle X ed arrivano alla Y , rappresentano i coefficienti di regres-
sione (β1 , β2 , β3 ), mentre la freccia bidirezionale a destra della Y rappresenta la varianza
dell’errore  indicata dalla lettera ψ (ψ = VAR()). Possiamo notare che in questo tipo di
rappresentazione grafica non viene considerata l’intercetta del modello (β0 ) pertanto in questo
capitolo possiamo scrivere le equazioni dei modelli di regressione omettendola. L’omissione
dell’intercetta ha il vantaggio di semplificare la scrittura del modello, in più, come vedremo
tra breve, nei modelli multivariati non viene considerata un parametro diretto.
In sintesi, possiamo dire che da ogni equazione di un modello di regressione lineare, sem-
plice o multipla, si può avere una rappresentazione grafica e viceversa, da un grafico di un
modello possiamo ricavare un’equazione.

X1

β1

X2 β2 Y ψ

β3

X3

Figura 14.1: Rappresentazione grafica del modello Y = β1 X1 + β2 X2 + β3 X3 + , con ψ = VAR().


160 14 Regressione lineare multivariata

X1

β1 β2 β4

X2 β3 X3 β6 Y

ψ2 ψ3 ψ4
β5

Figura 14.2: Rappresentazione grafica di un modello multivariato.

Consideriamo ora il modello in figura 14.2, diversamente dal precedente questo non è
esprimibile con una sola equazione in quanto presenta una struttura di relazioni decisamente
più complessa. Notiamo che la variabile X2 non è più semplicemente un predittore di Y ,
ovvero invia una freccia verso Y , ma è anche dipendente da X1 , infatti riceve da questa una
freccia, e predittore di X3 , infatti da X2 parte una freccia che porta a X3 . Allo stesso modo
si vede che X3 dipende da X1 e X2 .
Quando abbiamo una situazione di questo tipo, ovvero con più variabili dipendenti, il
modello di regressione diventa multivariato e sarà descrivibile matematicamente con un siste-
ma formato da tante equazioni quante sono le variabili dipendenti, in questo caso specifico
avremo:

 X2 = β1 X1 + 2
X3 = β2 X1 + β3 X2 + 3
Y = β4 X1 + β5 X2 + β6 X3 + 4

Ogni equazione di questo sistema esprime una variabile dipendente (X2 , X3 e Y ) in


funzione dei rispettivi predittori più una componente di errore (2 , 3 e 4 ). I predittori
vengono individuati nella figura 14.2 come le variabili da cui partono le frecce unidirezionali.
Le dipendenti vengono individuate nella figura in quanto hanno una freccia bidirezionale che
rappresenta la varianza dell’errore associato alla relativa equazione.
Nel presente capitolo ci occuperemo di modelli lineari multivariati definibili matematica-
mente con sistemi di equazioni lineari, chiamati anche modelli di path analysis (Kline, 2005).
Dal momento che in questi modelli il ruolo di una variabile può essere duplice (ovvero esse-
re sia predittore che dipendente), si introduce una tipologia propria di classificazione delle
variabili che ne definisce il ruolo all’interno del modello. Parleremo di variabili esogene in
riferimento a variabili di origine esterna e che nel modello agiscono solo come predittori. Tali
variabili saranno indicate con la lettera X e generalmente sono considerate senza errore. Par-
leremo di variabili endogene in riferimento a variabili di origine interna e che nel modello
14.1 Modello multivariato 161

X[4]

β14 β24 β34

Y1 β21 Y2 β32 Y3

ψ11 ψ22 ψ33


β31

Figura 14.3: Rappresentazione grafica di un modello multivariato.

possono svolgere sia il ruolo di predittori che di dipendenti. Tali variabili saranno indicate
con la lettera Y e ciascuna di esse ha un errore associato, indicato nelle equazioni con il
simbolo  e la cui varianza (ψ) viene rappresentata con una freccia bidirezionale nei grafici.
Sulla base di questa nuova classificazione, il modello in figura 14.2 viene ridisegnato in figura
14.3, in cui X2 e X3 diventano variabili endogene e quindi vengono indicate con la lettera Y
(rispettivamente Y1 e Y2 ). X1 rimane tale in quanto, non dipendendo da alcuna variabile del
modello, è una variabile esogena; l’unico cambio è l’indice che diventa 4 al posto di 1. Per
convenzione nell’ordine delle variabili vengono prima le endogene e poi le esogene, quindi la
nostra numerazione da ora in poi seguirà queste regola. Infine, notiamo che ora gli indici dei
coefficienti β e delle varianze ψ sono due. In particolare, notiamo che il primo indice dei β
è lo stesso della variabile su cui punta la freccia, ed il secondo quello della variabile da cui
parte la freccia, mentre gli indici delle ψ sono sempre uguali. Nella prossima sezione capiremo
meglio il significato di questi indici.

14.1 Modello multivariato


Sia dato un modello basato su un campione di n unità statistiche, con q variabili endogene e
p variabili esogene, tale modello può essere espresso con l’equazione

Y = X ∗B0 +  (14.1)

in cui Y è la matrice (n righe × q colonne) delle variabili osservate endogene, X ∗ la matrice


[n × (q + p)] delle variabili osservate endogene ed esogene insieme, B la matrice dei coefficienti
di regressione [(q + p) × (q + p)] e  la matrice degli errori nelle equazioni (n × q). La scrittura
B 0 indica che nell’equazione del modello la matrice è trasposta, ovvero vengono scambiate le
righe con le colonne (vedi esempio nel box 2.9, pag. 16). L’equazione del modello rappresenta
un sistema composto da tante equazioni quante sono le variabili endogene.
162 14 Regressione lineare multivariata

Per capire meglio il senso dell’ equazione (14.1) consideriamo un esempio in cui abbiamo
5 osservazioni rilevate sulle 4 variabili del modello in figura 14.3; pertanto la matrice X ∗
coinciderà esattamente con il nostro set di dati:
 
4 −1 2 0
 2 0 0 1 

 
X =  −1 3 −2 0  
 5 −1 1 0 
1 0 1 4

in cui le prime tre colonne saranno le variabili endogene (Y1 , Y2 e Y3 ) e la quarta la variabile
esogena (X4 ). In altri termini
   
4 −1 2 0
 2 0 0   1 
   
Y =  −1 3 −2  e X= 0 
  
 5 −1 1   0 
1 0 1 4
Dato che ci sono q = 3 variabili endogene e p = 1 variabile esogena, la matrice B avrà
q + p = 3 + 1 = 4 righe ed altrettante colonne:
 
0 0 0 β14
 β21 0 0 β24 
B=  β31 β32
 (14.2)
0 β34 
0 0 0 0
in cui i vari coefficienti di regressione sono collocati in funzione dei valori dei propri indici.
Ad esempio β21 , che esprime la relazione in cui Y1 è predittore di Y2 è collocato nella seconda
riga e prima colonna. Dal momento che nel modello non vale la relazione inversa, ovvero che
Y2 è predittore di Y1 , l’elemento sulla riga 1 e colonna 2 è zero. Riassumendo, la matrice B
avrà le seguenti caratteristiche:
• É quadrata, ovvero con un numero di righe uguale al numero di colonne, ma non sim-
metrica (vedi sezione 4.2, pag. 35) in quanto i vari coefficienti β esprimono relazioni
asimmetriche in cui la variabile di colonna rappresenta il predittore e la variabile di riga
la dipendente.
• I valori in diagonale sono sempre zero in quanto esprimono l’effetto di ciascuna variabile
su se stessa.
Diversamente dai modelli di regressione semplice e multipla, in cui B indica i legami tra
i predittori e la dipendente, in questo caso la matrice B esprime due tipi di legami: i legami
tra le variabili esogene e le endogene, ed i legami tra le variabili endogene. La matrice (14.2)
può infatti essere scomposta in tre porzioni:
1. La porzione che coinvolge le sole variabili endogene, ovvero che riguarda i parametri
delle relazioni tra Y , di dimensione q × q, in questo caso 3 × 3:
 
0 0 0
BY =  β21 0 0 
β31 β32 0
14.1 Modello multivariato 163

Dal momento che, per convenzione, si riportano prima le variabili endogene e poi le
esogene, questa porzione di B sarà formata dalle prime q righe e q colonne. Questa
porzione di B è sempre quadrata, non simmetrica e con valori zero in diagonale.

2. La porzione che contiene i parametri relativi ai legami tra le variabili esogene ed


endogene, di dimensione q × p, in questo caso 3 × 1:
 
β14
BX =  β24 
β34

Questa porzione di B può essere anche di forma non quadrata, infatti non è detto che nel
modello il numero di variabili esogene (p) coincida con il numero di variabili endogene
(q).

3. Una porzione residua, formata tutta di zeri, di dimensione p × q:


 
B0 = 0 0 0 0

Quest’ultima porzione non ha nessun significato e la sua funzione è solo quella di


garantire che la matrice B sia quadrata.

Quindi, la matrice B diventa nel modello multivariato quello che prima era il vettore β
(vedi pag. 147) ovvero un insieme di parametri da stimare. Dal momento che la funzione lm(),
utilizzata fino ad ora per la stima dei coefficienti di regressione, funziona solo per modelli con
una sola variabile dipendente, per le stime dei coefficienti nei modelli multivariati dobbiamo
utilizzare un’altra funzione. A questo proposito ci serviremo della funzione sem() contenuta
nella libreria lavaan (latent variable analysis; Rosseel, 2012). Questa funzione consente
comunque di gestire anche i modelli di regressione lineare semplice e multipla, e, sebbene con
un approccio differente, può essere considerata più generale di lm().

14.1.1 Regressione multipla


Riprendiamo in esame il modello di regressione trattato nella sezione 13.3.1. In quel modello,
ora rappresentato in figura 14.4, eravamo interessati a valutare se l’età dei soggetti e l’uso
della sigaretta elettronica fossero predittivi della motivazione a smettere di fumare.
Nel box 13.4 (a pag. 153) abbiamo stimato i parametri del modello di regressione con la
funzione lm(), nel box 14.1 vediamo come fare utilizzando la funzione sem().
Con il comando library() carichiamo la libreria lavaan. Quindi creiamo un ogget-
to di nome fit1 che contiene il prodotto della funzione sem(). Quest’ultima richiede co-
me primo argomento la definizione del modello (MQS∼age+elcig) ma, a differenza di come
scritto in lm(), esso va riportato tra apici, più avanti capiremo perché. Come secondo ar-
gomento della funzione viene specificato il set di dati che contiene le variabili del modello
(data=electrosmoke). Il terzo comando coef() permette di visualizzare i parametri stimati
del modello ed anche qui notiamo una differenza rispetto al risultato del box 13.4; il primo ed
il secondo parametro (qui chiamati con MQS∼age e MQS∼elcig, indicati in figura 14.4 con β12
e β13 ) coincidono con i due coefficienti di regressione (β1 e β2 ), il terzo parametro invece non
coincide con l’intercetta. Come detto all’inizio del capitolo, e come si vede dalle rappresenta-
zioni nelle figure 14.1, 14.2, 14.3 e 14.4, in questo approccio l’intercetta non viene considerata
164 14 Regressione lineare multivariata

age elcig

β12 β13

MQS

ψ11

Figura 14.4: Rappresentazione grafica del modello di regressione multipla della sezione 13.3.1:
MQS∼age+elcig.

come parametro del modello, al suo posto si considerano le varianze d’errore (rappresentate
con il simbolo ψ). Pertanto, il terzo parametro, indicato nell’output con MQS∼∼MQS, ed in
figura 14.4 con ψ11 , è la varianza dell’errore.

> library(lavaan)
> fit1 <- sem("MQS~age+elcig",data=electrosmoke)
> coef(fit1)
MQS~age MQS~elcig MQS~~MQS
0.140 2.662 3.742

Box 14.1: Parametri del modello di regressione multipla ottenuti con la funzione sem().

Per visualizzare in dettaglio le matrici di parametri del modello possiamo utilizzare la


funzione inspect() come illustrato nel box 14.2. Vediamo che il comando inspect(fit1)
produce quattro matrici: $lambda, $theta, $psi e $beta. Tralasciamo le prime due matrici,
indicate con $lambda e $theta, in quanto non vengono utilizzate nei modelli che trattiamo nel
presente capitolo. Nella matrice $beta i valori sono tutti zero ad eccezione dei due che indicano
i coefficienti di regressione da stimare: β12 (indicato con 1, prima riga, seconda colonna) e
β13 (indicato con 2, prima riga, terza colonna). Nella matrice $psi l’unico elemento diverso
da zero è il primo (valore 3, prima riga e prima colonna) che indica la varianza d’errore ψ11 .
Da questo output pertanto possiamo capire quali e quanti sono i parametri da stimare del
modello, in questo caso tre ovvero β12 , β13 e ψ11 .

14.1.2 Modelli ricorsivi


I modelli di regressione semplice e multipla sono dei casi semplici di modelli ricorsivi. I modelli
ricorsivi sono una famiglia di modelli in cui le possibili relazioni tra le variabili endogene vanno
14.1 Modello multivariato 165

> inspect(fit1)
$lambda
MQS age elcig
MQS 0 0 0
age 0 0 0
elcig 0 0 0

$theta
MQS age elcig
MQS 0
age 0 0
elcig 0 0 0

$psi
MQS age elcig
MQS 3
age 0 0
elcig 0 0 0

$beta
MQS age elcig
MQS 0 1 2
age 0 0 0
elcig 0 0 0

Box 14.2: Matrici dei parametri del modello di regressione multipla ottenuti con la funzione sem().

in una sola direzione, senza causazioni reciproche e neppure dei loop. Le figure 14.5 e 14.6
sono degli esempi di modelli ricorsivi. In entrambi i casi è possibile seguire le frecce lungo

X[3] X[2]

β12

β13 Y1 ψ11

β13

Y1 β21 Y2 X[3]

ψ11 ψ22

Figura 14.5: Esempio di modello ricorsi- Figura 14.6: Esempio di modello ricorsi-
vo con una variabile esogena (X[3] ) e due vo con due variabili esogene (X[2] e X[3] )
variabili endogene (Y1 e Y2 ). ed una variabile endogena (Y1 ).
166 14 Regressione lineare multivariata

un ipotetico flusso che parte da X[3] ed arriva a Y2 nel primo caso, che parte dalle variabili
esogene X[2] e X[3] ed arriva alla variabile endogena nel secondo caso.
Da un punto di vista matematico, i modelli ricorsivi presentano due caratteristiche:

1. La matrice B, nella porzione che coinvolge le variabili endogene (BY ), può sempre
essere scritta come matrice triangolare.

2. La matrice di covarianza tra gli errori (Ψ) è sempre diagonale.

Come abbiamo già visto ad inizio sezione, la matrice B è sempre una matrice quadrata in
quanto il numero di righe e colonne che la compongono è uguale al numero delle variabili
osservate, inoltre la diagonale di questa matrice sarà sempre di zeri. Una matrice quadrata è
triangolare quando assume valori tutti uguali a zero nella porzione sotto o sopra la diagonale.
Pertanto la prima proprietà implica che se togliamo da B le righe e le colonne che riguardano
le variabili esogene (le X), la porzione che resta può essere sempre ricondotta (eventualmente
scambiando l’ordine delle righe e delle colonne) ad una forma triangolare.
Questa proprietà è rispettata in entrambi i modelli delle figure 14.5 e 14.6. Nel primo
modello infatti la matrice B ha dimensione 3 × 3:
 
0 0 β13
B =  β21 0 0 
0 0 0

togliendo la terza riga e la terza colonna, riferite alla variabile esogena X[3] si ottiene:
 
0 0
BY =
β21 0

che è triangolare inferiore. Nel secondo modello, dal momento che vi è una sola variabile
endogena, la porzione di BY avrà dimensione 1 × 1 e quindi sarà composta di un unico
elemento ovvero: BY = [0].
La seconda proprietà fa riferimento alla Ψ, matrice di covarianza tra gli errori. Questa
matrice ha sempre un numero di righe e di colonne uguale al numero di variabili endogene
del modello. Nella sezione 4.2.1 (pag. 35) abbiamo introdotto il significato della matrice di
covarianza, specificando che si tratta di una matrice quadrata e simmetrica all’interno della
quale sono presenti le covarianze tra le variabili coinvolte. In generale, per semplicità, questo
tipo di matrice viene presentato omettendo gli elementi al di sopra della diagonale in quanto
specularmente identici a quelli al di sotto (vedi box 14.2). Una matrice quadrata è diagonale
quando gli elementi al di fuori della diagonale sono tutti zero. Se la matrice Ψ è diagonale
significa che gli unici elementi non-nulli sono quelli in diagonale, ovvero le varianze degli
errori. Detto in altri termini significa che nel modello gli errori non sono tra loro correlati
oppure che sono tra loro stocasticamente indipendenti.

Esempio 14.1 In una ricerca sul clima sociale di quartiere (Vieno et al., 2010) sono rilevati
quattro indicatori:

1. capitale sociale (social capital ), una misura del supporto tra vicini ed il clima sociale;

2. problemi di sicurezza (safety concerns), una misura della paura della criminalità e
preoccupazione per il proprio figlio;
14.1 Modello multivariato 167

3. genitorialità (parenting), una misura del grado di sostegno dei genitori;

4. comportamento antisociale (antisocial behavior ) degli adolescenti.

Nel data set social sono raccolti i dati relativi a questi indicatori in un campione (fittizio)
di 950 soggetti. Il modello considerato (vedi figura 14.7) ipotizza che il capitale sociale sia
un predittore degli altri tre indicatori, che i problemi di sicurezza siano un predittore del
comportamento dei genitori e del comportamento antisociale, e infine che il comportamento
dei genitori sia un predittore del comportamento antisociale.
Questo modello si definisce con due matrici di parametri:
 
0 0 0 β14  
 β21 ψ11
0 0 β24  
 0 ψ22
B=  β31 β32 0 β34  e Ψ =

0 0 ψ33
0 0 0 0

da cui possiamo dedurre che si tratta di un modello ricorsivo infatti: 1) togliendo da B


la quarta riga e la quarta colonna, la porzione che rimane è triangolare; 2) la matrice Ψ è
diagonale.

Supponiamo ora di voler testare il modello; dal momento che comprende tre variabili
endogene, esso si caratterizzerà con un sistema di tre equazioni, una per ciascuna endogena:

 Y1 = β14 X4 + 1
Y2 = β21 Y1 + β24 X4 + 2
Y3 = β31 Y1 + β32 Y2 + β34 X4 + 3

Nel box 14.3 vediamo in dettaglio come procedere. Con il comando data() carichiamo
il set di dati. Quindi definiamo un oggetto di nome model che contiene le tre equazioni

social
capital
(X[4] )

β14 β24 β34

safety antisocial
parenting
concerns β21 (Y2 )
β32 behavior
(Y1 ) (Y3 )

ψ11 ψ22 ψ33


β31
Figura 14.7: Modello ricorsivo (Vieno et al., 2010).
168 14 Regressione lineare multivariata

> data(social,package="ADati")
> model <- "
+ safety.concerns ~ social.capital
+ parenting ~ social.capital + safety.concerns
+ antisocial.behavior ~ social.capital + safety.concerns + parenting
+ "
> fit.social <- sem(model,data=social)
> summary(fit.social)
lavaan (0.5-14) converged normally after 29 iterations

Number of observations 950

Estimator ML
Minimum Function Test Statistic 0.000
Degrees of freedom 0
P-value (Chi-square) 0.000

Parameter estimates:

Information Expected
Standard Errors Standard

Estimate Std.err Z-value P(>|z|)


Regressions:
safety.concerns ~
social.capitl 1.738 0.026 67.341 0.000
parenting ~
social.capitl -0.303 0.027 -11.040 0.000
safety.cncrns 0.172 0.014 11.969 0.000
antisocial.behavior ~
social.capitl 0.204 0.022 9.355 0.000
safety.cncrns -0.096 0.012 -8.348 0.000
parenting -1.476 0.024 -60.812 0.000

Variances:
safety.cncrns 0.091 0.004
parenting 0.018 0.001
antisocl.bhvr 0.010 0.000

Box 14.3: Analisi del modello ricorsivo rappresentato in figura 14.7.

del modello. Come possiamo vedere la scrittura di ogni singola riga segue esattamente le
regole già viste per la funzione lm() (vedi sez. 10.2.2, pag. 106) indicando il nome della
variabile dipendente prima del simbolo ∼ (che, lo ricordiamo, va letto come: ’è funzione di’)
ed i predittori dopo. Si faccia attenzione che il modello va definito su righe separate e tra
apici, senza questi ultimi in particolare R non è in grado di interpretare come sia strutturato
14.1 Modello multivariato 169

il modello perchè non capisce dove inizia e dove finisce. La terza operazione è la stima
dei parametri del modello con la funzione sem() il cui risultato viene salvato nell’ oggetto
chiamato fit.social. Infine, con il comando summary() otteniamo l’output dettagliato del
modello.
Tralasciando la parte superiore dell’output, che in questa sede non ci interessa, nella parte
inferiore, dopo la dicitura Parameter estimates troviamo il dettaglio dei parametri stimati
suddivisi in due sezioni:

1. Regressions: che riguarda i coefficienti di regressione, ovvero i parametri relativi alla


matrice B.

2. Variances: che riguarda le varianze d’errore, ovvero i parametri relativi alla matrice
Ψ.

I parametri del modello sono riportati in una tabella con quattro colonne: Estimate, che
contiene il valore stimato del parametro, Std.err, con le stime degli errori standard, Z-value,
il relativo valore z calcolato dividendo il valore della stima per il suo errore standard e P(>|z|),
il p-value associato al valore di z, ovvero la probabilità di ottenere un valore z più estremo
di quello osservato se è vera H0 . Per l’interpretazione di quest’ultimo valore, vale quanto già
detto nel capitolo 10 quando si è trattato dell’inferenza sul coefficiente di regressione (vedi
sez. 10.3, pag. 108). Pertanto, per questo caso specifico, possiamo concludere che tutti i
coefficienti β, poichè hanno dei valori di p minori di 0.05, sono statisticamente significativi,
ovvero diversi da zero.

14.1.3 Modelli non-ricorsivi


I modelli non-ricorsivi sono modelli in cui è possibile definire relazioni reciproche tra le variabi-
li, dei loop oppure si possono avere errori correlati. Nelle figure 14.8 e 14.9 sono rappresentati
due esempi di modelli di questo tipo. Nel modello in figura 14.8 notiamo che Y1 e Y2 sono
legate tra loro da due frecce unidirezionali. Questa rappresentazione indica che le due variabili
svolgono entrambe e contemporaneamente il ruolo di predittore e dipendente l’una rispetto
all’altra. Nel modello in figura 14.9 vediamo un altro tipo di loop che coinvolge tre variabili:
Y1 è predittore di Y2 , che a sua volta è predittore di Y3 , che a sua volta è predittore di Y1
chiudendo il ciclo. In generale possiamo notare che i modelli non-ricorsivi sono più complessi
ed articolati di quelli ricorsivi.
Da un punto di vista matematico, i modelli non-ricorsivi presentano due caratteristiche:

1. La matrice B, nella porzione che coinvolge le variabili endogene (BY ), non può mai
essere scritta come matrice triangolare.

2. La matrice di covarianza tra gli errori (Ψ) può avere valori diversi da zero anche al di
fuori della diagonale.

La prima proprietà implica che, se togliamo la porzione di B contenente i legami con


le variabili esogene, rimane una matrice quadrata in cui è impossibile, anche scambiando di
ordine le righe e le colonne, disporre tutti i valori diversi da zero al di sotto o al di sopra della
diagonale. La seconda proprietà implica che gli errori delle variabili endogene possono anche
essere tra loro correlati.
170 14 Regressione lineare multivariata

Nel primo modello la matrice B ha dimensione 4 × 4 (4 righe e 4 colonne) e la seguente


struttura:  
0 β12 β13 0
 β21 0 0 β24 
B=  0

0 0 0 
0 0 0 0
togliendo le righe e le colonne relative alle variabili esogene (ovvero la terza e la quarta)
rimane la porzione delle variabili endogene:
 
0 β12
BY =
β21 0

che evidentemente, invertendo righe e colonne, non può essere trasformata in una matrice
triangolare. Anche nel secondo modello accade lo stesso, data la matrice B (di dimensione
5 × 5):  
0 0 β13 β14 0
 β21 0 0 0 β25 
 
B =  0 β32
 0 0 0 

 0 0 0 0 0 
0 0 0 0 0
da cui si ottiene, togliendo le righe e le colonne 4 e 5:
 
0 0 β13
BY =  β21 0 0 
0 β32 0

una matrice che non può essere trasformata in triangolare.

Esempio 14.2 Per testare un modello sui predittori della soddisfazione e dell’impegno orga-
nizzativo (Mathieu, 1991) furono intervistati 588 cadetti impegnati in corsi di addestramento

X[5] Y3 ψ33
X[4] β24 Y2 ψ22
β25 β32
β21 Y2 ψ22
β12 β13
β21

X[4] β14 Y1 ψ11


X[3] β13 Y1 ψ11

Figura 14.9: Esempio di modello non-


Figura 14.8: Esempio di modello non-
ricorsivo con due variabili esogene (X[4]
ricorsivo con due variabili esogene (X[3]
e X[5] ) e tre variabili endogene (Y1 , Y2 e
e X[4] ) e due variabili endogene (Y1 e Y2 ).
Y3 ).
14.1 Modello multivariato 171

Unit.cohesion Achiev.mot Unit.perf.stand Vet.status


X[5] X[6] X[7] X[8]

β28
β15 β16 β26 β27
β37
β46

Role.strain Training.char Satisfaction β34 Organ.commit

Y1 Y2 β32 Y3 Y4
β43

ψ11 β31 ψ22 ψ33 β42 ψ44


β41
Figura 14.10: Modello non ricorsivo (Mathieu, 1991).

militare presso tre università. Il modello, rappresentato in figura 14.10 si compone delle
seguenti variabili:
1. Role strain: percezione di stress/tensione associata all’occupare un determinato ruolo
(Role.strain)
2. Training characteristics: caratteristiche della formazione ricevuta (Training.char)
3. Satisfaction: soddisfazione percepita (Satisfaction)
4. Organizational commitment: percezione dell’impegno dell’unità organizzativa (Organ.
commit)
5. Unit cohesion: coesione della classe in cui vengono svolti i corsi (Unit.cohesion)
6. Achievement motivation: motivazione al raggiungimento di obiettivi (Achiev.mot)
7. Unit performance standards: percezione individuale di quanto la propria unità militare
sia stata adeguatamente formata per il raggiungimento di obiettivi elevati (Unit.perf.
stand)
8. Veterans’ status: esperienza in ambito militare (Vet.status)
Le ultime quattro sono le variabili esogene in quanto svolgono solo il ruolo di predittori e,
come si vede in figura, non presentano una varianza d’errore associata. Le prime quattro sono
le variabili endogene, e nel modello svolgono tutte sia il ruolo di dipendenti che di predittori.
Da questa prima considerazione deriva che il modello sarà definito con un sistema di quattro
equazioni: 

 Y1 = β15 X5 + β16 X6 + 1
Y2 = β26 X6 + β27 X7 + β28 X8 + 2

Y = β31 Y1 + β32 Y2 + β34 Y4 + β37 X7 + 3
 3


Y4 = β41 Y1 + β42 Y2 + β43 Y3 + β46 X6 + 4
172 14 Regressione lineare multivariata

ed avrà la seguente matrice di coefficienti di regressione:


 
0 0 0 0 β15 β16 0 0
 0 0 0 0 0 β26 β27 β28 
 
 β31 β32 0 β34 0 0 β37 0 
 
 β41 β42 β43 0 0 β46 0 0 
B=  
 0 0 0 0 0 0 0 0 

 0 0 0 0 0 0 0 0 
 
 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0
dalla quale, togliendo le righe e le colonne relative alle variabili esogene (dalla 5 alla 8), si
ottiene:  
0 0 0 0
 0 0 0 0 
BY =   β31 β32

0 β34 
β41 β42 β43 0
ovvero una matrice non riconducibile a forma triangolare; pertanto il modello in figura 14.10
è di tipo non-ricorsivo.

Nel box 14.4 vediamo come procedere per analizzare il modello. Carichiamo i dati, presenti
nel data-set mathieu della libreria ADati e definiamo il modello scrivendo le quattro equazioni
che lo caratterizzano, utilizzando i nomi delle variabili presenti nel set di dati. Poi, con la
funzione sem() stimiamo i parametri del modello e li stampiamo in output con la funzione
summary().

14.2 Valutazione del modello


Valutare un modello significa stabilire se esso è coerente con i dati raccolti. Si tratta di
un passaggio fondamentale che permette di dare supporto o meno ad una certa teoria che è
l’obiettivo finale di un’analisi multivariata; per poter valutare un modello è necessario però
che, prima di tutto, esso sia identificabile. In questa sezione definiamo cosa si intende per
identificazione di un modello e successivamente vediamo come procedere per valutarlo.

14.2.1 Identificazione del modello


Un modello è un’espressione formalizzata di una teoria (Kendall & Buckland, 1957) e raccoglie
un insieme di ipotesi sulle relazioni delle variabili in esso coinvolte. Volendo schematizzare, ed
anche un po’ estremizzare, possiamo dire che ciascuna ipotesi del modello può essere tradotta
in un parametro. Ad esempio, quando valutiamo la significatività statistica della stima di
un parametro di regressione tra due variabili, stiamo implicitamente testando l’ipotesi che la
relazione tra le due variabili sia nulla (H0 ). L’approccio multivariato consente appunto di
valutare contemporaneamente più ipotesi in quanto permette di stimare simultaneamente un
numero di parametri che varia da un minimo di due (ad esempio nel modello di regressione
lineare semplice) ad un certo numero massimo che dipende dal modello. Più precisamente:
dato un modello composto da q variabili endogene e p variabili esogene, deve essere
(p + q)(p + q + 1)
t≤ (14.3)
2
14.2 Valutazione del modello 173

> data(mathieu,package="ADati")
> model <- "
+ Role.strain ~ Unit.cohesion + Achiev.mot
+ Training.char ~ Unit.perf.stand + Vet.status + Achiev.mot
+ Satisfaction ~ Unit.perf.stand + Role.strain + Training.char + Organ.commit
+ Organ.commit ~ Role.strain + Training.char + Achiev.mot + Satisfaction
+ "
> fit.nonrec <- sem(model,data=mathieu)
> summary(fit.nonrec)
[...]

Parameter estimates:

Information Expected
Standard Errors Standard

Estimate Std.err Z-value P(>|z|)


Regressions:
Role.strain ~
Unit.cohesion -0.171 0.035 -4.948 0.000
Achiev.mot -0.499 0.036 -13.844 0.000
Training.char ~
Unit.prf.stnd 0.221 0.030 7.321 0.000
Vet.status -0.087 0.030 -2.936 0.003
Achiev.mot 0.547 0.030 17.968 0.000
Satisfaction ~
Unit.prf.stnd -0.132 0.024 -5.432 0.000
Role.strain -0.142 0.040 -3.589 0.000
Training.char 0.382 0.028 13.411 0.000
Organ.commit 0.423 0.068 6.213 0.000
Organ.commit ~
Role.strain -0.258 0.042 -6.168 0.000
Training.char -0.118 0.050 -2.380 0.017
Achiev.mot 0.362 0.043 8.359 0.000
Satisfaction 0.222 0.108 2.047 0.041

Variances:
Role.strain 0.676 0.039
Training.char 0.494 0.029
Satisfaction 0.278 0.019
Organ.commit 0.422 0.049

Box 14.4: Analisi del modello non-ricorsivo rappresentato in figura 14.10.


174 14 Regressione lineare multivariata

in cui t indica il numero di parametri del modello. In altri termini, la quantità a destra
della disuguaglianza indica il numero massimo di parametri che si possono stimare con p + q
variabili a disposizione.
È facile verificare che tutti i modelli visti fino qui negli esempi rispettano questo vincolo.
Ad esempio nel modello dell’esempio presentato nella sezione 14.1.1 ci sono 3 variabili e 3
parametri, dal momento che 3 × (3 + 1)/2 = 6 il vincolo è rispettato. Lo stesso vale per i
modelli degli esempi 14.1 (4 variabili e 9 parametri; 4 × (4 + 1)/2 = 10) e 14.2 (8 variabili e
17 parametri; 8 × (8 + 1)/2 = 36).
La disuguaglianza (14.3) viene anche definita regola t per l’indentificabilità di un modello
(Bollen, 1989), ovvero definisce la condizione minima affinchè sia possibile ottenere le stime dei
parametri. Un modello di regressione multivariata si dice identificato se tutti i suoi parametri
sono identificati.
Per comprendere questo concetto dobbiamo pensare che questi modelli sono definiti at-
traverso sistemi di equazioni in cui le incognite sono appunto i parametri. Identificare i para-
metri significa risolvere il sistema di equazioni ottenendo una soluzione unica. Consideriamo
ad esempio il sistema seguente:

 x − 3y − z = 0
2x + 4y + 2z = 0
−x + y = 4

esso risulta identificato in quanto esiste una sola ed unica soluzione che lo risolve, ovvero
x = 4, y = 8, z = −20. In tutti i casi in cui il sistema di equazioni non ha soluzione (sistema
impossibile) oppure ha infinite soluzioni (sistema indeterminato) non sarà possibile ottenere
la stima dei parametri e, di conseguenza, il modello non sarà identificato.
Ancora, la regola t (equazione 14.3) è una condizione necessaria ma non sufficiente per
ottenere l’identificabilità del modello nel senso che deve necessariamente essere rispettata,
ma non garantisce che la soluzione unica del sistema esista. Se un modello rispetta le regole
che lo rendono ricorsivo (vedi sez. 14.1.2) esso è sicuramente identificato. Nei modelli non-
ricorsivi invece il problema dell’identificazione può essere spesso presente. Nei casi di non
identificazione si deve ricorrere a soluzioni alternative quali ad esempio modificare il modello
e/o eliminare parametri vincolandoli a zero o a qualche valore definito secondo criteri a priori.

14.2.2 Valutazione dell’adattamento


Abbiamo visto che nei modelli di regressione multivariati i parametri sono di due tipi: coeffi-
cienti di regressione, indicati con β, e varianze d’errore, indicate con ψ, il grassetto indica che
ci riferiamo generalmente ad un vettore e non ad un singolo elemento. Quindi, θ indicherà
l’insieme totale dei parametri, senza distinguere tra β e ψ, e θ̂ indicherà le stime ottenute dei
parametri dal processo di stima (negli esempi trattati nei box 14.3 e 14.4 sono i numeri nella
colonna Estimate).
Una volta ottenute le stime dei parametri, che possiamo indicare genericamente con θ̂,
dobbiamo valutare la bontà dell’adattamento del modello ai dati. Questo significa valutare il
modello nel suo complesso e non solo, ad esempio per la significatività statistica dei parametri.
Il principio generale per tale valutazione è basato sul confronto tra la matrice di covarianza
osservata S, che di fatto costituisce l’input del processo di stima, e la matrice di covarianza
ricostruita sulla base dei parametri stimati Σ(θ̂). Nella sezione 4.2.1 (pag. 35) abbiamo già
descritto il significato della matrice di covarianza S. Generalmente, dato che essa è ricavata
14.2 Valutazione del modello 175

dai dati empirici, viene utilizzata per stimare Σ, la covarianza vera (incognita) della popola-
zione. Se fossimo in grado di conoscere il modello vero delle relazioni tra le variabili ed i veri
valori dei parametri (θ) allora, tramite questi potremmo essere in grado di ricostruire esatta-
mente la matrice di covarianza vera della popolazione, formalmente: Σ(θ) = Σ. Nella realtà
empirica però non conosciamo mai Σ e neppure il modello vero (e quindi i veri parametri) e
pertanto possiamo solo utilizzare S come stima di Σ e Σ(θ̂) come stima di Σ(θ).
Senza entrare nei dettagli tecnici (per i quali si rimanda a qualche manuale più appro-
fondito, ad es. Bollen, 1989) ci basti sapere che, l’algoritmo di stima dei parametri ha come
obiettivo individuare il vettore di parametri θ̂ che rende più piccola possibile la distanza tra
la matrice di covarianza osservata S e quella calcolata in funzione dei parametri del modello,
Σ(θ̂). In altri termini, ci aspettiamo che quanto migliore sarà il modello tanto minore sarà
la differenza tra S e Σ(θ̂) e questa differenza diventa una misura per valutare il modello.
Vediamo in dettaglio alcune statistiche utilizzate a tale proposito.

Indici basati sui residui


Un indice che quantifica gli scarti tra la matrice di covarianza osservata S e la matrice
riprodotta Σ(θ̂) è il Root mean squared residual (RMR; Jöreskog & Sörbom, 1986) calcolato
con la seguente formula:
v
u
u (p+q) i
u X X (sij − σ̂ij )2
RM R = t2
(p + q)(p + q + 1)
i=1 j=1

in cui p e q indicano rispettivamente il numero di variabili esogene ed endogene del modello,


sij gli elementi della matrice di covarianza osservata S e σ̂ij gli elementi della matrice di
covarianza riprodotta Σ(θ̂). Questo indice ha come valore minimo 0, quando le due matrici
sono perfettamente identiche. Dal momento però che non ha un valore massimo, può essere
utilizzato solo in forma comparativa, ovvero per confrontare modelli diversi sugli stessi dati.
La sua versione standardizzata (SRMR) si basa sulla stessa formula in cui le matrici di
covarianza sono convertite nelle rispettive matrici di correlazione. SRMR varia tra 0 e 1
ed è pertanto interpretabile anche direttamente come espressione della bontà globale di un
modello. Anche con questo indice sono considerati migliori i modelli con il valore più basso
(generalmente i valori devono essere inferiori a 0.1).
Nel box 14.5 vediamo come ottenere questi due indici, relativi ai modelli presentati nelle
figure 14.7 e 14.10, utilizzando la funzione inspect().

> inspect(fit.social,"fit")[c("rmr","srmr")]
rmr srmr
4.881764e-10 1.372113e-09

> inspect(fit.nonrec,"fit")[c("rmr","srmr")]
rmr srmr
0.05267663 0.05678767

Box 14.5: Coefficienti RMR e SRMR dei modelli in figura 14.7 e 14.10.
176 14 Regressione lineare multivariata

Coefficiente di determinazione
Abbiamo già introdotto questa statistica nel capitolo 7 (in particolare nella sez. 7.2) e ne
abbiamo visto un’applicazione nel capitolo 10 (sez. 10.3). Dal momento che un modello
multivariato si compone di più equazioni, vuol dire che possiamo avere un coefficiente di
determinazione (o R2 ) per ogni equazione, ciascuno dei quali ci dirà quanta parte di variabilità
della variabile dipendente risulta spiegata dalla relazione con i propri predittori.
Gli R2 relativi alle equazioni del modello sono definiti come

ψ̂ii
Ry2i = 1 −
σ̂y2i

in cui ψ̂ii è la stima della varianza dell’errore, ovvero un parametro del modello, e σ̂y2i la
varianza riprodotta della i-sima variabile, ovvero un elemento sulla diagonale della matrice
Σ(θ̂).

> inspect(fit.social,"rsquare")
safety.concerns parenting antisocial.behavior
0.8267931 0.1311417 0.8343335

> inspect(fit.nonrec,"rsquare")
Role.strain Training.char Satisfaction Organ.commit
0.3180595 0.4448474 0.6508427 0.5232289

Box 14.6: Coefficienti di determinazione dei modelli in figura 14.7 e 14.10.

Per il calcolo dei coefficienti di determinazione di un modello si utilizza la funzione


inspect() come illustrato nel box 14.6. Per avere gli R2 dei due modelli degli esempi 14.1
e 14.2 è sufficiente inserire il nome dell’oggetto prodotto con la funzione sem() (vedi box
14.3 e 14.4) ed aggiungere l’opzione ’rsquare’. Si noti che il numero di coefficienti prodotti
corrisponde al numero di equazioni (e di variabili endogene) del modello, 3 nel primo e 4 nel
secondo esempio. Pertanto, nel primo esempio vediamo che ci sono due variabili (problemi
di sicurezza e comportamento antisociale) che risultano spiegate molto bene (oltre l’80%) dai
relativi predittori mentre la variabile genitorialità risulta poco spiegata (circa il 13%). Nel
secondo esempio si va da circa 32% di variabilità spiegata (per la variabile Ruolo) al 65%
della variabile soddisfazione.

Coefficiente di determinazione totale


Misura la quota di variabilità spiegata globalmente dal modello, ovvero l’effetto combinato
delle variabili del modello sulle variabili endogene, in pratica si tratta di un R2 globale, riferito
a tutto il modello nel suo complesso. Il coefficiente di determinazione totale è definito come

||Ψ̂||
1−
||Σ(θ̂)Y ||

in cui Ψ̂ è la matrice di covarianza tra gli errori, Σ(θ̂)Y la porzione della matrice Σ(θ̂) relativa
alle variabili endogene, ||Ψ̂|| e ||Σ(θ̂)Y || i determinanti delle due matrici.
14.2 Valutazione del modello 177

> (PS <- inspect(fit.social,"parameters")$psi)


sfty.c prntng antsc. scl.cp
safety.concerns 0.091
parenting 0.000 0.018
antisocial.behavior 0.000 0.000 0.010
social.capital 0.000 0.000 0.000 0.144

> (Shat <- fitted(fit.social)$cov)


sfty.c prntng antsc. scl.cp
safety.concerns 0.525
parenting 0.015 0.020
antisocial.behavior -0.021 -0.032 0.060
social.capital 0.250 -0.001 0.006 0.144

> 1-det(PS[1:3,1:3])/det(Shat[1:3,1:3])
[1] 0.8594371

Box 14.7: Calcolo del coefficiente di determinazione totale per il modello dell’esempio 14.1 (figura
14.7).

Sfortunatamente, la libreria lavaan non dispone di una funzione diretta per il calcolo
del coefficiente di determinazione totale; nel box 14.7 vediamo come procedere prendendo il
modello dell’esempio 14.3. Come prima operazione ricaviamo la matrice Ψ̂ con la funzione
inspect(). Notiamo subito che questa matrice presenta una riga in più, riferita alla variabile
esogena (social.capital), e ricordiamo che le variabili esogene in questi modelli sono consi-
derate senza errore. Con il successivo comando fitted() otteniamo la matrice di covarianza
riprodotta, Σ(θ̂), ovvero la matrice di covarianza calcolata in funzione dei parametri stimati.
In questa matrice gli elementi sulla diagonale sono le varianze delle variabili coinvolte, di con-
seguenza, l’elemento sulla quarta riga e quarta colonna è la varianza della variabile social.
capital. Confrontando questo valore con il corrispondente sulla matrice Ψ̂ ci accorgiamo
che sono identici. In conclusione, nella matrice $psi che si ottiene dalla funzione inspect()
bisogna fare attenzione perchè gli elementi riferiti alle variabili esogene non sono varianze
d’errore bensı̀ le varianze riprodotte di queste variabili. Di conseguenza, nell’ultimo comando
calcoliamo il determinante di Ψ̂ con la funzione det() solo per le prime tre righe e le prime tre
colonne; sappiamo infatti che la matrice di covarianza tra gli errori ha un numero di righe e di
colonne pari al numero di variabili endogene. Lo stesso facciamo per la matrice Σ(θ̂), perchè
ci interessano solo le tre righe e colonne che compongono la porzione relativa alle tre variabili
endogene. Il risultato finale è che il modello spiega circa l’86% della variabilità complessiva
osservata nelle relazioni tra queste variabili.

14.2.3 Confronto tra i modelli


Anche in questo tipo di modelli possiamo utilizzare una strategia di comparazione con AIC
e BIC. Nella prassi infatti è frequente avere più modelli alternativi sulle stesse variabili ed è
utile risucire ad individuare quale sia il migliore tra i modelli in competizione. Il calcolo di
178 14 Regressione lineare multivariata

(a)

X (b)

(c)

Figura 14.11: Esempio di modello di mediazione. X è la variable esogena, c è l’effetto diretto di X


sulla variabile endogena Y . M è il mediatore e a × b è l’effetto indiretto di X su Y mediato da M .

AIC e BIC è estremamente semplice, come si può vedere nel box 14.8, in cui vengono calcolate
queste statistiche relativamente al modello dell’esempio 14.3.

> AIC(fit.social)
[1] -1526.103

> BIC(fit.social)
[1] -1482.395

Box 14.8: Calcolo di AIC e BIC per il modello dell’esempio 14.1 (figura 14.7).

14.3 Analisi di mediazione


Nei modelli multivariati possiamo individuare tre tipi di effetti: diretti, indiretti e totali.
Gli effetti diretti sono l’influenza diretta di una variabile su un’altra, e vengono stimati dai
coefficienti di regressione nella matrice B. Gli effetti indiretti sono quelli per cui vi è almeno
una terza variabile, anch’essa endogena, che interviene come mediatore tra le due. Gli effetti
totali sono la somma degli effetti diretti e indiretti. Un modello di mediazione cerca di
identificare e spiegare la relazione tra un predittore (X) ed una variabile dipendente (Y )
quando si ipotizza la presenza di una terza variabile (detta mediatore, M ) che influenza la
relazione diretta tra X e Y . In questo caso, possiamo essere interessati a stimare, oltre agli
effetti diretti, ovvero i parametri strutturali del modello, anche l’effetto indiretto di X su Y .
In figura 14.11 è rappresentato il prototipo del modello di mediazione. Abbiamo due
variabili X e Y legate tra loro da un effetto diretto (indicato con c) e da una terza variabile
14.3 Analisi di mediazione 179

M che funge da mediatore. L’effetto indiretto di X su Y si compone dell’effetto diretto di X


su M (a) e dell’effetto diretto di M su Y (b) e viene stimato con il prodotto tra questi due
effetti: a × b. L’effetto totale di X su Y sarà pertanto la somma dell’effetto diretto e quello
indiretto: c + (a × b).
In tabella 14.1 sono schematizzate le formule generali per il calcolo di effetti diretti, in-
diretti e totali rispettivamente nelle relazioni tra esogene ed endogene (X → Y , colonna
sinistra) e nelle relazioni tra endogene (Y → Y , colonna destra).

14.3.1 Effetti indiretti e totali con sem()


Nel box 14.9 vediamo come definire il modello rappresentato in figura 14.11 per ottenere
le stime degli effetti indiretti e totali con la funzione sem(). Il modello si definisce con un
sistema di due equazioni:

M = aX + M
Y = bM + cX + Y
ripotate nelle prime due righe dello script, come abbiamo già imparato a fare negli esempi fino
a qui, con una piccola modifica: infatti abbiamo aggiunto nella formulazione del modello anche
un’etichetta (rispettivamente a, b e c) che indica il parametro. Si noti che questa modalità
di scrittura non è obbligatoria, tant’è che non l’abbiamo mai utilizzata precedentemente, ma
è utile in funzione delle due righe successive. Per chiedere alla funzione di stimare anche gli
effetti indiretto e totale dobbiamo usare l’operatore ’:=’ che richiede di stimare un nuovo
parametro, a sinistra dell’operatore, come funzione dei parametri a destra dell’operatore. In
particolare, la scrittura ab := a*b significa: calcola un nuovo parametro, che chiamiamo ab
come prodotto dei parametri a e b, ovvero calcola l’effetto indiretto del modello. Lo stesso vale
per l’ultima riga in cui calcoliamo un nuovo parametro, total, come somma tra il parametro
c (effetto diretto) e il prodotto a*b (effetto indiretto), ovvero l’effetto totale di X su Y .

> model <- "


+ M ~ a*X
+ Y ~ b*M + c*X
+ ab := a*b # effetto indiretto
+ total := c + (a*b) # effetto totale
+ "

Box 14.9: Definizione del modello di mediazione in figura 14.11.

X→Y Y →Y
Diretto BX BY
Indiretto (I − BY )−1 BX − BX (I − BY )−1 − I − BY
Totale (I − BY )−1 BX (I − BY )−1 − I

Tabella 14.1: Formule per il calcolo degli effetti diretti, indiretti e totali. BX è la porzione di matrice
B relativa alle relazioni tra variabili esogene ed endogene, BY la porzione relativa alle relazioni tra
variabili endogene, I è la matrice identità, una matrice quadrata con valori 1 in diagonale e 0 altrove.
180 14 Regressione lineare multivariata

social
capital
(X[4] )

β24 β34

parenting antisocial
(Y2 ) β32 behavior
(Y3 )

Figura 14.12: Modello di mediazione contenuto nell’esempio 14.1 (Vieno et al., 2010; fig. 14.7).

Esempio 14.3 Nell’esempio 14.1 abbiamo visto un modello ricorsivo con una variabile esoge-
na e tre variabili endogene (fig. 14.7). Immaginiamo di semplificare tale modello eliminando
la variabile Y1 (problemi di sicurezza); quello che rimane è il modello in figura 14.12 che è
identico a quello classico di mediazione della figura 14.11. L’ipotesi sottostante questo model-
lo è che la relazione tra capitale sociale (X[4] ) e comportamento antisociale (Y3 ) sia mediata
dal supporto dei genitori (Y2 ).
Nel box 14.10 vediamo come modificare opportunamente lo script del modello per ottenere
le stime degli effetti indiretto e totale. Nelle prime due righe, in cui definiamo le equazioni
del modello, aggiungiamo i nomi dei parametri: be24 per β24 , be34 per β34 e be32 per β32 .
Quindi specifichiamo l’effetto indiretto (eff ind) come prodotto be24*be32 e l’effetto totale
(eff tot) come somma tra effetto diretto (be34) ed effetto indiretto. Infine, procediamo
come al solito utilizzando in sequenza le funzioni sem(), per stimare i parametri del modello,
e summary() per visualizzare l’output.

Leggendo l’output (sempre nel box 14.10) vediamo che ora i nomi assegnati ai coefficienti
β, riportati nella sezione Regressions, vengono riportati tra parentesi. In più, è comparsa
una terza sezione, chiamata Defined parameters: in cui ci sono le stime relative agli effetti
indiretto e totale, con relativi errori standard, valori Z e p-value. In pratica, da questo
ouput possiamo concludere che l’effetto indiretto di X4 su Y3 , mediato da Y2 , non risulta
statisticamente significativo.
14.3 Analisi di mediazione 181

> model <- "


+ parenting ~ be24*social.capital
+ antisocial.behavior ~ be34*social.capital + be32*parenting
+ eff_ind := be24*be32
+ eff_tot := be34+(be24*be32)
+ "
> fit.mediazione <- sem(model,data=social)
> summary(fit.mediazione)
[...]

Parameter estimates:

Information Expected
Standard Errors Standard

Estimate Std.err Z-value P(>|z|)


Regressions:
parenting ~
scl.cp (be24) -0.004 0.012 -0.352 0.725
antisocial.behavior ~
scl.cp (be34) 0.037 0.009 4.126 0.000
prntng (be32) -1.550 0.023 -66.096 0.000

Variances:
parenting 0.020 0.001
antisocl.bhvr 0.011 0.000

Defined parameters:
eff_ind 0.007 0.019 0.352 0.725
eff_tot 0.043 0.021 2.063 0.039

Box 14.10: Analisi del modello di mediazione rappresentato in figura 14.12.


Capitolo 15

Regressione lineare multilivello

Nei modelli di regressione fino a qui considerati (cap. 10, 13, 14) gli effetti (espressi dai
parametri stimati) stimati sono sempre considerati fissi. Questo significa che, ad esempio nel
modello di regressione
Y = β0 + β1 X + 
le stime che otteniamo, β̂0 e β̂1 , sono fisse e valgono per tutte le unità statistiche. Dobbiamo
ricordare però che tali stime, per essere attendibili, richiedono delle assunzioni piuttosto forti
(vedi sez. 10.2.1, pag. 104), una delle quali particolarmente importante ovvero l’indipendenza
delle osservazioni. Nella pratica questa assunzione risulta spesso violata, particolarmente
quando i dati assumono una struttura gerarchica oppure nidificata, situazione molto frequente
quando si lavora con dati di natura sociale.
In questo capitolo introduciamo i modelli di regressione che permettono di trattare con
questo tipo di struttura, ovvero modelli in cui è sempre presente almeno un predittore di
tipo categoriale che definisce dei raggruppamenti nei dati. Tali modelli vengono chiamati in
vari modi: multilivello (multilevel models; Hox, 1995; Heck & Thomas, 2000; Leyland &
Goldstein, 2001), gerarchici (hierarchical models; Bryk & Raudenbush, 1992; Gelman & Hill,
2007) o ad effetti misti (mixed-effects models; Pinheiro & Bates, 2000; Baayen, 2008). La
definizione di multilivello o gerarchici deriva da due ragioni: la prima relativa alla struttura
dei dati e la seconda al modello stesso che definisce una gerarchia tra i suoi parametri, nel
corso di questo capitolo capiremo il significato di queste definizioni. La dicitura di effetti misti
deriva dalla considerazione che i coefficienti di regressione possono essere trattati come effetti
casuali (random effects) ovvero come variabili nel modello, a differenza degli effetti fissi (fixed
effects) che valgono per tutte le unità statistiche. Anche qusto aspetto diventerà più chiaro
nel corso del capitolo.

15.1 Strutture multilivello


Esempio 15.1 Nel data set school sono presenti dei dati relativi a 260 studenti di scuola
superiore. Nel box 15.1 vediamo quali sono le variabili presenti nel data set:

• schid codice identificativo della scuola

• public status della scuola, pubblica yes o privata no

• ratio rapporto studenti-docenti della scuola


184 15 Regressione lineare multilivello

• percmin percentuale di studenti appartenenti a minoranze etniche

• classid codice identificativo della classe

• stuid codice identificativo dello studente

• sex sesso dello studente

• ethn gruppo etnico dello studente

• ses status socio-economico della famiglia dello studente

• homework ore dedicate alla settimana ai compiti di matematica

• math punteggio al test di matematica

> data(school)
> str(school)
’data.frame’: 260 obs. of 11 variables:
$ schid : Factor w/ 4 levels "7000","25000",..: 1 1 1 1 1 1 1 1 1 1 ...
$ public : Factor w/ 2 levels "no","yes": 2 2 2 2 2 2 2 2 2 2 ...
$ ratio : num 19 19 19 19 19 19 19 19 19 19 ...
$ percmin : num 0 0 0 0 0 0 0 0 0 0 ...
$ classid : Factor w/ 12 levels "7472","7829",..: 1 1 1 1 1 1 1 1 1 1 ...
$ stuid : Factor w/ 260 levels "1841","2002",..: 32 72 81 103 190 ...
$ sex : Factor w/ 2 levels "male","female": 2 1 1 1 2 2 2 1 2 2 ...
$ ethn : Factor w/ 4 levels "asian","hispainc",..: 4 4 4 4 4 4 4 4 ...
$ ses : num -0.13 -0.39 -0.8 -0.72 -0.74 ...
$ homework: num 1 0 0 1 2 1 5 1 1 2 ...
$ math : num 51.6 44.3 37.2 40.2 35.3 ...

Box 15.1: Struttura del data-set school.

La struttura di questo insieme di dati è chiaramente di tipo multilivello, infatti possiamo


vedere che gli studenti sono raggruppati in classi, che a loro volta sono raggruppate in scuole.
Possiamo allora dire che il fattore classe (classid) è nidificato (nested ) nel fattore scuola
(schid). In generale, dati due fattori di raggruppamento A e B, si dice che A è nidificato in
B se ciascun livello di A si presenta insieme ad un unico livello di B. Nel box 15.2 possiamo
vedere dalla prima tabella di frequenze che classid ha questo tipo di relazione con schid
infatti in ciascuna riga della tabella c’è solo una cella diversa da zero, ovvero gli studenti di
ciascuna classe appartengono ad una sola scuola.
Un altro tipo di relazione tra fattori di raggruppamento si ha quando i livelli di del primo
si trovano in combinazione con tutti i livelli del secondo. In questo caso si dice che i fattori
sono incrociati (crossed ) ed è il caso che osserviamo ad esempio tra la variabile schid e la
variabile sex. Nella seconda tabella del box 15.2 non ci sono celle vuote, il che implica la
presenza di maschi e femmine in tutte le scuole. I fattori che abbiamo trattato nei precedenti
capitoli, in particolare nel capitolo 11, erano tutti di tipo incrociato, in questo capitolo ci
occuperemo anche di fattori nidificati.
15.1 Strutture multilivello 185

> ### fattori nidificati


> table(school$classid,school$schid)
7000 25000 62000 68000
7472 23 0 0 0
7829 20 0 0 0
7930 24 0 0 0
24725 0 22 0 0
25456 0 22 0 0
25642 0 20 0 0
62821 0 0 23 0
62822 0 0 22 0
62823 0 0 22 0
68448 0 0 0 21
68493 0 0 0 21
72292 0 0 0 20
> ### fattori incrociati
> table(school$sex,school$schid)
7000 25000 62000 68000
male 32 32 36 32
female 35 32 31 30

Box 15.2: Esempi di fattori nidificati (nested ) ed incrociati (crossed ).

Prima di tutto è utile comprendere in che modo i parametri di regressione del modello
lineare β0 e β1 possono diventare delle variabili. In figura 15.1 sono rappresentati tre esempi
generali in cui abbiamo una variabile dipendente Y ed un predittore X quantitativi, in più
abbiamo la presenza di un fattore (una variabile categoriale) di raggruppamento a 5 livelli.
Nel grafico [A] abbiamo un modello lineare in cui per ciascuno dei 5 livelli si ottiene una
retta di regressione caratterizzata da una propria intercetta (β0j , j = 1, . . . , 5) ma con la
stessa pendenza β1 . Nella sezione 13.3.1, abbiamo già visto una cosa del genere, quando si
introduce un predittore categoriale in un modello di regressione senza interazione (vedi fig.
13.3, pag. 154). Nel grafico [B] è rappresentato un modello lineare in cui le rette dei 5 gruppi
hanno la stessa intercetta (β0 ) ma pendenze diverse (β1j , j = 1, . . . , 5). Infine, nel grafico
[C], è rappresentata la situazione che unisce le due precedenti, ovvero in cui ciascun gruppo
ha una propria intercetta (β0j , j = 1, . . . , 5) ed una propria pendenza (β1j , j = 1, . . . , 5), una
situazione analoga a quella già presentata nella sezione 13.3.2, ovvero quando si introduce un
predittore categoriale che interagisce con il predittore quantitativo (vedi fig. 13.4, pag. 155).
Quando abbiamo a che fare con dati raggruppati in qualche modo può avere senso valutare
se i parametri del modello (intercette e pendenze) siano uguali per tutti oppure no. Per fare
questo però dobbiamo modificare alcune impostazioni classiche dei modelli di regressione.
Come visto nella sezione 13.2, quando il predittore è di tipo categoriale con k livelli, viene
automaticamente ricodificato in k − 1 predittori dicotomici, per ciascuno dei quali viene
stimato un parametro β. Nel capitolo 13 abbiamo trattato solo il caso in cui il predittore
categoriale era già dicotomico, ovvero con k = 2 e quindi con un solo parametro relativo.
Proviamo però ad immaginare di avere un fattore con un numero molto elevato di livelli,
questo evidentemente produrrà un numero molto elevato di parametri. Ad esempio il fattore
186 15 Regressione lineare multilivello

[A] [B] [C]

Y = β0 + β15 X
Y = β03 + β13 X
Y = β05 + β1 X

Y = β0 + β14 X
Y = β04 + β1 X

Y = β0 + β13 X Y = β02 + β12 X


Y = β03 + β1 X
Y = β04 + β14 X

Y
Y = β02 + β1 X Y = β0 + β12 X

Y = β01 + β1 X
Y = β0 + β11 X
Y = β01 + β11 X
Y = β05 + β15 X

Figura 15.1: Esempio di strutture multilivello in un modello di regressione lineare con variabile
dipendente Y e predittore X quantitativi e con un fattore di raggruppamento categoriale a 5 livelli:
[A] caso con intercetta variabile, [B] caso con pendenza variabile, [C] caso con intercetta e pendenza
variabile.

classid nell’esempio 15.1 ha 12 livelli, pertanto se lo inseriamo come predittore in un modello


di regressione vuol dire che avremo 11 predittori dicotomici e 11 parametri. Nei modelli
multilivello questo problema viene superato in quanto, come vedremo l’interesse viene spostato
sulla variabilità dei β e non sul loro valore. Negli esempi rappresentati in figura 15.1 significa
che nei casi [A] e [C] non ci interessa direttamente stimare tutte le 5 intercette (β0j ) ma
piuttosto la loro varianza (σβ20 ). Lo stesso vale nei casi [B] e [C] in cui il parametro di interesse
diventa la varianza delle pendenze (σβ21 ). In altri termini, quando i β sono considerati variabili,
vengono anche chiamati effetti random e significa in pratica che siamo interessati a valutare
la loro variabilità piuttosto che i singoli valori.
In generale, la distinzione tra effetti fissi e random è piuttosto controversa e non sempre
chiara (Gelman & Hill, 2007), è importante sempre ragionare sul senso del modello da analiz-
zare perchè lo stesso fattore può diventare fisso o random, a seconda di come vengono raccolti
i dati. Inoltre, va tenuto presente che essa si riferisce solo a predittori di tipo categoriale, per
semplicità possiamo considerare la seguente definizione (Pinheiro & Bates, 2000):
• Si dicono effetti fissi quelli dei parametri associati ad una intera popolazione oppure ai
livelli di fattori sperimentali controllati.
• Si dicono effetti random quelli associati alle unità statistiche campionate dalla popola-
zione oppure a livelli dei fattori sperimentali che non vengono controllati direttamente.
Su questa distinzione vanno fatte due precisazioni importanti. Primo, la denominazione
fisso/random può essere fuorviante in quanto si riferisce ad una proprietà dei livelli della
variabile categoriale piuttosto che ad una proprietà degli effetti ad essa associati. Secondo,
dobbiamo distinguere tra parametri degli effetti fissi, che sono veri e propri parametri del
modello statistico, ed effetti random, che non sono propriamente dei parametri.
Esempio 15.2 Supponiamo di voler valutare le prestazioni in matematica in funzione del
tempo dedicato allo studio di un gruppo di studenti appartenenti ad una classe di una scuola a
15.2 Applicazione 187

caso. Avremo pertanto una variabile dipendente quantitativa Y (ovvero il voto in matematica)
ed un predittore quantitativo X (le ore di studio). Supponiamo di avere a disposizione
anche due variabili di tipo categoriale: il sesso dei soggetti ed il loro codice identificativo (o
matricola). I livelli del sesso, maschio e femmina, sono fissi; se aggiungessimo al campione i
dati di un’ altra classe di studenti non dovremmo cambiarli perchè ci aspettiamo che valgano
anche per la seconda classe. I livelli del codice invece variano in funzione del numero di
studenti nel campione dato che ciascuno ha il suo; pertanto, aggiungendo soggetti al campione
avremmo un aumento dei livelli di questa variabile.

15.2 Applicazione dei modelli multilivello


15.2.1 Impostazione classica
Riprendiamo i dati dell’esempio 15.1; vogliamo sapere se le ore dedicate ai compiti di mate-
matica sono predittive del voto in matematica. Pertanto la variabile ore di studio (homework)
sarà il predittore X e il voto (variabile math) sarà la dipendente Y ; il modello sarà il classico

Y = β0 + β1 X +  (15.1)

Dal momento che, in questo modello, non facciamo nessun tipo di distinzione tra gli studenti,
possiamo definirlo un modello pooled, ovvero che mette tutte insieme le informazioni relative
alle ore di studio ed ai voti. Nel box 15.3 vediamo come stimare i parametri di questo modello.
In figura 15.2 sono rappresentati i voti di matematica in funzione delle ore di studio e la retta
di regressione stimata.

> lm(math~homework,data=school)
Call:
lm(formula = math ~ homework, data = school)

Coefficients:
(Intercept) homework
42.145 4.026

Box 15.3: Modello di regressione pooled.

Supponiamo ora di voler introdurre nel modello la scuola di appartenenza, per valutare la
presenza di eventuali differenze. Nel campione a disposizione ci sono quattro scuole diverse
pertanto il fattore schid ha quattro livelli. Il modello di regressione precedente avrà in
aggiunta tre predittori dicotomici e sarà espresso nella forma

Y = β0 + β1 X + β2 D1 + β3 D2 + β4 D3 +  (15.2)

Possiamo quindi definirlo modello non-pooled in quanto, a differenza del precedente, non
mette insieme tutte le informazioni ma tiene in conto le differenze esistenti tra le scuole.
Come abbiamo già accennato nel capitolo 13 (pag. 149) non dobbiamo preoccuparci della
ricodifica in quanto viene automaticamente gestita da R semplicemente inserendo il fattore
nella funzione lm(); nel box 15.4 vediamo come procedere, è sufficiente aggiungere +schid
alla scrittura precedente. Vediamo che ora i parametri del modello sono diventati 5: il primo
188 15 Regressione lineare multilivello

80
voto in matematica

60

40

20
Ŷ = 42.14 + 4.03X

0 2 4 6
ore di studio settimanali

Figura 15.2: Voti in matematica e ore di studio, modello di regressione pooled.

((Intercept)) indica l’intercetta relativa alla scuola che viene assunta come riferimento (in
questo caso quella con il codice 7000), il secondo parametro (homework) indica la pendenza
(uguale per tutti i gruppi), gli ultimi tre parametri idicano rispettivamente le differenze nelle
intercette tra la scuola assunta come riferimento e le altre tre scuole.

> lm(math~homework+schid,data=school)
Call:
lm(formula = math ~ homework + schid, data = school)

Coefficients:
(Intercept) homework schid25000 schid62000 schid68000
35.116 1.986 10.293 23.695 10.556

Box 15.4: Modello di regressione non-pooled.

Per comprendere meglio il significato di questi parametri possiamo vedere la figura 15.3.
Ciascuno dei quattro riquadri riporta i valori osservati di ore di studio (in ascissa) e voto
(in ordinata) separatamente per le quattro scuole. All’interno di ciascun riquadro, la linea
continua rappresenta la retta di regressione relativa alla scuola, mentre la linea tratteggiata è
la retta di regressione relativa alla scuola 7000 che viene assunta come categoria di riferimento.
In pratica la retta relativa alla scuola 7000 ha come intercetta il valore 35.116, la retta relativa
all scuola 25000 ha come intercetta il valore 35.116 + 10.293 = 45.409 e cosı̀ via. Si noti che
la pendenza rimane uguale per tutti i gruppi, ovvero 1.986.
Abbiamo ottenuto un modello tale e quale a quello già visto nella sezione 13.3.1, con la
sola differenza che in quel caso il predittore categoriale aveva solo due livelli (uso e non uso
della sigaretta elettronica), mentre in questo caso ne ha quattro (le quattro scuole).
Allo stesso modo del modello in sezione 13.3.2 possiamo introdurre l’interazione tra la
variabile homework e schid ottenendo cosı̀ il risultato rappresentato nella figura 15.4, ovvero
15.2 Applicazione 189

0 2 4 6

7000 25000
80

60
voto in matematica

40

20
Ŷ = 35.12 + 1.99X Ŷ = 45.41 + 1.99X
62000 68000
80

60

40

20
Ŷ = 58.81 + 1.99X Ŷ = 45.67 + 1.99X
0 2 4 6
ore di studio settimanali

Figura 15.3: Modello di regressione (non-pooled ) con variabile categoriale scuola e senza interazione.
La linea continua rappresenta la retta di regressione relativa alla scuola, la linea tratteggiata rossa la
retta relativa alla scuola di riferimento (7000).

per ogni scuola si ha una retta di regressione con intercetta e pendenza propri (situazione
descritta in fig. 15.1[C]).
Il problema cruciale con questo tipo di impostazione è che il numero di parametri dipende

0 2 4 6

7000 25000
80

60
voto in matematica

40

20
Ŷ = 35.44 + 1.81X Ŷ = 42.8 + 4.13X
62000 68000
80

60

40

20
Ŷ = 62.5 + 0.87X Ŷ = 44.38 + 2.76X
0 2 4 6
ore di studio settimanali

Figura 15.4: Modello di regressione (non-pooled ) con variabile categoriale scuola con interazione. La
linea continua rappresenta la retta di regressione relativa alla scuola, la linea tratteggiata rossa la retta
relativa alla scuola di riferimento (7000).
190 15 Regressione lineare multilivello

dal numero di livelli del predittore categoriale. Vediamo infatti che il modello pooled (senza
predittore scuola, box 15.3) ha tre parametri (i due coefficienti di regressione β0 e β1 più la
varianza dei residui), mentre il modello non-pooled (box 15.4) ne ha tre in più con la sola
aggiunta del predittore schid. Si può facilmente verificare che il modello non-pooled in cui si
introduce anche l’interazione homework:schid ha 9 parametri. Quindi in generale, l’aggiunta
nel modello di fattori con molti livelli comporta un aumento che può essere piuttosto consi-
stente di parametri. Ecco allora che può diventare utile considerare la variabilità associata a
questi parametri piuttosto che i parametri stessi.

15.2.2 Modello con intercetta variabile


Riprendiamo in esame il modello non-pooled descritto nell’equazione (15.2) e lo riscriviamo
nel modo seguente:

yi = β0j + β1 xi + i = (β0 + λ0j ) + β1 xi + i (15.3)

in cui yi è il punteggio osservato al test di matematica del soggetto i, β0j l’intercetta relativa
alla scuola j (cui il soggetto appartiene), β1 il coefficiente di regressione relativo al predittore
X (homework), xi il valore osservato di ore di studio del soggetto i ed i il relativo residuo.
Le intercette β0j possono essere scritte come (β0 + λ0j ), ovvero come somma tra β0 che è la
parte fissa (uguale per tutte le scuole) e λ0j che indica lo scarto relativo alla scuola j. I λ
sono definiti best linear unbiased predictors (BLUPs; Pinheiro & Bates, 2000) degli effetti
random, ovvero rappresentano dei meta-parametri piuttosto che veri e propri parametri del
modello; il vero parametro di interesse diventa la loro varianza σλ20j . Abbiamo cosı̀ definito un
modello multilivello con intercetta variabile. Per la stima dei parametri di questo modello in
R non possiamo più utilizzare la funzione lm() ma ce ne servirà una apposita ovvero lmer(),
disponibile nella libreria lme4 (Bates, Maechler, Bolker, & Walker, 2013).

> library(lme4)
> (fit1 <- lmer(math~homework+(1|schid),data=school))
Linear mixed model fit by REML [’lmerMod’]
Formula: math ~ homework + (1 | schid)
Data: school
REML criterion at convergence: 1868.742
Random effects:
Groups Name Std.Dev.
schid (Intercept) 9.639
Residual 8.622
Number of obs: 260, groups: schid, 4
Fixed Effects:
(Intercept) homework
46.187 2.019

Box 15.5: Modello di regressione multilivello con intercetta variabile.

Nel box 15.5 vediamo come procedere: carichiamo la libreria lme4 e quindi creiamo un
oggetto di nome fit1 contenente il risultato del nostro modello prodotto con la funzione
lmer(). La definizione del modello segue le stesse regole già viste nei capitoli precedenti
15.2 Applicazione 191

ovvero con la scrittura math∼homework in cui math è la variabile dipendente, homework il


predittore ed il simbolo ∼ sta per “ è funzione di ”. Abbiamo poi una novità: la scrittura
(1|schid) serve ad indicare che l’intercetta del modello varia in funzione della variabile
schid.
La prima informazione che ritroviamo nell’output è relativa al metodo di stima utilizzato,
che non è il classico metodo di massima verosimiglianza (maximum likelihood, ML) ma invece
la massima verosimiglianza ristretta (restricted maximum likelihood, REML). Non entriamo
in questa sede sulle ragioni tecniche di questo, diciamo solo che volendo è possibile ottenere le
stime di ML semplicemente aggiungendo nel comando lmer() l’opzione REML = FALSE (per
approfondimenti si rimanda a Pinheiro & Bates, 2000). Per quanto riguarda i parametri
stimati, nell’output troviamo due gruppi di effetti chiamati Random e Fixed. Questi ultimi
si riferiscono ai parametri β0 e β1 del modello, ovvero la parte fissa, che valgono per tutte
le unità statistiche e che già conosciamo dal modello di regressione semplice. Gli effetti
definiti Random sono invece costituiti da una parte nuova, che si riferisce alla variabilità dei
λ0j dell’equazione (15.3) ed una parte già nota, ovvero la variabilità dei residui. Pertanto,
i parametri di questo modello saranno in tutto quattro: β̂0 = 46.187, porzione di intercetta
uguale per tutte le scuole, β̂1 = 2.019, coefficiente di regressione (uguale per tutte le scuole),
σ̂λ0j = 9.639, variabilità associata alle intercette e σ̂ = 8.622, variabilità residua.
Per comprendere meglio il significato dei λ, che, lo ricordiamo, non sono parametri del
modello, possiamo utilizzare il comando ranef() come descritto nel box 15.6. Il comando
produce quattro valori, uno per ciascuna scuola che rappresentano la differenza tra la porzione
di intercetta fissa (β̂0 ) e l’intercetta specifica di ciascuna scuola.

> ranef(fit1)
$schid
(Intercept)
7000 -10.9992671
25000 -0.8077539
62000 12.3688609
68000 -0.5618400

Box 15.6: Estrazione degli effetti random del modello (15.3).

In pratica il modello di regressione della (15.3) diventerà:

yi = 46.187 + λ0j + 2.019xi + i

e, dal momento che le scuole sono 4, questo implica che ciascuna scuola avrà una sua equazione
tra le seguenti:


 yi = 46.187 − 10.999 + 2.019xi + i per la scuola 7000
yi = 46.187 − 0.808 + 2.019xi + i per la scuola 25000

y = 46.187 + 12.369 + 2.019xi + i per la scuola 62000
 i


yi = 46.187 − 0.562 + 2.019xi + i per la scuola 68000

Un altro modo per visualizzare i valori dei coefficienti del modello si ha con il comando
coef(), come illustrato nel box 15.7. In questo box possiamo vedere quali sono i coefficienti
associati a ciascuna delle quattro scuole. Ad esempio, per la scuola 7000 la retta di regressione
192 15 Regressione lineare multilivello

> coef(fit1)
$schid
(Intercept) homework
7000 35.18746 2.018513
25000 45.37897 2.018513
62000 58.55559 2.018513
68000 45.62489 2.018513

Box 15.7: Estrazione dei coefficienti del modello (15.3).

sarà ŷ = 35.187 + 2.019x in cui il valore 35.187 non è altro che la somma tra 46.187 (intercetta
generale) e -10.999 (valore di λ associato alla scuola). Notiamo altresı̀ che i valori nella prima
colonna, (intercept), sono diversi tra le quattro scuole, mentre i valori della seconda colonna,
homework, sono tutti uguali.

15.2.3 Modello con intercetta e pendenza variabili


Supponiamo ora di essere interessati ad inserire nel modello anche le pendenze variabili, am-
mettendo che le rette di regressione delle quattro scuole non siano necessariamente parallele.
Il modello (15.3) viene modificato cosı̀:

yi = β0j + β1j xi + i = (β0 + λ0j ) + (β1 + λ1j )xi + i (15.4)

Rispetto al precedente modello con intercetta variabile viene aggiunta la componente λ1j
che esprime la differenza tra il valore di pendenza fisso β1 (valido per tutti), e la pendenza
specifica della scuola j. Questa nuova componente comporta un ulteriore parametro per
questo modello, ovvero σλ21j , la varianza delle pendenze.

> (fit2 <- lmer(math~homework+(homework|schid),data=school))


Linear mixed model fit by REML [’lmerMod’]
Formula: math ~ homework + (homework | schid)
Data: school
REML criterion at convergence: 1865.578
Random effects:
Groups Name Std.Dev. Corr
schid (Intercept) 11.314
homework 1.029 -0.65
Residual 8.526
Number of obs: 260, groups: schid, 4
Fixed Effects:
(Intercept) homework
46.205 2.288

Box 15.8: Modello di regressione multilivello con intercetta e pendenza variabile.

Nel box 15.8 vediamo come procedere per stimare i parametri di questo modello. La
parte fissa rimane uguale a prima; math∼homework indica che le ore dedicate allo studio
15.2 Applicazione 193

sono predittive del risultato al test di matematica. La parte random invece viene modificata
con la scrittura (homework|schid) che indica appunto la variabilità delle pendenze oltre a
quella delle intercette1 . Nell’output ottenuto possiamo trovare i 5 parametri del modello:
β̂0 = 46.205 (parte fissa di intercetta), β̂1 = 2.288 (parte fissa di pendenza), σ̂λ0j = 11.314
(variabilità associata alle intercette), σ̂λ1j = 1.029 (variabilità associata alle pendenze) e
σ̂ = 8.526 (variabilità residua). Abbiamo poi un’ulteriore informazione ovvero la correlazione
tra le intercette e le pendenze; in questo caso, il valore di -0.65 ci dice che aumentando il valore
di intercetta il valore della pendenza tende a calare. Se guardiamo nel box 15.9, in cui vengono
riportati i valori dei λ̂ del modello, vediamo infatti che il valore più alto di intercetta (15.307,
per la scuola 62000) è associato al valore più basso di pendenza (-1.153). Lo si può vedere
anche nella figura 15.4, nonostante le rette dipendano da parametri calcolati in modo diverso,
la scuola 62000 ha l’intercetta più alta e la pendenza più bassa rispetto alle altre scuole.

> ranef(fit2)
$schid
(Intercept) homework
7000 -11.598865 0.06476718
25000 -2.240566 0.83551475
62000 15.307429 -1.15253974
68000 -1.467998 0.25225780

Box 15.9: Estrazione degli effetti random del modello (15.4).

Pertanto, utilizzando i valori stimati dei parametri, il modello diventa

yi = 46.205 + λ0j + (2.288 + λ1j )xi + i

con le relative equazioni per ciascuna scuola:




 yi = 46.205 − 11.599 + (2.288 + 0.065)xi + i per la scuola 7000
yi = 46.205 − 2.241 + (2.288 + 0.836)xi + i per la scuola 25000

y = 46.205 + 15.307 + (2.288 − 1.153)xi + i per la scuola 62000
 i


yi = 46.205 − 1.468 + (2.288 + 0.252)xi + i per la scuola 68000

Sulla base di queste equazioni vengono rappresentate le rette della figura 15.5, in cui cia-
scun riquadro rappresenta i valori ottenuti dagli studenti al test di matematica in funzione
delle ore di studio. Da un punto di vista prettamente grafico, non abbiamo grosse differenze
rispetto a quanto ottenuto dal modello non-pooled con interazione (vedi fig. 15.4), le diffe-
renze di sostanza stanno nel numero di parametri necessari per i due modelli: 9 per il modello
non-pooled (gli 8 parametri di regressione più la varianza residua) e 5 per quello multilevel
(6 se contiamo anche la correlazione tra gli effetti random).
Anche in questo caso, con il comando coef(), come illustrato nel box 15.10, possiamo
ottenere i coefficienti relativi a ciascuna scuola con una forma più semplice. Notiamo subito
che in questo caso i valori sulle due colonne sono diversi per ciascuna scuola. Pertanto, la
retta di regressione relativa alla scuola 7000 sarà ŷ = 34.606 + 2.353x ed è facile verificare
che 46.205-11.599=34.606 e 2.288+0.065=2.353.
1
È ovviamente possibile specificare anche il modello in cui le pendenze sono variabili e l’intercetta unica e
fissa, come nella figura 15.1[B], scrivendo (0+homework|schid).
194 15 Regressione lineare multilivello

0 2 4 6

7000 25000
80

60
voto in matematica

40

20
Ŷ = 34.61 + 2.35X Ŷ = 43.96 + 3.12X
62000 68000
80

60

40

20
Ŷ = 61.51 + 1.14X Ŷ = 44.74 + 2.54X
0 2 4 6
ore di studio settimanali

Figura 15.5: Modello di regressione multilivello con intercetta e pendenza variabili.

15.3 Analisi degli effetti


Una volta che i parametri del modello sono stati stimati, come già abbiamo fatto nei precedenti
capitoli 10 e 13, ci poniamo il problema di valutare gli effetti di cui tali parametri dovrebbero
essere misurazione.
Se proviamo ad utilizzare il comando summary() sul fit del modello come illustrato nel box
15.11 notiamo subito che, a differenza di quanto avviene con i modelli di regressione semplice
(es. box 10.2, pag. 109), multipla (es. box 13.6, pag. 156) o multivariata (es. box 14.3, pag.
168) non vi è la presenza di valori di probabilità (o p-value) associati ai parametri. In più,
per gli effetti definiti random, non vi è neppure il calcolo di una statistica test come invece è
t value per gli effetti definiti fissi.

15.3.1 Significatività dei parametri


Facciamo un po’ di chiarezza: gli effetti fissi sono in tutto e per tutto equivalenti come
significato ai valori che troviamo nei classici modelli di regressione. Nel caso del box 15.11, il
valore di β̂0 = 46.1654 rappresenta il punteggio atteso al test di matematica per gli studenti

> coef(fit2)
$schid
(Intercept) homework
7000 34.60643 2.352637
25000 43.96473 3.123385
62000 61.51273 1.135330
68000 44.73730 2.540128

Box 15.10: Estrazione dei coefficienti del modello (15.4).


15.3 Analisi degli effetti 195

> summary(fit1)
[...]

Random effects:
Groups Name Variance Std.Dev.
schid (Intercept) 69.22 8.320
Residual 74.06 8.606
Number of obs: 260, groups: schid, 4

Fixed effects:
Estimate Std. Error t value
(Intercept) 46.1654 4.2699 10.812
homework 2.0292 0.3994 5.081

[...]

Box 15.11: Analisi degli effetti del modello (15.3).

con 0 ore di studio, il valore di β̂1 = 2.0292 indica l’incremento atteso nel voto di matematica
per un aumento di un’ora di studio. Gli errori standard di questi due parametri (Std. Error)
sono una stima della variabilità della distribuzione campionaria degli stessi (vedi cap. 5) e i
valori di t (t value) derivano dal rapporto tra il valore stimato ed il suo errore standard. Nei
casi di regressione visti in precedenza avevamo sempre un valore di probabilità associato a
quest’ultima statistica test che consentiva di valutare se il parametro fosse significativamente
diverso da zero (ovvero testare l’ipotesi H0 : β = 0). Il problema con i modelli di regressione
multilivello è che risulta complesso e non banale determinare i gradi di libertà di questa
statistica test (Baayen, Davidson, & Bates, 2008) e di conseguenza anche difficile determinare
la probabilità ad essa associata. Pertanto la valutazione della significatività dei parametri
deve avvenire in modo diverso.

> library(lmerTest)
> summary(lmer(math~homework+(1|schid),data=school))
[...]

Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 46.1867 4.9151 3.1500 9.397 0.00207 **
homework 2.0185 0.4004 256.7500 5.041 8.76e-07 ***

[...]

Box 15.12: Test per la significatività dei parametri del modello (15.3).

Con l’uso della libreria lmerTest (Kuznetsova, Bruun Brockhoff, & Haubo Bojesen Chri-
stensen, 2013) abbiamo una semplice soluzione al problema. Nel box 15.12 vediamo come
procedere: basta caricare la libreria e quindi utilizzare il comando summary() sul modello
196 15 Regressione lineare multilivello

definito con il comando lmer() esattamente come prima. Il risultato è che ora possiamo di-
sporre anche dei gradi di libertà della statistica test e, di conseguenza anche delle probabilità
associate. Va detto però che l’interpretazione dei parametri, e quindi della loro significatività,
va fatta con cautela; ricordiamo infatti che il significato dei parametri cambia in funzione del
livello di misura del predittore, come abbiamo visto nel capitolo 13, ossia è diverso in funzione
del fatto che esso sia quantitativo o categoriale.

15.3.2 Analisi degli effetti fissi

Possiamo allora essere interessati a valutare gli effetti globalmente piuttosto che analizzando
i singoli parametri. In tal caso, se il predittore è quantitativo non vi è differenza dato che
il parametro di regressione è uno solo, mentre se è categoriale si, in quanto il numero di
parametri dipende dai livelli del predittore. Il metodo più semplice è adottare una procedura
di confronto tra modelli come visto nella sezione 13.4 con il Likelihood Ratio Test (LRT;
Lehmann, 1986; Garthwaite, Joliffe, & Jones, 2002). Nel box 15.13 vediamo come procedere:
prima di tutto definiamo il modello nullo (ovvero il modello senza predittori) che in questo
caso però deve necessariamente contenere la parte random del modello (intercette variabili),
poi confrontiamo i tre modelli ottenuti con la funzione anova().

> fit0 <- lmer(math~1+(1|schid),data=school)


> anova(fit0,fit1,fit2)
Data: school
Models:
fit0: math ~ 1 + (1 | schid)
fit1: math ~ homework + (1 | schid)
fit2: math ~ homework + (homework | schid)
Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)
fit0 3 1904.1 1914.8 -949.07 1898.1
fit1 4 1881.6 1895.8 -936.79 1873.6 24.5464 1 7.254e-07 ***
fit2 6 1883.1 1904.5 -935.55 1871.1 2.4924 2 0.2876

Box 15.13: Confronto tra modelli con Likelihood Ratio Test.

L’output che otteniamo è una tabella molto simile a quella già vista in precedenza nel
box 13.7 (pag. 157) con una riga relativa ad ognuno dei modelli considerati: fit0, modello
nullo con intercetta variabile; fit1, modello con predittore (homework) ed intercetta variabile,
modello definito nella (15.3); fit2, modello con predittore (homework), intercetta e pendenza
variabile, definito nella (15.4). Le varie colonne della tabella indicano rispettivamente: Df,
i gradi di libertà del modello; AIC, l’Akaike Information Criterion (vedi pag. 157); BIC, il
Bayesian Information Criterion (vedi pag. 158); logLik, il logaritmo della verosimiglianza
calcolata sul modello; deviance, la devianza relativa al modello, una misura di quanto bene
il modello si adatta ai dati nel senso che più è bassa migliore è il modello (Gelman & Hill,
2007); Chisq, la statistica test (in questo caso χ2 ); Chi Df, gradi di libertà della statistica
test; Pr(>Chisq), p-value associato alla statistica test, ovvero probabilità di osservare un
valore di χ2 più estremo rispetto a quello rilevato empiricamente. Quest’ultima colonna ci
permette di valutare la significatività statistica degli effetti con una logica un po’ diversa dal
15.3 Analisi degli effetti 197

solito. Il LRT infatti mette a confronto due modelli A e B per valutare quale dei due ha i
parametri migliori per spiegare i dati osservati.
Nella seconda riga della tabella di output vengono messi a confronto il modello nullo (fit0,
i cui parametri possono essere indicati con θ0 ) ed il modello con il predittore homework (fit1,
i cui parametri possono essere indicati con θ1 ). Il LRT testa l’ipotesi H0 : θ = θ0 , ovvero
che la relazione tra le ore di studio ed il voto è descritta dai parametri θ0 , e quindi le ore di
studio non predicono il voto, contrapposta all’ipotesi H1 : θ = θ1 , ovvero che la relazione è
descritta dai parametri θ1 e quindi le ore di studio sono predittive del voto. In un altro modo
potremmo dire che stiamo valutando l’ipotesi che, non essendoci differenze tra i due modelli,
l’introduzione del predittore (ore di studio) non comporta alcun miglioramento nella capacità
del modello di spiegare i dati. Dal momento che la probabilità osservata, 7.254e-07, è minore
della soglia critica di .05, possiamo rigettare H0 e concludere che il modello fit1 è migliore
di quello nullo, oppure, in altri termini, che le ore di studio sono un predittore significativo
del voto in matematica.
Nel secondo confronto, sulla terza riga, l’ipotesi H0 : θ = θ1 è la precedente H1 , ovvero che
il modello fit1 è il modello che spiega meglio i dati. L’ipotesi alternativa diventa H1 : θ = θ2
in cui θ2 sono i parametri del terzo modello, quello in cui è stata introdotta la pendenza
variabile (fit2). L’esito del test non è significativo (p = .2876) e quindi non ci consente
di rigettare l’ipotesi H0 ; in altri termini, il modello con pendenza variabile non è migliore di
quello con la sola intercetta variabile, e di conseguenza l’aggiunta della pendenza variabile non
apporta miglioramenti significativi al modello. A conclusione di tutto il confronto possiamo
dire che il modello più appropriato per descrivere i dati osservati è il secondo (che abbiamo
chiamato fit1) ovvero quello con il predittore homework e l’intercetta variabile, conclusione
supportata anche dai valori di AIC e BIC, riportati nel box 15.13, che sono più bassi rispetto
ai valori degli altri due modelli.

15.3.3 Analisi degli effetti random


L’analisi degli effetti random risulta più complessa, in generale non è possibile stabilire sempli-
cemente se un effetto random sia statisticamente significativo (Bates, 2010); per esempio, non
possiamo ricorrere al LRT mettendo a confronto un modello senza effetti random (prodotto
con la funzione lm()) con uno con effetti random (prodotto con la funzione lmer()) senza
una opportuna correzione perchè non sono confrontabili i valori di verosimiglianza ottenuti.
Una prima operazione che possiamo eseguire è la rappresentazione grafica dei BLUPs (i λ);
dato che il modello migliore, individuato nella sezione precedente era fit1, rappresentiamo
graficamente le intercette con il semplice comando

dotplot(ranef(fit1,TRUE))

che produce il grafico in figura 15.6[A]. Dato che i λ di questo modello sono solo 4, il gra-
fico non risulta molto affollato, ciascun punto rosso rappresenta un BLUP (il cui valore si
legge sull’ascissa) relativo ad una scuola, con relativa variabilità associata rappresentata dal
segmento nero. La variabilità associata ai λ risulta molto ridotta in questo caso, al punto
che i segmenti sono praticamente invisibili. L’informazione che possiamo ricavare da questa
rappresentazione può essere che due scuole (25000 e 68000) hanno praticamente intercette
uguali che si differenziano dalle intercette delle altre due scuole.
Con lo stesso comando, applicato al modello fit2 otteniamo il grafico in figura 15.6[B].
Come vediamo in questo caso abbiamo due pannelli, uno relativo ai λ̂0 j (a sinistra) ed uno
198 15 Regressione lineare multilivello

[A] [B]
-10 0 10

(Intercept) (Intercept) homework

68000 68000

62000 62000

25000 25000

7000 7000

-10 -5 0 5 10 -10 0 10

Figura 15.6: Rappresentazione grafica dei λ stimati: [A] sul modello fit1 (modello definito con la
15.3); [B] sul modello fit2 (definito con la 15.4).

relativo ai λ̂1 j (a destra). La figura conferma il risultato del confronto tra i modelli (vedi box
15.13), in relazione alle pendenze non vi sono differenze cosı̀ grandi da giustificare l’inserimento
di questa variabile nel modello.
Dal momento che il modello fit1 ha un solo effetto random (le intercette), possiamo poi
testare tale effetto utilizzando una versione modificata di LRT (exact LRT ; Crainiceanu &
Ruppert, 2004) disponibile nella libreria RLRsim (Scheipl, Greven, & Kuechenhoff, 2008) con
la funzione exactLRT() come illustrato nel box 15.14.

> library(RLRsim)
> m0 <- lm(math~homework,data=school)
> fit1 <- update(fit1,REML=FALSE)
> exactLRT(fit1,m0)
No restrictions on fixed effects. REML-based inference preferable.

simulated finite sample distribution of LRT. (p-value based on 10000


simulated values)

data:
LRT = 141.1883, p-value < 2.2e-16

Box 15.14: Confronto tra modelli con exact Likelihood Ratio Test.

Con il primo comando carichiamo la libreria RLRsim, con il secondo definiamo il modello
per l’ipotesi H0 , ovvero il modello senza l’effetto random intercetta e lo stimiamo con il
comando lm() salvando il contenuto nell’oggetto che chiamiamo m0. Il confronto diretto tra
m0 e fit1 non può avvenire perchè il primo oggetto è prodotto con la funzione lm() che
utilizza come metodo di stima la ML mentre il secondo oggetto è prodotto con la funzione
lmer() che utilizza invece la REML. Per questa ragione, con il terzo comando utilizziamo la
15.3 Analisi degli effetti 199

[A] [B]

20 20
resid(., type = pearson)

10 10

residuals(fit1)
0 0

-10 -10

-20 -20

40 50 60 70 -3 -2 -1 0 1 2 3
fitted(.) qnorm

Figura 15.7: Analisi dei residui del modello fit1: [A] residui in funzione dei valori attesi; [B] QQ-plot
dei residui.

funzione update() al fine di aggiornare l’oggetto fit1 con stime ML al posto di quelle REML.
Il quarto comando (exactLRT()) esegue il test contrapponendo le due ipotesi H0 : θ = θ0 ,
ovvero che il modello migliore è senza la componente random, cioé senza intercetta variabile,
e H1 : θ = θ1 , ovvero che il modello migliore è quello con l’intercetta variabile. Il risultato
del test è significativo dato che p < .05, quindi rigettiamo l’ipotesi H0 , anche in questo caso
il modello con intercetta variabile è il migliore tra quelli presi in esame.

15.3.4 Rappresentazioni grafiche


L’analisi dei modelli multilivello può essere arricchita utilizzando le potenzialità grafiche di R
disponibili sia nella stessa libreria lme4 che in altre librerie. Possiamo rappresentare i residui,
per valutare se gli assunti sono rispettati, i parametri, per valutarne il comportamento e la
variabilità, oppure gli effetti globali e molto altro. Una buona rappresentazione grafica è il
requisito essenziale per interpretare i risultati ottenuti.

Analisi dei residui


Anche per i modelli multilivello valgono parte delle assunzioni già specificate per i modelli
di regressione (sez. 10.2.1, a pag. 104) e quindi anche in questo caso possiamo valutare il
rispetto di tali assunti analizzando i residui del modello. Con i comandi:

plot(fit1,main="[A]")
qqmath(residuals(fit1),main="[B]")

otteniamo i due grafici in figura 15.7 che ci permettono di valutare rispettivamente [A] l’as-
sunto di indipendenza dei residui e [B] l’assunto di normalità. In entrambi i casi possiamo
concludere che gli assunti sono rispettati. Nel primo caso infatti non osserviamo una evidente
relazione tra i valori attesi (in ascissa) ed i residui (in ordinata), che oscillano casualmente
intorno allo zero; appare chiaro che la correlazione è molto bassa. Nel secondo caso vediamo
che la distribuzione dei residui è praticamente normale dal momento che i valori tendono a
disporsi lungo una ipotetica retta.
200 15 Regressione lineare multilivello

β0 β1

0.0 0.2 0.4 0.6 0.8 1.0


0.00 0.02 0.04 0.06 0.08
density

20 30 40 50 60 70 1.0 1.5 2.0 2.5 3.0


σλ σ
0.15

0.0 0.2 0.4 0.6 0.8 1.0


0.10
0.05
0.00

10 20 30 40 7.5 8.0 8.5 9.0 9.5 10.0

Figura 15.8: Analisi dei parametri del modello fit1 con profile likelihood, le barre verticali indicano
gli estremi dell’intervallo di confidenza al 95%.

Analisi dei parametri


Un’altra utile analisi grafica, relativa ai parametri, si può ottenere sfruttando la funzione
profile() insieme a densityplot() nel seguente modo:
densityplot(profile(fit1))
ottenendo il grafico in figura 15.82 . La funzione profile() calcola, per ciascun parametro
quella che viene definita verosimiglianza profilo (profile likelihood ; Azzalini, 2001; Garthwaite
et al., 2002). In pratica si tratta di una stima di valori della curva di verosimiglianza relativa
a ciascun parametro tenendo fissi i valori degli altri, metodo che consente, tra le altre cose, di
stimare l’intervallo di confidenza dei parametri (il cui significato è spiegato nella sez. 11.2.1,
pag. 124). La funzione densityplot() produce una curva sulla base dei valori di verosi-
miglianza (stimati dalla funzione profile()) per ciascuno dei quattro parametri del nostro
modello fit1 in un determinato intorno dei valori osservati. Nella figura 15.8 abbiamo anche
aggiunto delle barre verticali che indicano gli estremi dell’intervallo di confidenza per ogni
parametro, ottenuti con la funzione confint() come illustrato nel box 15.15.
La scrittura .sig01 si riferisce a σ̂λ ovvero alla deviazione standard dei BLUPs (il cui
valore stimato è 8.32; vedi box 15.11), da cui deduciamo che l’intervallo di confidenza al 95%
per questo parametro è [4.64 − 20.56]; .sigma si riferisce a σ̂, ovvero alla deviazione standard
dei residui, (Intercept) al parametro β̂0 e homework al parametro β̂1 .

15.3.5 Analisi degli effetti


Per l’analisi grafica degli effetti disponiamo della libreria effects (Fox, 2003), che permette
di rappresentare molto semplicemente diverse tipologie di modelli di regressione (nel nostro
2
Con il comando descritto non si ottiene esattmente il grafico in figura 15.8, per ottenere lo stesso risultato
bisogna specificare un comando più complesso che qui tralasciamo.
15.3 Analisi degli effetti 201

> confint(profile(fit1))
2.5 % 97.5 %
.sig01 4.639817 20.562309
.sigma 7.910689 9.408411
(Intercept) 35.483835 56.952566
homework 1.241741 2.817804

Box 15.15: Calcolo degli intervalli di confidenza dei parametri del modello fit1.

caso tutti quelli presentati nei capitoli 10, 11, 13 ed ovviamente in questo) per visualizzare
i vari effetti che vengono testati. Nel nostro caso, sempre facendo riferimento al modello
definito con la (15.3) e che abbiamo chiamato fit1 possiamo scrivere i seguenti comandi:

library(effects)
plot(allEffects(fit1))

ottenendo il grafico in figura 15.9. Questo grafico rappresenta l’effetto stimato del predittore
(ore di studio, homework) sulla variabile dipendente (voto al test di matematica, math). In
più abbiamo una banda grigia che descrive l’intervallo di confidenza al 95%.

homework effect plot

70

65

60
math

55

50

45

40

0 1 2 3 4 5 6 7
homework

Figura 15.9: Effetto del modello fit1, l’area grigia rappresenta l’intervallo di confidenza al 95%.
Capitolo 16

Analisi dei dati in forma


(semi-)bayesiana

In questo capitolo vengono introdotti i concetti base dell’inferenza Bayesiana. Senza entrare
troppo nelle modalità di analisi proprie di questo approccio, si vuole illustrare come sia
possibile effettuare alcuni test statistici presentati nei precedenti capitoli in modo alternativo,
mantenendo un legame comunque con il metodo più tradizionale che abbiamo chiamato NHST
(vedi sez. 6.2). Con questo non si intende pertanto un vera analisi di tipo bayesiano, la cui
trattazione non è obiettivo di questo manuale, ma una semplificazione che possiamo definire
appunto semi-bayesiana.

16.1 Limiti dell’approccio NHST (ancora)


L’approccio NHST (Null Hypothesis Significance Testing) ha la sua origine storica negli anni
’30 del secolo scorso. Tra le personalità che più si sono distinte nel suo sviluppo possiamo
ricordare: Karl Pearson (1857-1936), autore tra l’altro del coefficiente di correlazione; William
Gosset (1876-1937), noto per lo studio delle proprietà della distribuzione t (di Student, lo
pseudonimo con cui si firmava); Egon Pearson (figlio di Karl, 1895-1980) che insieme a Jerzy
Neyman (1894-1981) introdusse il concetto di ipotesi nulla e di potenza del test; e Ronald
Fisher (1890-1962) che applicò i metodi per il confronto tra medie (test t e ANOVA) e viene
considerato colui che ha reso la statistica una scienza moderna.
Purtroppo una serie di ragioni storiche, e probabilmente anche i conflitti esistenti tra
Fisher ed i Pearson, hanno portato a far sı̀ che NHST sia diventato una specie di ibrido
tra quello che intendeva Fisher e le teorie proposte da Neyman e Pearson (Bachmann et
al., 2005). Il dibattito tra sostenitori e detrattori del metodo NHST è molto acceso anche
nella letteratura psicologica (si veda ad esempio Cohen, 1994; Wagenmakers, 2007; Ziliak &
McCloskey, 2008; Pastore, 2009). Ad oggi comunque sembrano essere riconosciuti i limiti
strutturali di questo approccio, parte dei quali abbiamo già discusso nel capitolo 6. Forse la
sintesi più efficace sta nel commento di Ziliak e McCloskey (2008): Statistical significance is
not a scientific test. It is a philosophical, qualitative test. It does not ask how much. It asks
whether. Ovvero, nonostante quello che si possa pensare, NHST non è un metodo di analisi
quantitativo ma solo qualitativo.
In questo capitolo ci interessa segnalare in particolare il problema del peso che possiamo
dare all’evidenza di un risultato e che, applicando i classici metodi basati su NHST, non è
204 16 Analisi dei dati in forma (semi-)bayesiana

direttamente quantificabile. Utilizzando il famigerato p-value non possiamo valutare né la


palusibilità dell’ipotesi di ricerca (H1 ) né dell’ipotesi nulla (H0 ). Come già visto nel capitolo
6, nella sezione 6.3.2, p non può essere utilizzato come dimensione dell’effetto ma solo come
criterio decisionale (statisticamente significativo vs. non significativo). Nel capitolo 7 ci
siamo occupati di una possibile soluzione al problema utilizzando gli appropriati indici di
dimensione dell’effetto. Di seguito vediamo un altro tipo di soluzione, basata su statistiche
di origine bayesiana.

16.1.1 Inferenza bayesiana


Nonostante il teorema di Bayes sia storicamente più antico (risale circa alla metà del ’700)
la sua affermazione in un approccio statistico alternativo a quello frequentista può essere
datata verso la metà degli anni ’60 ad opera di Lindley (1965). Anche questo approccio ha
conosciuto delle forti critiche, soprattutto in relazione alla scelta delle cosidette priors, ovvero
le distribuzioni a priori (di cui parleremo a breve), in quanto da molti considerate come fonte
di eccessiva soggettività lasciata a chi analizza i dati. In compenso, ultimamente pare essere
cresciuto un notevole interesse verso i metodi bayesiani anche nell’ambito della psicologia (si
veda ad esempio: Dienes, 2011; Kruschke, 2010; Masson, 2011; Wetzels, Raaijmakers, Jakab,
& Wagenmakers, 2009). Vi sono almeno tre ragioni che possono spiegare questo fatto:

1. L’approccio bayesiano permette una valutazione delle ipotesi in termini di evidenza; di


fatto possiamo ottenere delle stime che consentono di quantificare le probabilità delle
ipotesi in gioco sulla base dei dati osservati.

2. Può essere utilizzato anche in casi di elevata complessità ovvero rispetto a modelli non
trattabili in forma NHST.

3. Molti software statistici hanno ormai implementato la possibiltà di fare analisi in senso
bayesiano, tra cui ovviamente R.

In questa sede non vogliamo affrontare il tema approfonditamente ma solo presentare


come sia possibile, grazie all’uso di R ottenere semplici analisi con un metodo che si avvicina
a quello bayesiano.

16.1.2 Approccio bayesiano vs NHST


Una differenza fondamentale tra NHST ed i metodi bayesiani è il modo di trattare i parametri
(incogniti). Nel primo caso infatti essi vengono considerati come quantità fisse mentre nel
secondo sono trattati come variabili casuali con una distribuzione di probabilità associata.
Ad esempio, immaginiamo di considerare un campione di individui con deficit cognitivo e µ
indichi la media della popolazione di individui normali ad un particolare test che misura le
abilità cognitive. Supponiamo inoltre che il punteggio nei soggetti normali sia in media di
90. Come abbiamo visto nella sezione 8.1 (pag. 80) possiamo essere interessati a valutare
l’ipotesi che il nostro campione di soggetti non abbia un deficit (H0 : µ = 90) oppure che lo
abbia (H1 : µ < 90). Utilizzando un’ analisi bayesiana potremmo anche arrivare a stimare
P (µ < 90) ovvero assegnare una probabilità alla plausibità dell’ipotesi H1 . Con NHST questo
non è possibile in quanto tale probabilità è 0 (H1 è falsa) oppure 1 (H1 è vera).
Nel sistema di ipotesi bayesiano viene definita una distribuzione a priori (chiamata prior )
per il parametro oggetto del test, ad esempio possiamo specificare, prima di osservare i dati,
16.2 Inferenza bayesiana 205

che la distribuzione del parametro µ (media vera, incognita) sia N (µ, τ ), ovvero di tipo
normale con media µ e deviazione standard τ . Quindi, tale distribuzione a priori viene
combinata con le informazioni derivate dai dati (verosimiglianza, in inglese likelihood ) per
ottenere una distribuzione a posteriori (posterior ). Formalmente possiamo scrivere:

posterior ∝ prior × likelihood

in cui il simbolo ∝ significa ”è proporzionale a”. Rispetto a NHST, che utilizza solo le infor-
mazioni basate sulla verosimiglianza, l’approccio bayesiano si serve anche delle distribuzioni
a priori per ottenere le distribuzioni a posteriori.

16.2 Inferenza bayesiana


Esempio 16.1 Immaginiamo di trovare una vecchia moneta per terra e di chiederci se è
bilanciata. A priori, semplicemente osservandola e non riscontrando apparenti deformazioni su
di essa potremmo ipotizzare che lo sia ma, ovviamente, non possiamo esserne certi. Decidiamo
allora di effettuare un semplice esperimento e la lanciamo per 10 volte ottenendo due volte
testa e otto volte croce. Cosa possiamo pensare alla luce del risultato ottenuto? Ovvero,
come possiamo utilizzare il risultato ottenuto per valutare se la moneta sia effettivamente
bilanciata o meno?

16.2.1 Modelli delle osservazioni e modelli delle credenze


Diversamente da NHST che utilizza solo le informazioni osservate, l’inferenza bayesiana si
basa su due diversi tipi di modelli probabilistici, il primo chiamato modello delle osservazioni
ed il secondo modello delle credenze (beliefs in inglese).

Modello delle osservazioni


Il modello delle osservazioni è quello che descrive la probabilità degli eventi osservabili. Ciò
che possiamo osservare direttamente è solo l’esito dei lanci, ma non conosciamo eventuali
fattori intrinseci che possono rendere la moneta sbilanciata. Pertanto, un primo insieme di
assunzioni che possiamo fare è in relazione al fatto che essa sia bilanciata o meno. Ad esempio
assumere che lancio dopo lancio, la probabilità di un certo risultato rimanga costante in quanto
ciascun lancio risulta indipendente rispetto agli altri. Tutte queste assunzioni che facciamo
circa il processo che converte i fattori di disturbo non osservabili in esiti dei lanci costituisce
il nostro modello delle osservazioni delle teste-croci. In pratica, possiamo avere una formula
che descrive la probabilità che l’esito del lancio della moneta sia testa, quello che abbiamo già
fatto nella sezione 6.1 (pag. 50) con la distribuzione binomiale.

Modello delle credenze


Il modello delle credenze è quello che descrive il modo in cui noi crediamo alle varie possibilità
degli eventi. Possiamo definire un secondo insieme di assunzioni riguardo a ciò che noi cre-
diamo sullo stato della moneta (è bilanciata o no?). Questo sistema di assunti è totalmente
nuovo, rispetto a NHST, in quanto ci permette di assegnare delle probabilità anche a quanto
crediamo che la moneta sia bilanciata, ammettendo però che essa possa non esserlo. In pra-
tica, si tratta di un insieme di assunti sulla probabilità che assegniamo sulla base delle nostre
206 16 Analisi dei dati in forma (semi-)bayesiana

convinzioni di quanto la moneta possa essere bilanciata o meno. In altri termini, possiamo
avere una formula che descrive quanto crediamo che la moneta sia bilanciata.

Priors e Posteriors

Un’ ulteriore importante definizione va data per i termini di Priors (o a priori) e Posteriors
(o a posteriori) che giocano un ruolo molto importante nell’inferenza bayesiana.
Si definiscono Priors tutte le credenze che abbiamo prima di raccogliere qualunque tipo
di informazione o di osservare dei dati.
Si definiscono Posteriors tutte le credenze che combinano le Priors con un particolare
insieme di informazioni o dati raccolti.
In relazione all’esempio 16.1, prima di lanciare la moneta noi abbiamo una credenza sulla
possibilità che essa sia bilanciata, ovvero che la probabilità di osservare testa sia il 50%. Dopo
aver osservato gli esiti dei 10 lanci, modifichiamo la nostra credenza in quanto il risultato di
solo due teste può portarci a ridurre la probabilità che assegnamo al fatto che la moneta sia
bilanciata.
Un altro esempio si può osservare nella sezione 6.2 in cui abbiamo visto come, utilizzando il
teorema di Bayes, si utilizza la probabilità a priori di non essere schizofrenici, P (H0 ) = 0.98,
combinata alla verosimiglianza per ottenere la probabilità a posteriori P (H0 |R1 ) = 0.607.
In questo caso la probabilità che assegnamo ad H0 è la nostra credenza a priori, prima di
osservare i dati, mentre P (H0 |R1 ) è la credenza a posteriori, ottenuta combinando la prior
con le informazioni ricavate dai dati.

16.2.2 Obiettivi dell’inferenza bayesiana


Come NHST, anche l’inferenza bayesiana, quando si osservano dei dati, si pone degli obiettivi
specifici, che possiamo classificare in tre tipologie:

1. Stimare i valori di parametri incogniti.

2. Prevedere dei risultati rispetto a nuove osservazioni di dati.

3. Confrontare dei modelli.

Vediamo in dettaglio in cosa consistono, sempre tenendo in considerazione l’esempio 16.1.

Stima dei parametri

Significa valutare il grado in cui crediamo a ciascuno dei possibili valori dei parametri incogniti.
Posto a π il vero valore (incognito) della probabilità di ottenere l’evento testa nel lancio della
moneta, osservando i lanci empiricamente possiamo stimare il grado in cui credere che tale
probabilità di ottenere testa sia 0.2 piuttosto che 0.5 oppure 0.8. Dal momento che il lancio
della moneta è un processo casuale, non possiamo essere certi di sapere quale sia la vera
probabilità π, di conseguenza le nostre credenze a posteriori sono delle stime, ed il processo
con cui traduciamo tali credenze nei valori dei vari parametri (e, nello specifico esempio, di
π) si chiama stima dei parametri.
16.2 Inferenza bayesiana 207

Previsione
Sulla base delle nostre credenze, ovvero la probabilità che assegnamo all’evento testa, pos-
siamo prevedere, l’esito di un nuovo lancio, oppure quante saranno le teste attese lanciando
nuovamente la moneta per un certo numero di volte. Si tenga presente che previsione signi-
fica stimare dei valori ignoti sulla base di altri valori noti, non implica necessariamente una
successione temporale. Potremmo per esempio, stimare dei valori mancanti in un set di dati
utilizzando le informazioni che derivano dai dati presenti.

Confronto tra modelli


Se disponiamo di due o più diversi modelli che spiegano un determinato fenomeno, possiamo
utilizzare i dati per decidere a quale modello credere maggiormente. Ad esempio un modello
potrebbe ipotizzare che la moneta non sia bilanciata e la probabilità di testa possa essere 0.2,
0.5 o 0.8, mentre un modello alternativo che la moneta è perfettamente bilanciata oppure
truccata (ha due teste o due croci) per cui la probabilità di testa potrebbe essere 0, 0.5 o 1.
Quindi, dopo aver osservato 2 teste su 10 lanci, a quale modello crediamo di più? Servendoci
dell’approccio bayesiano siamo in grado di stimare quanto un modello sia più credibile di un
altro. In questa sede, ci interessa soffermarci proprio su quest’ultimo obiettivo utilizzando
il confronto tra modelli per l’inferenza servendoci di due particolari statistiche descritte di
seguito.

16.2.3 Bayes Factor


Una statistica propria dell’inferenza bayesiana è il Bayes Factor (BF) definito come probabi-
lità di un risultato sotto un’ipotesi relativamente ad un’altra ipotesi, formalmente1 :

f (x|H0 )
BF(01) = (16.1)
f (x|H1 )

in cui f (x|H0 ) rappresenta la verosimiglianza del risultato x nel caso in cui sia vera H0 e
f (x|H1 ) la verosimiglianza dello stesso risultato x nel caso in cui sia vera H1 . Diversamente
dal p-value vediamo subito che nel calcolo del BF vengono tenute in conto entrambe le ipotesi
e pertanto l’interpretazione del risultato ottenuto può essere fatta in funzione dell’evidenza
di una ipotesi rispetto all’altra. Quando tale rapporto supera il valore 1 vuol dire che i dati
sono più verosimili sotto l’ipotesi H0 che sotto H1 . Ad esempio BF01 = 3 vuol dire che il
risultato osservato è tre volte più verosimile se è vera H0 rispetto ad H1 . Viceversa, ovvero
se il valore è minore di 1, i dati risultano essere più verosimili se è vera H1 rispetto ad H0 .
Ad esempio BF01 = 0.4 vuol dire che il risultato è 2.5 (1/0.4) volte più verosimile se è vera
H1 rispetto ad H0

16.2.4 Bayesian Information Criterion


Un’altra statistica utilizzata è il Bayesian Information Criterion (BIC; Schwarz, 1978). Si
tratta di un criterio utile per la selezione di modelli. Dato un modello M , viene definito con

BIC(M ) = k ln(n) − 2 ln(L) (16.2)


1
Dal momento che il BF può essere espresso in funzione di qualunque coppia di ipotesi, lo indicheremo con
BF(01) quando si intende che al numeratore si considera l’ipotesi H0 .
208 16 Analisi dei dati in forma (semi-)bayesiana

in cui L è il valore di massima verosimiglianza del modello, k il numero di parametri e n il


numero di osservazioni. In generale, migliore è il modello più basso risulta essere il valore di
BIC, pertanto possiamo utilizzare tale statistica per scegliere il modello migliore.
Per affinità con l’approccio NHST possiamo definire M0 modello nullo, ovvero quello per
cui è vera l’ipotesi H0 e M1 modello alternativo, ovvero quello per cui è vera H1 . Dati quindi
due modelli M0 e M1 possiamo definire la statistica

∆BIC = BIC(M0 ) − BIC(M1 ) (16.3)

tramite la quale possiamo stabilire quale sia il modello più plausibile. Se ∆BIC è positivo,
significa che BIC(M0 ) > BIC(M1 ) e quindi i dati osservati risultano più plausibili se è vera
H1 , se ∆BIC è negativo, allora BIC(M0 ) < BIC(M1 ) e quindi i dati risultano più plausibili
se è vera H0 . In sintesi: valori negativi di ∆BIC supportano l’ipotesi H0 mentre valori positivi
H1 .
Ancora, Raftery (1995) ha dimostrato che ∆BIC può essere utilizzato per una stima
approssimata del BF:
   
BIC(M0 ) − BIC(M1 ) ∆BIC
BF(01) ≈ exp − = exp − (16.4)
2 2

Grazie a questa formula possiamo calcolare il BF a partire dai valori di BIC dei modelli a
confronto.

16.3 Applicazioni con R


Vediamo ora come utilizzare R per il calcolo del BIC ed eseguire dei semplici test in forma
bayesiana, con il metodo approssimato oppure con la libreria BayesFactor (Morey & Rouder,
2013).

16.3.1 t-test
Nel capitolo 8 abbiamo trattato ampiamente il tema dei confronti tra medie con il test t.
Consideriamo ora il seguente esempio:

Esempio 16.2 In una ricerca sull’attitudine al pronto soccorso viene somministrato un que-
stionario ad un campione casuale di 562 studenti (165 maschi e 397 femmine) per la valuta-
zione di tale caratteristica (data-frame firstaid). Il punteggio medio riscontrato nei maschi
è xm = 2.12 (sm = 0.77), nelle femmine xf = 2.38 (sf = 0.73). Si vuole sapere se esita una
differenza nell’attitudine al pronto soccorso tra maschi e femmine.

Siamo nella situazione in cui dobbiamo confrontare le medie di due gruppi indipendenti,
quindi nella prassi NHST utilizziamo il test t (vedi sezione 8.2, pag. 84). L’ipotesi zero
relativa a tale test è H0 : µm = µf ovvero che non c’è differenza tra le medie dei punteggi
nelle popolazioni di maschi e femmine rispettivamente.
Nel box 16.1 vediamo come ottenere il test t combinando le funzioni lm() e anova().
Dato che, come abbiamo già detto più volte, tale test non è altro che un caso particolare di
ANOVA, la quale, a sua volta, è un caso particolare di regressione, l’esito della scrittura nel
box 16.1 è equivalente a quello che si otterrebbe con la funzione t.test(). Si può facilmente
16.3 Applicazioni con R 209

> data(firstaid)
> anova(lm(attitude~sex,data=firstaid))
Analysis of Variance Table

Response: attitude
Df Sum Sq Mean Sq F value Pr(>F)
sex 1 8.001 8.0011 14.557 0.0001511 ***
Residuals 560 307.788 0.5496

Box 16.1: Test t in forma NHST con i dati dell’esempio 16.2.


verificare che, con quest’ultima si otterrebbe un valore di t = 3.8154 = 14.557, dato che
t2 = F .
Dal momento che il p-value è minore di 0.05 (per la precisione 0.0001511), concludiamo che
esiste una differenza statisticamente significativa tra i due gruppi in relazione all’attitudine
al pronto soccorso.
Nel box 16.2 vediamo la sequenza di istruzioni per eseguire lo stesso test in forma bayesia-
na sevendoci della funzione BIC(). Con la prima istruzione calcoliamo BIC(M0 ) ovvero del
modello nullo; questo modello si caratterizza con la scrittura attitude∼1 ad indicare che non
vi è alcun predittore della variabile dipendente attitude. Si noti che abbiamo già visto tale
scrittura nei box 11.12 (pag. 132), 11.14 (pag. 135) e 11.15 (pag. 135). In altre parole, se è
vera H0 , non vi è differenza tra i punteggi e quindi la variabile sesso non è un predittore della
variabile attitudine al pronto soccorso. Con la seconda istruzione calcoliamo BIC(M1 ) ovvero
del modello alternativo, secondo il quale il sesso è un predittore della variabile attitude. La
terza istruzione è il calcolo di ∆BIC , semplicemente come differenza tra i due BIC ottenu-
ti precedentemente (vedi formula (16.3)). Infine, con la formula di approssimazione (16.4)
calcoliamo il BF.
Il valore positivo di ∆BIC ci permette di considerare H1 come l’ipotesi più plausibile
e questo risultato è coerente con la significatività ottenuta con il classico test t. In più,
considerando il BF (ed in particolare il suo inverso 1/0.017) possiamo sostenere che i risultati
osservati sono circa 57 volte più verosimili se è vera H1 rispetto ad H0 .

> (BIC0 <- BIC(lm(attitude~1,data=firstaid))) # BIC modello nullo


[1] 1283.598
> (BIC1 <- BIC(lm(attitude~sex,data=firstaid))) # BIC modello alternativo
[1] 1275.507
> (dBIC <- BIC0 - BIC1) # delta-BIC
[1] 8.091209
> (BF <- exp(-(dBIC)/2)) # Bayes Factor
[1] 0.01749912

Box 16.2: Calcolo del Bayes Factor per test t a campioni indipendenti con l’utilizzo del ∆BIC sui dati
dell’esempio 16.2.
210 16 Analisi dei dati in forma (semi-)bayesiana

> library(BayesFactor)
> ttestBF(formula=attitude~sex,data=firstaid)
Bayes factor analysis
--------------
[1] Alt., r=0.707 : 111.4725 0%

Against denominator:
Null, mu1-mu2 = 0
---
Bayes factor type: BFindepSample, JZS

Box 16.3: Test t in forma bayesiana con i dati dell’esempio 16.2.

Nel box 16.3 vediamo come eseguire lo stesso test più semplicemente con la funzione
ttestBF(). Come prima operazione carichiamo la libreria BayesFactor e quindi definiamo
lo stesso modello di prima in questa nuova funzione. L’output prodotto dalla funzione ci da
il valore stimato del BF10 , ovvero considerando al denominatore l’ipotesi H0 (lo si capisce
leggendo “Against denominator: Null, mu1-mu2 = 0”, dato che µ1 − µ2 = 0 è l’ipotesi
H0 ). Essendo questo valore pari a 111.47 possiamo concludere che H1 è molto più verosimile
di H0 , coerentemente con quanto ottenuto negli altri casi. Si faccia attenzione che il valore
riportato come r = 0.707 non è una correlazione ma il valore di scala della distribuzione
di Cauchy utilizzata come distribuzione a priori (per maggiori dettagli si veda Rouder,
Speckman, Sun, Morey, & Iverson, 2009), modificabile con l’opzione rscale.

16.3.2 Regressione lineare

Esempio 16.3 In uno studio sul bullismo scolastico si considera la relazione tra la percezione
della pressione subita dai propri coetanei (Perceived Peer Pressure, PPP) e il comportamento
passivo (Passive bystanding behavior, PBB). Supponiamo di avere rilevato tali informazioni
da un questionario somministrato ad un campione di 200 studenti di scuola media (data-
frame Bullying). Ciò che interessa sapere è se la pressione percepita sia un predittore del
comportamento passivo.

> data(Bullying)
> anova(lm(PBB~PPP,data=Bullying))
Analysis of Variance Table

Response: PBB
Df Sum Sq Mean Sq F value Pr(>F)
PPP 1 2.15 2.14982 5.025 0.02609 *
Residuals 198 84.71 0.42783

Box 16.4: Test sul coefficiente di regressione in forma NHST con i dati dell’esempio 16.3.
16.3 Applicazioni con R 211

> (BIC0 <- BIC(lm(PBB~1,data=Bullying))) # BIC modello nullo


[1] 411.3682
> (BIC1 <- BIC(lm(PBB~PPP,data=Bullying))) # BIC modello alternativo
[1] 411.6541
> (dBIC <- BIC0-BIC1) # delta-BIC
[1] -0.28594
> (BF <- exp(-dBIC/2)) # Bayes Factor
[1] 1.153695

Box 16.5: Calcolo del Bayes Factor per test sul coefficiente di regressione con l’utilizzo del ∆BIC sui
dati dell’esempio 16.3.

Dato che entrambe le variabili considerate sono di tipo numerico (punteggi al questionario)
possiamo utilizzare un modello di regressione lineare semplice (vedi capitolo 10) in cui la
variabile PPP risulta essere l’ipotetico predittore della variabile PBB. In particolare siamo
interessati a valutare se il coefficiente di regressione risulti significativamente diverso da zero.
Le ipotesi contrapposte saranno pertanto: H0 : β1 = 0 e H1 : β1 6= 0.
Nel box 16.4 vediamo l’analisi in forma tradizionale utilizzando le funzioni lm() e anova().
L’esito del test è significativo (p = 0.02609) e pertanto concludiamo rigettando l’ipotesi H0 .
Si noti che in questo output manca l’informazione relativa al valore stimato di β1 , otteni-
bile direttamente dalla funzione lm() (vedi box 10.1) oppure combinando quest’ultima con
summary() (come visto ad esempio nel box 10.2).
Nel box 16.5 vediamo come procedere per il calcolo del BF. Definiamo il modello nul-
lo, ovvero il modello senza predittore e ne calcoliamo il BIC. Poi definiamo il modello con
predittore (ovvero il punteggio di percezione della pressione subita) e calcoliamo il relativo
BIC. Come terzo passaggio calcoliamo la differenza tra i due (∆BIC ) ed infine il BF, sempre
utilizzando la formula (16.4). Il valore di ∆BIC negativo, ed il BF superiore ad uno ci portano
a concludere che, sulla base dei dati osservati, H0 risulta essere 1.15 volte più plausibile di
H1 , ovvero una conclusione in contraddizione con quanto ottenuto nel test in forma NHST.
Lo stesso notiamo nel box 16.6, in cui vediamo cosa accade se utilizziamo la funzione lmBF().
Mediante tale funzione otteniamo direttamente il valore di BF10 = 1.59, che indica H1 come
circa 1.6 volte più verosimile di H0 .

> lmBF(PBB~PPP,data=Bullying)
Bayes factor analysis
--------------
[1] PPP : 1.587673 0%

Against denominator:
Intercept only
---
Bayes factor type: BFlinearModel, JZS

Box 16.6: Test sul coefficiente di regressione in forma bayesiana con i dati dell’esempio 16.3.
212 16 Analisi dei dati in forma (semi-)bayesiana

3.5
3.0
Passive bystanding behavior

2.5
2.0
1.5
1.0
0.5

1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5

Perceived Peer Pressure

Figura 16.1: Grafico a dispersione dei punteggi dei soggetti sulle scale di PPP (in ascissa) e PBB (in
ordinata). La linea nera indica la retta di regressione stimata.

Per capire come mai otteniamo questa apparente discordanza nelle conclusioni, dobbiamo
vedere la distribuzione dei punteggi rappresentata in figura 16.1. Nella figura è rappresentata
anche la retta di regressione stimata. Possiamo notare come i punteggi risultino poco correlati,
il valore di r2 (coefficiente di determinazione, vedi sez. 7.2 e sez. 10.3) stimato è infatti di
circa 0.02 ad indicare che la relazione lineare spiega solo il 2% di varianza. Di conseguenza
potremmo concludere che la significatività statistica non indichi una reale relazione tra le due
variabili ma sia solo effetto della elevata numerosità campionaria. Il valore piuttosto basso del
Bayes Factor, calcolato con i due modi conferma questo, ovvero che la dimensione dell’effetto
è piuttosto bassa.

16.3.3 ANOVA
Esempio 16.4 Alcuni ricercatori ipotizzano che bambini con esperienze sociali più ricche
siano anche più capaci di parlare delle proprie esperienze relazionali. A tal fine selezionano
un campione di 81 bambini di età intorno ai 5 anni. Per la valutazione del livello di esperienza
sociale essi osservano il comportamento dei bambini durante alcune sessioni sperimentali. Al
termine di tali sessioni classificano il livello di esperienza dei bambini secondo 5 categorie
definite in base al numero di azioni sociali agite e ricevute. Tali categorie sono le seguenti:
presenti (alto numero di agite e ricevute), assenti (basso numero di agite e ricevute), cercatori
(alto numero di agite e basso di ricevute), cercati (basso numero di agite e alto di ricevute) e
medi. Per la valutazione della capacità di descrivere le esperienze relazionali viene calcolato
un punteggio di competenza linguistica. I dati sono disponibili nel data-frame relbambini.

Dal momento che la variabile dipendente è costituita da punteggi mentre il predittore è di


tipo categoriale utilizziamo un modello ANOVA in cui l’ipotesi zero è definita come

H0 : µpre = µass = µcri = µcti = µmed


16.3 Applicazioni con R 213

> data(relbambini)
> anova(lm(comp.ling~cat.comp,data=relbambini))
Analysis of Variance Table

Response: comp.ling
Df Sum Sq Mean Sq F value Pr(>F)
cat.comp 4 199.84 49.961 2.7687 0.03318 *
Residuals 76 1371.42 18.045

Box 16.7: ANOVA in forma NHST con i dati dell’esempio 16.4.

ovvero che non esistono differenze tra le medie dei punteggi dei bambini sulla competenza
linguistica in relazione al loro livello di esperienza.
Nel box 16.7 vediamo l’analisi in forma tradizionale utilizzando le funzioni lm() e anova(),
esattamente come già visto nel capitolo 11. L’esito del test è significativo (p = 0.03318) e
pertanto concludiamo rigettando l’ipotesi H0 . In questo momento non ci interessa andare a
valutare a carico di quali differenze si possa imputare questo effetto significativo, si tratta
infatti di un problema di confronti multipli, che abbiamo trattato nel capitolo 12.
Nel box 16.8 vediamo come procedere per il calcolo del BF. Definiamo il modello nullo,
ovvero il modello senza predittore e ne calcoliamo il BIC. Poi definiamo il modello con pre-
dittore (cioé la categoria di comportamento) e calcoliamo il relativo BIC. Come terzo passaggio
calcoliamo la differenza tra i due (∆BIC ) ed infine il BF, sempre utilizzando la formula (16.4).

> (BIC0 <- BIC(lm(comp.ling~1,data=relbambini))) # BIC modello nullo


[1] 478.8372
> (BIC1 <- BIC(lm(comp.ling~cat.comp,data=relbambini))) #BIC mod. alternativo
[1] 485.3963
> (dBIC <- BIC0 - BIC1) # delta-BIC
[1] -6.559123
> (BF <- exp(-dBIC/2)) # Bayes Factor
[1] 26.56413

Box 16.8: Calcolo del Bayes Factor per ANOVA con l’utilizzo del ∆BIC sui dati dell’esempio 16.4.

Anche in questo caso, come già per l’esempio 16.3, otteniamo un risultato contrastante
con quello ottenuto nel box 16.7. Il valore negativo di ∆BIC indica che H0 è più verosimile
di H1 , inoltre il BF ci dice che il risultato osservato è circa 26 volte più verosimile se è vera
H0 rispetto a H1 .
Nel box 16.9 vediamo cosa succede se utilizziamo la funzione anovaBF() che calcola il
BF10 = 1.35. Anche questo risultato ci farebbe probendere per H1 come più verosimile di
H0 ma il valore basso ci dice che la differenza tra i due modelli non è rilevante. In pratica ci
troviamo di fronte a tre risultati che portano a conclusioni diverse: basandoci sull’ANOVA
tradizionale rigettiamo l’ipotesi H0 (risultato statisticamente significativo, box 16.7), mentre
se confrontiamo i modelli con BIC e BF approssimato il test è a favore proprio di H0 (26 volte
più plausibile di H1 , box 16.8); infine, l’aproccio con la funzione anovaBF() fa propendere
214 16 Analisi dei dati in forma (semi-)bayesiana

> anovaBF(comp.ling~cat.comp,data=relbambini)
Bayes factor analysis
--------------
[1] cat.comp : 1.350831 0%

Against denominator:
Intercept only
---
Bayes factor type: BFlinearModel, JZS

Box 16.9: ANOVA in forma bayesiana con i dati dell’esempio 16.4.

ancora per l’ipotesi alternativa H1 , ma con una differenza molto bassa tra le due ipotesi (1.35,
box 16.9).
Ancora una volta, per capire meglio la situazione, guardiamo i dati. In figura 16.2 sono
rappresentate con boxplot le distribuzioni dei punteggio di competenza linguistica per ciascuna
categoria di comportamento. Dalla rappresentazione grafica notiamo subito che le variabilità
associate ai 5 gruppi risultano piuttosto diverse tra loro. Nella sezione 11.1.6 (a pag. 121)
abbiamo già trattato il problema della non omogeneità delle varianze. Se effettuiamo un test
per tale assunto (vedi box 16.10) otteniamo un risultato significativo, ad indicare che esso
non è rispettato. Nel box 16.10 eseguiamo allora un’ANOVA per il caso di varianze non
omogenee ed otteniamo un risultato non significativo. Pertanto dovremmo concludere che
la significatività statistica ottenuta precedentemente (vedi box 16.7) è presumibilmente un
effetto delle varianze non omogenee e che le differenze tra le medie non siano cosı̀ evidenti.
20
15
10
5
0

assenti cercati cercatori medi presenti

Figura 16.2: Distribuzioni dei punteggi sulla competenza linguistica in funzione della categoria di
comportamento relativi ai dati dell’esempio 16.4.
16.3 Applicazioni con R 215

> bartlett.test(comp.ling~cat.comp,data=relbambini)

Bartlett test of homogeneity of variances

data: comp.ling by cat.comp


Bartlett’s K-squared = 10.1401, df = 4, p-value = 0.03813
> oneway.test(comp.ling~cat.comp,data=relbambini)
One-way analysis of means (not assuming equal variances)

data: comp.ling and cat.comp


F = 2.5721, num df = 4.000, denom df = 26.152, p-value = 0.06129

Box 16.10: Test di omogeneità delle varianze e relativa ANOVA nel caso di non omogeneità, dati
relativi all’esempio 16.4.

In sintesi, dagli esempi appena illustrati si nota come l’uso del BIC e del BF possa su-
perare alcuni limiti strutturali dell’approccio NHST e permetta di ottenere una valutazione
delle ipotesi in gioco in termini di evidenza, ovvero quanto una ipotesi sia più verosimile di
un’altra. Vogliamo comunque ribadire come l’approccio bayesiano sia in realtà più complesso
ed articolato di come lo abbiamo presentato in questa sede, e probabilmente da il meglio di
sé in situazioni più complesse e che in questa sede non possiamo apprezzare; rimandiamo
pertanto gli interessati a manuali più completi ed orientati in proposito (ad esempio Gelman,
Carlin, Stern, & Rubin, 2004; Kruschke, 2011).
Bibliografia

Akaike, H. (1974). A new look at the statistical model identification. Automatic Control,
IEEE Transactions on, 19 , 716–723. doi: 10.1109/TAC.1974.1100705
Anscombe, F. J. (1973). Graphs in Statistical Analysis. The American Statistician, 27 ,
17–21.
Azzalini, A. (2001). Inferenza Statistica. Una presentazione basata sul concetto di
verosimiglianza. Springer-Verlag, Milano.
Baayen, R. H. (2008). Analyzing Linguistic Data: A Practical Introduction to Statistics using
R. Cambridge University Press.
Baayen, R. H., Davidson, D. J., & Bates, D. M. (2008). Mixed-effects modeling with crossed
random effects for subjects and items. Journal Of Memory And Language, 59 , 390–412.
doi: 10.1016/j.jml.2007.12.005
Bachmann, C., Luccio, R., & Salvadori, E. (2005). La verifica della significatività dell’ipotesi
nulla in psicologia. Florence University Press, Firenze.
Bates, D. M. (2010). lme4: Mixed-effects modeling with R. Scaricabile da
http://lme4.r-forge.r-project.org/book
Bates, D. M., Maechler, M., Bolker, B., & Walker, S. (2013). lme4: Linear mixed-
effects models using Eigen and S4 [Computer software manual]. Scaricabile da
http://cran.r-project.org/package=lme4 (R package version 1.0-5)
Benjamini, Y., & Hochberg, Y. (1995). Controlling the False Discovery Rate: A practical
and powerful approach to multiple testing. Journal of the Royal Statistic Society B ,
57 , 289–300.
Benjamini, Y., & Yekutieli, D. (2001). The control of the False Discovery Rate in multiple
testing under dependency. Annals of Statistics, 29 , 1165–1188.
Bohrnstedt, W., & Knoke, D. (1998). Statistica per le scienze sociali. Il Mulino, Bologna.
Bollen, K. A. (1989). Structural equation with latent variables. Wiley, NY.
Bonferroni, C. E. (1936). Teoria statistica delle classi e calcolo delle probabilità. Pubblicazioni
del R. Istituto Superiore di Scienze Economiche e Commerciali di Firenze, 8 , 3–62.
Box, G. E. P. (1954). Some theorems on quadratic forms applied in the study of analysis
of variance problems, I. Effect of inequality of variance in the one-way classification.
Annals of Mathematical Statistics, 25 , 290–302.
Box, G. E. P., & Cox, D. R. (1964). An analysis of transformations. Journal of the Royal
Statistic Society B , 26 , 211–246.
Bradley, J. V. (1980a). Nonrobustness in classical tests on mean and variances: A large-scale
sampling study. Bulletin of the Psychonomic Society, 15 , 275–278.
Bradley, J. V. (1980b). Nonrobustness in Z, t, and F tests at large sample sizes. Bulletin of
the Psychonomic Society, 16 , 333–336.
218 Bibliografia

Bryk, A. S., & Raudenbush, S. W. (1992). Hierarchical Linear Models: Applications and
Data Analysis Methods. Sage, NewburyPark, CA.
Burnham, K., & Anderson, D. (2004). Multimodel inference - understanding AIC
and BIC in model selection. Sociological Methods & Research, 33 , 261–304. doi:
10.1177/0049124104268644
Caudek, C., & Luccio, R. (2001). Statistica per psicologi. Laterza, Roma.
Champely, S. (2012). pwr: Basic functions for power analysis [Computer software manual].
Scaricabile da http://cran.r-project.org/package=pwr (R package version 1.1.1)
Clinch, J. J., & Keselman, H. J. (1982). Parametric alternatives to the analysis of variance.
Journal of Educational Statistics, 7 , 207–214.
Cohen, J. (1973). Eta-squared and partial eta-squared in fixed factor ANOVA designs.
Educational and Psychological Measurement, 33 , 107–112.
Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Lawrence
Erlbaum Associates, Hillsdale, NJ.
Cohen, J. (1994). The earth is round (p < .05). American Psychologist, 49 , 997–1003.
Corbetta, P., Gasperoni, G., & Pisati, M. (2001). Statistica per la ricerca sociale. Il Mulino,
Bologna.
Crainiceanu, C., & Ruppert, D. (2004). Likelihood ratio tests in linear mixed models with
one variance component. Journal Of The Royal Statistical Society Series B-Statistical
Methodology, 66 , 165–185. doi: 10.1111/j.1467-9868.2004.00438.x
Crivellari, F. (2006). Analisi statistica dei dati con R. Apogeo, Milano.
Di Nuovo, S. (1995). La meta-analisi. Borla, Roma.
Dienes, Z. (2011). Bayesian Versus Orthodox Statistica: Which Side Are You On?
Psychological Science, 6 , 274–290.
Dunnett, C. W. (1955). A multiple comparison procedure for comparing several treatments
with a control. Journal of the American Statistical Association, 50 , 1096–1121.
Fabbris, L. (1997). Statistica multivariata. Analisi esplorativa dei dati. McGraw - Hill,
Milano.
Fisher, R. A. (1921). On the probable error of a coefficient of correlation deduced from a
small sample. Metron, 1 , 3–32.
Fisher, R. A. (1925). Statistical Methods for Research Workers. Oliver & Boyd, Edinburgh.
Fisher, R. A. (1935). The Design of Experiments. Oliver & Boyd, Edinburgh.
Fox, J. (1997). Applied regression analysis, linear models, and related methods. SAGE, CA.
Fox, J. (2003). Effect Displays in R for Generalised Linear Models. Journal of Statistical
Software, 8 . Scaricabile da http://www.jstatsoft.org/v08/i15
Fox, J. (2009). Aspects of the Social Organization and Trajectory of the R Project. The R
Journal , 1 (2), 5–13.
Fox, J., & Weisberg, S. (2011). An R Companion to Applied Regression (Second ed.).
Thousand Oaks CA: Sage.
Francis, G. (2013). Replication, statistical consistency, and publication bias. Journal of
Mathematical Psychology, 57 , 153–169.
Garthwaite, P. H., Joliffe, I. T., & Jones, B. (2002). Statistical Inference (2nd edition).
Oxford University Press, New York.
Geisser, S., & Greenhouse, S. W. (1958). An extension of Box’s results on the use of the F
distribution in multivariate analysis. Annals of Mathematical Statistics, 29 , 885–891.
Gelman, A. (2014). The Connection Between Varying Treatment Effects and the Cri-
sis of Unreplicable Research A Bayesian Perspective. Journal of Management,
Bibliografia 219

0149206314525208.
Gelman, A., Carlin, J. B., Stern, H. S., & Rubin, D. B. (2004). Bayesian Data Analysis.
Chapman & Hall, Boca Raton, FL.
Gelman, A., & Hill, J. (2007). Data Analysis Using Regression and Multilevel/Hierarchical
Models. Cambridge University Press.
Gigerenzer, G., & Marewski, J. N. (2014). Surrogate Science The Idol of a Universal Method
for Scientific Inference. Journal of Management, –. doi: 10.1177/0149206314547522
Glantz, S. A. (1988). Statistica per le discipline biomediche. McGraw - Hill, Milano.
Haase, R. F. (1983). Classical and partial eta square in multifactor ANOVA designs.
Educational and Psychological Measurement, 43 , 35–39.
Heck, R. H., & Thomas, S. L. (2000). An Introduction to Multilevel Modeling Techniques.
Mahwah, NJ: Lawrence Erlbaum Associates.
Hoenig, J., & Heisey, D. (2001). The abuse of power: The pervasive fallacy of
power calculations for data analysis. American Statistician, 55 , 19–24. doi:
10.1198/000313001300339897
Hoffman, D., & Fidell, L. S. (1979). Characteristics of androgynus, undifferentiated, masculine
and feminine middle class women. Sex Roles, 5 , 765–781.
Hox, J. J. (1995). Applied Multilevel Analysis. Amsterdam: TT-Publikaties.
Huynh, H., & Feldt, L. S. (1970). Conditions under which mean square ratios in repeated
measurements designs have exact F-distributions. Journal of the American Statistical
Association, 65 , 1582–1589.
Iacus, S., & Masarotto, G. (2003). Laboratorio di statistica con R. McGraw-Hill, Milano.
Iacus, S., & Masarotto, G. (2012). labstatR: Libreria del Laboratorio di Statistica con
R [Computer software manual]. Scaricabile da http://cran.r-project.org/package
(R package version 1.0.7)
Jöreskog, K., & Sörbom, D. (1986). LISREL VI: User’s Reference Guide. Mooresville, IN:
Scientific Software, Inc.
Kaiser, H. F. (1960). Directional Statistical Decisions. Psychological Review , 67 , 160–167.
Kendall, M. G., & Buckland, W. R. (1957). A dictionary of statistical terms. Oliver & Boyd
Publishers.
Kennedy, J. J. (1970). The eta coefficient in complex ANOVA designs. Educational and
Psychological Measurement, 30 , 885–889.
Keppel, G. (1991). Design and analysis: A researcher’s handbook. Prentice Hall, Englewood
Cliffs, N.J.
Keppel, G., Saufley, W. H., & Tokunaga, H. (2001). Disegno sperimentale e analisi dei dati
in psicologia. EdiSes, Napoli.
Keren, G., & Lewis, C. (1979). Partial omega squared for ANOVA designs. Educational and
Psychological Measurement, 30 , 119–128.
Keselman, H. J., Cribbie, R., & Holland, B. (2002). Controlling the rate of Type I error over a
large set of statistical tests. British Journal of Mathematical and Statistical Psychology,
55 , 27–39.
Keselman, H. J., Games, P. A., & Rogan, J. C. (1979). Protecting the overall rate of Type
I errors of pairwise comparisons with an omnibus test statistic. Psychological Bulletin,
86 , 884–888.
Keuls, M. (1952). The use of Studentized range in connection with an analysis of variance.
Euphytica, 1 , 112–122.
220 Bibliografia

Kirk, R. E. (1995). Experimental Design: Procedures for Behavioral Sciences. Cole, Pacific
Grove, CA.
Kline, R. B. (2005). Principles and Practice fo Structural Equation Modeling. Guilford Press,
NY.
Kohr, R. L., & Games, P. A. (1974). Robustness of the analysis of variance, the Welch
procedure, and a Box procedure to heterogeneous variance. Journal of Experimental
Education, 43 , 61–69.
Kruschke, J. K. (2010). What to believe: Bayesian methods for data analysis. Trends in
Cognitive Sciences, 14 , 293–300.
Kruschke, J. K. (2011). Doing Bayesian Data Analysis. Academic Press, Burlington, MA.
Kuznetsova, A., Bruun Brockhoff, P., & Haubo Bojesen Christensen, R. (2013).
lmerTest: Tests for random and fixed effects for linear mixed effect models
(lmer objects of lme4 package). [Computer software manual]. Scaricabile da
http://cran.r-project.org/package=lmerTest (R package version 2.0-3)
Lehmann, E. L. (1986). Testing Statistical Hypotheses. Wiley, New York.
Leyland, A. H., & Goldstein, H. (2001). Multilevel Modelling of Health Statistics. NY: Wiley.
Lindley, D. V. (1965). Introduction to Probability and Statistics from a Bayesian Viewpoint.
Cambridge University Press.
Masson, M. E. J. (2011). A tutorial on a practical Bayesian alternative to null-hypothesis
significance testing. Behavior Research Methods, 43 , 679–90.
Mathieu, J. (1991). A Cross-Level Nonrecursive Model Of The Antecedents Of Organizational
Commitment And Satisfaction. Journal Of Applied Psychology, 76 , 607–618.
McBurney, H. (1983). Metodologia della ricerca in psicologia. Il Mulino, Bologna, 1986.
Mineo, A. M. (2003). Una Guida all’utilizzo dell’Ambiente Statistico R [Computer software
manual]. Scaricabile da http://www.r-project.org
Moore, D. S., & McCabe, G. P. (1989). Introduction to the Practice of Statistics. W.H.
Freeman, N.Y.
Morey, R. D., & Rouder, J. N. (2013). BayesFactor: Computation of
Bayes factors for common designs [Computer software manual]. Scaricabile da
http://cran.r-project.org/package=BayesFactor (R package version 0.9.4)
Muenchen, R. A. (2012). The popularity of data analysis software. Scaricabile da
http://r4stats.com/articles/popularity/
Muggeo, V. M. R., & Ferrara, G. (2005). Il linguaggio R: concetti introduttivi ed esempi (II
edizione) [Computer software manual]. Scaricabile da http://www.r-project.org
Newman, D. (1939). The distribution of the range in samples from the normal population,
expressed in terms of an independent estimate of standard deviation. Biometrika, 31 ,
20–30.
Neyman, J., & Pearson, E. S. (1933). On the problem of the most efficient tests of statistical
hypotheses. Philosophical Transactions of the Royal Society of London, 231 , 289–337.
Oakes, M. (1986). Statistical inference: A commentary for the social and behavioral sciences.
Wiley, NY.
Paradis, E. (2005). R for beginners [Computer software manual]. Scaricabile da
http://www.r-project.org
Pastore, M. (2009). I limiti dell’approccio NHST e l’alternativa Bayesiana. Giornale Italiano
di Psicologia, 36 , 925–938.
Pinheiro, J. C., & Bates, D. M. (2000). Mixed-Effects Models in S and S-Plus. Springer.
Bibliografia 221

Pokhrel, P., Fagan, P., Little, M. A., Kawamoto, C. T., & Herzog, T. A. (2013). Smokers who
try e-cigarettes to quit smoking: findings from a multiethnic study in Hawaii. American
journal of public health, 103 , 57–62.
Raftery, A. E. (1995). Bayesian model selection in social research. Sociological Methodology,
25 , 111–163.
Rosseel, Y. (2012). lavaan: An R Package for Structural Equation Modeling. Journal of
Statistical Software, 48 , 1–36. Scaricabile da http://www.jstatsoft.org/v48/i02
Rouder, J. N., Speckman, P. L., Sun, D., Morey, R. D., & Iverson, G. (2009). Bayesian t
tests for accepting and rejecting the null hypothesis. Psychonomic Bulletin & Review ,
16 , 225–237. doi: 10.3758/PBR.16.2.225
Scàrdovi, I. (1980). Appunti di statistica (Vol. 1). Pàtron, Bologna.
Scheffé, H. (1953). A method for judging all contrasts in the analysis of variance. Biometrika,
40 , 87–104.
Scheipl, F., Greven, S., & Kuechenhoff, H. (2008). Size and power of tests for a zero
random effect variance or polynomial regression in additive and linear mixed models.
Computational Statistics & Data Analysis, 52 , 3283–3299.
Schwarz, G. E. (1978). Estimating the dimension of a model. Annals of Statistics, 6 , 461–464.
Stevens, S. S. (1946). On the theory of scales of measurement. Science, 103 , 677–680.
Stevens, S. S. (1951). Mathematics, measurement, and psychophysics. In S. S. Stevens (Ed.),
Handbook of experimental psychology (pp. 1–49). Wiley, NY.
Suppes, P. (1970). A Probabilistic Theory of Causality. North-Holland, Amsterdam.
Tukey, J. W. (1951). Quick and dirty methods in statistics. Part II. Simple analysis for
standard designs. In Proceedings of the Fifth Annual Convention of the American Society
for Quality Control (pp. 189–197).
Tukey, J. W. (1953). The problem of multiple comparisons. (Unpublished paper, Princeton
University, Princeton, NJ)
Tversky, A., & Kahneman, D. (1971). Belief in the law of small numbers. Psychological
Bulletin, 76 , 105–110.
Verzani, J. (2002). simpleR - Using R for Introductory Statistics [Computer software manual].
Scaricabile da http://www.r-project.org
Vieno, A., Nation, M., Perkins, D. D., Pastore, M., & Santinello, M. (2010). Social Capital,
Safety Concerns, Parenting, And Early Adolescents’ Antisocial Behavior. Journal Of
Community Psychology, 38 , 314–328. doi: 10.1002/jcop.20366
Wagenmakers, E. J. (2007). A practical solution to the pervasive problems of p values.
Psychonomic Bulletin & Review , 14 , 779–804.
Welch, B. L. (1951). On the comparison of several mean values: An alternative approach.
Biometrika, 38 , 330–336.
Westfall, P. H., & Young, S. S. (1993). Resampling-based multiple testing. Wiley, NY.
Wetzels, R., Raaijmakers, J. G. W., Jakab, E., & Wagenmakers, E. J. (2009). How to quantify
support for and against the Null Hypothesis: A flexible WinBUGS implementation of
a default Bayesian t-test. Psychonomic Bulletin & Review , 16 , 752–760.
Wilkinson, L., & the Task Force on Statistical Inference. (1999). Statistical methods in
psychology journals: Guidelines and explanations. American Psychologist, 54 , 594–604.
Williams, V. S. L., Jones, L. V., & Tukey, J. W. (1999). Controlling error in multiple
comparisons, with examples from state-to-state differences in educational achievement.
Journal of Educational and Behavioral Statistics, 24 , 42–69.
222 Bibliografia

Ziliak, S. T., & McCloskey, D. N. (2008). The cult of statistical significance. Ann Arbor, MI:
University of Michigan Press.
Indice delle funzioni di R

.packages(), 17 dist(), 38

abline(), 106 ecdf(), 28


aggregate(), 25, 125 Error(), 134
AIC(), 158 eta2(), 74, 119
anova(), 118, 126, 156, 157, 196, 208, 211, etasq(), 129, 130
213 exactLRT(), 198, 199
anovaBF(), 213
factor(), 118, 121, 134
aov(), 126, 127, 130, 133, 134, 141
file.choose(), 19, 20
apply(), 35
fitted(), 177
attach(), 15
attach(), 14, 126 grid(), 28
bartlett.test(), 115, 121 help(), 15
bcPower(), 64, 65 help(), 9
BIC(), 158, 209 hist(), 26
binom.test(), 52
boxplot(), 27 inspect(), 164, 175–177
integrate(), 10
c(), 12
cbind(), 16, 35 ks.test(), 81, 85, 115
CI.mean(), 124, 125
length(), 23
coef(), 163, 191, 193
library(), 20, 21
Cohen.d(), 74, 83, 86
library(), 16, 21, 64, 163
cohen.ES(), 74
lm(), 107
cohen.ES(), 74
lm(), 106, 109, 118, 130, 132, 147, 149, 163,
Cohen.f(), 74, 119
168, 187, 190, 197, 198, 208, 211, 213
combinations(), 41
lmBF(), 211
confint(), 200
lmer(), 190, 191, 196–198
cor(), 37, 93, 98
load(), 14, 21
cor.test(), 94–96, 98
log(), 10
cor.testF(), 97
ls(), 14
cov(), 36
cramer.phi(), 74 margin.table(), 24
matrix(), 13, 21, 146
data(), 13, 21, 34, 167 mauchly.test(), 132
data.frame(), 13 mean(), 15, 25
densityplot(), 200 mean.a(), 86
det(), 177
detach(), 14 omega2(), 74, 119
224 Indice delle funzioni di R

oneway.test(), 121, 123 set.seed(), 65, 121


shapiro.test(), 81, 115
pairwise.t.test(), 138–140, 145 source(), 18
partial.eta2(), 129 sqrt(), 10
partial.omega2(), 129 stack(), 133
plot(), 30, 106, 107 stepfun(), 28
pnorm(), 77 str(), 13, 19–21
pnorm(), 74, 77 str(), 11, 13, 19, 118
power.anova.test(), 74, 119, 120 summary(), 25, 109
power.t.test(), 74, 83, 87 summary(), 25, 109, 127, 134, 155, 169, 172,
profile(), 200 180, 194, 195, 211
pwr.anova.test(), 119, 120
pwr.f2.test(), 130 t(), 16
pwr.r.test(), 99 t.test(), 82, 85, 88, 90, 124, 208
pwr.t.test(), 87 table(), 23, 24, 35
tapply(), 25, 78, 114
qnorm(), 73 ttestBF(), 210
qqline(), 29 TukeyHSD(), 141
qqnorm(), 29
qqplot(), 29 update(), 199
quantile(), 26
var(), 47
ranef(), 191 var.test(), 85, 115
range(), 78
rank(), 98 Welch(), 121
rbind(), 35 which(), 115
rchisq(), 65
read.csv2(), 20
read.csv2(), 20
read.spss(), 21
read.spss(), 21
read.table(), 19
read.table(), 18
read.xls(), 20
read.xls(), 20
rm(), 14
rm(), 14
rnorm(), 121
round(), 36

sample(), 40
save(), 14, 21
save.image(), 14
scale(), 64
Scheffe(), 143, 146
sd(), 47
sem(), 164, 165
sem(), 163, 169, 172, 176, 179, 180

Potrebbero piacerti anche