Università di Bologna - Facoltà di Scienze Statistiche
Laurea Triennale in Statistica e Ricerca Sociale
Corso di Analisi di Serie Storiche e Multidimensionali
Prof.ssa Marilena Pillati
Introduzione a R
Ovvero: Come non avere limiti nella
programmazione se non quelli dettati dalla nostra
stessa mente
Francesca Marta Lilja Di Lascio
[email protected]
Facoltà di Scienze Statistiche
Università di Bologna
1
Outlines
1. Cosa è R e a cosa serve
2. Dove nasce, Dove si scarica e Come si installa
3. Bibliografia essenziale
4. Come si organizza il lavoro e si diventa autonomi (2/2)
5. Nozioni di base: dai vettori alle funzioni, dai data frame alle
strutture logiche (16/16)
6. Potenzialità e limiti di R
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
2
1. Cosa è R e a cosa serve
• È un linguaggio di programmazione ad alto livello
• È un linguaggio interpretato
• È un linguaggio oriantato all’analisi dei dati e fornisce un ambiente integrato di risorse software per la elaborazione interattiva
e la gestione di dati, e per la visualizzazione di grafici
• Dispone di interfacce verso programmi scritti con altri linguaggi
(es.: C++ e Fortran)
• Ambiente di sviluppo e package open source disponibili free in
internet. È uno dei più usati linguaggi per le analisi statistiche
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
3
2. Dove nasce, Dove si scarica e Come si installa
• R è un progetto Open Source (conforme per la maggior parte ad S, un
linguaggio ed un sistema sviluppati da John Chambers e collaboratori negli
anni ′80 presso i Laboratori Bell, da cui deriva)
• Inizialmente sviluppato da R. Ihaka and R. Gentleman (Univ. di Auckland (NZ)) e, attualmente, da una comunità internazionale di ricercatori
e sviluppatori in ambito accademico e industriale
• Opera attraverso il web: CRAN – the Comprehensive R Archive Network:
http://cran.r-project.org/ (ci sono anche mirror locali)
• Archivi software e documentazione: http://cran.r-project.org/ (CRAN –
the Comprehensive R Archive Network)
• Disponibili distribuzioni binarie per: Win, Mac e Linux
• L’installazione domestica sul proprio PC è semplice.
F. Marta L. Di Lascio - Fac. di Scienze Statistiche, Univ. di Bologna
4
3. Bibliografia essenziale
Libri e manuali introduttivi disponibili on-line o in biblioteca:
- W. Venables e D.M. Smith, An Introduction to R
http://cran.rproject.org/doc/manuals/R-intro.pdf, 2004.
- J. Maindonald, Using R for Data Analysis and Graphics
http://wwwmaths.anu.edu.au/¡johnm, 2000.
- S. M. Iacus e G. Masarotto, Laboratorio di statistica con R
McGraw–Hill, Milano, 2003.
Libri e manuali specifici sul linguaggio e riguardanti lo sviluppo dei Package
- R Development Core Team, R Language Definition
http://cran.rproject.org/doc/manuals/R-def.pdf
- R Development Core Team, Writing R extensions
http://cran.rproject.org/doc/manuals/R-exts.pdf
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
5
4. Come si organizza il lavoro
1/2
• Specificare la directory di lavoro identificabile digitando getwd() e modificabile mediante setwd(). Altrimenti andate in “File|Changedir. . . ”
• Salvare files dei dati e dei codici digitati nella directory di lavoro specificata
- File .Rhistory: riporta i codici digitati sul prompt. Si salva da “File|Save
to File. . . ”
- File .Rdata: è il vostro work–space. Si salva da “File|Save Workspace. . . ”
• Le immagine possono essere salvate in diversi formati: .ps, .bmp, .jpg, .pdf,
.png, .emf.
• Potete sempre richiamare ogni workspace di R, importandolo in altre sessioni,
mediante “load()” o “File|Load Workspace. . . ” o avviando R dal file .Rdata
di interesse.
• Ditemi che conoscete Latex! Se no, : −(. . . usate un editor di testo alternativo.
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
6
4. Come si diventa autonomi
2/2
• Studiare, studiare e studiare!
Cercare il materiale cartaceo ed elettronico, leggerlo e provare a riprodurre
cose già fatte per vedere se si sta eseguendo tutto bene
• Studiare la teoria statistica prima di usare i packages (le librerie di R)!
• R aiuta mediante
- Manuali in pdf, manuali in HTML, documentazione dei package (dall’Help). . .
- Digitando dal prompt uno dei seguenti comandi:
help(xxx)
? xxx
help.search("xxx")
help.start()
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
7
5. Nozioni di base
1/16
• Le principali strutture dati fornite da R sono:
→ Vettori, Array e Matrici, Fattori, Liste e Data frame
• Le entità su cui R opera sono informalmente definite come oggetti che sono
caratterizzati da attributi
• Un tipo di attributo è il modo:
Character, Numeric, Integer, Logical e Complex
• Esempi:
c(1,4,5): crea un vettore di interi
c("A","B","C"): crea un vettore di caratteri
c("New York","micio","7"): crea un vettore di stringhe
c("TRUE","FALSE"): crea un vettore logico
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
8
5. Nozioni di base: Vettori numerici
2/16
• Un vettore può
1. essere assegnato ad una variabile, vecchia o nuova (non vale il viceversa),
mediante x <- c(1,2) o x = c(1,2)
2. essere assegnato ad una nuova variabile cancellando il contenuto precedente: y <- 2; y <- c(3,4)
3. essere concatenato ad altri: z <- c(x,y,9)
• Le operazioni aritmetiche vengono eseguite mediante simboli ‘standard’: +,
∗, −, /, sqrt(), log(), exp(),. . .
• Altre funzioni comuni, tra cui quelle statistiche, vengono eseguite mediante:
sum(), prod(), mean(), sd(), rnorm(), cor(), order(), . . .
⇒ Provate a fare la somma di due vettori di dimensione diversa. . . Scoprirete
la cosiddetta “Regola del Riciclo”.
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
9
5. Nozioni di base: Vettori logici e di caratteri
3/16
• Vettori di caratteri:
x <- c("A","T","G"); y <- c("ATA","GCTCG")
possono essere concatenati: paste("A","T","G",sep=" ")
• Vettori logici:
Es.1: x <- 1:5; x; y <- x > 3; y
Es.2: c2 <- "gatto" == "topo"
dove <, <=, >, >=, ==, != sono gli operatori logici
Es.3: c1 <- c(3,4) > c(2,6); c2 <-c(1,2)<c(2,8); c1&c2
dove \&, |, ! sono i connettivi logici, che operano elemento su elemento
⇒ Domanda: Come si accede agli elementi di un vettore?
Risposta: Esiste la funzione [ ].
Es: x <- c(1:5, NA, NA); x[!is.na(x)]
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
10
5. Nozioni di base: Fattori
4/16
• I fattori sono strutture dati per rappresentare valori che possono assumere solo valori discreti, definiti come livelli. Es: dati
qualitativi o dati ordinali.
• Esempio:
trt <- factor(rep(c("Control","Treated"),c(3,4)))
levels(trt): visualizza i livelli del fattore
str(trt): visualizza la struttura del fattore
summary(trt): fornisce una tabella delle frq dei livelli
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
11
5. Nozioni di base: Matrici
5/16
• Generazioni di matrici:
- In modo diretto:
m <- matrix(1:12, nrow=4)
m <- matrix(1:12, ncol=4, byrow=TRUE)
- Mediante le funzioni cbind ed rbind:
x <-1:3; y <- 4:6
m <- cbind(x,y) oppure m <- rbind(x,y)
• Richiamo dei suoi attributi:
length(m); dim(m); mode(m)
• Richiamo dei suoi elementi:
m[1,1]; m[1,]; m[,1]; m[1:2,1:2]
• Operazioni semplici e non: +, % ∗ %, −, t(), diag(), solve(). . .
p.s. Ricorda la regola del riciclo!! Es: m <- matrix(1:12,nrow=4)
p.s.2 Chi è curioso scopra da solo cosa sono gli array!
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
12
5. Nozioni di base: Liste
6/16
• Le liste rappresentano un insieme ordinato di oggetti (componenti) che possono non essere dello stesso tipo o modo, ad es: un vettore numerico, un
valore logico, una matrice, una funzione o anche un’altra lista. La lista è
quindi una struttura dati ricorsiva.
Es.1: li1 <- list(TRUE, c(1,3,7,0,9))
Es.2: li2 <- list(val=TRUE, vector=c(1,3,7,0,9))
• Richiamo/Accesso ai suoi elementi tramite:
- un indice numerico:
li1[[1]]
- il nome componenti:
li2$val
- un indice “a caratteri”: li2[["val"]]
• Si concatenano tramite la funzione c: c(li1,li2)
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
13
5. Nozioni di base: Data Frame
7/16
• Può essere considerato una matrice le cui colonne rappresentano dati eterogenei (variabili con attributi differenti): vettori (numerici, a caratteri, logici),
fattori, matrici, liste, altri data frame;
• Es.: li <- list(a=matrix(1:12, nrow=3), v=c("G","G","C"))
m <- matrix(13:18, nrow=3)
daf <- data.frame(li,m)
• Si accede ai suoi elementi tramite:
un indice numerico: daf[[2]]
il nome delle componenti: daf$v
un indice a caratteri: daf[["v"]]
un indice a “modo matrice”: daf[1,2]
un indice di espressioni logiche: daf[daf$a.2>4, ]
• Anche per i data frame si può usare str() e summary()
• Unica limitazione: le componenti devono avere tutte la stessa lunghezza
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
14
5. Nozioni di base: Programmi e Funzioni
8/16
• Un programma in linguaggio R è costituito da una sequenza di espressioni
che vengono valutate dall’interprete una alla volta e, se sintatticamente
completa, viene ritornato un valore che può essere assegnato ad una variabile
• I programmi vengono realizzati tramite funzioni che possono essere definite
dall’utente (Es. 1) o richiamate/caricate da R (Es. 2).
sum2 <- function(x,y){
x+y
}
sum2(4,7)
- x,y sono gli argomenti formali e 4, 7 quelli attuali mentre x + y è il corpo
della funzione che è un’espressione del programma
Es.2: Dal prompt digitare sum oppure
(1) Dal prompt source("name") o
(2) Dal menu File/Source R code. . .
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
15
5. Nozioni di base: Strutture di Controllo
9/16
I programmi sono eseguiti sequenzialmente, istruzione dopo istruzione, ma in
alcuni casi il flusso di esecuzione può scegliere vie alternative o ripetersi ciclicamente. In R esistono strutture di controllo specifiche per regolare il flusso
di esecuzione di un programma: Blocchi di istruzioni, Istruzioni condizionali e
Istruzioni di looping.
1. Blocchi di Istruzioni
Le istruzioni possono essere raggruppate insieme utilizzando le parentesi
graffe. Una sequenza di istruzioni fra parentesi graffe costituisce un blocco.
{x <- 0;
y <- 1;
z <- x + y;
z + 3;
z}
Si noti che i blocchi vengono valutati solo dopo la chiusura delle parentesi
graffe.
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
16
5. Nozioni di base: Strutture di Controllo
10/16
2. Istruzioni Condizionali: sintassi ed esempi
(i) if. . . else: if (condizione), blocco1, else, blocco2
if (x<=0){y <- x^2}else{x}
(ii) La funzione ifelse: ifelse (condizione, a, b)
ifelse (x <= 0, y <- x^2, x)
Provate a dare x <- 2 e poi x <- -2 e vedete cosa accade!
(iii) La funzione switch: switch (istruzione, lista)
x <- 2
switch(x, 7, mean(1:100), rnorm(3))
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
17
5. Nozioni di base: Strutture di Controllo
11/16
3. Istruzioni di Looping: sintassi ed esempi
(i) for: for (nome in v) blocco di istruzioni (v vettore o lista)
v <- vector(length=5)
for(i in 1:5){
v[i] <- round(runif(1),3)
}
(ii) while: while (condizione), blocco di istruzioni (condizione è un’espressione logica)
f <- function(y){
i <- 0;
while (y > 1){
y <- y/2;
i <- i + 1;
}
i
}
f(3)
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
18
5. Nozioni di base: Strutture di Controllo
12/16
3. Istruzioni di Looping: sintassi ed esempi
(iii) repeat: repeat, blocco di istruzioni
f1 <- function(y){
i <- 0;
repeat{
if (y <= 1) break;
y <- y/2;
i <- i + 1;
}
i
}
f(3); f(-3)
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
19
5. Nozioni di base: Import/Export Dati
13/16
• In R esistono diverse funzioni di input/output di file
• Per maggiori dettagli si consulti il manuale R Data Import/Export disponibile
on-line ed installato sulle macchine del laboratorio
• Facciamo qualche esempio:
m <- matrix(1:6,nrow=2);
v <- c("B","M");
dati <- data.frame(m,v);
write.table(dati, file="dati.df")
dati2 <- read.table("dati.df")
write(m, "dati");
dati3 <- scan(m)
Create una tabella in Excel, slavatela in estensione CSV e caricatela digitando: read.csv(file, header = TRUE, sep = ",", ...)
Dal prompt caricate dati in memoria: data(iris)
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
20
5. Nozioni di base: L’Ambiente Grafico
14/16
• R è dotato di un ambiente grafico versatile e facile da usare.
Facciamo qualche esempio:
x <- rnorm(50); plot(x)
plot(sin,0,2*pi, type="l", col="blue", main="Funzione seno")
data(iris); plot(iris); boxplot(iris[,1:4], col="yellow")
z <- rnorm(100); qqnorm(z)
• Per la grafica 3D: image, persp, contour
• Per un esempio di funzioni grafiche in R si esegua: demo(graphics)
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
21
5. Nozioni di base: Package
15/16
• Forniscono uno strumento semplice ed efficiente per gestire collezioni di
funzioni e di dati (librerie)
• Vengono caricati in memoria quando necessario e possono essere scaricati
in qualsiasi momento. Funzioni, dati e documentazione sono installati con
un singolo comando
• Estendibili ed adattabili: si possono creare nuovi package (si veda il manuale
on line “Writing R extensions”)
• I package possono essere installati:
1. direttamente dal sito CRAN selezionando dal menu Packages della finestra RGui l’opzione Install packages from CRAN
2. da file locali compressi selezionando dal menu Packages l’opzione Install
packages from local zip files
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
22
5. Nozioni di base: Package
16/16
• Analogamente l’aggiornamento di package già installati può essere effettuato
selezionando l’opzione Update packages from CRAN.
• Per caricare in memoria i package (per poterli utilizzare) si può:
1. Selezionare, dal menu Packages, l’opzione Load package
2. Digitare dal prompt: library(nome package)
Es: library(cluster),
library( ) apre una finestra contenente la lista dei pacchetti installati
• La documentazione sui package installati si trova
1. Selezionando dal menu Help l’opzione HTML help; poi Packages dalla pagina del browser, si sceglie il package desiderato e si accede alle
informazioni dettagliate in formato HTML
2. Digitare dal prompt: help(package=xxx)
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
23
6. Potenzialità e Limiti di R
• Potenzialità: infinite!
• Limiti: nessuno se non
- le nostre conoscenze teoriche
- la nostra fantasia e la nostra creatività
F. Marta L. Di Lascio – Fac. di Scienze Statistiche, Univ. di Bologna
24
Scarica

Laboratorio 0 - Dipartimento di Scienze Statistiche