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