INTRODUZIONE A
1
Cos’è R
R può essere definito come un sistema per l’analisi statistica.
È contemporaneamente un linguaggio ed un software.
Lo stesso R Development Core Team[1], parlando di R,
preferisce definirlo come “un ambiente integrato e coerente”,
piuttosto che come la somma di un insieme di strumenti poco
flessibili, oppure come un semplice software o package al
pari di prodotti simili, stando implicitamente a significare la
presenza di un maggior "valore aggiunto" nel "prodotto" R.
1 Cfr. la pagina web del sito The R Project for Statistical Computing, "What is R?" all'indirizzo: http://www.rproject. org/about.html [consultata in
data 07/10/2008]
Caratteristiche principali di R
a) semplicità nella gestione dei dati;
b) disponibilità di un gruppo di strumenti per calcoli su vettori,
matrici ed altre operazioni complesse;
c) accesso ad un vasto insieme di strumenti integrati per
l'analisi statistica;
d) produzione di numerose potenzialità grafiche
particolarmente flessibili;
e) possibilità di adoperare un linguaggio di programmazione
orientato ad oggetti che consente l'uso di strutture
condizionali (es. if) e cicliche (es. for), nonché di funzioni
create dall'utente.
Altro…su R
E' distribuito gratuitamente
Disponibile per diverse architetture hardware e sistemi
operativi: Unix, Linux, Windows, MacOS.
Sul sito http://www.r-project.org è possibile scaricare, oltre
che il programma base, anche una serie di moduli aggiuntivi
e un'ampia manualistica (in lingua inglese) sull'ambiente che
va dall'installazione del software al suo utilizzo nell'analisi dei
dati.
Riflessioni su R
ha un costo zero per l'utente finale e presenta una facilità
nell'accesso a particolari categorie di utenti che non possono
permettersi costosi software per analisi statistiche come gli
studenti oppure gli utilizzatori e i ricercatori dei Paesi in via di
sviluppo
dispone di una vasta manualistica (non solo in lingua
inglese) consultabile e scaricabile da Internet
È possibile accedere tramite Internet ad una vasta gamma
di librerie per analisi statistiche molte dettagliate
È possibile contare sul supporto e sull'assistenza dell'R
Development Core Team e di tutti gli utenti di R (una vera
community a livello mondiale)
Sempre su R
Disponibilità di strumenti di analisi statistica dai più elementari ai più sofisticati
Notevoli possibilità grafiche rispetto ad altri software statistici
Possibilità di programmare R creando funzioni e programmi definiti dall'utente[2]
Dotato di funzione di help in linea per ciascun comando facilmente richiamabile
È un software in rapidissimo sviluppo
Possiede tutti i vantaggi dei software multipiattaforma
Può essere integrato facilmente con alcuni dei più diffusi prodotti di office
automation come ad esempio Microsoft Excel in ambiente Windows
Può essere interfacciato, con i principali programmi di gestione di database
come MySql, Microsoft Access, Oracle, PostgreSQL per l'importazione ed
esportazione di dati[3]
Consente di importare i file dei dati da software statistici quali: Minitab, S, SAS,
SPSS, Stata
È semplice nell'impiego a livello didattico nell'insegnamento della statistica
2 Si veda: R Development Core Team, Writing R Extentions, versione 2.7.2 del 07/10/2008 all'indirizzo Internet: http://cran.r-project.org/doc/manuals/Rexts.pdf
3 Si veda: R Development Core Team, R Data Import/Export, versione 2.7.2 del 07/10/2008 all'indirizzo Internet: http://cran.r-project.org/doc/manuals/Rdata.pdf
PRIMI PASSI… TORTE E GELATI
Carichiamo i dati dei gusti dei gelati scelti da un gruppo di bambini :
gelati<gelati<-read.table(
read.table(file.choose())
file.choose()) #carica i dati
gelati
#contenuto del dataset
str(gelati)
#informazioni sul dataset
names(table(gelati))=gusti
#carica in gusti dei gelati
gusti
#visualizza il contenuto del vettore gusti
table(gelati)
#tabella delle freq.assolute
pie(table(gelati),gusti, col=c("brown","pink","yellow","white","green"))
pie(table(gelati),tipo,
col=c("brown","pink","yellow","white","green"),main="Distribuzione dei gusti del
gelato")
7
PRIMISSIME ANALISI IN R
Consideriamo i dati relativi delle nostre altezze:
altezze=scan
altezze=scan()
scan() #per terminare l’inserimento cliccare invio senza dati
Proviamo a costruire una tabella di frequenza
table(altezze)
table(altezze)
table(cut(altezze,breaks=5))
table(cut(altezze,breaks=5))
classi <<-150+10*(0:5)
In questo caso abbiamo semplicemente una suddivisione in intervalli di uguale
ampiezza del campo di variazione dei nostri dati. Dalla tabella delle frequenze si può
ricavare quella delle frequenze cumulate tramite la funzione cumsum.
cumsum Tale funzione
calcola una somma cumulata degli elementi di un vettore creando un vettore di
dimensione uguale al vettore cui viene applicata e i cui elementi contengono le somme
cumulate parziali. Se vogliamo quindi ottenere le frequenze cumulate relative
freqcum <- cumsum(
cumsum(table(cut(altezze,breaks=5))/
table(cut(altezze,breaks=5))/length
(cut(altezze,breaks=5))/length(altezze))
length(altezze))
8
PRIMISSIME ANALISI IN R
Costruiamo dapprima un istogramma di frequenza:
hist(altezze)
hist(altezze)
Come per table anche hist anche permette di stabilire il numero di classi in cui
vogliamo rappresentare i nostri dati ad esempio
hist(altezze,breaks=5)
hist(altezze,breaks=5)
Se all’interno del comando hist aggiungiamo l’opzione freq=F che vuol dire di non usare
le frequenze assolute otteniamo un grafico analogo ma con l’asse delle ordinate
rappresentato dalle frequenze relative.
hist(altezze,
hist(altezze,freq=FALSE
(altezze,freq=FALSE)
freq=FALSE)
Grafico della funzione di ripartizione, aggiungiamo un limite inferiore alle classi
freqcum <- c(0,freqcum
c(0,freqcum)
freqcum)
Quindi con il comando plot rappresentiamo la funzione di ripartizione empirica
plot(classi,freqcum
plot(classi,freqcum,type
freqcum,type=’s
,type=’s’)
=’s’)
9
INDICI DI POSIZIONE E VARIABILITÀ
R dispone di un ampio insieme di funzioni che permettono di calcolare
gli indici statistici comunemente usati.
Vediamo brevemente quali sono:
• min fornisce il valore della più piccola osservazione campionaria;
• max fornisce il valore della più grande osservazione campionaria;
• range fornisce i valori del minimo e del massimo dei dati campionari, ciò e gli
estremi del campo di variazione;
• mean calcola la media;
• median calcola la mediana;
• var calcola la varianza campionaria (fate molta attenzione a questo);
• quantile calcola i quantili, di qualsiasi ordine, di una distribuzione di dati;
• summary fornisce una tabella che riassume la maggior parte dei valori sopra
esposti.
QUALCHE COMANDO PER I GRAFICI
Vogliamo indagare la relazione tra due variabili quantitative (ad es. durata della
degenza ed età dei pazienti), possiamo disegnare il diagramma di
dispersione con il comando:
plot(var1,var2)
Con la funzione points possiamo anche evidenziare, magari con un colore a
piacimento, alcuni punti ad esempio, le unità che presentano durata di
degenza >15 giorni
points(var1[var1 > 15],var2[var1> 15], col=’blue’,pch=20)
Con il comando
identify(diametro,volume)
possiamo identificare a quale/i unità statistiche appartengono i punti
evidenziati.
boxplot(var1~var2)
#crea un diagramma a scatole e baffi
11
CARICARE I DATI
dati = scan()
#usa la console per caricare i dati
scan()
Se i dati sono su un file con estensione dat o txt
dati = read.table(file,
read.table(file, header = FALSE, sep = "", dec = ".",
row.names,
row.names, col.names,…)
col.names,…)
Se importiamo i dati da un file csv creato con excel,
allora:
dati = read.csv2(file, header = TRUE, sep = ";",
quote="\
quote="\"", dec=",“,…)
dec=",“,…)
12
PROVIAMO…
Nella cartella dati della mia penna vi è un file .csv con dati
relativi ad un campione di 1079 pazienti ricoverati in UCIC
dal 2006 al 2008.
Si richiede un’analisi descrittiva dei dati
Indicare con dei grafici la relazione tra durata della degenza
e le seguenti variabili: età, sesso, decesso, TnI > 20,
diagnosi d’ingresso.
Cosa possiamo affermare?
13