SlideShare une entreprise Scribd logo
1  sur  117
Télécharger pour lire hors ligne
INTRODUZIONE
ALL’UTILIZZO DI R

 M.CALDERISI@KODE-SOLUTIONS.NET

                 14 E 15 MARZO 2012
 DIPARTIMENTO DI SCIENZE DELL'AMBIENTE E DELLA VITA
   UNIVERSITÀ DEGLI STUDI DEL PIEMONTE ORIENTALE
PRESENTAZIONE

LAUREATO IN CHIMICA A PISA NEL 2000

DOTTORATO IN METABOLOMICA NEL 2010

ASSEGNISTA PRESSO IL DIPARTIMENTO DI SCIENZE
AGRARIE E DEGLI ALIMENTI - UNIMORE



DAL 2003 CHEMIOMETRA /CONSULENTE

DAL 2012 ... KODE

                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
PRESENTAZIONE



WWW.CHEMIOMETRIA.IT (IN STATO DI COSTANTE NON
AGGIORNAMENTO!!)




CHEMIOMETRIA.WORDPRESS.COM/ (IDEM COME SOPRA!!)



                                 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
OUTLINE


GIORNO 1

  INTRODUZIONE AD R

GIORNO 2

  STATISTICA DI BASE, DISTRIBUZIONI, TEST, GRAFICA
  PER RAPPRESENTARE I DATI IN MODO EFFICACE,
  REGRESSIONE LINEARE MULTIPLA



                                   // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //cos’è?

R is data analysis software: data scientists, statisticians, analysts and others who need to
make sense of data use R for statistical analysis, data visualization, and predictive
modeling.

R is an environment for statistical analysis: Available in the R language are functions
for virtually every data manipulation, statistical model, or chart that the data analyst
could ever need

R is a programming language: you do data analysis in R by writing scripts and
functions in the R programming language. R is a complete, interactive, object-oriented
language: designed by statisticians, for statisticians.

R is an open-source software project. Not only does this mean that you can download and
use R for free, but the source code is also open for inspection and modification to anyone
who wants to see how the methods and algorithms work under the covers

R is a community. The project leadership include more than 20 leading statisticians and
computer scientists from around the world. In addition, there are more then 2 million
users worldwide.

                                                               // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //cos’è?

PRO:
   gratuito, multi-piattaforma,
   implementa la stragrande maggioranza degli algoritmi e delle procedure
   statistiche attualmente disponibili,
   facilmente interfacciabile con quasi tutto,
   gestito dagli sviluppatori, non da commerciali
   comunità on-line ampia e viva
   è un linguaggio di programmazione, quindi è molto flessibile


CONTRO:
   decisamente poco user-friendly
   curva di apprendimento inizialmente ostica
   è un più linguaggio di programmazione che un tipico software di statistica
                                                       // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //storia

R può essere considerato come una implementazione di S
(ambiente/linguaggio per l’analisi dei dati), che è una linguaggio
sviluppato presso i BELL Laboratories della AT&T nel 1976

All’inizio degli anni ‘90 R. Gentleman e R. Ihaka (University of
Auckland, NZ) iniziano lo sviluppo di R

Nel 1997 è nato l'R Development Core Team, gruppo formato da
statistici di tutto il mondo che si occupano dello sviluppo e della
distribuzione del programma

Il codice sorgente di R è disponibile come "Free Software" il cui
utilizzo è regolato dalla GNU General Public License della Free
Software Foundation
                                                 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //descrizione

Vi è un nucleo centrale che contiene l’interprete di R e alcune
funzionalità di base

Tutte le altre funzionalità sono rese disponibili attraverso
pacchetti (packages)

Alcuni pacchetti (circa 25) sono presenti nella distribuzione base:
base, utils, stats, datasets, graphics, grDevices, methods, boot,
cluster, codetools, foreign, KernSmooth, lattice, mgcv, nlme,
rpart, survival, MASS

Vi sono poi circa 2000 pacchetti, resi disponibili da utilizzatori di
R (i Contributed Packages), che riguardano "tutto il resto"

                                                // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //web sources


Home page

  The R Project for statistical computing (http://www.r-
  project.org/)

Download

  The Comprehensive R Archive Network (CRAN) (http://cran.r-
  project.org/ - 3 mirror in Italia, Milano, Padova e Palermo)

CRAN Task Views (http://cran.r-project.org/web/views/)


                                            // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //web sources

Stack Over Flow

   Se avete delle domande questo potrebbe essere il posto giusto per
   trovare delle risposte (tag “r”)

The Video Rchive

   registrazioni di interventi a congressi o a user meetings

#rstats su Twitter

R-bloggers

   blog aggregator di contenuti raccolti da altri bloggers che scrivono
   su R (in inglese)
                                                  // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //packages


http://cran.stat.unipd.it/ (o altri mirror accessibili dal sito
ufficiale di R: http://www.r-project.org/index.html)

http://www.inside-r.org/packages

http://crantastic.org/ (package selezionati per interesse)

http://dirk.eddelbuettel.com/cranberries/ (aggregatore di
aggiornamenti)



                                                // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //testi


Chemometrics with R - Multivariate Data Analysis in the Natural
Sciences and Life Sciences di Ron Wehrens (Springer). Package:
ChemometricsWithR

Introduction to Multivariate Statistical Analysis in
Chemometrics di Kurt Varmuza e Peter Filzmoser (CRC Press).
Package: chemometrics

Libri...



                                           // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //user groups

Rante

   Collocazione: Padova                         Da pochi giorni esiste
   Organizzatori: associazione R.O.S.P.O.
                                                  anche MilanoR
   Blog: http://rante.org

   Mailing list: http://groups.google.com/group/rante

Torino R net

   Collocazione: Torino

   Organizzatori: Alessandra Durio, Daniele Amberti, Matteo Morini, Pietro Terna

   Web site: http://torinor.net/

                                                        // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //screenshots




                  // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //screenshots




                  // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //Rstudio



R è un po’ ostico, soprattutto per chi usa windows, per il quale
esiste una interfaccia decisamente scomoda.

Fortunatamente ci viene in soccorso Rstudio, che è un
ambiente di sviluppo (IDE) gratuito ed open source, che può
essere utilizzato sul proprio desktop (Windows, Mac, or Linux)
o via web, utilizzando RStudio Server.




                                            // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //RStudio




              // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //file



R “produce” due tipi di file:

. R, l’equivalente di un file di testo o di un file .m (contiene, ad
esempio, le function)

.Rdata, raccoglie gli oggetti (ovvero la variabili, le matrici, i
vettori che abbiamo creato). E’ l’equivalente di un .mat




                                                 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //Concetti di base



R è un linguaggio object-oriented

Quasi qualunque cosa, dentro R, è un oggetto

Un oggetto è una “entità che R crea e manipola: variabili,
matrici, stringhe di caratteri, funzioni...”




                                           // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //Concetti di base


Oggetti

Packages

Sintassi

Data types/structures

Functions



                            // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //un oggetto...

   x <- 1                # x è un oggetto (numerico) di R

   x + x

   x*100



   y <- “casa”                 # anche y è un oggetto (stringa) di
   R



Suggerimento: conviene sempre aprire un file .R (ctrl/cmd+shift+N) ed utilizzarlo per tenere traccia del
                               proprio lavoro (usare # per i commenti)


                                                                         // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //un oggetto...

esercizio 1: creo un “oggetto” usando R come “calcolatrice”

      Calcolare il valore di y al variare di x

            y




            y


   π = pi
                                                 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //un oggetto...

esercizio 1: creo un “oggetto” usando R come “calcolatrice”
     > x <- 2
     > (1/sqrt(x-1))*exp(1/(5-x))
     [1] 1.395612

     > x <- 3
     > (1/sqrt(x-1))*exp(1/(5-x))
     [1] 1.165822

     > x <- 10
     > (1/sqrt(x-1))*exp(1/(5-x))
     [1] 0.2729103

     > s <- 1; m <- 4; x <-2
     > (1/(sqrt(2 * pi)* s))* exp(-((x - m)^2/(2 * s^2)))
     [1] 0.05399097

     > s <- 2; m <- 2; x <- 1
     > (1/(sqrt(2 * pi)* s))* exp(-((x - m)^2/(2 * s^2)))
     [1] 0.1760327                            // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //workspace


Salviamo quanto fatto in un file che contiene tutti i nostri
“oggetti”...un file “.RData”. In alternativa

save(x, file=”esercizio.Rdata”)



RStudio ci da l’opportunità di lavorare in un project (.Rproj), in
cui conservare tutto ciò che produciamo



                                               // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //workspace


Con dir() si visualizzano i nomi dei file presenti nella directory
di lavoro

dir()

Con ls() si visualizzano i nomi degli oggetti memorizzati nel
workspace

ls()



                                              // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //workspace


Per eliminare uno o più oggetti dallo spazio di lavoro utilizzo

rm(x)



Per eliminare tutti gli oggetti presenti nello spazio di lavoro, uso:

rm(list = ls())



                                                // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //workspace

Comandi per la gestione dello spazio di lavoro sono:

   source("comandi.R") # legge il file comandi.R ed esegue i
   comandi in esso contenuti

   save(x, y, file = "xy.Rdata") # salva solo gli oggetti x
   e y nel file indicato

   load("xy.Rdata") # legge il file indicato e ripristina gli
   oggetti precedentemente salvati




                                                  // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //gestione car telle

 Per verificare quale sia l’attuale cartella di lavoro

 getwd() oppure ctrl+shift +K



 Per cambiare directory di lavoro:

 setwd(.../nomecartella)


Suggerimento: una volta scelta la cartella di lavoro con ctrl+D, individuo il percorso con setwd() e lo
   inserisco in getwd() (sul file aperto in precedenza) per avere sempre lo spazio di lavoro pronto


                                                                          // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //gli altri oggetti

Vettori

Matrici

Array

Liste

Data Frames

Funzioni



                                 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //vettori


Per creare un vettore il comando di base è c()

numbers <- c(1,2,3,4,5)

towns <- c(“Pisa”, “Lucca”, “Livorno”)

...aggiungo un dato mancante

y <- c(1,2,3,NA)




                                                 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //vettori

Un vettore si può costruire anche in altri modi:

a <- 1:8 # crea una successione di numeri da 1 a 8

b <- seq(from=1, to=8, by=1) # crea una successione di
numeri da 1 a 8 con il passo indicato con by

c <- seq(from=1, to=8, length=5) # crea una successione
di lunghezza = ‘length’ di numeri da 1 a 8

d <- rep(1,5) # replica 1, 5 volte




                                               // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i vettori

a <- 1:5

b <- 2:6

calcolare

a+b         length(a)   log(a)

a*b         prod(b)     a*2+b

a>b         mean(a)     plot(a)




                                  // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i vettori


     Esercizio 2

     Dati valori: 26, 13, 46, 32, 34, 17, 35, 18, 47, 14, 48, 16




1.   costruire un vettore e determinarne lunghezza, somma e prodotto degli
     elementi

2. calcolare poi media e varianza




                                                          // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i vettori

Esercizio 2

x <- c(26, 13, 46, 32, 34, 17, 35, 18, 47, 14, 48, 16)

length(x)

sum(x)

prod(x) [1] 9.155457e+16

media <- sum(x)/length(x)

varianza <- sum((x-media)^2)/(length(x)-1)




                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //vettori (estrazione di elementi)

Dato

a <- 1:5

calcola:

a[2]       # estraggo il secondo elemento

a[a>=3]    # estraggo gli elementi con valore maggiore uguale a 3

a[c(1,3)] # estraggo il primo ed il terzo elemento

a[-3]      # estraggo tutti gli elementi eccetto il terzo




                                             // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //vettori (estrazione di elementi)

ESERCIZIO 3

Dati i vettori:

x <- c(11, 41, 26, 25, 11, 10, 40, 12, 50, 25)

y <- c(19, 7, 15, 9, 14, 13, 5, 20)

a. trovare i valori di x superiori al massimo di y

b. sommare gli elementi di y minori o uguali a 10

c. sommare gli elementi di x con valori inferiori a 20 o superiori a 40

d. quanti elementi di x sono maggiori di 30

                                                       // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //vettori (estrazione di elementi)

x <- c(11, 41, 26, 25, 11, 10, 40, 12, 50, 25)

y<-c(19, 7,15, 9,14,13, 5,20)

x[x > max(y)] [1] 41 26 25 40 50 25

sum(y[y >= 10]) [1] 81

sum(x[x<20], x[x>40]) [1] 135

sum(x>30) [1] 3




                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //fattori

I fattori sono “vettori” che rappresentano variabili che possono assumere solo
valori discreti (livelli).

vet <- c("a", "b", "a", "a", "c", "b", "c")

fat <- factor(vet)

levels(fat)          # mostra i livelli del fattore

str(fat)             # mostra la struttura del fattore

summary(fat) o table(fat)

                     # mostrano le frequenze dei livelli


                                                       // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //matrici



Una matrice è un insieme di elementi di uno stesso tipo (numerici,
testuali,...), con due dimensioni

a <- 1:8

A <- matrix(a, nrow=2, ncol=4, byrow=F)




                                                    // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //matrici



Una matrice può essere creata anche unendo vettori per riga o per colonna

a <- 1:8

b <- 11:18

Ac <-cbind(a,b)            # affianco i vettori per colonna

Ar <-rbind(a,b)            # affianco i vettori per riga




                                                     // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con le matrici



A <- matrix(1:8, nrow=2)

B <- matrix(11:18,nrow=2)

Calcolo

A+B            A*B

A-B            A/B




                            // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con le matrici

At <- t(A)     # trasposta di A

dim(At)        # dimensioni di At

Calcolo

At%*%B         # prodotto tra matrici



colSums()    colMeans()

rowSums()    rowMeans()


                                    // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con le matrici



ESERCIZIO 4

Data una matrice K

K <- matrix(1:12,nrow=3)

costruire una matrice KT in cui sia riportata K con, in aggiunta, le sue
somme di riga e di colonna




                                                     // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con le matrici




                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con le matrici



# nomino le righe

rownames(A) <- c('r1', 'r2')

# nomino le colonne

colnames(A) <- c('c1', 'c2', 'c3', 'c4')




                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con le matrici

Ogni elemento è identificato da due coordinate [i, j]

# estraggo un elemento

A[1,3]

# estraggo una riga

A[1,]

# estraggo una colonna

A[,2]

# estraggo una parte di dati

A[1:2,c(2,4)]



                                                        // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con le matrici

ESERCIZIO 5

estrarre dalla matrice KT , definita precedentemente, tutte le colonne di quelle righe in
cui gli elementi della prima colonna sono maggiori di 2




selezione elementi 2 e 4 riga , dalla 2 alla 3
colonna



estrarre righe e colonne in cui elementi>max
colonna 2
                                                             // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con le matrici




KT[KT[,1]>2,]




                          // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //array




Equivale ad una matrice, ma può avere più di due dimensioni

arr <- array(1:24, dim=c(2,3,4))

dim(arr)




                                                  // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //liste



Le liste sono delle raccolte di altri oggetti, che possono anche essere di diverso
tipo e dimensione tra loro

lista<-list(matrix(1:9,nrow=3),rep(0,3),c
('bianco','nero'))

lista[[1]]            # per estrarre gli elementi




                                                         // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //dataframe



Il dataframe è l’oggetto più importante.

   Può contenere colonne di natura diversa (numeri, fattori,...).

   Le righe e le colonne possono essere nominate




                                                   // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //dataframe



Per creare un dataframe il comando è data.frame()

   Si può creare “da zero”

   x.df <- data.frame(ID=c(1,2,3), sex=factor(c
   ("M", "F", "F")), age=c(23,24,43), row.names=1)




                                               // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //dataframe

Si può creare unendo più vettori e, ad esempio, nominando successivamente righe
e colonne

      a=c(1,2,3)

      b=factor(c("M", "F", "F"))

      c=c(23,24,43)

x2.df <- data.frame(a,b,c)

      colnames(x2.df) <- c("ID", "Sex", "Age")

      rownames(x2.df) <- x2.df$ID

x2.df <- x2.df[,-1]



                                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //dataframe

Ci sono due modi per aggiungere altre variabili:

Soluzione 1

      vt <- c(7,8,7)           # vettore

      x3.df <- data.frame(x2.df, Vote = vt)



      vt <- matrix(c(7,8,7,5,4,3), nrow=3)                             # matrice

      x4.df <- data.frame(x2.df, Vote = vt)



                                                   // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //dataframe

Ci sono due modi per aggiungere altre variabili:

Soluzione 2

      vt <- c(7,8,7)           # vettore

      x2.df$Vote <- vt



      vt <- matrix(c(7,8,7,5,4,3), nrow=3)                             # matrice

      x2.df$Vote <- vt



                                                   // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //dataframe



ESERCIZIO 6

  Aggiungere al data frame x4.df una colonna contenente la
  media dei voti




                                            // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //dataframe



ESERCIZIO 6

  Average <- (x4.df$Vote.1 + x4.df$Vote.2)/2

  X <- data.frame(x4.df,Average)




                                   // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i dataframe



L’estrazione dei dati funziona esattamente come per matrix,

In più è possibile effettuare ricerche mirate, sfruttando anche
appositi operatori logici e di confronto

Operatori di confronto




                                               // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operatori logici e di confronto



Operatori di confronto   Operatori logici




< minore
> maggiore
                         & per AND
<= minore uguale
                         | per OR
>= maggiore uguale
                         ! per NOT
== uguale
!= diverso

                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i dataframe


Estraggo i dati per i soggetti di sesso femminile

x4.df[x4.df$Sex=="F",]

Estraggo i dati per i soggetti di sesso femminile con Vote.1
maggiore di 7

x4.df[x4.df$Sex=="F" & 4v.df$Vote.1>7,]




                                              // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i dataframe


Una alternativa più versatile è data dalla funzione subset

x.sub <- subset(dati, condizione, eventuale
selezione delle variabili da includere o da
escludere)

x.sub <- subset(x4.df, subset=x4.df$Sex=="F",
select= "Age")




                                             // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i dataframe

str()      # per vedere la struttura del dataset

summary() # per avere delle statistiche di base

fix()     # per editare rapidamente il dataset (non
funziona in RStudio)

attach()/detach() # per collegare e scollegare il
dataset semplificandone l’accesso

Esempio

attach(x4.df)

a<-subset(x4.df,Age>30)

detach()
                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i dataframe

ESERCIZIO 7

Creare questo data.frame

v0 <- c(1:15)

v1 <- paste(sample(LETTERS,15),sample(letters,15),sep="")

v2 <- factor(sample(c("FC","RA","RN"),15,replace=TRUE))

v3 <- sample(19:65,15,replace=TRUE)

v4 <- sample(1:5,15,replace=TRUE)

v5 <- matrix(sample(50:100,45,replace=TRUE),nrow=15)

dfSpese <- data.frame(v0,v1,v2,v3,v4,v5,stringsAsFactors=FALSE)

names(dfSpese) <- c
("Progr","Sigla","Prov","Eta","nComp","sPane","sFruVer","sLatte")

                                                // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i dataframe



1. Aggiungere poi una variabile con la spesa complessiva per
   famiglia

2. Selezionare le famiglie con spesa totale superiore alla media

3. Per questo sottoinsieme calcolare l’età media del capofamiglia, le
   spese medie pro-capite dei singoli generi alimentari e quante sono
   queste famiglie per provincia




                                                 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i dataframe

Punto 1

dfSpese1 <- cbind(dfSpese, SpesaTot=rowSums(dfSpese[,c
(6:8)]))

oppure

attach(dfSpese)

dfSpese1 <- cbind(dfSpese, SpesaTot=(sPane+sFruVer
+sLatte))

detach(dfSpese)


                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //operazioni con i dataframe


Punto 2

dfSpese.M <- subset(dfSpese1, SpesaTot>mean(SpesaTot))

Punto 3

colMeans(dfSpese.M[,c
("Eta","sPane","sFruVer","sLatte")])

summary(dfSpese.M$Prov)




                                       // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //packages


Le funzioni di R sono raccolte in packages

E’ possibile installare un package direttamente dalla GUI

install.packages()

Per utilizzarlo è necessario “caricarlo”

require()

library()


                                             // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //function



La sintassi generica per chiamare una funzione è

functionname(arglist)

dove arglist è una lista di argomenti separati da una virgola

Esempio: sd(x, na.rm = FALSE)




                                             // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //function



La sintassi per creare una funzione è

nomeFunzione <- function(arg1, arg2,...){

}



che si usa così: output <- nomeFunzione (arg1, arg2,...)




                                        // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //impor tare i dati

R è in grado di leggere moltissimi formati, utilizzando comandi di base o
ricorrendo a package specifici.

Per importare un file di testo (csv) si usa read.table() ... o RStudio!

X <- read.table(file, header=T, sep=”;”, dec=”.”)

file = nome del file (si opera da dentro la cartella
che lo contiene)

header = T o F specifica se la prima riga contiene i
nomi delle variabili o meno

sep = indica il separatore dei campi: , ; t” (tab) ...

dec = è il separatore decimale: , o .

                                                       // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //espor tare i dati



Il modo più semplice e veloce consiste nello scrivere un file txt o csv
nella directory di lavoro, con il comando write.table()

write.table(x, file = "nomefile.txt
oppure .csv", append = FALSE, sep = " ,
oppure ;", na = "NA", dec = ".", row.names =
TRUE, col.names = TRUE)




                                                // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
R //help


Per accedere direttamente all’help di un determinato comando

help(nomecomando) oppure ?nomecomando

Nel caso non si conosca con sicurezza il nome del comando si può
fare una ricerca estesa con

??nomecomando

In RStudio di può anche premere F1 con il cursore sul nome del
comando (con tab si vedono gli input)


                                            // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
OUTLINE


STATISTICA DI BASE

TEST UNIVARIATI PARAMETRICI

TEST UNIVARIATI NON PARAMETRICI

DISTRIBUZIONI

GRAFICA



                                  // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
STATISTICA DI BASE




STATISTICA DI BASE

La funzione principale è summary, che restituisce: minimo,
massimo, media, mediana, percentili e numero di missing value




                                          // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
STATISTICA DI BASE

MISSING VALUE

in R si indicano con NA

  is.na() per vedere dove sono

  sum(is.na()) per contarli

  complete.case() indica quali campioni non hanno NA

  na.omit() restituisce l’oggetto senza i campioni con NA

in genere si possono gestire dalle funzioni stesse, ad esempio
mean(x, na.rm=T)
                                              // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
STATISTICA DI BASE


TAVOLE DI FREQUENZA

  ad esempio table(cyl, vs) ...sul dataset (mtcars)

  data(mtcars)

  attach(mtcars)

  table(cyl, vs)

  detach(mtcars)



                                            // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
STATISTICA DI BASE



CORRELAZIONE

cor(mtcars, use="complete.obs", method="pearson")

cov(mtcars, use="complete.obs")

methods= pearson, spearman, kendall




                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
TEST UNIVARIATI PARAMETRICI

TEST UNIVARIATI PARAMETRICI

La funzione principale è t.test()

# due campioni indipendenti
t.test(y~x) # dove y è numerica e x è un fattore binario

# due campioni indipendenti
t.test(y1,y2) # dove y1 e y2 sono numeriche

# due campioni accoppiati
t.test(y1,y2,paired=TRUE) # dove y1 e y2 sono numeriche

# one samle t-test
t.test(y,mu=3) # Ho: mu=3

   Si può usare var.equal = TRUE per specificare “varianze uguali”. Si
   può usare alternative="less" o "greater" per specificate il test ad
   una coda.

   bartlett.test() per verificare l’omogeneità delle varianze

                                                  // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
TEST UNIVARIATI NON
           PARAMETRICI

TEST UNIVARIATI NON PARAMETRICI

# due campioni indipendenti
wilcox.test(y~x) # dove y è numerica e x è un fattore
binario

# due campioni indipendenti
wilcox.test(y1,y2) # dove y1 e y2 sono numeriche

# paired t-test
wilcox.test(y1,y2,paired=TRUE) # dove y1 e y2 sono
numeriche

  Si può usare alternative="less" o "greater" per
  specificate il test ad una coda.

                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
DISTRIBUZIONI




DISTRIBUZIONI (vedi file codice)




                                   // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI

         What can R do for you
          this is what I mean by
         “R has the most advanced graphic system”




                         Random edge graph

    100 nodes
     50 edges                                         a                                    b
                                                                    degree
                               Figure 12: A heatmap representation of the CLL data. Genes were selected
                                                                  distribution
                               using a t-test comparing those with a progressive disease and those with a
                                                                                            &"""
                                                                                                                                    +,-./0
                               stable disease.                                                 %""
                                                                                                                                      ($!#
                                                                                                                                      (!)'
                                                                                                                                      #*!&
                                                                                                                                      #()"
                                                                                                                                      #!&%
                                                                                               $""                                    '%$)
                               4.5   Heatmaps                                                                                         '(&(
                                                                                                                                      '&$#
                                                                                               #""
                                                                                                                                      !%&!
                                                                                                                                      !#$&
                               In Figure 12 a heatmap showing genes selected according to the p-value in a                            !&&"
                                                                                                                                      &)(%
                                                                                                                                      &#")
                               t-test comparing those with stable disease to those with progressive disease.
                                                                                               !""
                                                                                                                                      &"((
                                                                                                                                       )"#

                               The top bar contains one small block for each sample, those samples that
                                                                                                 "
                                                                                                                                       '(!
                                                                                                                                        &

                               correspond to the stable disease phenotype have a dark colored block, those
                                                                                                     !""   #""   $""   %""   &"""



                               with progressive disease a light colored block. It is not surprising that the
                               two groups are well separated (all the dark blocks are to the left), since that
                                                      c                                   d
                               is how genes were selected.

                               4.6   Diagnostics
                               The RNA digestion plot, Figure 13, indicates that there is in fact one unusual
                               array, CLL1. These plots show the is a relationship between the probe
                               position and intensity. In general, the relationship is non-constant, and


                                                                     21




                                                   Figure 8: Four different visualizations of a scatterplot of flow cytometry Press
                                                                                                   Hosted by The Berkeley Electronic
Thursday, 16 June 2011                             data (forward light scatter versus side light scatter). a: the usual scatterplot.
                                                   Because of the large number of points, it is a rather featureless black blot. b:
                                                   the result of a hexagon binning procedure. The color code at each hexagon
                                                   represents the number of data points that it contains. c: color representation
                                                   of smooth point densities calculated from the data using a kernel density
                                                                                                                                             Past, Present and Future of R
                                                   estimator. In the sparse regions of the density, the plot is augmented by
                                                   black dots that represent individual data points. In the denser regions,
                                                   these are omitted. d : usual scatterplot with points colored according to the
                                                                                                                                             First Turin R net conference, 16-June-2011
                                                   local density.
GRAFICI


PER CREARE UN GRAFICO IL COMANDO DI BASE È
plot()
PLOT IN GENERE SI USA PER FARE I GRAFICI A
DISPERSIONE


UTILIZZIAMO UN DATASET DI ESEMPIO INCLUSO IN R:
MTCARS
attach(mtcars)


                                    // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI

CI SONO DIVERSE OPZIONI CHE SI POSSONO USARE PER
CUSTOMIZZARE L’ASPETTO DI UN GRAFICO:
type per definire il tipo di grafico
cex per intervenire sulla dimensione dei font
pch per intervenire sulla forma dei “punti”
col per cambiare i colori
PER AVERE PIÙ INFORMAZIONI
help (par)
oppure http://www.statmethods.net/advgraphs/
parameters.html

                                    // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI




          // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI


IN UN GRAFICO È POSSIBILE SOSTITUIRE I PUNTI CON DEL
TESTO: IL COMANDO È
           text()
SI POSSONO POI SPECIFICARE IL TITOLO DEL GRAFICO
(MAIN) ED I NOMI DEGLI ASSI
           xlab e ylab
SI POSSONO INTRODURRE LINEE DI RIFERIMENTO
           abline()


                                    // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI

Per creare grafici con una (o più) linea sia usa

lines()
Questo comando però segue sempre plot (con l’opzione type=”n”), perchè da solo non è
in grado di fare un grafico.

Un importante parametro di lines è type, che indica il tipo di linea che vogliamo
disegnare:
   p= punti                     l= linea                   o=punti sulla linea

   b=punti uniti da linee       s= scalini                 n=niente


 UN ALTRO PARAMETRO IMPORTANTE È LTY CHE DETERMINA IL TIPO DI
 LINEA

   1= continua                  2= trattini                3= puntini
GRAFICI



LEGENDA
E’ una funzione con molte opzioni, la più delicata è quella
relativa al posizionamento, dato che potrebbe andare a coprire parti
utili del grafico
legend (location, title, legend,...)
location si può mettere in due modi (vedi file)




                                               // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI

PER SALVARE UN GRAFICO IL COMANDO DIPENDE DAL TIPO DI
FILE CHE SI VUOLE SALVARE
pdf("mygraph.pdf") pdf file
png("mygraph.png") png file
jpeg("mygraph.jpg") jpeg file
bmp("mygraph.bmp") bmp file


NELL’HELP DI CIASCUNA FUNZIONE SONO DESCRITTI I
DETTAGLI SPECIFICI PER CIASCUN SALVATAGGIO.
IN RSTUDIO LA PROCEDURA È SEMPLIFICATA

                                     // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI

OGNI VOLTA CHE FACCIO UN NUOVO GRAFICO, QUESTO MI
SOVRASCRIVE IL PRECEDENTE. PER EVITARE CHE CIÒ
ACCADA APRO UN ALTRA FINESTRA PER OSPITARE IL
NUOVO GRAFICO


windows() # per windows
quartz()oppure X11()# per MacOs e Linux


Anche in questo caso RStudio ci viene in aiuto, conservando una
timeline completa dei nostri grafici

                                           // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI




COMBINARE PIÙ PLOT
Una utile alternativa è quella fare più grafici insieme,
utilizzando i comandi par() e mfrow()




                                              // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI


Istogrammi
hist(mpg)


Kernel density plot
plot(density(mpg), main="Kernel Density of Miles
Per Gallon")
nota: kernel density estimation is a non-parametric way
of estimating the probability density function of a
random variable



                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI




DOT PLOT
dotchart(mtcars$mpg,labels=row.names
(mtcars),cex=.7,main="Gas Milage for Car
Models", xlab="Miles Per Gallon")




                                 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI


Bar plot
counts <- table(mtcars$gear)
barplot(counts, main="Car Distribution",
    xlab="Number of Gears")


nota: non confondere gli istogrammi con i grafici a
barre!!




                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI


BOX PLOT
boxplot(mpg~cyl,data=mtcars, main="Car Milage
Data",xlab="Number of Cylinders", ylab="Miles
Per Gallon")


La funzione boxplot si può utilizzare anche per estrarre statistiche
dal dataset




                                               // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI



SCATTER PLOT
Come abbiamo già visto il comando principale per fare uno
scatterplot è plot().
E’ possibile però fare anche scatterplot multipli, con il comando
pairs()
pairs(mtcars[,1:3], main="Scatterplot Matrix")




                                               // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI



HIGH DENSITY PLOT
Quando è necessario mettere in grafico moltissimi punti, che
possono essere anche in gran parte sovrapposti
smoothScatter(x,y)




                                            // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI


SCATTER PLOT TRIDIMENSIONALI
library(scatterplot3d)
scatterplot3d(wt,disp,mpg, main="3D
Scatterplot")
Se devo esaminare più di tre variabili
library(Rcmdr)
scatter3d(wt, disp, mpg)



                                         // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI


CORRELOGRAMMI
install.packages(corrgram)
library(corrgram)
corrgram(mtcars, order=TRUE,
lower.panel=panel.shade, upper.panel=panel.pie,
text.panel=panel.txt, main="Correlazioni di
mtcars")




                                 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI

PACKAGE SPECIFICI



ggplot2   http://had.co.nz/ggplot2/



iplots    http://rosuda.org/iplots/



lattice   Lattice is a powerful high-level data visualization system,
          with an emphasis on multivariate data
                                                // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI



GGPLOT2 (vedi file codice)




                                   // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI


IPLOTS / JGR (http://rforge.net/JGR/files/)

     (vedi file codice)




                                              // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI


Trellis graph (package=”lattice”)
Un grafico trellis mostra una o più
variabili, condizionate rispetto ad
un’altra o più variabili fattoriali.
Per esempio ~x|A mostra la variabile
numerica x per ciascun livello del
fattore A




                                       // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI



MATPLOT
Si usa per mettere in grafico le colonne di una matrice, rispetto a
quelle di un altra. Ad esempio un set di spettri rispetto alle relative
lunghezze d’onda
E’ interessante, soprattutto in questo caso, la funzione
manipulate, che ci mette a disposizione RStudio




                                                // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI

MAPPE
Si può usare il package “map”




                                // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI

COLORI
display.brewer.all()




                                 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI


ESERCIZIO - ANSCOMBE’S QUARTET
Importa il file e verifica:

- le medie,

- le deviazioni standard,

- i coefficienti di correlazione tra X123 e Y1, Y2, Y3 e tra X4 e Y4,

- coefficienti di regressione e R2, tra le medesime coppie

...fai i grafici




                                                             // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
GRAFICI



ESERCIZIO - ANSCOMBE’S QUARTET
Anscombe's quartet comprises four datasets that have identical simple statistical
properties, yet appear very different when graphed.


Source: Anscombe, F.J. "Graphs in Statistical Analysis." The American Statistician. Vol. 27, No. 1 (1973):
19.




                                                                           // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
REGRESSIONE LINEARE MULTIPLA



Il comando di base per effettuare una regressione lineare,
univariata o multivariata che sia, è lm()

     ad esempio:

     mod <- lm(y~x, data=mydata)

     summay(mod)




                                              // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
REGRESSIONE LINEARE MULTIPLA


Chiedo qualche altra informazione utile

     coefficiets(mod) # coefficienti

     confint(mod,level=0.95) # intervalli di confidenza

     fitted(mod) # valori calcolati

     residuals(mod) # residui

     anova(mod) # tabella anova



                                          // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
REGRESSIONE LINEARE MULTIPLA


Plot dei residui

      stdPred <- scale( predict(mod))

      stdRes <- scale(resid(mod))

      plot(stdPred, stdRes, main = "Standardized
      Residuals Plot", xlab = "Standardized Predicted
      Values", ylab = "Standardized Residuals")

      abline(h=0)




                                        // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
REGRESSIONE LINEARE MULTIPLA


Istogramma dei residui

     hist(stdR, freq = FALSE)

     curve(dnorm, add = TRUE)

Q-Q plot

     qqnorm(stdRes)

     abline(0,1)



                                // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
REGRESSIONE LINEARE MULTIPLA




Confronto tra misurati e predetti

     plot(y,fitted(mod))

     abline(a=1,b=1, col="red", lty=2))




                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
REGRESSIONE LINEARE MULTIPLA




Faccio qualche plot diagnostico

     layout(matrix(c(1,2,3,4),2,2)) # optional 4 graphs/
     page

     plot(fit)




                                      // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
REGRESSIONE LINEARE MULTIPLA

ASTRO.SWARTHMORE.EDU/ASTRO121/ANSCOMBE.HTML


Esercizio 1

     Utilizzando il dataset stackloss, calcolo lo stack loss se
     airflow=72, water temperature=20 e acid
     concentration=85

     determinarne l’intervallo di confidenza (con α=0.95)




                                              // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
REGRESSIONE LINEARE MULTIPLA


Esercizio 2

     Utilizzando il dataset enrollmentForecast, calcolare il
     modello di regressione per determinate il fall enrollment
     (ROLL) in base all’ unemployment rate (UNEM) e al
     number of spring high school graduates (HGRAD)

     calcolare ROLL se UNEM=9% e HGRAD=100000

     aggiungo la variabile INC e riprovo



                                             // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
REGRESSIONE LINEARE MULTIPLA




Abbiamo calcolato due modelli di regressione (esercizio 2). Ora li
voglio confrontare

        anova(twoPredictorModel, threePredictorModel)




                                              // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
REGRESSIONE LINEARE MULTIPLA


In caso voglia considerare anche delle interazioni tra i fattori

         ad esempio

twoPredictorModel <- lm(ROLL~UNEM+HGRAD+UNEM:HGRAD,
dataset_enrollmentForecast)

         oppure

twoPredictorModel <- lm(ROLL~UNEM*HGRAD,
dataset_enrollmentForecast)



                                               // Dott. Marco Calderisi - m.calderisi@kode-solutions.net

Contenu connexe

En vedette

Grammar Of Graphics: past, present, future
Grammar Of Graphics: past, present, futureGrammar Of Graphics: past, present, future
Grammar Of Graphics: past, present, futureHadley Wickham
 
Laboratorio Probabilidad 1/3
Laboratorio Probabilidad 1/3Laboratorio Probabilidad 1/3
Laboratorio Probabilidad 1/3cbpresentaciones
 
Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concettiVincenzo De Maio
 
Elisa Teodoro, Clase 5, Funciones
Elisa Teodoro, Clase 5, FuncionesElisa Teodoro, Clase 5, Funciones
Elisa Teodoro, Clase 5, FuncionesInfoUdo.com.ve
 
Ruby es un lenguaje de programación interpretado
Ruby es un lenguaje de programación interpretadoRuby es un lenguaje de programación interpretado
Ruby es un lenguaje de programación interpretadoYulgrecia2011
 
Scheduling power-aware abstract
Scheduling power-aware abstractScheduling power-aware abstract
Scheduling power-aware abstractVincenzo De Maio
 
Elisa Teodoro, Aplicacion de Derivadas, Clase 2
Elisa Teodoro, Aplicacion de Derivadas, Clase 2Elisa Teodoro, Aplicacion de Derivadas, Clase 2
Elisa Teodoro, Aplicacion de Derivadas, Clase 2InfoUdo.com.ve
 
Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16Luis Pons
 
ECUACIONES DIFERENCIALES CON DERIVE
ECUACIONES DIFERENCIALES CON DERIVEECUACIONES DIFERENCIALES CON DERIVE
ECUACIONES DIFERENCIALES CON DERIVEJorge Paz
 
2015 06-27 use-r2015_dendextend_tal_galili_01
2015 06-27 use-r2015_dendextend_tal_galili_012015 06-27 use-r2015_dendextend_tal_galili_01
2015 06-27 use-r2015_dendextend_tal_galili_01Tal Galili
 
Ejercicios resueltos en r
Ejercicios resueltos en rEjercicios resueltos en r
Ejercicios resueltos en rzasque11
 
An introduction to structural equation models in R using the Lavaan package
An introduction to structural equation models in R using the Lavaan packageAn introduction to structural equation models in R using the Lavaan package
An introduction to structural equation models in R using the Lavaan packageNoam Ross
 
Introduction to R Graphics with ggplot2
Introduction to R Graphics with ggplot2Introduction to R Graphics with ggplot2
Introduction to R Graphics with ggplot2izahn
 

En vedette (20)

Introduzione a R
Introduzione a RIntroduzione a R
Introduzione a R
 
Grammar Of Graphics: past, present, future
Grammar Of Graphics: past, present, futureGrammar Of Graphics: past, present, future
Grammar Of Graphics: past, present, future
 
Laboratorio Probabilidad 1/3
Laboratorio Probabilidad 1/3Laboratorio Probabilidad 1/3
Laboratorio Probabilidad 1/3
 
Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concetti
 
R_note_ODE_ver1.0
R_note_ODE_ver1.0R_note_ODE_ver1.0
R_note_ODE_ver1.0
 
Elisa Teodoro, Clase 5, Funciones
Elisa Teodoro, Clase 5, FuncionesElisa Teodoro, Clase 5, Funciones
Elisa Teodoro, Clase 5, Funciones
 
Ruby es un lenguaje de programación interpretado
Ruby es un lenguaje de programación interpretadoRuby es un lenguaje de programación interpretado
Ruby es un lenguaje de programación interpretado
 
Grafici
GraficiGrafici
Grafici
 
Scheduling power-aware abstract
Scheduling power-aware abstractScheduling power-aware abstract
Scheduling power-aware abstract
 
Elisa Teodoro, Aplicacion de Derivadas, Clase 2
Elisa Teodoro, Aplicacion de Derivadas, Clase 2Elisa Teodoro, Aplicacion de Derivadas, Clase 2
Elisa Teodoro, Aplicacion de Derivadas, Clase 2
 
Programacion en R
Programacion en RProgramacion en R
Programacion en R
 
Abstract tesi
Abstract tesiAbstract tesi
Abstract tesi
 
Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16
 
ECUACIONES DIFERENCIALES CON DERIVE
ECUACIONES DIFERENCIALES CON DERIVEECUACIONES DIFERENCIALES CON DERIVE
ECUACIONES DIFERENCIALES CON DERIVE
 
9 introduzione r
9   introduzione r9   introduzione r
9 introduzione r
 
2015 06-27 use-r2015_dendextend_tal_galili_01
2015 06-27 use-r2015_dendextend_tal_galili_012015 06-27 use-r2015_dendextend_tal_galili_01
2015 06-27 use-r2015_dendextend_tal_galili_01
 
Ejercicios resueltos en r
Ejercicios resueltos en rEjercicios resueltos en r
Ejercicios resueltos en r
 
An introduction to structural equation models in R using the Lavaan package
An introduction to structural equation models in R using the Lavaan packageAn introduction to structural equation models in R using the Lavaan package
An introduction to structural equation models in R using the Lavaan package
 
Introduction to R Graphics with ggplot2
Introduction to R Graphics with ggplot2Introduction to R Graphics with ggplot2
Introduction to R Graphics with ggplot2
 
Apuntes de prácticas de DERIVE
Apuntes de prácticas de DERIVEApuntes de prácticas de DERIVE
Apuntes de prácticas de DERIVE
 

Similaire à Introduzione a R

Chemiometria e R
Chemiometria e RChemiometria e R
Chemiometria e RMCalderisi
 
Workshop di Chemiometria 2011 - Abano Laziale
Workshop di Chemiometria 2011 - Abano LazialeWorkshop di Chemiometria 2011 - Abano Laziale
Workshop di Chemiometria 2011 - Abano LazialeMarco Calderisi
 
InsulaR: una comunità cagliaritana di utenti di R
InsulaR: una comunità cagliaritana di utenti di RInsulaR: una comunità cagliaritana di utenti di R
InsulaR: una comunità cagliaritana di utenti di RDavide Massidda
 
InsulaR: un gruppo cagliaritano di utenti di R (Davide Massidda)
InsulaR: un gruppo cagliaritano di utenti di R (Davide Massidda)InsulaR: un gruppo cagliaritano di utenti di R (Davide Massidda)
InsulaR: un gruppo cagliaritano di utenti di R (Davide Massidda)Francesco Cabiddu
 
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...Marko Paliska
 
4 1 presentazione esercitazione 11 12
4 1 presentazione esercitazione 11 12 4 1 presentazione esercitazione 11 12
4 1 presentazione esercitazione 11 12 Gabriela Baron
 
4 1 presentazione esercitazione 11 12 (34)
4 1 presentazione esercitazione 11 12 (34)4 1 presentazione esercitazione 11 12 (34)
4 1 presentazione esercitazione 11 12 (34)LeNS_slide
 
16. Creazione collettiva
16. Creazione collettiva16. Creazione collettiva
16. Creazione collettivaRoberto Polillo
 
4 1 presentazione_esercitazione_13_14
4 1 presentazione_esercitazione_13_144 1 presentazione_esercitazione_13_14
4 1 presentazione_esercitazione_13_14LeNS_slide
 
i-BIO_verifica_ispettiva_20_marzo_2014
i-BIO_verifica_ispettiva_20_marzo_2014i-BIO_verifica_ispettiva_20_marzo_2014
i-BIO_verifica_ispettiva_20_marzo_2014Massimo Natale
 
3 5 strumenti_mpds_vezzoli_2013-14
3 5 strumenti_mpds_vezzoli_2013-143 5 strumenti_mpds_vezzoli_2013-14
3 5 strumenti_mpds_vezzoli_2013-14LeNS_slide
 
4.Ed Esercitazioni Corso Risorse Elettroniche Per La Ricerca
4.Ed Esercitazioni Corso Risorse Elettroniche Per La Ricerca4.Ed Esercitazioni Corso Risorse Elettroniche Per La Ricerca
4.Ed Esercitazioni Corso Risorse Elettroniche Per La Ricercabibliobioing
 
Coding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleCoding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleAlessandri Giuseppe
 
0 0 presentazione dxsa vezzoli_polimi_11.12
0 0 presentazione dxsa vezzoli_polimi_11.120 0 presentazione dxsa vezzoli_polimi_11.12
0 0 presentazione dxsa vezzoli_polimi_11.12Gabriela Baron
 
Paola Gargiulo "Open Access and Open Data in practice: l'esperienza e le iniz...
Paola Gargiulo "Open Access and Open Data in practice: l'esperienza e le iniz...Paola Gargiulo "Open Access and Open Data in practice: l'esperienza e le iniz...
Paola Gargiulo "Open Access and Open Data in practice: l'esperienza e le iniz...GIDIF-RBM
 
4 1 presentazione esercitazione 14 15 (30)
4 1 presentazione esercitazione 14 15 (30)4 1 presentazione esercitazione 14 15 (30)
4 1 presentazione esercitazione 14 15 (30)LeNS_slide
 

Similaire à Introduzione a R (20)

Chemiometria e R
Chemiometria e RChemiometria e R
Chemiometria e R
 
Workshop di Chemiometria 2011 - Abano Laziale
Workshop di Chemiometria 2011 - Abano LazialeWorkshop di Chemiometria 2011 - Abano Laziale
Workshop di Chemiometria 2011 - Abano Laziale
 
InsulaR: una comunità cagliaritana di utenti di R
InsulaR: una comunità cagliaritana di utenti di RInsulaR: una comunità cagliaritana di utenti di R
InsulaR: una comunità cagliaritana di utenti di R
 
InsulaR: un gruppo cagliaritano di utenti di R (Davide Massidda)
InsulaR: un gruppo cagliaritano di utenti di R (Davide Massidda)InsulaR: un gruppo cagliaritano di utenti di R (Davide Massidda)
InsulaR: un gruppo cagliaritano di utenti di R (Davide Massidda)
 
G. Barcaroli - Introduzione a R
G. Barcaroli - Introduzione a RG. Barcaroli - Introduzione a R
G. Barcaroli - Introduzione a R
 
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...
Progetto e sviluppo di un’applicazione per la gestione di un reagentario per ...
 
4 1 presentazione esercitazione 11 12
4 1 presentazione esercitazione 11 12 4 1 presentazione esercitazione 11 12
4 1 presentazione esercitazione 11 12
 
4 1 presentazione esercitazione 11 12 (34)
4 1 presentazione esercitazione 11 12 (34)4 1 presentazione esercitazione 11 12 (34)
4 1 presentazione esercitazione 11 12 (34)
 
16. Creazione collettiva
16. Creazione collettiva16. Creazione collettiva
16. Creazione collettiva
 
Vb.net
 Vb.net Vb.net
Vb.net
 
4 1 presentazione_esercitazione_13_14
4 1 presentazione_esercitazione_13_144 1 presentazione_esercitazione_13_14
4 1 presentazione_esercitazione_13_14
 
i-BIO_verifica_ispettiva_20_marzo_2014
i-BIO_verifica_ispettiva_20_marzo_2014i-BIO_verifica_ispettiva_20_marzo_2014
i-BIO_verifica_ispettiva_20_marzo_2014
 
3 5 strumenti_mpds_vezzoli_2013-14
3 5 strumenti_mpds_vezzoli_2013-143 5 strumenti_mpds_vezzoli_2013-14
3 5 strumenti_mpds_vezzoli_2013-14
 
Java&Solidarieta
Java&SolidarietaJava&Solidarieta
Java&Solidarieta
 
LucianoZu_CV
LucianoZu_CVLucianoZu_CV
LucianoZu_CV
 
4.Ed Esercitazioni Corso Risorse Elettroniche Per La Ricerca
4.Ed Esercitazioni Corso Risorse Elettroniche Per La Ricerca4.Ed Esercitazioni Corso Risorse Elettroniche Per La Ricerca
4.Ed Esercitazioni Corso Risorse Elettroniche Per La Ricerca
 
Coding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionaleCoding, pattern e pensiero computazionale
Coding, pattern e pensiero computazionale
 
0 0 presentazione dxsa vezzoli_polimi_11.12
0 0 presentazione dxsa vezzoli_polimi_11.120 0 presentazione dxsa vezzoli_polimi_11.12
0 0 presentazione dxsa vezzoli_polimi_11.12
 
Paola Gargiulo "Open Access and Open Data in practice: l'esperienza e le iniz...
Paola Gargiulo "Open Access and Open Data in practice: l'esperienza e le iniz...Paola Gargiulo "Open Access and Open Data in practice: l'esperienza e le iniz...
Paola Gargiulo "Open Access and Open Data in practice: l'esperienza e le iniz...
 
4 1 presentazione esercitazione 14 15 (30)
4 1 presentazione esercitazione 14 15 (30)4 1 presentazione esercitazione 14 15 (30)
4 1 presentazione esercitazione 14 15 (30)
 

Dernier

TeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfTeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfteccarellilorenzo
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxteccarellilorenzo
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxteccarellilorenzo
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxlorenzodemidio01
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticanico07fusco
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxteccarellilorenzo
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxsasaselvatico
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024IISGiovanniVallePado
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereMarco Chizzali
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...Nguyen Thanh Tu Collection
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 

Dernier (17)

TeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfTeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdf
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 

Introduzione a R

  • 1. INTRODUZIONE ALL’UTILIZZO DI R M.CALDERISI@KODE-SOLUTIONS.NET 14 E 15 MARZO 2012 DIPARTIMENTO DI SCIENZE DELL'AMBIENTE E DELLA VITA UNIVERSITÀ DEGLI STUDI DEL PIEMONTE ORIENTALE
  • 2. PRESENTAZIONE LAUREATO IN CHIMICA A PISA NEL 2000 DOTTORATO IN METABOLOMICA NEL 2010 ASSEGNISTA PRESSO IL DIPARTIMENTO DI SCIENZE AGRARIE E DEGLI ALIMENTI - UNIMORE DAL 2003 CHEMIOMETRA /CONSULENTE DAL 2012 ... KODE // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 3. PRESENTAZIONE WWW.CHEMIOMETRIA.IT (IN STATO DI COSTANTE NON AGGIORNAMENTO!!) CHEMIOMETRIA.WORDPRESS.COM/ (IDEM COME SOPRA!!) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 4. OUTLINE GIORNO 1 INTRODUZIONE AD R GIORNO 2 STATISTICA DI BASE, DISTRIBUZIONI, TEST, GRAFICA PER RAPPRESENTARE I DATI IN MODO EFFICACE, REGRESSIONE LINEARE MULTIPLA // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 5. R //cos’è? R is data analysis software: data scientists, statisticians, analysts and others who need to make sense of data use R for statistical analysis, data visualization, and predictive modeling. R is an environment for statistical analysis: Available in the R language are functions for virtually every data manipulation, statistical model, or chart that the data analyst could ever need R is a programming language: you do data analysis in R by writing scripts and functions in the R programming language. R is a complete, interactive, object-oriented language: designed by statisticians, for statisticians. R is an open-source software project. Not only does this mean that you can download and use R for free, but the source code is also open for inspection and modification to anyone who wants to see how the methods and algorithms work under the covers R is a community. The project leadership include more than 20 leading statisticians and computer scientists from around the world. In addition, there are more then 2 million users worldwide. // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 6. R //cos’è? PRO: gratuito, multi-piattaforma, implementa la stragrande maggioranza degli algoritmi e delle procedure statistiche attualmente disponibili, facilmente interfacciabile con quasi tutto, gestito dagli sviluppatori, non da commerciali comunità on-line ampia e viva è un linguaggio di programmazione, quindi è molto flessibile CONTRO: decisamente poco user-friendly curva di apprendimento inizialmente ostica è un più linguaggio di programmazione che un tipico software di statistica // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 7. R //storia R può essere considerato come una implementazione di S (ambiente/linguaggio per l’analisi dei dati), che è una linguaggio sviluppato presso i BELL Laboratories della AT&T nel 1976 All’inizio degli anni ‘90 R. Gentleman e R. Ihaka (University of Auckland, NZ) iniziano lo sviluppo di R Nel 1997 è nato l'R Development Core Team, gruppo formato da statistici di tutto il mondo che si occupano dello sviluppo e della distribuzione del programma Il codice sorgente di R è disponibile come "Free Software" il cui utilizzo è regolato dalla GNU General Public License della Free Software Foundation // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 8. R //descrizione Vi è un nucleo centrale che contiene l’interprete di R e alcune funzionalità di base Tutte le altre funzionalità sono rese disponibili attraverso pacchetti (packages) Alcuni pacchetti (circa 25) sono presenti nella distribuzione base: base, utils, stats, datasets, graphics, grDevices, methods, boot, cluster, codetools, foreign, KernSmooth, lattice, mgcv, nlme, rpart, survival, MASS Vi sono poi circa 2000 pacchetti, resi disponibili da utilizzatori di R (i Contributed Packages), che riguardano "tutto il resto" // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 9. R //web sources Home page The R Project for statistical computing (http://www.r- project.org/) Download The Comprehensive R Archive Network (CRAN) (http://cran.r- project.org/ - 3 mirror in Italia, Milano, Padova e Palermo) CRAN Task Views (http://cran.r-project.org/web/views/) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 10. R //web sources Stack Over Flow Se avete delle domande questo potrebbe essere il posto giusto per trovare delle risposte (tag “r”) The Video Rchive registrazioni di interventi a congressi o a user meetings #rstats su Twitter R-bloggers blog aggregator di contenuti raccolti da altri bloggers che scrivono su R (in inglese) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 11. R //packages http://cran.stat.unipd.it/ (o altri mirror accessibili dal sito ufficiale di R: http://www.r-project.org/index.html) http://www.inside-r.org/packages http://crantastic.org/ (package selezionati per interesse) http://dirk.eddelbuettel.com/cranberries/ (aggregatore di aggiornamenti) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 12. R //testi Chemometrics with R - Multivariate Data Analysis in the Natural Sciences and Life Sciences di Ron Wehrens (Springer). Package: ChemometricsWithR Introduction to Multivariate Statistical Analysis in Chemometrics di Kurt Varmuza e Peter Filzmoser (CRC Press). Package: chemometrics Libri... // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 13. R //user groups Rante Collocazione: Padova Da pochi giorni esiste Organizzatori: associazione R.O.S.P.O. anche MilanoR Blog: http://rante.org Mailing list: http://groups.google.com/group/rante Torino R net Collocazione: Torino Organizzatori: Alessandra Durio, Daniele Amberti, Matteo Morini, Pietro Terna Web site: http://torinor.net/ // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 14. R //screenshots // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 15. R //screenshots // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 16. R //Rstudio R è un po’ ostico, soprattutto per chi usa windows, per il quale esiste una interfaccia decisamente scomoda. Fortunatamente ci viene in soccorso Rstudio, che è un ambiente di sviluppo (IDE) gratuito ed open source, che può essere utilizzato sul proprio desktop (Windows, Mac, or Linux) o via web, utilizzando RStudio Server. // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 17. R //RStudio // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 18. R //file R “produce” due tipi di file: . R, l’equivalente di un file di testo o di un file .m (contiene, ad esempio, le function) .Rdata, raccoglie gli oggetti (ovvero la variabili, le matrici, i vettori che abbiamo creato). E’ l’equivalente di un .mat // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 19. R //Concetti di base R è un linguaggio object-oriented Quasi qualunque cosa, dentro R, è un oggetto Un oggetto è una “entità che R crea e manipola: variabili, matrici, stringhe di caratteri, funzioni...” // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 20. R //Concetti di base Oggetti Packages Sintassi Data types/structures Functions // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 21. R //un oggetto... x <- 1 # x è un oggetto (numerico) di R x + x x*100 y <- “casa” # anche y è un oggetto (stringa) di R Suggerimento: conviene sempre aprire un file .R (ctrl/cmd+shift+N) ed utilizzarlo per tenere traccia del proprio lavoro (usare # per i commenti) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 22. R //un oggetto... esercizio 1: creo un “oggetto” usando R come “calcolatrice” Calcolare il valore di y al variare di x y y π = pi // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 23. R //un oggetto... esercizio 1: creo un “oggetto” usando R come “calcolatrice” > x <- 2 > (1/sqrt(x-1))*exp(1/(5-x)) [1] 1.395612 > x <- 3 > (1/sqrt(x-1))*exp(1/(5-x)) [1] 1.165822 > x <- 10 > (1/sqrt(x-1))*exp(1/(5-x)) [1] 0.2729103 > s <- 1; m <- 4; x <-2 > (1/(sqrt(2 * pi)* s))* exp(-((x - m)^2/(2 * s^2))) [1] 0.05399097 > s <- 2; m <- 2; x <- 1 > (1/(sqrt(2 * pi)* s))* exp(-((x - m)^2/(2 * s^2))) [1] 0.1760327 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 24. R //workspace Salviamo quanto fatto in un file che contiene tutti i nostri “oggetti”...un file “.RData”. In alternativa save(x, file=”esercizio.Rdata”) RStudio ci da l’opportunità di lavorare in un project (.Rproj), in cui conservare tutto ciò che produciamo // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 25. R //workspace Con dir() si visualizzano i nomi dei file presenti nella directory di lavoro dir() Con ls() si visualizzano i nomi degli oggetti memorizzati nel workspace ls() // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 26. R //workspace Per eliminare uno o più oggetti dallo spazio di lavoro utilizzo rm(x) Per eliminare tutti gli oggetti presenti nello spazio di lavoro, uso: rm(list = ls()) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 27. R //workspace Comandi per la gestione dello spazio di lavoro sono: source("comandi.R") # legge il file comandi.R ed esegue i comandi in esso contenuti save(x, y, file = "xy.Rdata") # salva solo gli oggetti x e y nel file indicato load("xy.Rdata") # legge il file indicato e ripristina gli oggetti precedentemente salvati // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 28. R //gestione car telle Per verificare quale sia l’attuale cartella di lavoro getwd() oppure ctrl+shift +K Per cambiare directory di lavoro: setwd(.../nomecartella) Suggerimento: una volta scelta la cartella di lavoro con ctrl+D, individuo il percorso con setwd() e lo inserisco in getwd() (sul file aperto in precedenza) per avere sempre lo spazio di lavoro pronto // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 29. R //gli altri oggetti Vettori Matrici Array Liste Data Frames Funzioni // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 30. R //vettori Per creare un vettore il comando di base è c() numbers <- c(1,2,3,4,5) towns <- c(“Pisa”, “Lucca”, “Livorno”) ...aggiungo un dato mancante y <- c(1,2,3,NA) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 31. R //vettori Un vettore si può costruire anche in altri modi: a <- 1:8 # crea una successione di numeri da 1 a 8 b <- seq(from=1, to=8, by=1) # crea una successione di numeri da 1 a 8 con il passo indicato con by c <- seq(from=1, to=8, length=5) # crea una successione di lunghezza = ‘length’ di numeri da 1 a 8 d <- rep(1,5) # replica 1, 5 volte // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 32. R //operazioni con i vettori a <- 1:5 b <- 2:6 calcolare a+b length(a) log(a) a*b prod(b) a*2+b a>b mean(a) plot(a) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 33. R //operazioni con i vettori Esercizio 2 Dati valori: 26, 13, 46, 32, 34, 17, 35, 18, 47, 14, 48, 16 1. costruire un vettore e determinarne lunghezza, somma e prodotto degli elementi 2. calcolare poi media e varianza // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 34. R //operazioni con i vettori Esercizio 2 x <- c(26, 13, 46, 32, 34, 17, 35, 18, 47, 14, 48, 16) length(x) sum(x) prod(x) [1] 9.155457e+16 media <- sum(x)/length(x) varianza <- sum((x-media)^2)/(length(x)-1) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 35. R //vettori (estrazione di elementi) Dato a <- 1:5 calcola: a[2] # estraggo il secondo elemento a[a>=3] # estraggo gli elementi con valore maggiore uguale a 3 a[c(1,3)] # estraggo il primo ed il terzo elemento a[-3] # estraggo tutti gli elementi eccetto il terzo // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 36. R //vettori (estrazione di elementi) ESERCIZIO 3 Dati i vettori: x <- c(11, 41, 26, 25, 11, 10, 40, 12, 50, 25) y <- c(19, 7, 15, 9, 14, 13, 5, 20) a. trovare i valori di x superiori al massimo di y b. sommare gli elementi di y minori o uguali a 10 c. sommare gli elementi di x con valori inferiori a 20 o superiori a 40 d. quanti elementi di x sono maggiori di 30 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 37. R //vettori (estrazione di elementi) x <- c(11, 41, 26, 25, 11, 10, 40, 12, 50, 25) y<-c(19, 7,15, 9,14,13, 5,20) x[x > max(y)] [1] 41 26 25 40 50 25 sum(y[y >= 10]) [1] 81 sum(x[x<20], x[x>40]) [1] 135 sum(x>30) [1] 3 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 38. R //fattori I fattori sono “vettori” che rappresentano variabili che possono assumere solo valori discreti (livelli). vet <- c("a", "b", "a", "a", "c", "b", "c") fat <- factor(vet) levels(fat) # mostra i livelli del fattore str(fat) # mostra la struttura del fattore summary(fat) o table(fat) # mostrano le frequenze dei livelli // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 39. R //matrici Una matrice è un insieme di elementi di uno stesso tipo (numerici, testuali,...), con due dimensioni a <- 1:8 A <- matrix(a, nrow=2, ncol=4, byrow=F) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 40. R //matrici Una matrice può essere creata anche unendo vettori per riga o per colonna a <- 1:8 b <- 11:18 Ac <-cbind(a,b) # affianco i vettori per colonna Ar <-rbind(a,b) # affianco i vettori per riga // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 41. R //operazioni con le matrici A <- matrix(1:8, nrow=2) B <- matrix(11:18,nrow=2) Calcolo A+B A*B A-B A/B // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 42. R //operazioni con le matrici At <- t(A) # trasposta di A dim(At) # dimensioni di At Calcolo At%*%B # prodotto tra matrici colSums() colMeans() rowSums() rowMeans() // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 43. R //operazioni con le matrici ESERCIZIO 4 Data una matrice K K <- matrix(1:12,nrow=3) costruire una matrice KT in cui sia riportata K con, in aggiunta, le sue somme di riga e di colonna // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 44. R //operazioni con le matrici // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 45. R //operazioni con le matrici # nomino le righe rownames(A) <- c('r1', 'r2') # nomino le colonne colnames(A) <- c('c1', 'c2', 'c3', 'c4') // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 46. R //operazioni con le matrici Ogni elemento è identificato da due coordinate [i, j] # estraggo un elemento A[1,3] # estraggo una riga A[1,] # estraggo una colonna A[,2] # estraggo una parte di dati A[1:2,c(2,4)] // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 47. R //operazioni con le matrici ESERCIZIO 5 estrarre dalla matrice KT , definita precedentemente, tutte le colonne di quelle righe in cui gli elementi della prima colonna sono maggiori di 2 selezione elementi 2 e 4 riga , dalla 2 alla 3 colonna estrarre righe e colonne in cui elementi>max colonna 2 // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 48. R //operazioni con le matrici KT[KT[,1]>2,] // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 49. R //array Equivale ad una matrice, ma può avere più di due dimensioni arr <- array(1:24, dim=c(2,3,4)) dim(arr) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 50. R //liste Le liste sono delle raccolte di altri oggetti, che possono anche essere di diverso tipo e dimensione tra loro lista<-list(matrix(1:9,nrow=3),rep(0,3),c ('bianco','nero')) lista[[1]] # per estrarre gli elementi // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 51. R //dataframe Il dataframe è l’oggetto più importante. Può contenere colonne di natura diversa (numeri, fattori,...). Le righe e le colonne possono essere nominate // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 52. R //dataframe Per creare un dataframe il comando è data.frame() Si può creare “da zero” x.df <- data.frame(ID=c(1,2,3), sex=factor(c ("M", "F", "F")), age=c(23,24,43), row.names=1) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 53. R //dataframe Si può creare unendo più vettori e, ad esempio, nominando successivamente righe e colonne a=c(1,2,3) b=factor(c("M", "F", "F")) c=c(23,24,43) x2.df <- data.frame(a,b,c) colnames(x2.df) <- c("ID", "Sex", "Age") rownames(x2.df) <- x2.df$ID x2.df <- x2.df[,-1] // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 54. R //dataframe Ci sono due modi per aggiungere altre variabili: Soluzione 1 vt <- c(7,8,7) # vettore x3.df <- data.frame(x2.df, Vote = vt) vt <- matrix(c(7,8,7,5,4,3), nrow=3) # matrice x4.df <- data.frame(x2.df, Vote = vt) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 55. R //dataframe Ci sono due modi per aggiungere altre variabili: Soluzione 2 vt <- c(7,8,7) # vettore x2.df$Vote <- vt vt <- matrix(c(7,8,7,5,4,3), nrow=3) # matrice x2.df$Vote <- vt // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 56. R //dataframe ESERCIZIO 6 Aggiungere al data frame x4.df una colonna contenente la media dei voti // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 57. R //dataframe ESERCIZIO 6 Average <- (x4.df$Vote.1 + x4.df$Vote.2)/2 X <- data.frame(x4.df,Average) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 58. R //operazioni con i dataframe L’estrazione dei dati funziona esattamente come per matrix, In più è possibile effettuare ricerche mirate, sfruttando anche appositi operatori logici e di confronto Operatori di confronto // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 59. R //operatori logici e di confronto Operatori di confronto Operatori logici < minore > maggiore & per AND <= minore uguale | per OR >= maggiore uguale ! per NOT == uguale != diverso // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 60. R //operazioni con i dataframe Estraggo i dati per i soggetti di sesso femminile x4.df[x4.df$Sex=="F",] Estraggo i dati per i soggetti di sesso femminile con Vote.1 maggiore di 7 x4.df[x4.df$Sex=="F" & 4v.df$Vote.1>7,] // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 61. R //operazioni con i dataframe Una alternativa più versatile è data dalla funzione subset x.sub <- subset(dati, condizione, eventuale selezione delle variabili da includere o da escludere) x.sub <- subset(x4.df, subset=x4.df$Sex=="F", select= "Age") // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 62. R //operazioni con i dataframe str() # per vedere la struttura del dataset summary() # per avere delle statistiche di base fix() # per editare rapidamente il dataset (non funziona in RStudio) attach()/detach() # per collegare e scollegare il dataset semplificandone l’accesso Esempio attach(x4.df) a<-subset(x4.df,Age>30) detach() // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 63. R //operazioni con i dataframe ESERCIZIO 7 Creare questo data.frame v0 <- c(1:15) v1 <- paste(sample(LETTERS,15),sample(letters,15),sep="") v2 <- factor(sample(c("FC","RA","RN"),15,replace=TRUE)) v3 <- sample(19:65,15,replace=TRUE) v4 <- sample(1:5,15,replace=TRUE) v5 <- matrix(sample(50:100,45,replace=TRUE),nrow=15) dfSpese <- data.frame(v0,v1,v2,v3,v4,v5,stringsAsFactors=FALSE) names(dfSpese) <- c ("Progr","Sigla","Prov","Eta","nComp","sPane","sFruVer","sLatte") // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 64. R //operazioni con i dataframe 1. Aggiungere poi una variabile con la spesa complessiva per famiglia 2. Selezionare le famiglie con spesa totale superiore alla media 3. Per questo sottoinsieme calcolare l’età media del capofamiglia, le spese medie pro-capite dei singoli generi alimentari e quante sono queste famiglie per provincia // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 65. R //operazioni con i dataframe Punto 1 dfSpese1 <- cbind(dfSpese, SpesaTot=rowSums(dfSpese[,c (6:8)])) oppure attach(dfSpese) dfSpese1 <- cbind(dfSpese, SpesaTot=(sPane+sFruVer +sLatte)) detach(dfSpese) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 66. R //operazioni con i dataframe Punto 2 dfSpese.M <- subset(dfSpese1, SpesaTot>mean(SpesaTot)) Punto 3 colMeans(dfSpese.M[,c ("Eta","sPane","sFruVer","sLatte")]) summary(dfSpese.M$Prov) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 67. R //packages Le funzioni di R sono raccolte in packages E’ possibile installare un package direttamente dalla GUI install.packages() Per utilizzarlo è necessario “caricarlo” require() library() // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 68. R //function La sintassi generica per chiamare una funzione è functionname(arglist) dove arglist è una lista di argomenti separati da una virgola Esempio: sd(x, na.rm = FALSE) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 69. R //function La sintassi per creare una funzione è nomeFunzione <- function(arg1, arg2,...){ } che si usa così: output <- nomeFunzione (arg1, arg2,...) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 70. R //impor tare i dati R è in grado di leggere moltissimi formati, utilizzando comandi di base o ricorrendo a package specifici. Per importare un file di testo (csv) si usa read.table() ... o RStudio! X <- read.table(file, header=T, sep=”;”, dec=”.”) file = nome del file (si opera da dentro la cartella che lo contiene) header = T o F specifica se la prima riga contiene i nomi delle variabili o meno sep = indica il separatore dei campi: , ; t” (tab) ... dec = è il separatore decimale: , o . // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 71. R //espor tare i dati Il modo più semplice e veloce consiste nello scrivere un file txt o csv nella directory di lavoro, con il comando write.table() write.table(x, file = "nomefile.txt oppure .csv", append = FALSE, sep = " , oppure ;", na = "NA", dec = ".", row.names = TRUE, col.names = TRUE) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 72. R //help Per accedere direttamente all’help di un determinato comando help(nomecomando) oppure ?nomecomando Nel caso non si conosca con sicurezza il nome del comando si può fare una ricerca estesa con ??nomecomando In RStudio di può anche premere F1 con il cursore sul nome del comando (con tab si vedono gli input) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 73. OUTLINE STATISTICA DI BASE TEST UNIVARIATI PARAMETRICI TEST UNIVARIATI NON PARAMETRICI DISTRIBUZIONI GRAFICA // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 74. STATISTICA DI BASE STATISTICA DI BASE La funzione principale è summary, che restituisce: minimo, massimo, media, mediana, percentili e numero di missing value // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 75. STATISTICA DI BASE MISSING VALUE in R si indicano con NA is.na() per vedere dove sono sum(is.na()) per contarli complete.case() indica quali campioni non hanno NA na.omit() restituisce l’oggetto senza i campioni con NA in genere si possono gestire dalle funzioni stesse, ad esempio mean(x, na.rm=T) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 76. STATISTICA DI BASE TAVOLE DI FREQUENZA ad esempio table(cyl, vs) ...sul dataset (mtcars) data(mtcars) attach(mtcars) table(cyl, vs) detach(mtcars) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 77. STATISTICA DI BASE CORRELAZIONE cor(mtcars, use="complete.obs", method="pearson") cov(mtcars, use="complete.obs") methods= pearson, spearman, kendall // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 78. TEST UNIVARIATI PARAMETRICI TEST UNIVARIATI PARAMETRICI La funzione principale è t.test() # due campioni indipendenti t.test(y~x) # dove y è numerica e x è un fattore binario # due campioni indipendenti t.test(y1,y2) # dove y1 e y2 sono numeriche # due campioni accoppiati t.test(y1,y2,paired=TRUE) # dove y1 e y2 sono numeriche # one samle t-test t.test(y,mu=3) # Ho: mu=3 Si può usare var.equal = TRUE per specificare “varianze uguali”. Si può usare alternative="less" o "greater" per specificate il test ad una coda. bartlett.test() per verificare l’omogeneità delle varianze // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 79. TEST UNIVARIATI NON PARAMETRICI TEST UNIVARIATI NON PARAMETRICI # due campioni indipendenti wilcox.test(y~x) # dove y è numerica e x è un fattore binario # due campioni indipendenti wilcox.test(y1,y2) # dove y1 e y2 sono numeriche # paired t-test wilcox.test(y1,y2,paired=TRUE) # dove y1 e y2 sono numeriche Si può usare alternative="less" o "greater" per specificate il test ad una coda. // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 80. DISTRIBUZIONI DISTRIBUZIONI (vedi file codice) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 81. GRAFICI What can R do for you this is what I mean by “R has the most advanced graphic system” Random edge graph 100 nodes 50 edges a b degree Figure 12: A heatmap representation of the CLL data. Genes were selected distribution using a t-test comparing those with a progressive disease and those with a &""" +,-./0 stable disease. %"" ($!# (!)' #*!& #()" #!&% $"" '%$) 4.5 Heatmaps '(&( '&$# #"" !%&! !#$& In Figure 12 a heatmap showing genes selected according to the p-value in a !&&" &)(% &#") t-test comparing those with stable disease to those with progressive disease. !"" &"(( )"# The top bar contains one small block for each sample, those samples that " '(! & correspond to the stable disease phenotype have a dark colored block, those !"" #"" $"" %"" &""" with progressive disease a light colored block. It is not surprising that the two groups are well separated (all the dark blocks are to the left), since that c d is how genes were selected. 4.6 Diagnostics The RNA digestion plot, Figure 13, indicates that there is in fact one unusual array, CLL1. These plots show the is a relationship between the probe position and intensity. In general, the relationship is non-constant, and 21 Figure 8: Four different visualizations of a scatterplot of flow cytometry Press Hosted by The Berkeley Electronic Thursday, 16 June 2011 data (forward light scatter versus side light scatter). a: the usual scatterplot. Because of the large number of points, it is a rather featureless black blot. b: the result of a hexagon binning procedure. The color code at each hexagon represents the number of data points that it contains. c: color representation of smooth point densities calculated from the data using a kernel density Past, Present and Future of R estimator. In the sparse regions of the density, the plot is augmented by black dots that represent individual data points. In the denser regions, these are omitted. d : usual scatterplot with points colored according to the First Turin R net conference, 16-June-2011 local density.
  • 82. GRAFICI PER CREARE UN GRAFICO IL COMANDO DI BASE È plot() PLOT IN GENERE SI USA PER FARE I GRAFICI A DISPERSIONE UTILIZZIAMO UN DATASET DI ESEMPIO INCLUSO IN R: MTCARS attach(mtcars) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 83. GRAFICI CI SONO DIVERSE OPZIONI CHE SI POSSONO USARE PER CUSTOMIZZARE L’ASPETTO DI UN GRAFICO: type per definire il tipo di grafico cex per intervenire sulla dimensione dei font pch per intervenire sulla forma dei “punti” col per cambiare i colori PER AVERE PIÙ INFORMAZIONI help (par) oppure http://www.statmethods.net/advgraphs/ parameters.html // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 84. GRAFICI // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 85. GRAFICI IN UN GRAFICO È POSSIBILE SOSTITUIRE I PUNTI CON DEL TESTO: IL COMANDO È text() SI POSSONO POI SPECIFICARE IL TITOLO DEL GRAFICO (MAIN) ED I NOMI DEGLI ASSI xlab e ylab SI POSSONO INTRODURRE LINEE DI RIFERIMENTO abline() // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 86. GRAFICI Per creare grafici con una (o più) linea sia usa lines() Questo comando però segue sempre plot (con l’opzione type=”n”), perchè da solo non è in grado di fare un grafico. Un importante parametro di lines è type, che indica il tipo di linea che vogliamo disegnare: p= punti l= linea o=punti sulla linea b=punti uniti da linee s= scalini n=niente UN ALTRO PARAMETRO IMPORTANTE È LTY CHE DETERMINA IL TIPO DI LINEA 1= continua 2= trattini 3= puntini
  • 87. GRAFICI LEGENDA E’ una funzione con molte opzioni, la più delicata è quella relativa al posizionamento, dato che potrebbe andare a coprire parti utili del grafico legend (location, title, legend,...) location si può mettere in due modi (vedi file) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 88. GRAFICI PER SALVARE UN GRAFICO IL COMANDO DIPENDE DAL TIPO DI FILE CHE SI VUOLE SALVARE pdf("mygraph.pdf") pdf file png("mygraph.png") png file jpeg("mygraph.jpg") jpeg file bmp("mygraph.bmp") bmp file NELL’HELP DI CIASCUNA FUNZIONE SONO DESCRITTI I DETTAGLI SPECIFICI PER CIASCUN SALVATAGGIO. IN RSTUDIO LA PROCEDURA È SEMPLIFICATA // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 89. GRAFICI OGNI VOLTA CHE FACCIO UN NUOVO GRAFICO, QUESTO MI SOVRASCRIVE IL PRECEDENTE. PER EVITARE CHE CIÒ ACCADA APRO UN ALTRA FINESTRA PER OSPITARE IL NUOVO GRAFICO windows() # per windows quartz()oppure X11()# per MacOs e Linux Anche in questo caso RStudio ci viene in aiuto, conservando una timeline completa dei nostri grafici // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 90. GRAFICI COMBINARE PIÙ PLOT Una utile alternativa è quella fare più grafici insieme, utilizzando i comandi par() e mfrow() // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 91. GRAFICI Istogrammi hist(mpg) Kernel density plot plot(density(mpg), main="Kernel Density of Miles Per Gallon") nota: kernel density estimation is a non-parametric way of estimating the probability density function of a random variable // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 92. GRAFICI DOT PLOT dotchart(mtcars$mpg,labels=row.names (mtcars),cex=.7,main="Gas Milage for Car Models", xlab="Miles Per Gallon") // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 93. GRAFICI Bar plot counts <- table(mtcars$gear) barplot(counts, main="Car Distribution", xlab="Number of Gears") nota: non confondere gli istogrammi con i grafici a barre!! // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 94. GRAFICI BOX PLOT boxplot(mpg~cyl,data=mtcars, main="Car Milage Data",xlab="Number of Cylinders", ylab="Miles Per Gallon") La funzione boxplot si può utilizzare anche per estrarre statistiche dal dataset // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 95. GRAFICI SCATTER PLOT Come abbiamo già visto il comando principale per fare uno scatterplot è plot(). E’ possibile però fare anche scatterplot multipli, con il comando pairs() pairs(mtcars[,1:3], main="Scatterplot Matrix") // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 96. GRAFICI HIGH DENSITY PLOT Quando è necessario mettere in grafico moltissimi punti, che possono essere anche in gran parte sovrapposti smoothScatter(x,y) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 97. GRAFICI SCATTER PLOT TRIDIMENSIONALI library(scatterplot3d) scatterplot3d(wt,disp,mpg, main="3D Scatterplot") Se devo esaminare più di tre variabili library(Rcmdr) scatter3d(wt, disp, mpg) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 99. GRAFICI PACKAGE SPECIFICI ggplot2 http://had.co.nz/ggplot2/ iplots http://rosuda.org/iplots/ lattice Lattice is a powerful high-level data visualization system, with an emphasis on multivariate data // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 100. GRAFICI GGPLOT2 (vedi file codice) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 101. GRAFICI IPLOTS / JGR (http://rforge.net/JGR/files/) (vedi file codice) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 102. GRAFICI Trellis graph (package=”lattice”) Un grafico trellis mostra una o più variabili, condizionate rispetto ad un’altra o più variabili fattoriali. Per esempio ~x|A mostra la variabile numerica x per ciascun livello del fattore A // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 103. GRAFICI MATPLOT Si usa per mettere in grafico le colonne di una matrice, rispetto a quelle di un altra. Ad esempio un set di spettri rispetto alle relative lunghezze d’onda E’ interessante, soprattutto in questo caso, la funzione manipulate, che ci mette a disposizione RStudio // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 104. GRAFICI MAPPE Si può usare il package “map” // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 105. GRAFICI COLORI display.brewer.all() // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 106. GRAFICI ESERCIZIO - ANSCOMBE’S QUARTET Importa il file e verifica: - le medie, - le deviazioni standard, - i coefficienti di correlazione tra X123 e Y1, Y2, Y3 e tra X4 e Y4, - coefficienti di regressione e R2, tra le medesime coppie ...fai i grafici // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 107. GRAFICI ESERCIZIO - ANSCOMBE’S QUARTET Anscombe's quartet comprises four datasets that have identical simple statistical properties, yet appear very different when graphed. Source: Anscombe, F.J. "Graphs in Statistical Analysis." The American Statistician. Vol. 27, No. 1 (1973): 19. // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 108. REGRESSIONE LINEARE MULTIPLA Il comando di base per effettuare una regressione lineare, univariata o multivariata che sia, è lm() ad esempio: mod <- lm(y~x, data=mydata) summay(mod) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 109. REGRESSIONE LINEARE MULTIPLA Chiedo qualche altra informazione utile coefficiets(mod) # coefficienti confint(mod,level=0.95) # intervalli di confidenza fitted(mod) # valori calcolati residuals(mod) # residui anova(mod) # tabella anova // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 110. REGRESSIONE LINEARE MULTIPLA Plot dei residui stdPred <- scale( predict(mod)) stdRes <- scale(resid(mod)) plot(stdPred, stdRes, main = "Standardized Residuals Plot", xlab = "Standardized Predicted Values", ylab = "Standardized Residuals") abline(h=0) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 111. REGRESSIONE LINEARE MULTIPLA Istogramma dei residui hist(stdR, freq = FALSE) curve(dnorm, add = TRUE) Q-Q plot qqnorm(stdRes) abline(0,1) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 112. REGRESSIONE LINEARE MULTIPLA Confronto tra misurati e predetti plot(y,fitted(mod)) abline(a=1,b=1, col="red", lty=2)) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 113. REGRESSIONE LINEARE MULTIPLA Faccio qualche plot diagnostico layout(matrix(c(1,2,3,4),2,2)) # optional 4 graphs/ page plot(fit) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 114. REGRESSIONE LINEARE MULTIPLA ASTRO.SWARTHMORE.EDU/ASTRO121/ANSCOMBE.HTML Esercizio 1 Utilizzando il dataset stackloss, calcolo lo stack loss se airflow=72, water temperature=20 e acid concentration=85 determinarne l’intervallo di confidenza (con α=0.95) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 115. REGRESSIONE LINEARE MULTIPLA Esercizio 2 Utilizzando il dataset enrollmentForecast, calcolare il modello di regressione per determinate il fall enrollment (ROLL) in base all’ unemployment rate (UNEM) e al number of spring high school graduates (HGRAD) calcolare ROLL se UNEM=9% e HGRAD=100000 aggiungo la variabile INC e riprovo // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 116. REGRESSIONE LINEARE MULTIPLA Abbiamo calcolato due modelli di regressione (esercizio 2). Ora li voglio confrontare anova(twoPredictorModel, threePredictorModel) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net
  • 117. REGRESSIONE LINEARE MULTIPLA In caso voglia considerare anche delle interazioni tra i fattori ad esempio twoPredictorModel <- lm(ROLL~UNEM+HGRAD+UNEM:HGRAD, dataset_enrollmentForecast) oppure twoPredictorModel <- lm(ROLL~UNEM*HGRAD, dataset_enrollmentForecast) // Dott. Marco Calderisi - m.calderisi@kode-solutions.net