Introduzione all` Analisi Esplorativa dei Dati mediante R

Transcript

Introduzione all` Analisi Esplorativa dei Dati mediante R
Introduzione all’
Analisi Esplorativa dei Dati mediante R
Giovanna Menardi
[email protected]
A.A. 2008/2009
G. Menardi
Lezione
()
3
1 / 21
Esempio: Efficacia di un farmaco
I dati contenuti nel file ”psisto.dat” e ”pdiasto.dat” si riferiscono alla misurazione
della pressione rispettivamente sistolica e diastolica del sangue di due gruppi di 15
pazienti che soffrono di alta pressione:
il primo gruppo (cui si riferiscono le variabili Sp, Dp) non è stato sottoposto
ad alcun trattamento
il secondo gruppo (Sd, Dd) è stato sottoposto ad un trattamento con un
farmaco sperimentale.
L’obiettivo è analizzare se il farmaco ha effetto nell’abbassamento della pressione
sistolica, ovvero se vi sono differenze significative nella pressione del sangue dei
due gruppi di pazienti.
Di seguito si considera, per semplicità, la sola analisi delle misurazioni della
pressione sistolica (psisto.dat)
G. Menardi
Lezione
()
3
2 / 21
Confronto tra diversi gruppi
Il primo passo da compiere a questo scopo consiste nell’eseguire un’analisi
esplorativa dei dati.
Esplorazione univariata =⇒ analisi delle singole variabili
Esplorazione bivariata =⇒ confronto tra le variabili.
In particolare, quando una stessa variabile è osservata per gruppi diversi di dati,
per confrontare le distribuzioni relative ai diversi gruppi è utile:
Riportare l’uno vicino all’altro i boxplot della distribuzione della variabile nei
diversi gruppi
Scomporre la variabità complessiva dei dati in spiegata (dai gruppi) e
accidentale tramite la scomposizione della varianza e calcolare un opportuno
indice.
G. Menardi
Lezione
()
3
3 / 21
I dati
> psisto <- read.table("psisto.dat", header=T)
> psisto
Sp Sd
1 210 201
2 169 165
3 187 166
4 160 157
5 167 147
6 176 145
7 185 168
...
> attach(psisto)
G. Menardi
Lezione
()
3
4 / 21
Analisi univariata: diagramma ramo e foglia
> stem(Sp)
The decimal point is 1 digit(s) to the right of the |
14 | 684
16 | 079346
18 | 578
20 | 160
> stem(Sd)
The decimal point is 1 digit(s) to the right of the |
12 | 916
14 | 57717
16 | 56889
18 | 0
20 | 1
G. Menardi
Lezione
()
3
5 / 21
Analisi univariata: istogramma
> par(mfrow=c(1,2))
> hist(Sp,xlab="Sp")
> hist(Sd,xlab="Sd")
G. Menardi
Histogram of Sd
4
2
3
Frequency
1.5
1.0
1
0.5
0
0.0
Frequency
2.0
5
2.5
6
3.0
Histogram of Sp
140 150 160 170 180 190 200 210
120
140
Sp
160
180
200
220
Sd
Lezione
()
3
6 / 21
Analisi univariata: istogramma
G. Menardi
3
Frequency
0
0
1
1
2
2
Frequency
3
4
4
5
5
6
par(mfrow=c(1,2))
hist(Sp,xlab="Sp",breaks=c(120,140,160,180,200,220))
hist(Sd,xlab="Sd",breaks=c(120,140,160,180,200,220))
Histogram of Sp
Histogram of Sd
120
160
Sp
200
120
160
200
Sd
Lezione
()
3
7 / 21
Analisi univariata: boxplot
> par(mfrow=c(1,2))
> boxplot(Sp,main="Sp")
> boxplot(Sd,main="Sd")
160
170
180
190
200
210
Sp
130
140
150
160
170
180
190
200
Sd
G. Menardi
150
Lezione
()
3
8 / 21
Analisi univariata: boxplot
par(mfrow=c(1,1))
boxplot(Sp,Sd,names=c("Sp","Sd"),col="lightblue")
160
180
200
Sp
Sd
G. Menardi
140
Lezione
()
3
9 / 21
Scomposizione della varianza: varianza totale
> tutti<-c(Sp,Sd)
> tutti
[1] 210 169 187 160 167 176 185 206 173 146 174 201 198
[14] 148 154 201 165 166 157 147 145 168 180 147 136 151
[27] 168 179 129 131
> n<-length(tutti)
> var.tot<-var(tutti)*(n-1)/n
> var.tot
[1] 473.7156
G. Menardi
Lezione
()
3
10 / 21
Scomposizione della varianza: medie condizionate
> med.tot<-mean(tutti)
> med.tot
[1] 167.4667
> med.cond<-c(mean(Sp),mean(Sd))
> med.cond
[1] 176.9333 158.0000
oppure
> med.cond<-colMeans(psisto)
> med.cond
Sp
Sd
176.9333 158.0000
G. Menardi
Lezione
()
3
11 / 21
Scomposizione della varianza: varianza B e W
> n1<-length(Sp)
> n2<-length(Sd)
> var.b<-((med.cond[1]-med.tot)^2*n1+
+ (med.cond[2]-med.tot)^2*n2)/n
> var.b
[1] 89.61778
> var.cond<-c(var(Sp)*(n1-1)/n1,var(Sd)*(n2-1)/n1)
> var.cond
[1] 394.7289 373.4667
> var.w<-(var.cond[1]*n1+var.cond[2]*n2)/n
> var.w
[1] 384.0978
G. Menardi
Lezione
()
3
12 / 21
Scomposizione della varianza: indice η 2 di Pearson
> var.tot
[1] 473.7156
> var.b+var.w
[1] 473.7156
> eta2<-var.b/var.tot
> eta2
[1] 0.1891806
G. Menardi
Lezione
()
3
13 / 21
Esercizio 1
Ripetere l’esercizio con i dati relativi alla pressione diastolica presenti nel file
pdiasto.dat.
G. Menardi
Lezione
()
3
14 / 21
Esercizio 2
A partire dai dati contenuti nel file neonati
1
Costruire la tabella delle frequenze marginali e congiunte della variabile peso
e della variabile sesso (sugg. la variabile peso è una variabile continua e
assume, quindi, molte modalità nel collettivo considerato. Valutare
l’eventualità di suddividerla opportunamente in classi prima di rispondere a
questa domanda. A tal proposito, si guardi la funzione cut).
2
Calcolare la tabella delle frequenze della variabile peso condizionatamente alla
variabile sesso. Si può ipotizzare una dipendenza del peso dal sesso del
neonato?
3
Calcolare un indice per valutare se il peso dipende in media dal sesso (usare
in questo caso i dati originali, non suddivisi in classi).
G. Menardi
Lezione
()
3
15 / 21
Esercizio 3 -
Tratto dalla prova scritta del 12/01/09
In quattro città diverse è stato rilevato il prezzo di uno stesso prodotto. Per ogni
città si sono fatte 8 rilevazioni:
7
8
9
10
11
12
13
Tc
1
2
3
4
G. Menardi
A
0
2
2
2
2
0
0
8
B
0
0
1
3
3
1
0
8
C
0
0
0
2
3
2
1
8
D
1
2
3
2
0
0
0
8
Tr
1
4
6
9
8
3
1
32
Costruire il file ”prezzicitta.txt” e importarlo.
Confrontare utilizzando uno strumento grafico le diverse distribuzioni relative
alla variabile prezzi e commentare.
Stabilire se esiste indipendenza in media dei prezzi rispetto alle città
verificare che la varianza totale è pari alla somma tra la varianza between e la
varianza within.
Lezione
()
3
16 / 21
Esercizio 3 - Soluzione
Costruiamo il file e salviamolo nella working directory
Importiamo il file
> tab<-read.table("prezzicitta.txt")
> tab
A B C D Tr
7 0 0 0 1 1
8 2 0 0 2 4
9 2 1 0 3 6
10 2 3 2 2 9
11 2 3 3 0 8
12 0 1 2 0 3
13 0 0 1 0 1
Tc 8 8 8 8 32
G. Menardi
Lezione
()
3
17 / 21
Esercizio 3 - Soluzione
Costruiamo a partire dalla tabella delle frequenze la matrice delle osservazioni
>
>
>
>
>
+
+
+
+
>
>
>
>
>
G. Menardi
tab.cong<-tab[-nrow(tab),-ncol(tab)]
prezzi<-numeric(0)
citta<-numeric(0)
for(i in 1:nrow(tab.cong))
for(j in 1:ncol(tab.cong)){
prezzi<-c(prezzi,rep(rownames(tab.cong)[i],tab.cong[i,j]))
citta<-c(citta,rep(colnames(tab.cong)[j],tab.cong[i,j]))
}
prezzi<-as.numeric(prezzi)
citta<-as.factor(citta)
tab.estesa<-data.frame(prezzi=prezzi,citta=citta)
tab.estesa
prezzi citta
1
7
D
2
8
A
3
8
A
4
8
D
5
8
D
...
Lezione
()
3
18 / 21
Confronto tra distribuzioni condizionate
7
8
9
10
11
12
13
> table(prezzi[citta=="A"])/sum(table(prezzi[citta=="A"]))
8
9
10
11
0.25 0.25 0.25 0.25
> table(prezzi[citta=="B"])/sum(table(prezzi[citta=="B"]))
9
10
11
12
0.125 0.375 0.375 0.125
> table(prezzi[citta=="C"])/sum(table(prezzi[citta=="C"]))
10
11
12
13
0.250 0.375 0.250 0.125
> table(prezzi[citta=="D"])/sum(table(prezzi[citta=="D"]))
7
8
9
10
0.125 0.250 0.375 0.250
> boxplot(split(prezzi,citta))
A
G. Menardi
B
Lezione
()
3
C
D
19 / 21
Scomposizione della varianza: indice η 2 di Pearson
> n<-length(prezzi)
> med<-mean(prezzi)
> 32
> 10
> var.tot<-sum((prezzi-med)^2)/n
> var.tot
[1] 1.875
> med.cond<-tapply(prezzi,citta,mean)
> med.cond
A
B
C
D
9.50 10.50 11.25 8.75
#oppure
> med.cond<-c(sum(prezzi[citta=="A"])/length(prezzi[citta=="A"]),
+ sum(prezzi[citta=="B"])/length(prezzi[citta=="B"]),
+ sum(prezzi[citta=="C"])/length(prezzi[citta=="C"]),
+ sum(prezzi[citta=="D"])/length(prezzi[citta=="D"]))
>
>
A
8
ni<-tapply(prezzi,citta,length)
ni
B C D
8 8 8
G. Menardi
Lezione
()
3
20 / 21
Scomposizione della varianza: indice η 2 di Pearson
> var.b<-sum((med.cond-med)^2*ni)
> var.b
[1] 29
> var.b<-sum((med.cond-med)^2*ni)/n
> var.b
[1] 0.90625
> eta2<-var.b/var.tot
> eta2
[1] 0.4833333
> var.gruppi<-tapply(prezzi,citta,var)*(ni-1)/ni
> var.gruppi
A
B
C
D
1.2500 0.7500 0.9375 0.9375
>
> var.w<-sum(var.gruppi*ni)/n
> var.w
[1] 0.96875
> var.tot==var.b+var.w
[1] TRUE
G. Menardi
Lezione
()
3
21 / 21