STATISTICA LAB
Analisi dei dati con R - Ex 1
Marta Nai Ruscone
LIUC - Università Carlo Cattaneo, Castellanza
STATISTICA LAB
STATISTICA LAB
R è un ’ambiente’ per la gestione e l’analisi statistica di dati e la
produzione di grafici.
E’ disponibile gratuitamente sotto i vincoli della GPL (General
Public Licence).
Informazioni, risorse:
http://www.r-project.org/
STATISTICA LAB
1
La versione più recente di R può essere scaricata dalla
pagina
http://cran.r-project.org/bin/windows/base/
2
Una volta scaricato il file .exe sul proprio computer è
sufficiente lanciare il programma di installazione
STATISTICA LAB
R è case sensitive
E’ un ambiente interattivo, ossia i comandi producono una
risposta immediata
In R un’analisi è fatta attraverso una serie di passi, con
risultati intermedi che sono immagazzinati in oggetti.
1
2
Rispetto ad altri programmi (SPSS, ecc), R fornisce un
output minimo.
I rimanenti risultati possono essere successivamente
richiamati tramite opportuni comandi.
STATISTICA LAB
Iacus, Masarotto Laboratorio di statistica con R,
McGraw-Hill Italia, 2003.
Crivellari Analisi statistica dei dati con R, Apogeo, 2006.
In rete sono inoltre disponibili numerose dispense per i primi
passi di R.
In particolare nel sito
http://cran.r-project.org/other-docs.html/
si possono trovare anche dispense in italiano (sezione Other
languages).
STATISTICA LAB
Avviato il programma R, apparirà una finestra (console) con il
simbolo di prompt
<
STATISTICA LAB
Una volta concluso il comando si digita il tasto ’Invio’:
1
se il comando è completo, comparirà una nuova riga di
comando con il simbolo di prompt
2
altrimenti comparirà una nuova riga di comando con il
simbolo
+
che sta a significare che il comando deve essere
completato.
Per richiamare i comandi già inseriti, basta usare i tasti ↑ e ↓
per scorrere in avanti e indietro.
STATISTICA LAB
La console di R può essere utilizzata come semplice
calcolatrice. Alcuni esempi:
> 3 + 2
[1] 5
> 2 * 2
[1] 4
> (2 - 3)/6
[1] -0.1666667
> 2^2
[1] 4
> sqrt(9)
[1] 3
> log(1)
[1] 0
STATISTICA LAB
Operatori
Relazioni di confronto:
== ! = < <= >=
logici:
& per AND,
| per OR,
! per NOT
STATISTICA LAB
Assegnare ’oggetti’ in R
I risultati dei calcoli atti in R possono essere salvati con un
nome scelto dall’utilizzatore, per essere richiamati in qualsiasi
momento durante la sessione di lavoro.
Per assegnare un nome al risultato dell’operazione si impiega il
comando <> esempio <- 2 + 2
> esempio
[1] 4
1
I nomi possono contenere un qualunque carattere
alfa-numerico.
2
Non devono mai iniziare con un numero, nè con spazi
vuoti.
3
E’ bene non dare ad una variabile il nome di una funzione
o di un operatore (ad es. c, sum. etc).
STATISTICA LAB
Lo spazio di lavoro
Gli oggetti vengono salvati nell ’spazio di lavoro’
(workspace)
Il comando ls() permette di visualizzare i nomi degli
oggetti memorizzati.
Lo spazio di lavoro, di default, si trova nella cartella:
C : \Programmi\R\R − (numero versione)
per eliminare uno o più oggetti dallo spazio di lavoro si
utilizza il comando rm(). Esempio:
rm(x,y,z)
per eliminare tutti gli elementi salvati si scrive:
rm(list=ls())
STATISTICA LAB
Salvataggio dello spazio di lavoro
Alla fine di ogni sessione R chiede se si vuole salvare lo spazio
di lavoro.
Lo spazio di lavoro viene salvato in un file chiamato
’.RData’ nella cartella corrente.
La successione di comandi viene salvata in un file
chiamato ’.RHistory’. Questo file contiene tutti i comandi
digitati.
Quando si riapre R, cliccando sul file ’.RData’, lo spazio di
lavoro ed i comandi vengono automaticamente caricati.
STATISTICA LAB
Cartella di lavoro
Per cambiare cartella di lavoro, dal menù di R, cliccate su
’Cambia directory’, nel menu ’File’ si può scegliere la cartella
su cui salvare il lavoro:
STATISTICA LAB
Cartella di lavoro
In alternativa:
setwd([path])
dove [path] indica la cartella di lavoro di destinazione.
Per vedere qual è la cartella di lavoro corrente, si usa il
comando
getwd().
STATISTICA LAB
Pacchetti
Le funzioni di R sono organizzate in pacchetti, alcuni dei quali
sono già disponibili quando si accende il programma.
per alcune funzioni è però necessario caricare prima il
pacchetto.
Si può utilizzare direttamente il comando:
library(nomepacchetto)
Oppure il comando:
require(nomepacchetto)
Per avere informazioni generali sul pacchetto:
help(package="nomepacchetto")
STATISTICA LAB
Pacchetti
In alternativa, dal menù ’Pacchetti’ si scegie l’opzione ’Carica
pacchetto’
STATISTICA LAB
Pacchetti
In tal caso apparirà una finestra con la lista dei pacchetti già
installati.
STATISTICA LAB
Pacchetti
Oppure:
library()
apparirà l’elenco delle librerie installate.
STATISTICA LAB
Pacchetti
Per installare un pacchetto non presente nella versione di R,
dal menù ’Pacchetti’ si seleziona ’Installa pacchetti’
STATISTICA LAB
Pacchetti
Successivamente, si dovrà selezionare il mirror da cui scaricare
il pacchetto.
STATISTICA LAB
Pacchetti
Infine selezionare il pacchetto dalla lista
STATISTICA LAB
Pacchetti
In alternativa, si può caricare il file compresso del pacchetto dal
seguente sito:
http://cran.r-project.org/web/packages/
STATISTICA LAB
Help
help (mean) oppure ?mean cerca in tutte le librerie che sono
state caricate.
??mean cerca in tutte le librerie che sono state installate.
Se si vuole cercare nel web:
> library(RSiteSearch)
> RSiteSearch("mean")
STATISTICA LAB
Help
Per ottenere esempi e demo di comandi e librerie:
library(help=lattice)
example(command)
example(mean)
example(sd)
demo(image)
Per reperire altre demo:
demo(package = .packages(all.available =
TRUE))
STATISTICA LAB
Vettori
Un vettore è un insieme ordinato di numeri. In R i vettori sono
considerati vettori-colonna.
Per definire un vettore si usa il comando c().
Esempio:
> x <- c(1, 2, 3, 6, 7)
> x
[1] 1 2 3 6 7
Il verso della freccia indica cosa viene assegnato a chi.
STATISTICA LAB
Operazioni tra vettori
Gli operatori aritmetici base possono essere utilizzati per
compiere operazioni tra vettori: Esempio:
> x <- c(1, 2, 3, 6, 7)
> y <- c(2, 3, 4, 5, 5)
> x + y
[1]
3
5
7 11 12
> x * y
[1]
2
6 12 30 35
STATISTICA LAB
Operazioni tra vettori
Per il prodotto scalare tra due vettori:
> x <- c(1, 2, 3, 6, 7)
> y <- c(2, 3, 4, 5, 5)
> t(x) %*% y
[,1]
[1,]
85
dove la funzione t() opera la trasposizione del vettore.
STATISTICA LAB
Operazioni tra vettori
Esempio:
> x <- c(1, 2, 3, 6, 7)
> y <- c(2, 3, 4, 5, 5)
> sum(x * y)
[1] 85
> (t(x) %*% y)
[1,]
[,1]
85
dove la funzione t() opera la trasposizione del vettore.
STATISTICA LAB
Estrazione di elementi da un vettore
Gli elementi di un vettore possono essere selezionati tramite un
vettore di indici racchiuse tra parentesi quadre.
> y <- c(2, 3, 4, 5, 8)
> y[1]
[1] 2
> y[y <= 3]
[1] 2 3
> y[c(1, 3)]
[1] 2 4
> y[-c(1, 3)]
[1] 3 5 8
STATISTICA LAB
Altre operazioni
Per calcolare le differenze esistenti tra i valori di x.
> x <- c(4, 5, 7, 2, 3, 8)
> diff(x)
[1]
1
2 -5
1
5
Il vettore ritornato è costituito da n-1 elementi.
STATISTICA LAB
Altre operazioni
Per conoscere i valori distinti presenti in x.
> x <- c(1, 1, 2, 2, 2, 4, 8)
> unique(x)
[1] 1 2 4 8
STATISTICA LAB
Altre operazioni
Per rovesciare gli elementi di x
> x <- c(1, 3, 2, 3, 2, 4, 8)
> rev(x)
[1] 8 4 2 3 2 3 1
Per ordinare in modo crescente i valori di x
> sort(x)
[1] 1 2 2 3 3 4 8
Per ordinare in modo decrescente i valori di x
> sort(x, decreasing = T)
[1] 8 4 3 3 2 2 1
oppure
> rev(sort(x))
[1] 8 4 3 3 2 2 1
STATISTICA LAB
Which
Per cercare gli elementi all’interno di un vettore si usa il
comando which
> x <- -3:8
> which(x < 2)
[1] 1 2 3 4 5
> which(x == 2)
[1] 6
> which(x >= 2)
[1]
6
7
8
9 10 11 12
> which((x >= -1) & (x < 5))
[1] 3 4 5 6 7 8
STATISTICA LAB
Posizioni nel vettore x dove sono presenti dei valori duplicati
precedentemente
> x <- c(1, 1, 3, 4, 5)
> which(duplicated(x))
[1] 2
Posizioni degli elementi che hanno valori uguali al massimo
> which(x == max(x))
[1] 5
STATISTICA LAB
L’operatore seq
seq genera un vettore che contiene una sequenza regolare di
numeri, generata in base a determinate regole.
> seq(1, 5)
[1] 1 2 3 4 5
> seq(1, 3, length = 5)
[1] 1.0 1.5 2.0 2.5 3.0
> seq(1, 3, by = 0.5)
[1] 1.0 1.5 2.0 2.5 3.0
> 1:5
[1] 1 2 3 4 5
Si osservi che seq(1,5) e 1:5 forniscono lo stesso risultato.
STATISTICA LAB
L’operatore rep
rep genera un vettore in cui un numero, o una sequenza di
numeri, o un vettore viene ripetuta un dato numero di volte.
Esempi:
> rep(1, 5)
[1] 1 1 1 1 1
> rep(c(1, 2), 2)
[1] 1 2 1 2
> seq(1, 3, by = 0.5)
[1] 1.0 1.5 2.0 2.5 3.0
> x <- c(1, 2, 3, 4)
> rep(x, 2)
[1] 1 2 3 4 1 2 3 4
STATISTICA LAB
Matrici
Una matrice è un insieme di numeri con due dimensioni. Il
comando per generare una matrice è matrix.
Di norma una matrice viene generata con la seguente sintassi:
A <- matrix(x,nrow=n,ncol=m, byrow=...)
dove:
x è un vettore di dati;
nrow e ncol sono, rispettivamente il numero di righe e di
colonne;
byrow è un operatore logico. Di default è FALSE, per cui la
matrice viene costruita per colonna.
STATISTICA LAB
Esempi di matrici
> A <- matrix(1:8, nrow = 2)
> A
[1,]
[2,]
[,1] [,2] [,3] [,4]
1
3
5
7
2
4
6
8
> B <- matrix(1:8, nrow = 2, byrow = TRUE)
> B
[1,]
[2,]
[,1] [,2] [,3] [,4]
1
2
3
4
5
6
7
8
> B <- matrix(1:8, ncol = 4, byrow = T)
> B
[1,]
[2,]
[,1] [,2] [,3] [,4]
1
2
3
4
5
6
7
8
STATISTICA LAB
Esempi di matrici
Matrice di 0
> matrix(0, 2, 3)
[,1] [,2] [,3]
[1,]
0
0
0
[2,]
0
0
0
Matrice di 1
> matrix(1, 2, 3)
[1,]
[2,]
[,1] [,2] [,3]
1
1
1
1
1
1
Riempimento senza assegnazione di valori (NA)
> matrix(, 2, 3)
[1,]
[2,]
[,1] [,2] [,3]
NA
NA
NA
NA
NA
NA
STATISTICA LAB
Esempi di matrici
Alcuni esempi
> A <- matrix(1:18, 3, 6)
> A[1:2, 3:4]
[,1] [,2]
[1,]
7
10
[2,]
8
11
> A[-c(1, 3), ]
[1]
2
5
8 11 14 17
STATISTICA LAB
Matrici da unione di più vettori
Una matrice può anche essere generata unendo più vettori o
matrici.
I comandi cbind e rbind, rispettivamente, generano una
matrice unendo i vettori (le matrici per colonna e per riga).
STATISTICA LAB
Esempi di matrici
Esempi:
> x <- c(1, 2, 3, 6)
> y <- c(2, 3, 4, 5)
> rbind(x, y)
x
y
[,1] [,2] [,3] [,4]
1
2
3
6
2
3
4
5
> cbind(x, y)
[1,]
[2,]
[3,]
[4,]
x
1
2
3
6
y
2
3
4
5
STATISTICA LAB
Esempi di matrici
Esempio:
> x <- c(1, 2, 3, 6)
> A <- matrix(1:8, nrow = 2)
> rbind(x, A)
x
[,1] [,2] [,3] [,4]
1
2
3
6
1
3
5
7
2
4
6
8
STATISTICA LAB
Operazioni tra matrici
Le operazioni aritmetiche sulle matrici sono eseguite termine a
termine per colonne. Le operazioni devono coinvolgere due
matrici che hanno le ’stesse dimensioni’, o una matrice ed un
vettore. In questo caso, la lunghezza del vettore deve essere
un sottomultiplo di quella della matrice.
STATISTICA LAB
Operazioni tra matrici
> A <- matrix(1:6, ncol = 2)
> B <- matrix(11:16, ncol = 2, byrow = T)
> A + B
[1,]
[2,]
[3,]
[,1] [,2]
12
16
15
19
18
22
> A - B
[1,]
[2,]
[3,]
[,1] [,2]
-10
-8
-11
-9
-12 -10
STATISTICA LAB
Operazioni tra matrici
> A <- matrix(1:6, ncol = 2)
> B <- matrix(11:16, ncol = 2, byrow = T)
> A * B
[1,]
[2,]
[3,]
[,1] [,2]
11
48
26
70
45
96
> A/B
[,1]
[,2]
[1,] 0.09090909 0.3333333
[2,] 0.15384615 0.3571429
[3,] 0.20000000 0.3750000
STATISTICA LAB
Operazioni tra matrici
L’operatore % ∗ % permette il prodotto matriciale tra due matrici
conformi, o tra un vettore ed una matrice. Esempi:
> A <- matrix(1:6, ncol = 2)
> B <- matrix(11:16, ncol = 2, byrow = T)
> A %*% t(B)
[,1] [,2] [,3]
[1,]
59
69
79
[2,]
82
96 110
[3,] 105 123 141
> t(A) %*% B
[,1] [,2]
[1,]
82
88
[2,] 199 214
STATISTICA LAB
Estrazione di dati da una matrice
Per l’estrazione dei dati bisogna tener conto del fatto che la
matrice ha due dimensioni.
A[i,j] estrae l’elemento che si trova nell’i-ma riga e nella
j-ma colonna. Esempi:
> A <- matrix(1:6, ncol = 2)
> A
[,1] [,2]
[1,]
1
4
[2,]
2
5
[3,]
3
6
> A[1, 2]
[1] 4
> A[1, c(1, 2)]
[1] 1 4
STATISTICA LAB
Estrazione di dati da una matrice
> A[2, ]
[1] 2 5
> A[, 1]
[1] 1 2 3
> A[-2, c(1, 2)]
[1,]
[2,]
[,1] [,2]
1
4
3
6
STATISTICA LAB
Data-frame
I data-frame sono delle matrici in cui le colonne possono
essere di natura differente.
Sono particolarmente utili per trattare matrici di dati, in cui
le colonne rappresentano le variabili e le righe le unità.
Per questo motivo, di solito solo le colonne sono
identificate con un nome.
Il comando per generare un data-frame è data.frame
L’estrazione di dati da un data-frame può essere effettuata
nello stesso modo in cui si opera per le matrici.
L’estrazione di una colonna da un data-frame può anche
essere fatta in questo modo:
nomedata-frame$nomecolonna
STATISTICA LAB
Esempio data-frame
> data <- cars
> head(cars)
1
2
3
4
5
6
speed dist
4
2
4
10
7
4
7
22
8
16
9
10
STATISTICA LAB
Esempio data-frame
> head(cars[1])
1
2
3
4
5
6
speed
4
4
7
7
8
9
> names(cars)
[1] "speed" "dist"
STATISTICA LAB
Esempio data-frame
> summary(cars)
speed
Min.
: 4.0
1st Qu.:12.0
Median :15.0
Mean
:15.4
3rd Qu.:19.0
Max.
:25.0
dist
Min.
: 2.00
1st Qu.: 26.00
Median : 36.00
Mean
: 42.98
3rd Qu.: 56.00
Max.
:120.00
STATISTICA LAB
Esempio data-frame
> str(cars)
'data.frame':
$ speed: num
$ dist : num
50 obs. of 2 variables:
4 4 7 7 8 9 10 10 10 11 ...
2 10 4 22 16 10 18 26 34 17 ...
> str(cars[, 1])
num [1:50] 4 4 7 7 8 9 10 10 10 11 ...
> cars[1:3, ]
1
2
3
speed dist
4
2
4
10
7
4
STATISTICA LAB
Importare dati in R
R legge i dati in ogni formato.
Per i dati salvati da altri pacchetti statistici è necessario
caricare il pacchetto foreign.
I file di testo possono essere letti direttamente senza
caricare alcun pacchetto aggiuntivo.
I file di dati importati vengono convertiti in un data-frame.
E’ conveniente mettere il file di dati nella cartella di lavoro
corrente.
STATISTICA LAB
read.table
Se il file di testo con estensione .txt può essere
importato in R con la funzione read.table
La sintassi del comando è:
read.table("[path]
nomefile.txt")
dove [path] indica il percorso per individuare il file.
Se il file si trova nella cartella corrente, basta scrivere:
read.table("dati.txt")
in alcuni casi occorre anche specificare l’elemento
separatore tra le colonne, con l’argomento sep, o
l’elemento separatore dei decimali, con dec. Inoltre, a
volte bisogna specificare se la prima riga contiene i nomi
delle variabili.
STATISTICA LAB
Importare file da Excel
I file con estensione .xls non possono essere importati
con la funzione vista prima.
In questo caso si può impiegare la funzione read.xls dal
pacchetto xlsReadWrite.
In alternativa, la funzione odbcConnect dal pacchetto
RODBC, che può essere impiegata anche per file
provenienti da Access, o da altri programmi di gestione di
data-base.
STATISTICA LAB
Esportare file di dati
Per esportare un data-frame da R si impiega la funzione
write.table
La sintassi del comando è:
write.table(nomedata-frame,"[path]
nomefile.txt")
dove [path] indica la directory dove si vuole salvare il file.
Se si vuole salvare il file nella cartella corrente, basta
scrivere:
write.table(nomedata-frame,"dati.txt")
attenzione R non avverte se si sovra-scrive su un file
esistente.
STATISTICA LAB
Esportare file di dati
Analogamente a quanto visto sopra, è possibile esportare i
dati anche in altri formati.
File con estensione .xls con write.xls dal pacchetto
xlsReadWrite o sqlSave dal pacchetto RODBC.
STATISTICA LAB