Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Riccardo Massari
riccardo.massari@uniroma1.it
Corso di STATISTICA
Facolt`a di Ingegneria
Sapienza Universit`a di Roma
(Corso di statistica)
1 / 96
INTRODUZIONE
Generalit`a
Nozioni preliminari di R
GLI OGGETTI IN R
Funzioni e pacchetti
Inserimento dei dati in R
LAVORARE CON R
Importare ed esportare dati con R
Analisi dei dati
Creare grafici con R
Creare le proprie funzioni
(Corso di statistica)
2 / 96
INTRODUZIONE
Generalit`
a
Introduzione a R
(Corso di statistica)
3 / 96
INTRODUZIONE
Generalit`
a
La versione pi`
u recente di R pu`
o essere scaricata dalla pagina
http://cran.r-project.org/bin/windows/base/
Una volta scaricato il file .exe sul proprio computer `e sufficiente lanciare il
programma di installazione.
(Corso di statistica)
4 / 96
INTRODUZIONE
Generalit`
a
Avvertenze
R `e case sensitive.
E un ambiente interattivo, ossia i comandi producono una risposta
immediata.
In R unanalisi `e fatta attraverso una serie di passi, con risultati intermedi che
sono immagazzinati in oggetti.
1
2
(Corso di statistica)
5 / 96
INTRODUZIONE
Generalit`
a
Bibliografia
(Corso di statistica)
6 / 96
INTRODUZIONE
Nozioni preliminari di R
Accedere ad R
Avviato il programma R, apparir`a una finestra (consolle) con il simbolo di
prompt
>
che indica che lambiente `e pronto per ricevere delle istruzioni.
(Corso di statistica)
7 / 96
INTRODUZIONE
Nozioni preliminari di R
Primi passi
Per richiamare i comandi gi`a inseriti, basta usare i tasti e per scorrere in
avanti e indietro.
(Corso di statistica)
8 / 96
INTRODUZIONE
Nozioni preliminari di R
Operare con R
La console di R pu`
o essere utilizzata come semplice calcolatrice.
Alcuni esempi:
2 + 2
[1] 4
2 * 2
[1] 4
(2 - 3)/6
[1] -0.1666667
2^2
[1] 4
sqrt(9)
[1] 3
sin(pi/2)
[1] 1
log(1)
[1] 0
(Corso di statistica)
9 / 96
INTRODUZIONE
Nozioni preliminari di R
Operatori aritmetici
(Corso di statistica)
10 / 96
INTRODUZIONE
Nozioni preliminari di R
Salvare oggetti in R
I risultati dei calcoli fatti con R possono essere salvati con un nome scelto
dallutilizzatore, per essere richiamati in qualsiasi momento durante la
sessione di lavoro.
Per assegnare un nome al risultato delloperazione si impiega il comando <esempio <- 2 + 2
esempio
[1] 4
I nomi possono contenere un qualunque carattere alfa-numerico.
Non devono mai iniziare con un numero, ne contenere spazi vuoti.
E bene non dare ad una variabile il nome di una funzione o di un operatore
(ad esempio, c o sum, etc).
(Corso di statistica)
11 / 96
INTRODUZIONE
Nozioni preliminari di R
Lo spazio di lavoro
(Corso di statistica)
12 / 96
INTRODUZIONE
Nozioni preliminari di R
E bene salvare spazi di lavoro relativi a lavori diversi in cartelle diverse, per
non generare confusione.
(Corso di statistica)
13 / 96
INTRODUZIONE
Nozioni preliminari di R
Cartella di lavoro
Per cambiare cartella di lavoro, dal men`
u di R, cliccare su Cambia
directory, nel men`
u File:
(Corso di statistica)
14 / 96
INTRODUZIONE
Nozioni preliminari di R
Cartella di lavoro/2
Successivamente si sceglie la cartella su cui salvare lo spazio di lavoro:
(Corso di statistica)
15 / 96
INTRODUZIONE
Nozioni preliminari di R
Cartella di lavoro/3
(Corso di statistica)
16 / 96
GLI OGGETTI IN R
Funzioni e pacchetti
Funzioni
(Corso di statistica)
17 / 96
GLI OGGETTI IN R
Funzioni e pacchetti
Funzioni/2
(Corso di statistica)
18 / 96
GLI OGGETTI IN R
Funzioni e pacchetti
Pacchetti
(Corso di statistica)
19 / 96
GLI OGGETTI IN R
Funzioni e pacchetti
Pacchetti/2
In alternativa, dal men`
u Pacchetti si sceglie lopzione Carica pacchetto:
(Corso di statistica)
20 / 96
GLI OGGETTI IN R
Funzioni e pacchetti
Pacchetti/3
In tal caso apparir`a una finestra con la lista dei pacchetti gi`a installati.
(Corso di statistica)
21 / 96
GLI OGGETTI IN R
Funzioni e pacchetti
Installare pacchetti
Per installare un pacchetto non presente nella versione di R, dal men`
u
Pacchetti si seleziona Installa pacchetti.
(Corso di statistica)
22 / 96
GLI OGGETTI IN R
Funzioni e pacchetti
Installare pacchetti/2
Successivamente, si dovr`a selezionare il mirror da cui scaricare il pacchetto.
(Corso di statistica)
23 / 96
GLI OGGETTI IN R
Funzioni e pacchetti
Installare pacchetti/3
Infine si seleziona il pacchetto dalla lista.
(Corso di statistica)
24 / 96
GLI OGGETTI IN R
Funzioni e pacchetti
Installare pacchetti/4
In alternativa, si pu`
o scaricare il file compresso del pacchetto dal seguente
sito:
http://cran.r-project.org/web/packages/
una volta che il file `e stato scaricato sul proprio computer, dal men`
u
Pacchetti si seleziona Installa pacchetti da file zip locali
(Corso di statistica)
25 / 96
GLI OGGETTI IN R
Vettori
(Corso di statistica)
26 / 96
GLI OGGETTI IN R
Gli operatori aritmetici base possono essere utilizzati per compiere operazioni
tra vettori. Esempio:
y <- c(2, 3, 4, 5)
x + y
[1] 3 5 7 9
x * y
[1] 2 6 12 20
Per il prodotto scalare tra due vettori, si impiega loperatore %*%. Esempio:
t(x) %*% y
[,1]
[1,]
40
dove la funzione t() opera la trasposizione del vettore.
(Corso di statistica)
27 / 96
GLI OGGETTI IN R
(Corso di statistica)
28 / 96
GLI OGGETTI IN R
Loperatore seq
(Corso di statistica)
29 / 96
GLI OGGETTI IN R
Loperatore rep
(Corso di statistica)
30 / 96
GLI OGGETTI IN R
Matrici
(Corso di statistica)
31 / 96
GLI OGGETTI IN R
Esempi di matrici
A <- matrix(1:8, nrow = 2)
A
[,1] [,2] [,3] [,4]
[1,]
1
3
5
7
[2,]
2
4
6
8
B <- matrix(1:8, nrow = 2, byrow = TRUE)
B
[,1] [,2] [,3] [,4]
[1,]
1
2
3
4
[2,]
5
6
7
8
B <- matrix(1:8, ncol = 4, byrow = T)
B
[,1] [,2] [,3] [,4]
[1,]
1
2
3
4
[2,]
5
6
7
8
(Corso di statistica)
32 / 96
GLI OGGETTI IN R
Matrici/2
Una matrice pu`
o anche essere generata unendo pi`
u vettori o matrici.
I comandi cbind e rbind, rispettivamente, generano una matrice unendo i
vettori (le matrici) per colonna e per riga. Esempi:
rbind(x,y)
[,1] [,2] [,3] [,4]
x
1
2
3
4
y
2
3
4
5
cbind(x,y)
x y
[1,] 1 2
[2,] 2 3
[3,] 3 4
[4,] 4 5
rbind(x,A)
[,1] [,2] [,3] [,4]
x
1
2
3
4
1
3
5
7
2
4
6
8
(Corso di statistica)
33 / 96
GLI OGGETTI IN R
(Corso di statistica)
34 / 96
GLI OGGETTI IN R
35 / 96
GLI OGGETTI IN R
Data-frame
(Corso di statistica)
36 / 96
GLI OGGETTI IN R
Liste
(Corso di statistica)
37 / 96
LAVORARE CON R
Importare dati in R
(Corso di statistica)
38 / 96
LAVORARE CON R
La funzione read.table
Se il file `e di testo con estensione .txt pu`
o essere importato in R con la
funzione read.table.
La sintassi del comando `e:
read.table("[path]\\nomefile.txt"))
dove [path] indica il percorso per individuare il file.
Esempio: "C:/laboratorioR/dati.txt" o
"C:\\laboratorioR\\dati.txt"
Se il file di dati si trova nella cartella corrente, basta scrivere:
read.table("dati.txt")
In alcuni casi occorre anche specificare lelemento separatore tra le colonne,
con largomento sep, o lelemento separatore dei decimali, con dec. Inoltre,
a volte bisogna specificare se la prima riga contiene i nomi delle variabili.
Alcuni esempi saranno introdotti durante le lezioni.
(Corso di statistica)
39 / 96
LAVORARE CON R
Esempio
(Corso di statistica)
40 / 96
LAVORARE CON R
Esempio/2
state <- read.table("C:/laboratorioR/state.txt",
header = TRUE, row.names = 1)
state
VR
MR
M
W
H
P
S
REGION DIVISION
AK 761 9.0 41.8 75.2 86.6 9.1 14.3
West
Pac
AL 780 11.6 67.4 73.5 66.9 17.4 11.5
South EasSouCen
AR 593 10.2 44.7 82.9 66.3 20.0 10.7
South WesSouCen
AZ 715 8.6 84.7 88.6 78.7 15.4 12.1
West
Mou
...
WV 208 6.9 41.8 96.3 66.0 22.2 9.4
South
SouAtl
WY 286 3.4 29.7 95.9 83.0 13.3 10.8
West
Mou
DC 2922 78.5 100.0 31.8 73.1 26.4 22.1
South
SouAtl
Lopzione header = TRUE serve a specificare che la prima riga della matrice
dei dati contiene i nomi delle variabili.
Lopzione row.names = 1 specifica che nella prima colonna del data-set
sono presenti le etichette delle unit`a.
(Corso di statistica)
41 / 96
LAVORARE CON R
Pi`
u in generale, la funzione read.table pu`
o essere impiegata per file di
testo di qualunque formato, specificando in maniera opportuna i vari
argomenti. Ma pu`
o essere utile impiegare funzioni pi`
u specifiche.
Se il file ha estensione .csv, si pu`
o anche usare la funzione read.csv, o la
funzione read.cvs2, a seconda delle impostazioni internazionali del sistema
operativo. La sintassi `e simile a quella di read.table
Anche la funzione scan pu`
o essere impiegata per importare file di testo,
anche se il suo impiego `e in generale sconsigliato agli utenti poco esperti.
Per una pi`
u approfondita descrizione di queste funzioni si rimanda allhelp in
linea.
(Corso di statistica)
42 / 96
LAVORARE CON R
I file con estensione .xls non possono essere importati con le funzioni viste
sopra.
In questo caso si pu`
o impiegare la funzione read.xls dal pacchetto
xlsReadWrite.
In alternativa, la funzione odbcConnect dal pacchetto RODBC, che pu`o essere
impiegata anche per file provenienti da Access, o da altri programmi di
gestione di data-base.
(Corso di statistica)
43 / 96
LAVORARE CON R
(Corso di statistica)
44 / 96
LAVORARE CON R
(Corso di statistica)
45 / 96
LAVORARE CON R
Editor di testi
(Corso di statistica)
46 / 96
LAVORARE CON R
str(state)
data.frame:
51 obs. of 9 variables:
$ VR
: int 761 780 593 715 1078 567 456 686 1206 723 ...
$ MR
: num 9 11.6 10.2 8.6 13.1 5.8 6.3 5 8.9 11.4 ...
$ M
: num 41.8 67.4 44.7 84.7 96.7 81.8 95.7 82.7 93 ...
$ W
: num 75.2 73.5 82.9 88.6 79.3 92.5 89 79.4 83.5 ...
$ H
: num 86.6 66.9 66.3 78.7 76.2 84.4 79.2 77.5 ...
$ P
: num 9.1 17.4 20 15.4 18.2 9.9 8.5 10.2 17.8 ...
$ S
: num 14.3 11.5 10.7 12.1 12.5 12.1 10.1 11.4 ...
$ REGION : Factor w/ 4 levels "Midwest","Northeast",..: 4 ...
$ DIVISION: Factor w/ 9 levels "EasNorCen","EasSouCen",..: 6 ..
(Corso di statistica)
47 / 96
LAVORARE CON R
(Corso di statistica)
48 / 96
LAVORARE CON R
Le funzioni head e tail mostrano le prime e le ultime righe della matrice dei
dati, rispettivamente.
Infine, la funzione fix apre una finestra simile ad un foglio di lavoro Excel,
che permette di visualizzare lintero data-set. E particolarmente utile nel
caso di matrici di dati molto grandi.
(Corso di statistica)
49 / 96
LAVORARE CON R
(Corso di statistica)
50 / 96
LAVORARE CON R
Median
6.80
Max.
78.50
51 / 96
LAVORARE CON R
52 / 96
LAVORARE CON R
Matrice di correlazione
cor(state.data)
VR
MR
M
W
H
P
S
VR 1.000 0.886 0.54404 -0.677 -0.25605 0.5095 0.839
MR 0.886 1.000 0.31611 -0.706 -0.28607 0.5659 0.859
M
0.544 0.316 1.00000 -0.337 -0.00398 -0.0605 0.260
W -0.677 -0.706 -0.33744 1.000 0.33812 -0.3891 -0.657
H -0.256 -0.286 -0.00398 0.338 1.00000 -0.7439 -0.220
P
0.510 0.566 -0.06054 -0.389 -0.74394 1.0000 0.549
S
0.839 0.859 0.25981 -0.657 -0.21978 0.5486 1.000
(Corso di statistica)
53 / 96
LAVORARE CON R
Tabelle di frequenza
Per variabili categoriche, o quantitative discrete, `e possibile ricavare una
tabella di frequenze tramite la funzione table.
La funzione table pu`
o anche essere impiegata per tabelle a doppia entrata,
o di dimensioni maggiori.
table(state$REGION)
Midwest Northeast
South
West
12
9
17
13
table(state$REGION, state$DIVISION)
Midwest
Northeast
South
West
(Corso di statistica)
54 / 96
LAVORARE CON R
La funzione apply
apply permette di calcolare una generica funzione sulle righe o sulle colonne
di una matrice.
In generale, la sintassi `e apply(X, dim, FUN):
1
2
apply(state.data, 2, median)
VR
MR
M
W
H
515.0
6.8 69.8 87.6 76.7
(Corso di statistica)
P
13.1
S
10.9
55 / 96
LAVORARE CON R
La funzione tapply
tapply permette di calcolare una generica funzione sui sottogruppi di
prodotti posti sullo stesso scaffale.
La sintassi `e tapply(x, ID, FUN):
1
2
x `e un vettore di dati;
ID `e un vettore, della stessa lunghezza di x che permette di assegnare ogni
unit`
a ad un dato gruppo;
FUN `e la funzione da applicare ai dati. Deve essere coerente con i dati che si
vogliono analizzare.
(Corso di statistica)
56 / 96
LAVORARE CON R
round(cor(state$M, state$H), 3)
[1] -0.004
(Corso di statistica)
57 / 96
LAVORARE CON R
In alternativa, si pu`
o impiegare il comando options(digits), che permette
di fissare, per tutta la durata della sessione, o fino a quando non viene
cambiata lopzione, il numero di decimali.
In questo caso larrotondamento avviene con le prime cifre utili.
options(digits = 3)
cor(state$M, state$H)
[1] -0.00398
(Corso di statistica)
58 / 96
LAVORARE CON R
Rappresentazioni grafiche in R
funzioni di alto livello, che creano un nuovo grafico sulla finestra grafica;
funzioni di basso livello, che aggiungono parti ad un grafico gi`
a esistente;
funzioni per grafici interattivi, che consentono di aggiungere interattivamente
informazioni, o di estrarne, da un grafico esistente.
(Corso di statistica)
59 / 96
LAVORARE CON R
(Corso di statistica)
60 / 96
LAVORARE CON R
(Corso di statistica)
61 / 96
LAVORARE CON R
Scatterplot semplice
Come esempio di analisi grafica in R, consideriamo lo scatterplot, o grafico a
dispersione, che permette la rappresentazione di una matrice di dati
bi-dimensionale.
La sintassi di base `e:
plot(x, y, ...)
dove x e y sono due vettori che rappresentano le coordinate dei punti nel
grafico.
Una formulazione alternativa `e:
plot(y~x, data)
Questa formulazione `e particolarmente utile quando i dati sono variabili prese
da una matrice di dati, perche alleggerisce la sintassi.
In questo caso, va specificato nellargomento data il nome della matrice dei
dati di origine.
(Corso di statistica)
62 / 96
LAVORARE CON R
Esempio
80
40
20
MR
60
500
1000
1500
2000
2500
3000
VR
(Corso di statistica)
63 / 96
LAVORARE CON R
2
3
(Corso di statistica)
64 / 96
LAVORARE CON R
Esempio
plot(MR~VR, xlab = "Tasso di omicidi", ylab = "Tasso di crimini
violenti", main = "Indici di criminalit`
a", data = state)
80
Indici di criminalit
40
20
60
500
1000
1500
2000
2500
3000
Tasso di omicidi
(Corso di statistica)
65 / 96
LAVORARE CON R
Identificare le unit`
a sul grafico
(Corso di statistica)
66 / 96
LAVORARE CON R
Identificare le unit`
a sul grafico/4
(Corso di statistica)
67 / 96
LAVORARE CON R
Identificare le unit`
a sul grafico/3
80
Indici di criminalit
40
20
Tasso di crimini
violenti
60
DC
500
1000
1500
2000
2500
3000
Tasso di omicidi
(Corso di statistica)
68 / 96
LAVORARE CON R
(Corso di statistica)
69 / 96
LAVORARE CON R
(Corso di statistica)
70 / 96
LAVORARE CON R
(Corso di statistica)
71 / 96
LAVORARE CON R
(Corso di statistica)
72 / 96
LAVORARE CON R
73 / 96
LAVORARE CON R
(Corso di statistica)
74 / 96
VARIABILI CASUALI
Variabili casuali discrete
Variabili casuali continue
Esempi
Grafici variabili discrete
Grafici variabili continue
(Corso di statistica)
75 / 96
VARIABILI CASUALI
Introduzione
calcolarne la densit`
a;
ricavare la funzione di ripartizione;
calcolare i singoli quantili;
generare una sequenza di numeri casuali in base ad una determinata legge.
(Corso di statistica)
76 / 96
VARIABILI CASUALI
Distribuzione binomiale
#Densit`
a
dbinom(x, size, prob)
#Funzione di ripartizione
pbinom(q, size, prob)
#Quantile
qbinom(p, size, prob)
#Generazione casuale di numeri
rbinom(n, size, prob)
x e q: vettori di quantili;
p: vettore di probabilit`a;
n: numero di osservazioni;
size: numero di prove. Se size = 1 si ha la variabile casuale di Bernoulli;
prob: probabilit`a di successo in ogni prova.
(Corso di statistica)
77 / 96
VARIABILI CASUALI
Distribuzione geometrica
#Densit`
a
dgeom(x, prob)
#Funzione di ripartizione
pgeom(q, prob)
#Quantile
qgeom(p, prob)
#Generazione casuale di numeri
rgeom(n, prob)
x e q: vettori di quantili;
p: vettore di probabilit`a;
n: numero di osservazioni;
prob: probabilit`a di successo in ogni prova.
(Corso di statistica)
78 / 96
VARIABILI CASUALI
#Densit`
a
dpois(x, lambda)
#Funzione di ripartizione
ppois(q, lambda)
#Quantile
qpois(p, lambda)
#Generazione casuale di numeri
rpois(n, lambda)
x e q: vettori di quantili;
p: vettore di probabilit`a;
n: numero di osservazioni;
lambda: media, non negativa, della distribuzione.
(Corso di statistica)
79 / 96
VARIABILI CASUALI
Distribuzione esponenziale
#Densit`
a
dexp(x, rate)
#Funzione di ripartizione
pexp(q, rate)
#Quantile
qexp(p, rate)
#Generazione casuale di numeri
rexp(n, rate)
x e q: vettori di quantili;
p: vettore di probabilit`a;
n: numero di osservazioni;
rate: reciproco della media della distribuzione. Se non viene specificato
alcun valore rate = 1.
(Corso di statistica)
80 / 96
VARIABILI CASUALI
Distribuzione normale
#Densit`
a
dnorm(x, mean, sd)
#Funzione di ripartizione
pnorm(q, mean, sd)
#Quantile
qnorm(p, mean, sd)
#Generazione casuale di numeri
rnorm(n, mean, sd)
x e q: vettori di quantili;
p: vettore di probabilit`a;
n: numero di osservazioni;
mean: media della distribuzione. Se non viene specificato alcun valore mean
= 1.
sd: errore standard della distribuzione. Se non viene specificato alcun valore
sd = 0.
(Corso di statistica)
81 / 96
VARIABILI CASUALI
Distribuzione t di Student
#Densit`
a
dt(x, df)
#Funzione di ripartizione
pt(q, df)
#Quantile
qt(p, df)
#Generazione casuale di numeri
rt(n, df)
x e q: vettori di quantili;
p: vettore di probabilit`a;
n: numero di osservazioni;
df: numero di gradi di libert`a.
(Corso di statistica)
82 / 96
VARIABILI CASUALI
Distribuzione 2
#Densit`
a
dchisq(x, df)
#Funzione di ripartizione
pchisq(q, df)
#Quantile
qchisq(p, df)
#Generazione casuale di numeri
rchisq(n, df)
x e q: vettori di quantili;
p: vettore di probabilit`a;
n: numero di osservazioni;
df: numero di gradi di libert`a.
(Corso di statistica)
83 / 96
VARIABILI CASUALI
Distribuzione F di Fisher
#Densit`
a
df(x, df1, df2)
#Funzione di ripartizione
pf(q, df1, df2)
#Quantile
qf(p, df1, df2)
#Generazione casuale di numeri
rf(n, df1, df2)
x e q: vettori di quantili;
p: vettore di probabilit`a;
n: numero di osservazioni;
df1, df2: numero di gradi di libert`a a numeratore e a denominatore,
rispettivamente.
(Corso di statistica)
84 / 96
VARIABILI CASUALI
Esempi
Alcuni esempi
(Corso di statistica)
85 / 96
VARIABILI CASUALI
Esempi
Alcuni esempi/2
qt(0.05, df = 4)
-2.13
rchisq(2, df = 4)
[1] 1.86 3.68
r <- rnorm(10, mean = 4, sd = 4)
r
[1] -4.62 3.61 9.27 3.03 2.78
[6] 6.33 4.38 9.58 5.19 -2.84
(Corso di statistica)
86 / 96
VARIABILI CASUALI
Poisson
k <- 0:10
p <- dpois(k, 2)
plot(k, p)
0.20
0.25
0.15
0.10
0.05
0.00
10
(Corso di statistica)
87 / 96
VARIABILI CASUALI
Poisson/2
0.00
0.05
0.10
0.15
0.20
0.25
10
k
(Corso di statistica)
88 / 96
VARIABILI CASUALI
Poisson/3
0.00
0.05
0.10
0.15
0.20
0.25
10
k
(Corso di statistica)
89 / 96
VARIABILI CASUALI
Normale standardizzata
0.0
0.1
0.2
0.3
0.4
x
(Corso di statistica)
90 / 96
VARIABILI CASUALI
0.00
0.05
0.10
0.15
10
x
(Corso di statistica)
91 / 96
La funzione t.test
(Corso di statistica)
92 / 96
3
4
x, vettore di dati;
y, vettore (opzionale) di dati, quando si vuole effettuare il confronto tra due
campioni;
`e lipotesi nulla sul valore della media. Di default mu = 0;
mu
alternative serve a specificare lipotesi alternativa. Pu`
o essere
"two.sided", "less" o "greater";
conf.level `e il livello di confidenza dellintervallo. Di default `e posto uguale
a 0.95.
(Corso di statistica)
93 / 96
Esempio
(Corso di statistica)
94 / 96
(Corso di statistica)
95 / 96
(Corso di statistica)
96 / 96