SlideShare a Scribd company logo
1 of 14
Statistica descrittiva
Esercitazione in R
Chi sopravvisse al naufragio del Titanic?
Il 14 aprile 1912, alle 23:40, il transatlantico Titanic, in viaggio da
Southampton a New York, colpì un iceberg
e iniziò a imbarcare acqua. Alle 2:20 del mattino affondò: dei
2228 passeggeri e membri dell'equipaggio a bordo, solo 705
sopravvissero. I dati sui passeggeri del Titanic sono disponibili
all’indirizzo www.encyclopedia-titanica.org.
Per 1309 passeggeri, è stato riportato il dato sulla sopravvivenza
o meno al naufragio, insieme alle informazioni su
età, sesso, classe di biglietto, e il numero di familiari che
accompagnavano ogni passeggero.
Elenco delle variabili
pclass (1= prima classe; 2= seconda classe; 3= terza classe)
survived (0=morto; 1=sopravvissuto)
name
sex (maschi; femmine)
age (in anni)
sibsp ( numero di fratelli/coniugi a bordo)
parch (numero di genitori e figli a bordo)
ticket ( numero del biglietto)
fare (Tariffa del biglietto, in sterline inglesi)
cabin
embarked (C=Cherbourg; Q=Queenstown;S=Southampton)
boat
body (Body Identification Number)
home.dest (Home/Destination)
Importare il file in R
Copia il file titanic.txt sulla cartella di lavoro in cui la console di R
lavora. Come si fa a verificare il percorso esatto a cui punta la
directory di lavoro?
Carica quindi il file nella workspace e assegnagli nome “dati”. La
prima riga del file contiene le etichette delle variabili.
E se invece avessi voluto scrivere su un file (es. “titanic.bis.txt”)
l’oggetto “dati” appena creato nel workspace?
getwd()
dati=read.table("titanic.txt",header=TRUE)
write.table(dati,"titanic.bis.txt")
Check dati
Come puoi procedere per avere alcune informazioni sui dati (es.
dimensione e struttura dei dati)?
Cosa succede se applichi il comando summary all’età, alla classe
e al sesso?
dim(dati) # restituisce il numero di righe e di colonne
is.data.frame(dati) # restituisce vero se dati è un data.frame
class(dati) # indica il tipo di oggetto
dati[1:10,] # visualizza le informazioni sulle prime 10 persone
summary(dati$age) ## calcola alcune statistiche descrittive
summary(dati$pclass)
summary(dati$sex)
Definire le variabili qualitative
Non ha senso calcolare la media e le altre statistiche per la classe
di viaggio! Si può fare solamente un semplice conteggio del
numero dei casi: come potresti riconvertire la variabile pclass per
far si che R la riconosca come variabile qualitativa?
Che comando puoi utilizzare per controllare come sono state
importate le classi di ciascuna colonna del dataset?
dati$pclass=as.factor(dati$pclass)
str(dati) #elenca il nome e il tipo di colonne
Ricodifica variabili
Procediamo ad una opportuna sistemazione dei dati in modo
che:
pclass deve essere un fattore;
name deve essere un carattere;
ticket deve essere un carattere;
cabin deve essere un carattere;
body deve essere un carattere;
home deve essere un carattere;
dati$pclass=as.factor(dati$pclass)
dati$name=as.character(dati$name)
dati$ticket=as.character(dati$ticket)
dati$cabin=as.character(dati$cabin)
dati$body=as.character(dati$body)
dati$home=as.character(dati$home)
Statistiche descrittive
Il comando summary può essere ora applicato a tutto il dataset.
Da un punto di vista grafico, il commando plot funziona anche
per fattori: prova ad utilizzarlo per la variabile pclass.
Prova adesso a calcolare l’età media con il comando mean()
Perché la funzione non restituisce la media?
summary(dati)
plot(dati$pclass)
mean(dati$age)
Ci sono 263 valori mancanti codificati in R con NA
Analisi variabili quantitative
In caso di valori mancanti occorre aggiungere al comando un
argomento opzionale. Quale?
E se volessi avere anche un’idea grafica della distribuzione
dell’età?
Calcola ora alcune statistiche di base sulla variabile età (varianza,
scarto quadratico medio, min, max, mediana)
mean(dati$age,na.rm=TRUE)
hist(dati$age)
var(dati$age,na.rm=TRUE) # restituisce la varianza
sd(dati$age,na.rm=TRUE) # restituisce scarto quadratico medio
min(dati$age,na.rm=TRUE) # restituisce il minimo
max(dati$age,na.rm=TRUE) # restituisce il massimo
median(dati$age,na.rm=TRUE)# restituisce la mediana
Boxplot per gruppi
E se volessi calcolare la media dell’età separatamente per classe?
Visualizza ora tutte le statistiche di riepilogo per l’età
separatamente per classe.
Crea inoltre il boxplot per l’età suddivisa per classe.
by(dati$age,dati$pclass,mean,na.rm=TRUE)
by(dati$age,dati$pclass,summary)
plot(dati$age~dati$pclass) # boxplot
Aggregare le modalità di una variabile (1/2)
Considera ora le variabili sibsp e parch. Cosa noti? Sarebbe
sensato pensare di raggruppare alcuni valori in un’unica classe di
valori?
Crea 2 nuovi variabili (sibsp2 e parch2) che contengano le classi:
1,2,3, e “più di 3”. Come saranno queste nuove variabili? Va
ancora bene considerare queste variabili quantitative? Come
potresti ricodificarle?
sibsp2=dati$sibsp
parch2=dati$parch
sibsp2[dati$sibsp>3]=4
parch2[dati$parch>3]=4
dati$sibsp2=as.factor(sibsp2)
dati$parch2=as.factor(parch2)
Aggregare le modalità di una variabile (1/2)
Crea adesso una nuova variabile qualitativa (age2) per l’età
suddivisa nelle classi: [0-21), [21-28), [28-39), [39,80].
age2=dati$age
age2[dati$age<21]=1
age2[dati$age>=21 & dati$age < 28]=2
age2[dati$age>=28 & dati$age < 39]=3
age2[dati$age>=39]=4
dati$age2=as.factor(age2)
Ragguppare i dati
Quale è stata la proporzione di sopravvissuti per intervallo di età,
classe e sesso?
Che test statistico puoi utilizzare per capire se la probabilità di
sopravvivenza è influenzata da ciascuna delle seguenti
caratteristiche: classe, età, sesso?
by(dati$survived,dati$age2,mean)
by(dati$survived,dati$pclass,mean)
by(dati$survived,dati$sex,mean)
Il test del Chi quadrato, che verifica l’ipotesi nulla che i due
caratteri via via considerati siano fra loro indipendenti.
Test chi quadrato
Calcola quindi il test del Chi quadrato per le 3 variabili.
Cosa emerge dai risultati?
chisq.test(table(dati$survived,dati$pclass))
chisq.test(with(dati, table(survived,pclass))) # come il precedente
chisq.test(with(dati, table(survived,age2)))
chisq.test(with(dati, table(survived,sex)))
I risultati mettono in luce che il sesso e la classe hanno avuto una
influenza significativa sulla probabilità di sopravvivenza.

More Related Content

What's hot

Stack data structure
Stack data structureStack data structure
Stack data structure
Tech_MX
 

What's hot (20)

Stack data structure
Stack data structureStack data structure
Stack data structure
 
pandas - Python Data Analysis
pandas - Python Data Analysispandas - Python Data Analysis
pandas - Python Data Analysis
 
dplyr Package in R
dplyr Package in Rdplyr Package in R
dplyr Package in R
 
Data Structure and Algorithms.pptx
Data Structure and Algorithms.pptxData Structure and Algorithms.pptx
Data Structure and Algorithms.pptx
 
Application of Stack - Yadraj Meena
Application of Stack - Yadraj MeenaApplication of Stack - Yadraj Meena
Application of Stack - Yadraj Meena
 
SPL 10 | One Dimensional Array in C
SPL 10 | One Dimensional Array in CSPL 10 | One Dimensional Array in C
SPL 10 | One Dimensional Array in C
 
Python list
Python listPython list
Python list
 
Data Structures - Lecture 7 [Linked List]
Data Structures - Lecture 7 [Linked List]Data Structures - Lecture 7 [Linked List]
Data Structures - Lecture 7 [Linked List]
 
Python tuples and Dictionary
Python   tuples and DictionaryPython   tuples and Dictionary
Python tuples and Dictionary
 
Linked list
Linked listLinked list
Linked list
 
Data visualization using R
Data visualization using RData visualization using R
Data visualization using R
 
Linklist
LinklistLinklist
Linklist
 
Data Structures- Part5 recursion
Data Structures- Part5 recursionData Structures- Part5 recursion
Data Structures- Part5 recursion
 
Quick Sort , Merge Sort , Heap Sort
Quick Sort , Merge Sort ,  Heap SortQuick Sort , Merge Sort ,  Heap Sort
Quick Sort , Merge Sort , Heap Sort
 
Alter table command
Alter table commandAlter table command
Alter table command
 
String in python use of split method
String in python use of split methodString in python use of split method
String in python use of split method
 
Tuples in Python
Tuples in PythonTuples in Python
Tuples in Python
 
Data visualization in Python
Data visualization in PythonData visualization in Python
Data visualization in Python
 
Pointers in c
Pointers in cPointers in c
Pointers in c
 
Insertion Sort Algorithm
Insertion Sort AlgorithmInsertion Sort Algorithm
Insertion Sort Algorithm
 

Statistica esplorativa - Esercitazione in R

  • 2. Chi sopravvisse al naufragio del Titanic? Il 14 aprile 1912, alle 23:40, il transatlantico Titanic, in viaggio da Southampton a New York, colpì un iceberg e iniziò a imbarcare acqua. Alle 2:20 del mattino affondò: dei 2228 passeggeri e membri dell'equipaggio a bordo, solo 705 sopravvissero. I dati sui passeggeri del Titanic sono disponibili all’indirizzo www.encyclopedia-titanica.org. Per 1309 passeggeri, è stato riportato il dato sulla sopravvivenza o meno al naufragio, insieme alle informazioni su età, sesso, classe di biglietto, e il numero di familiari che accompagnavano ogni passeggero.
  • 3. Elenco delle variabili pclass (1= prima classe; 2= seconda classe; 3= terza classe) survived (0=morto; 1=sopravvissuto) name sex (maschi; femmine) age (in anni) sibsp ( numero di fratelli/coniugi a bordo) parch (numero di genitori e figli a bordo) ticket ( numero del biglietto) fare (Tariffa del biglietto, in sterline inglesi) cabin embarked (C=Cherbourg; Q=Queenstown;S=Southampton) boat body (Body Identification Number) home.dest (Home/Destination)
  • 4. Importare il file in R Copia il file titanic.txt sulla cartella di lavoro in cui la console di R lavora. Come si fa a verificare il percorso esatto a cui punta la directory di lavoro? Carica quindi il file nella workspace e assegnagli nome “dati”. La prima riga del file contiene le etichette delle variabili. E se invece avessi voluto scrivere su un file (es. “titanic.bis.txt”) l’oggetto “dati” appena creato nel workspace? getwd() dati=read.table("titanic.txt",header=TRUE) write.table(dati,"titanic.bis.txt")
  • 5. Check dati Come puoi procedere per avere alcune informazioni sui dati (es. dimensione e struttura dei dati)? Cosa succede se applichi il comando summary all’età, alla classe e al sesso? dim(dati) # restituisce il numero di righe e di colonne is.data.frame(dati) # restituisce vero se dati è un data.frame class(dati) # indica il tipo di oggetto dati[1:10,] # visualizza le informazioni sulle prime 10 persone summary(dati$age) ## calcola alcune statistiche descrittive summary(dati$pclass) summary(dati$sex)
  • 6. Definire le variabili qualitative Non ha senso calcolare la media e le altre statistiche per la classe di viaggio! Si può fare solamente un semplice conteggio del numero dei casi: come potresti riconvertire la variabile pclass per far si che R la riconosca come variabile qualitativa? Che comando puoi utilizzare per controllare come sono state importate le classi di ciascuna colonna del dataset? dati$pclass=as.factor(dati$pclass) str(dati) #elenca il nome e il tipo di colonne
  • 7. Ricodifica variabili Procediamo ad una opportuna sistemazione dei dati in modo che: pclass deve essere un fattore; name deve essere un carattere; ticket deve essere un carattere; cabin deve essere un carattere; body deve essere un carattere; home deve essere un carattere; dati$pclass=as.factor(dati$pclass) dati$name=as.character(dati$name) dati$ticket=as.character(dati$ticket) dati$cabin=as.character(dati$cabin) dati$body=as.character(dati$body) dati$home=as.character(dati$home)
  • 8. Statistiche descrittive Il comando summary può essere ora applicato a tutto il dataset. Da un punto di vista grafico, il commando plot funziona anche per fattori: prova ad utilizzarlo per la variabile pclass. Prova adesso a calcolare l’età media con il comando mean() Perché la funzione non restituisce la media? summary(dati) plot(dati$pclass) mean(dati$age) Ci sono 263 valori mancanti codificati in R con NA
  • 9. Analisi variabili quantitative In caso di valori mancanti occorre aggiungere al comando un argomento opzionale. Quale? E se volessi avere anche un’idea grafica della distribuzione dell’età? Calcola ora alcune statistiche di base sulla variabile età (varianza, scarto quadratico medio, min, max, mediana) mean(dati$age,na.rm=TRUE) hist(dati$age) var(dati$age,na.rm=TRUE) # restituisce la varianza sd(dati$age,na.rm=TRUE) # restituisce scarto quadratico medio min(dati$age,na.rm=TRUE) # restituisce il minimo max(dati$age,na.rm=TRUE) # restituisce il massimo median(dati$age,na.rm=TRUE)# restituisce la mediana
  • 10. Boxplot per gruppi E se volessi calcolare la media dell’età separatamente per classe? Visualizza ora tutte le statistiche di riepilogo per l’età separatamente per classe. Crea inoltre il boxplot per l’età suddivisa per classe. by(dati$age,dati$pclass,mean,na.rm=TRUE) by(dati$age,dati$pclass,summary) plot(dati$age~dati$pclass) # boxplot
  • 11. Aggregare le modalità di una variabile (1/2) Considera ora le variabili sibsp e parch. Cosa noti? Sarebbe sensato pensare di raggruppare alcuni valori in un’unica classe di valori? Crea 2 nuovi variabili (sibsp2 e parch2) che contengano le classi: 1,2,3, e “più di 3”. Come saranno queste nuove variabili? Va ancora bene considerare queste variabili quantitative? Come potresti ricodificarle? sibsp2=dati$sibsp parch2=dati$parch sibsp2[dati$sibsp>3]=4 parch2[dati$parch>3]=4 dati$sibsp2=as.factor(sibsp2) dati$parch2=as.factor(parch2)
  • 12. Aggregare le modalità di una variabile (1/2) Crea adesso una nuova variabile qualitativa (age2) per l’età suddivisa nelle classi: [0-21), [21-28), [28-39), [39,80]. age2=dati$age age2[dati$age<21]=1 age2[dati$age>=21 & dati$age < 28]=2 age2[dati$age>=28 & dati$age < 39]=3 age2[dati$age>=39]=4 dati$age2=as.factor(age2)
  • 13. Ragguppare i dati Quale è stata la proporzione di sopravvissuti per intervallo di età, classe e sesso? Che test statistico puoi utilizzare per capire se la probabilità di sopravvivenza è influenzata da ciascuna delle seguenti caratteristiche: classe, età, sesso? by(dati$survived,dati$age2,mean) by(dati$survived,dati$pclass,mean) by(dati$survived,dati$sex,mean) Il test del Chi quadrato, che verifica l’ipotesi nulla che i due caratteri via via considerati siano fra loro indipendenti.
  • 14. Test chi quadrato Calcola quindi il test del Chi quadrato per le 3 variabili. Cosa emerge dai risultati? chisq.test(table(dati$survived,dati$pclass)) chisq.test(with(dati, table(survived,pclass))) # come il precedente chisq.test(with(dati, table(survived,age2))) chisq.test(with(dati, table(survived,sex))) I risultati mettono in luce che il sesso e la classe hanno avuto una influenza significativa sulla probabilità di sopravvivenza.