SlideShare ist ein Scribd-Unternehmen logo
1 von 57
INTRODUZIONE A R
Un linguaggio di programmazione libero e gratuito…
…in salsa statistica
01/22/13        Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   2




Software libero
• “Free software” is a matter of liberty, not price. To
   understand the concept, you should think of “free”
   as in “free speech”, not as in “free beer”

• Free software is a matter of the users’ freedom to
   run, copy, distribute, study, change and improve the
   software.
                                          Richard Stallman
                                  Free Software Fundation
01/22/13          Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   3


Le libertà fondamentali del software
libero
• More precisely, it refers to four kinds of freedom, for the
   users of the software:
    • The freedom to run the program, for any purpose
      (freedom 0).
    • The freedom to study how the program works, and adapt
      it to your needs (freedom 1). Access to the source code is a
      precondition for this.
    • The freedom to redistribute copies so you can help your
      neighbor (freedom 2).
    • The freedom to improve the program, and release your
      improvements to the public, so that the whole community
      benefits (freedom 3).
01/22/13             Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   4



Home page di
R Project for
Statistical
Computing
www.r-project.org

1.Cosa è R
2.Accesso al CRAN,
Comprehensive R
Archive Network
3.Accesso alla
documentazione su
R di vario tipo e
livello
01/22/13        Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   5




Informazioni generali
• Sviluppato originariamente da Ihaka and Gentleman
  nella seconda metà degli anni ‘90
• Rilasciato come software libero sotto licenza GNU-GPL,
  attualmente sviluppato da un gruppo di lavoro
  denominato R-Development Core Team
• Software di riferimento per molti ricercatori, R
  rappresenta un sistema coerente e ben progettato
  entro il quale implementare le varie tecniche statistiche,
  matematiche, finanziarie…
• Download dal sito The Comprehensive R Archive
  Network (CRAN): cran.r-project.org
01/22/13           Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   6




Cosa è R?

Sul sito del
progetto esiste
un’ottima pagina
che risponde a
questa domanda
Cosa è R
• Un linguaggio e un ambiente per il calcolo statistico e la
  rappresentazione grafica
• È un progetto GNU simile al linguaggio S sviluppato da
  Chambers e coll. presso i Bell Labs e ne rappresenta una sua
  diversa implementazione, con alcune importanti differenze,
  e con una buona compatibilità
• È la base Open Source per la ricerca in statistica
  metodologica
01/22/13              Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   8




Cosa offre R
• Un ambiente interattivo per il calcolo statistico e la
  rappresentazione grafica dei dati basato su un dialetto del
  linguaggio S (è un cugino del notissimo S-Plus)
• Un linguaggio matriciale, basato sul paradigma funzionale e
  dotato di capacità di programmazione sia orientata agli
  oggetti, sia strutturata
    • Non necessita di dichiarazioni specifiche per definire gli array
    • Gli array possono essere definiti per concatenazione
    • Non necessita di iterazioni per operare sugli array
01/22/13             Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   9




Interfaccia
• R offre all’utente è un’interfaccia di base a linea di comando
• L’ambiente è interattivo: quando l’utente digita al prompt
  un’istruzione e preme invio, R la elabora e ne visualizza sullo
  schermo il risultato
• Fanno eccezione le istruzioni di assegnazione a seguito delle
  quali non è previsto alcun output

• Esistono molte interfacce grafiche alternative
   • Alcune rendono R simile ad altri ambienti di calcolo statistico con
     interfaccia grafica basata su menù
   • Altre sono maggiormente orientate alla programmazione
   • Maggiori info su http://www.sciviews.org/_rgui/
01/22/13   Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   10




La console a linea di comando
01/22/13         Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   11




L’SDK Rstudio


                                                        Oggetti nel Workspace


           Code editor




           R console
L’interfaccia a menù R Commander
01/22/13                       Dott. Marco Biffino - Statistica Demografia Matematica - Firenze          13




Alcuni esempi
• c(4, 6, 11, 3, 2)                     # creazione di un vettore e relativo output
• [1]      4    6 11   3   2

• > x<- c(4, 6, 11, 3, 2)               # memorizzazione di un vettore
• > x                                   # stampa dell’output
• [1]      4    6 11   3   2

• > y<- c(x, x^2, sqrt(x))             # creazione di un vettore a partire da ‘x’
• > y
•  [1]          4.000000   6.000000       11.000000          3.000000        2.000000        16.000000
•  [7]         36.000000 121.000000        9.000000          4.000000        2.000000         2.449490
• [13]          3.316625   1.732051        1.414214

• > A<- matrix(y, nrow=3, ncol=5)                     # creazione di una matrice a partire da ‘y’
• > A
•      [,1] [,2] [,3]    [,4]     [,5]
• [1,]    4    3   36 4.00000 3.316625
• [2,]    6    2 121 2.00000 1.732051
• [3,]   11   16    9 2.44949 1.414214
01/22/13                Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   14




Alcuni esempi
• > matrix(y, nrow=3, ncol=3) # crea la matrice prendendo i primi 9 elementi di ‘y’
•      [,1] [,2] [,3]
• [1,]    4    3   36
• [2,]    6    2 121
• [3,]   11   16    9

• > matrix(y, nrow=3, ncol=5) # crea la matrice
•      [,1] [,2] [,3]    [,4]     [,5]
• [1,]    4    3   36 4.00000 3.316625
• [2,]    6    2 121 2.00000 1.732051
• [3,]   11   16    9 2.44949 1.414214

• > matrix(y, nrow=3, ncol=4) # non crea la matrice perché 15 non è multiplo del
                                    # numero di colonne 4
• Warning message:
• In matrix(y, nrow = 3, ncol = 4) :
•     data length [15] is not a sub-multiple or multiple of the number of columns [4]
01/22/13                 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze          15




Alcuni esempi
• > sum(y)
• [1] 222.9124
• > mean(y)
• [1] 14.86083
• > sd(y)
• [1] 30.69358
• > s<- sqrt(sum((y-mean(y))^2)/(length(y)-1))
• > s
• [1] 30.69358
• > median(y)
• [1] 4
• > sort(y)
•    [1]   1.414214    1.732051   2.000000             2.000000        2.449490         3.000000
•    [7]   3.316625    4.000000   4.000000             6.000000        9.000000        11.000000
•   [13] 16.000000    36.000000 121.000000
•   > summary(y)
•      Min. 1st Qu.   Median      Mean 3rd Qu.   Max.
•     1.414   2.225    4.000    14.860 10.000 121.000
01/22/13                   Dott. Marco Biffino - Statistica Demografia Matematica - Firenze     16




Liste
                                                          • > l1<- list(pippo=c(1,2,3),
                                                            letters[1:3], matrix(1:9, nrow=3,
                                                            ncol=3))
                                                          • > l1

• R può gestire le liste                                  •          $pippo
                                                          •          [1] 1 2 3
• Una lista è un insieme ordinato di
  oggetti qualsiasi, anche di tipo                        •              [[2]]
  eterogeneo                                              •              [1] "a" "b" "c"
• Agli elementi di una lista può essere
                                                          •              [[3]]
  attribuito un nome                                      •                   [,1] [,2] [,3]
• Gli elementi di una lista sono                          •              [1,]    1    4    7
  accessibili anche attraverso l’indice di                •              [2,]    2    5    8
  posizione                                               •              [3,]    3    6    9

• Esistono funzioni specifiche che                        • > l1[[3]]
  consentono di manipolare le liste in                    •                 [,1] [,2] [,3]
  modo rapido ed efficiente                               •           [1,]     1    4    7
                                                          •           [2,]     2    5    8
                                                          •           [3,]     3    6    9
                                                          •   > l1[[3]][2,]
                                                          •           [1] 2 5 8
                                                          •   > l1$pippo
                                                          •   [1] 1 2 3
Data frames                            • > n <-
                                       •
                                                   c(2, 3, 5)
                                           > s <- c("aa", "bb", "cc")
                                       •   > b <- c(TRUE, FALSE, TRUE)
• I data frame sono un tipo di         •   > df <- data.frame(n, s, b)
  oggetto speciale destinato a         •   >df
  memorizzate le tabelle di dati       •            n s      b
• Un data frame è una semplice lista   •          1 2 aa TRUE
                                       •          2 3 bb FALSE
  di vettori, anche di tipo
                                       •          3 5 cc TRUE
  eterogeneo, della stessa
                                       •   > df$s
  lunghezza
                                       •          [1] aa bb cc
• R fornisce metodi per accedere       •          Levels: aa bb cc
  agevolmente ai dati in un data       •   > df[2:3, 1:2]
  frame                                •            n s
                                       •          2 3 bb
                                       •          3 5 cc
01/22/13            Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   18




Attributi degli oggetti
• È possibile specificare per ogni oggetto degli attributi
• Alcuni possono essere stabiliti arbitrariamente dall’utente
• Altri attributi – ad esempio dim, dimnames e class – hanno
  un significato specifico che consente ad R di espletare le sue
  funzioni in modo ottimale
• Tali attributi sono
    • Accessibili mediante la funzione attributes() e
    • Modificabili mediante attr()
01/22/13              Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   19




Paradigma funzionale
• In R, qualsiasi azione è definita mediante un’opportuna funzione
  alla quale vengono passati degli argomenti che possono essere
  oggetti (scalari, array o liste), parametri ed opzioni
• La chiamata di una funzione produce un risultato che può essere
    • visualizzato direttamente o
    • memorizzato assegnandolo ad un nome simbolico
• Gli utenti hanno la possibilità di definire nuove funzioni all’interno
  dello spazio di lavoro mediante la parola chiave function()
• Le funzioni utente costituiscono l’elemento fondamentale della
  programmazione nel linguaggio R e per l’espansione del sistema
  verso l’implementazione di nuove tecniche statistiche
01/22/13              Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   20




Esempio: definizione di nuova funzione
• Si vuole definire una funzione che calcola la deviazione standard con
   denominatore n anziché n-1:

• > sd.n<- function(x) sqrt(sum((x-mean(x))^2)/(length(x)))


• > sd.n(y)
• [1] 29.65281


• > sd.n(3*y+10)
• [1] 88.95843
01/22/13           Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   21




Esempio: intervalli di confidenza per proporzioni
• prop.ic<- function(cases, n, labels, level=0.95) {
•   p<- cases/n
•   z<- qnorm(level)
•   me<- z*sqrt(p*(1-p)/n)
•   ic1<- p-me
•   ic2<- p+me
•   res<- data.frame(cases=cases, size=n, prop=round(p*100,2),
  inf=round(ic1*100,2), sup=round(ic2*100, 2))
•   rownames(res)<- labels
•   return(res)
• }
Esempio: intervalli di confidenza per proporzioni
• Etich<- c("2000/16-45/Diagnosi/Fumatore", "2000/16-45/Diagnosi/ExFumatore", "2000/16-
  45/Diagnosi/MaiFumatore", "2000/46-65/Diagnosi/Fumatore", "2000/46-65/Diagnosi/ExFumatore",
  "2000/46-65/Diagnosi/MaiFumatore",            "2005/16-45/Diagnosi/Fumatore", "2005/16-
  45/Diagnosi/ExFumatore", "2005/16-45/Diagnosi/MaiFumatore", "2005/46-65/Diagnosi/Fumatore",
  "2005/46-65/Diagnosi/ExFumatore", "2005/46-65/Diagnosi/MaiFumatore")
• Casi<- c(324,146,513,221,285,519, 344,245,756, 193,336,448)
• Campione<- rep(c(983,1025,1345,977), each=3)
• prop.ic(cases=Casi, n=Campione, labels=Etich)



          •                                      cases   size    prop     inf     sup
          •   2000/16-45/Diagnosi/Fumatore         324    983   32.96   30.49   35.43
          •   2000/16-45/Diagnosi/ExFumatore       146    983   14.85   12.99   16.72
          •   2000/16-45/Diagnosi/MaiFumatore      513    983   52.19   49.57   54.81
          •   2000/46-65/Diagnosi/Fumatore         221   1025   21.56   19.45   23.67
          •   2000/46-65/Diagnosi/ExFumatore       285   1025   27.80   25.50   30.11
          •   2000/46-65/Diagnosi/MaiFumatore      519   1025   50.63   48.07   53.20
          •   2005/16-45/Diagnosi/Fumatore         344   1345   25.58   23.62   27.53
          •   2005/16-45/Diagnosi/ExFumatore       245   1345   18.22   16.48   19.95
          •   2005/16-45/Diagnosi/MaiFumatore      756   1345   56.21   53.98   58.43
          •   2005/46-65/Diagnosi/Fumatore         193    977   19.75   17.66   21.85
          •   2005/46-65/Diagnosi/ExFumatore       336    977   34.39   31.89   36.89
          •   2005/46-65/Diagnosi/MaiFumatore      448    977   45.85   43.23   48.48
01/22/13        Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   23




Programmazione orientata agli oggetti
• Le capacità di programmazione orientata agli oggetti si basa
  sulla possibilità di specificare e modificare lo speciale
  attributo class di un oggetto nello spazio di lavoro
• R gestisce le classi di oggetti in modo che sia possibile
  definire funzioni generiche le quali invocano
  automaticamente una funzione specifica, detta metodo,
  determinata proprio dalla classe dell’oggetto passato come
  argomento alla funzione generica
• Le funzioni print(), plot(), summary() ad esempio
  producono risultati diversi a seconda dell’oggetto cui
  vengono applicate
Esempio: calcolo dettagliato del test Chi quadro
• testchi2<- function(x, rn, cn) {              •   print.extchisq<- function(x) {
•   r<- length(rn)                              •     t<- x$test
•   c<- length(cn)                              •     p<- as.numeric(x$phi2)
•   tab<- matrix(x, r, c)                       •     v<- as.numeric(x$V)
•   rownames(tab)<- rn                          •     cat(" Sample size: ",x$n, "nn Observed
•   colnames(tab)<- cn
                                                      Freqs.:n")
•   n<- sum(tab)
                                                •     print(x$tab)
•   rel<- tab/n
•   rtot<- apply(tab, 1, sum)
                                                •     cat("n Relative Freqs.:n")
                                                •     print(x$rel)
•   rrel<- tab/rtot
•   ctot<- apply(tab, 2, sum)
                                                •     cat("n Row conditioned freq.:n")
                                                •     print(x$rrel)
•   crel<- tab/matrix(ctot, r, c, byrow=T)
•   test<- chisq.test(tab)
                                                •     cat("n Col conditioned freqs.:n")
                                                •     print(x$crel)
•   phi2<- test$statistic/n
•   V<- sqrt(phi2/(min(r,c)-1))
                                                •     cat("n Chi squared= ", t$statistic, ",
                                                    df= ", t$parameter, ", P-value= ",
•   res<- list(n=n, tab=tab, rel=rel,               t$p.value, "n Phi Squared= ", p, "n
  rrel=rrel, crel=crel, test=test, phi2=phi2,       Cramer's V: ", v, "n")
  V=V)                                          •   }
•   class(res)<- "extchisq"
•   return(res)
• }
01/22/13         Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   25




Automazione del lavoro
• Il sistema, inoltre, consente di automatizzare il lavoro
  mediante script
• Uno script è una sequenza di istruzioni del linguaggio R
  preventivamente registrate in un file di testo
• R è essenzialmente un linguaggio di programmazione
  interpretato, ma per i compiti più gravosi è possibile un
  agevole interfacciamento con librerie scritte nei linguaggi C,
  C++ e FORTRAN
• In questo ambito, sono molto utili gli ambienti tipo SDK
  come Rstudio o Eclipse
01/22/13              Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   26




Espandibilità con librerie esistenti
• R gode di una collezione molto ampia di librerie dedicate ad
  applicazioni specifiche
• Vi sono circa 1940 librerie ufficialmente supportate, molte altre
  sono disponibili da progetti collegati che utilizzano R come motore
  di calcolo
• La descrizione di una particolare libreria può essere consultata a
  partire dall’indirizzo: http://cran.stat.unipd.it/web/packages/
  available_packages_by_name.html
• Altre fonti sulle librerie sono
    • R Journal (dal 2009): http://journal.r-project.org/index.html
    • R News (fino al 2008): http://www.r-project.org/doc/Rnews/index.html
    • Journal of Statistical Software: http://www.jstatsoft.org/
    • CRAN Task Views: http://cran.r-project.org/web/views/
CRAN Task Views
• cran.r-
  project.org/web/views/
• Rappresentano un metodo
  rapido per guidare gli utenti
  nella scelta delle librerie da
  installare
• Installando/caricando la
  libreria ‘ctv’ diventano
  disponibili le funzioni che
  consentono
  l’installazione/aggiornamen
  to di tutte le librerie legate
  a una vista
• La vista ‘ClinicalTrials’ è
  sicuramente interessante
01/22/13          Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   28


Espandibilità mediante librerie create
dagli utenti
• R è un sistema progettato per essere espanso
  continuamente
• Difatti, oltre alla citata possibilità di definire funzioni utente,
  è dotato di strumenti e di metodi atti
   • a raccogliere tali funzioni in librerie (denominate packages
     nel gergo proprio di R),
   • a documentare in modo esauriente ogni funzione, e
   • a pacchettizzare le librerie per la distribuzione al pubblico
     attraverso il sito http://cran.r-project.org.
01/22/13        Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   29




Note sulle sessioni di lavoro
• Quando R è in esecuzione il workspace, o spazio di
  lavoro, è interamente contenuto nella memoria
  dell’elaboratore e contiene gli oggetti che vengono
  creati nel corso delle elaborazioni a seguito di
  operazioni di assegnazione a nomi simbolici — cioè i
  dati, i risultati e le eventuali funzioni create dall’utente
• In R, qualsiasi cosa venga assegnata ad un nome
  simbolico diviene un oggetto nello spazio di lavoro.
• È possibile salvare l’immagine del workspace in un file
  con estensione .RData nella directory di lavoro corrente.
01/22/13        Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   30




Istruzioni in R
• Le istruzioni possono essere:
    • Espressioni: cioè sequenzefinite di operandi e
      operatori che deve essere valutata,
    • Assegnazioni: in una delle seguenti forme:
      • > <nome> <- <espressione>
      • > assign(<nome>, <espressione>)
    • Chiamate di funzione,
    • Una combinazione delle precedenti
01/22/13         Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   31




Nomi simbolici
• La stringa <nome> sta ad indicare un generico nome
  simbolico usato per memorizzare il risultato della valutazione
  di <espressione> nello spazio di lavoro
• Come in molti altri linguaggi, i nomi simbolici sono costituiti
  da stringhe alfanumeriche in cui il primo carattere deve
  essere una lettera.
• In R esistono delle parole chiave che non è possibile usare
  come nomi simbolici e l’interprete delle istruzioni fa
  distinzione fra lettere maiuscole e minuscole
   • I nomi a e A sono considerati diversi, così come le funzioni
     f() ed F()
01/22/13          Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   32




Parole chiave riservate
Valori speciali                    Parole chiave del linguaggio
FALSE                              break
Inf                                else
NA                                 for
NaN                                function
NULL                               if
TRUE                               in
                                   next
                                   repeat
                                   while
01/22/13         Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   33


Visualizzazione dei risultati delle
elaborazioni
• Per visualizzare il valore assegnato ad un nome simbolico è
  necessario invocarne il nome al prompt dei comandi
• Nei listati dei programmi, invece, è necessario digitare
  l’istruzione print(<nome>)
01/22/13          Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   34




Uso non interattivo
• R offre anche la facoltà di lavorare in modo non interattivo
• Cioè la possibilità di inserire sequenze di istruzioni in un file di
  testo per automatizzare il lavoro
• Questi file possono essere letti dall’interprete dei comandi
  mediante l’istruzione
  source(<nomefile.r>, echo=T, print.eval=T)
01/22/13              Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   35


Istruzioni per la gestione della sessione di
lavoro
 Istruzione                   Risultato
 ls()                         Visualizza l’elenco degli oggetti contenuti nel
                              workspace.
 ls.str()                     Visualizza un elenco degli oggetti, aggiungendo
                              informazioni sul tipo dell’oggetto esul valore.
 rm(<nome>)                   Rimuove l’oggetto <nome> dal workspace.
 save(<nome>,              Salva nel file nomefile.rda l’oggetto<nome>.
 file=”nomefile.rda”)
 save(file=”nomefile.rda”) Salva l’immagine dell’intero workspace nel file
                           nomefile.rda. Questa immagine non sarà letta al
                           successivo riavvio del sistema, ma dovrà essere
                           ricaricata esplicitamente.
 load(file=”nomefile.rda”) Carica nello spazio di lavoro gli oggetti contenuti
                           nell’immagine nomefile.rda
01/22/13             Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   36


Istruzioni per la gestione della sessione di
lavoro
 Istruzione                         Risultato
 getwd()                            Fornisce la directory di lavoro corrente.
 setwd(”<directory>”)               Imposta la directory di lavoro.
 savehistory([file=                 Salva la cronologia dele istruzioni eseguite nel
 ”<nomefile.Rhistory>”])            file .Rhistory nella directory di lavoro corrente.
                                    Questo file viene letto all’avviosuccessivo del
                                    sistema.
 loadhistory(file=                  Carica la cronologia delle istruzioni contenuta nel
 ”<nomefile.Rhistory>”)             file nomefile.Rhistory.
 options()                          Visualizza le opzioni di sistema.
 options(<parametro>=               Imposta l’opzione <parametro> a <valore>.
 <valore>)
01/22/13             Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   37


Istruzioni per l’interrogazione dell’aiuto
in linea
 Istruzione                         Risultato
 help(”<parola_chiave>”)            Visualizza la pagina di aiuto relativa alla parola
 oppure ?<parola_chiave>            chiave del linguaggio R, se esiste, altrimenti
                                    visualizza un messaggio di errore.
 help.search(”<stringa>”)           Visualizza l’elenco delle pagine di aiutoche
                                    contengono <stringa>. È consigliabileinterrogare
                                    il sistema di aiuto conquesta istruzione quando
                                    non si conosceesattamente quale parola chiave
                                    cercare.
 help.start()                       Avvia il sistema di aiuto in formato HTML. Tutte le
                                    successive richieste di aiuto vengono inviate al
                                    browser.
 options(htmlhelp=FALSE)            Disattiva il sistema di aiuto in formato HTML.
 example(<argomento>)               Esegue il codice esemplificativo riportato in calce
                                    alla pagina relativa ad <argomento>
01/22/13             Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   38


Contenuti di una tipica pagina di
aiuto
Ogni pagina è identificata da un titolo ed è suddivisa nelle seguenti sezioni:
    • Description:            breve descrizione dell’argomento.
    • Usage:                  fornisce la sintassi da usare nella chiamata della funzione,
                              indicando il nome degli argomenti previsti e i loro
                              eventuali valori predefiniti, nella forma nome=valore.
    • Arguments:              riporta la lista degli argomenti, indicando per ogni
                              argomento il tipo dei suoi valori, l’obbligatorietà o
                              l’opzionalità dello stesso.
    • Details:                fornisce dettagli tecnici inerenti al modo in cui viene
                              eseguita la funzione.
    • Value:                  descrive la natura del risultato generato
    • Note :                  avvertenze utili, generalmente riguardanti il risultato
                              prodotto
    • References:             riferimenti bibliografici e documentali relativi alla
                              metodologia usata.
    • See Also:               indica quali argomenti del sistema di aiuto sono correlati
                              con l’argomento visualizzato.
    • Examples:               esempi di uso della funzione descritta.
Regressione multipla
• Tratto da                               • Sorgente dei dati:
  http://www.sci.usq.edu.au/courses/          http://www.amstat.org/publications/
  sta3301/resources/handouts/                 jse/datasets/fev.txt
  mrexampleR.pdf                          •   Descrizione:
• FEV (forced expiratory volume) is an    •   Le colonne sono separate da spazi
  index of pulmonary function that        •   Label Description
  measures the volume of air expelled
  after one second of constant effort.
                                          •      Age discrete measure, positive
  The data contains determinations of                  integer (years)
  FEV on 654 children and young adults    •      FEV continuous measure (liters)
  aged 6–22 who were seen in the          •      Height continuous measure (inches)
  Childhood Respiratory Disease Study     •      Sex discrete/nominal (Female /
  in 1980 in East Boston,                              Male)
  Massachusetts. The data are part of a   •      Smoke discrete/nominal
  larger study to follow the change in
                                                      (Nonsmoker / Smoker)
  pulmonary function over time in
  children
Regressione multipla
• Lettura dei dati
• fev <- read.table("F:cigarette.dat", header = TRUE)
• str(fev)
• 'data.frame':     654 obs. of 5 variables:
• $ Age    : int    9 8 7 9 9 8 6 6 8 9 ...
•    $ FEV   : num 1.71 1.72 1.72 1.56 1.9 ...
•    $ Height: num 57 67.5 54.5 53 57 61 58 56 58.5 60 ...
•    $ Sex   : Factor w/ 2 levels "Female","Male": 1 1 1 2 2 1 1 1 1 1 ...
•    $ Smoke : Factor w/ 2 levels "NonSmoker","Smoker": 1 1 1 1 1 1 1 ...
•   > head(fev)
•     Age   FEV Height    Sex     Smoke
•   1   9 1.708   57.0 Female NonSmoker
•   2   8 1.724   67.5 Female NonSmoker
•   3   7 1.720   54.5 Female NonSmoker
•   4   9 1.558   53.0   Male NonSmoker
•   5   9 1.895   57.0   Male NonSmoker
•   6   8 2.336   61.0 Female NonSmoker
Regressione multipla
                                                                     Histogram of fev$FEV                                                    Histogram of fev$Age
• Rappresentazione




                                        150




                                                                                                                               100 150
 grafica delle variabili:




                            Frequency




                                                                                                                   Frequency
                                        100
• > par(mfrow = c(3, 2))




                                        50




                                                                                                                               50
• > hist(fev$FEV)




                                        0




                                                                                                                               0
                                                           1          2          3          4        5        6                          5          10       15       20
• > hist(fev$Age)
                                                                                fev$FEV                                                            fev$Age
• > hist(fev$Height)
• > plot(fev$Sex)                                                   Histogram of fev$Height


• > plot(fev$Smoke)




                                                                                                                               300
                                        20 40 60 80
                            Frequency




                                                                                                                               200
                                                                                                                               100
                                        0




                                                                                                                               0
                                                      45       50         55         60         65       70   75                         Female                Male

                                                                               fev$Height
                                        400
                                        200
                                        0




                                                               NonSmoker                         Smoker
Regressione multipla
• Rappresentazione grafica
 delle variabili:                           Male
• > par(mfrow=c(1,1))                       Female

• > plot(FEV ~ Age, data=fev,




                                        5
 type = "n")

• > points(FEV ~ Age, data=fev,




                                        4
  subset=fev$Sex=="Male",
  pch = 19, col = "lightblue")    FEV
• > points(FEV ~ Age, data=fev,
                                        3
  subset=fev$Sex=="Female",
  pch = 15, col = "red")
• > legend("topleft",
                                        2




  pch = c(19, 15), col =
  c("lightblue", "red"), legend
  = c("Male", "Female"))
                                        1




                                                 5   10         15

                                                          Age
Regressione multipla
• Stima del modello: lm( )                    •   > fit<- lm(FEV ~ Age*Sex, data=fev)

                                              •   > fit
                                              •   Call:
                                              •   lm(formula = FEV ~ Age * Sex, data = fev)

                                              •   Coefficients:
                                              •   (Intercept)          Age       SexMale   Age:SexMale
• Tipico output di una regressione multipla   •        0.8495       0.1627       -0.7759        0.1107

                                              •   > summary(fit)
                                              •   Call:
                                              •   lm(formula = FEV ~ Age * Sex, data = fev)

                                              •   Residuals:
                                              •        Min       1Q   Median        3Q       Max
                                              •   -1.64072 -0.34337 -0.04934   0.33206   1.86867

                                              •   Coefficients:
                                              •                Estimate Std. Error t value Pr(>|t|)
                                              •   (Intercept) 0.849467    0.102199   8.312 5.51e-16 ***
• Stime dei coefficienti e test T             •   Age          0.162729   0.009952 16.351 < 2e-16 ***
                                              •   SexMale     -0.775867   0.142745 -5.435 7.74e-08 ***
                                              •   Age:SexMale 0.110749    0.013786   8.033 4.47e-15 ***

                                              •   Residual standard error: 0.5196 on 650 degrees of freedom
• Bontà di adattamento e test F               •   Multiple R-squared: 0.6425,     Adjusted R-squared: 0.6408
                                              •   F-statistic: 389.4 on 3 and 650 DF, p-value: < 2.2e-16
Regressione multipla
• Aggiunta al grafico
 delle rette stimate                         Male
                                             Female
• > beta<- coef(fit)
• > beta




                                         5
• (Intercept)         Age ...
•   0.8494671   0.1627289 ...



                                         4
• > abline(beta[1:2], col="red")
• > abline(beta[1:2]+beta[3:4],    FEV
  col="lightblue")
                                         3
                                         2
                                         1




                                                  5   10         15

                                                           Age
Regressione logistica
• Tratto da Everitt & Horton (2006),     • Descrizione dei dati:
  Handbook of Statistical Analyses       • Dataset ‘plamsa’ nella libreria
  Using R, cap. 6.                        ‘HSAUR’
• Si vuole valutare la probabilità che   • A data frame with 32 observations on
                                          the following 3 variables.
  l’ESR sia superiore a 20 mm/ora al
  variare dei livelli di fibrinogeno e   • fibrinogen
  globulina                              • the fibrinogen level in the blood.


                                         • globulin
                                         • the globulin level in the blood.


                                         • ESR
                                         • the erythrocyte sedimentation rate,
                                          either less or greater 20 mm / hour.
Regressione logistica
• Lettura dei dati          •   > data(plasma)

• Stima del modello a due
                            •   > fit<- glm(ESR ~ fibrinogen + globulin,
                                + data=plasma, family=binomial())
  v.i.                      •   > summary(fit)
                            •   Call:
                            •   glm(formula = ESR ~ fibrinogen + globulin, family = binomial(),
                            •       data = plasma)

                            •   Deviance Residuals:
                            •       Min       1Q    Median        3Q      Max
                            •   -0.9683 -0.6122 -0.3458      -0.2116   2.2636

                            •   Coefficients:
                            •               Estimate Std. Error z value Pr(>|z|)
                            •   (Intercept) -12.7921     5.7963 -2.207    0.0273 *
                            •   fibrinogen    1.9104     0.9710   1.967   0.0491 *
                            •   globulin      0.1558     0.1195   1.303   0.1925
                            •   ---

                            •       Null deviance: 30.885    on 31   degrees of freedom
                            •   Residual deviance: 22.971    on 29   degrees of freedom
                            •   AIC: 28.971

                            •   Number of Fisher Scoring iterations: 5
Regressione logistica
• Interpretazione dei parametri   •   > b<- cbind(estimate=coef(fit), confint(fit))
                                  •   Waiting for profiling to be done...
  e intervalli di confidenza      •   > b
                                  •                  estimate        2.5 %     97.5 %
                                  •   (Intercept) -12.7920764 -27.27978361 -3.1496138
                                  •   fibrinogen    1.9103687   0.33941838 4.2904709
                                  •   globulin      0.1557782 -0.06617422 0.4266588
                                  •   > exp(b)
                                  •                   estimate        2.5 %      97.5 %
                                  •   (Intercept) 2.782735e-06 1.420825e-12 0.04286868
                                  •   fibrinogen 6.755579e+00 1.404131e+00 73.00083593
                                  •   globulin    1.168567e+00 9.359678e-01 1.53212986



                                  • > anova(fit2, fit, test="Chisq")
• Test sull’effetto principale    • Analysis of Deviance Table

  della globulina
                                  •   Model 1:   ESR ~ fibrinogen
                                  •   Model 2:   ESR ~ fibrinogen + globulin
                                  •     Resid.   Df Resid. Dev Df Deviance Pr(>Chi)
                                  •   1          30     24.840
                                  •   2          29     22.971 1    1.8692   0.1716
Regressione logistica
• Grafico di ‘densità
 condizionale’




                                                                        ESR > 20
                                   ESR > 20




                                                                1.0




                                                                                                 1.0
• par(mfrow=c(1,2))
• cdplot(ESR ~ fibrinogen,




                                                                0.8




                                                                                                 0.8
  data=plasma)
• cdplot(ESR ~ globulin,




                                                                0.6




                                                                                                 0.6
  data=plasma)




                                                                        ESR < 20
                             ESR




                                                                  ESR
                                   ESR < 20




                                                                0.4




                                                                                                 0.4
                                                                0.2




                                                                                                 0.2
                                                                0.0




                                                                                                 0.0
                                              2.5   3.5   4.5                      30 35 40 45
                                                fibrinogen                           globulin
Regressione logistica
• Grafico che mostra la
 variazione delle
 probabilità stimate




                                     55
 rispetto alle v.i.



                                     50
                                     45
                          globulin
                                     40
                                     35
                                     30
                                     25




                                          2   3       4        5   6
                                                  fibrinogen
Meta-analisi
• Tratto da Everitt & Horton (2006),   • Dataset ‘smoking’ nella libreria
  Handbook of Statistical Analyses       ‘HSAUR’
  Using R, cap. 12                     • Descrizione:
• Il problema riguarda l’efficacia     • A data frame with 26 observations
  dell’uso di gomme alla nicotina          (studies) on the following 4
  nello smettere di fumare                 variables.
                                       •   qt
                                       •   the number of treated subjetcs
                                           who stopped smoking.
                                       •   tt
                                       •   the total number of treated
                                           subjects.
                                       •   qc
                                       •   the number of subjetcs who
                                           stopped smoking without being
                                           treated.
                                       •   tc
                                       •   the total number of subject not
                                           being treated.
Meta-analisi
•   > library(rmeta)                              •   > summary(smokingOR)
•   Carico il pacchetto richiesto: grid           •   Fixed effects ( Mantel-Haenszel ) meta-analysis
•   > ?meta.MH                                    •   [...]
•   > ?meta.DSL                                   •   ------------------------------------
•   > data(smoking)                               •                  OR (lower 95% upper)
•   > smokingOR<- meta.MH(smoking[["tt"]],        •   Blondal89    1.85    0.99       3.46
    smoking[["tc"]],                              •   Campbell91   0.98    0.50       1.92
    smoking[["qt"]],smoking[["qc"]],              •   Fagerstrom82 1.76    0.80       3.89
    names=rownames(smoking))
                                                  •   Fee82        1.53    0.77       3.05
•   > print(smokingOR)
                                                  •   Garcia89     2.95    1.01       8.62
•   Fixed effects ( Mantel-Haenszel ) Meta-
    Analysis
                                                  •   [...]
•   Call: meta.MH(ntrt = smoking[["tt"]], nctrl
                                                  •   Tonnesen88   2.12    0.93       4.86
    = smoking[["tc"]], ptrt = smoking[["qt"]],    •   Villa99      1.76    0.55       5.64
•       pctrl = smoking[["qc"]], names =          •   Zelman92     1.46    0.68       3.14
    rownames(smoking))                            •   ------------------------------------
•   Mantel-Haenszel OR =1.67    95% CI ( 1.47,    •   Mantel-Haenszel OR =1.67 95% CI ( 1.47,1.9 )
    1.9 )                                         •   Test for heterogeneity: X^2( 25 ) = 34.9 ( p-
•   Test for heterogeneity: X^2( 25 ) = 34.9          value 0.09 )
    ( p-value 0.09 )
Meta-analisi

                                 Blondal89
                                 Campbell91
                                 Fagerstrom82
                                 Fee82
                                 Garcia89
                                 Garvey00
                                 Gross95
                                 Hall85
                                 Hall87




               Study Reference
                                 Hall96
                                 Hjalmarson84
                                 Huber88
                                 Jarvis82
                                 Jensen91
                                 Killen84
                                 Killen90
                                 Malcolm80
                                 McGovern92
                                 Nakamura90
                                 Niaura94
                                 Pirie92
                                 Puska79
                                 Schneider85
                                 Tonnesen88
                                 Villa99
                                 Zelman92
                                 Summary


                                            0.40   1.00      2.51   6.31 15.85
                                                Odds Ratio
01/22/13                  Dott. Marco Biffino - Statistica Demografia Matematica - Firenze      53




Insieme di Mandelbrot
• Mandelbrot, B. (1975). Les Objects Fractals: Forme, Hazard et Dimension. Paris, Flammarion.
• http://it.wikipedia.org/wiki/Insieme_di_Mandelbrot


• > library(caTools)
• > jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan",
    +   "#7FFF7F", yellow", "#FF7F00", "red", "#7F0000"))
•   >   m <- 1200                # define size
•   >   C <- complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ),
    +   (-1.2,1.2, length.out=m), m ) )
•   >   C <- matrix(C,m,m)       # reshape as square matrix of complex numbers
•   >   Z <- 0                   # initialize Z to zero
•   >   X <- array(0, c(m,m,20)) # initialize output 3D array
•   >   for (k in 1:20) {        # loop with 20 iterations
•   +     Z <- Z^2+C             # the central difference equation
•   +     X[,,k] <- exp(-abs(Z)) # capture results
•   +   }
•   >   write.gif(X, "Mandelbrot.gif", col=jet.colors, delay=100)
01/22/13   Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   54




Esempio: insiemi di Mandelbrot
01/22/13                 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   55




Blog:
Statistica con
R
http://statisticaconr.
blogspot.it/
01/22/13   Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   56
01/22/13                 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze   57




Programming
R
http://www.programming
r.com/

Weitere ähnliche Inhalte

Empfohlen

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 

Empfohlen (20)

Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 

Introduzione a R

  • 1. INTRODUZIONE A R Un linguaggio di programmazione libero e gratuito… …in salsa statistica
  • 2. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 2 Software libero • “Free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech”, not as in “free beer” • Free software is a matter of the users’ freedom to run, copy, distribute, study, change and improve the software. Richard Stallman Free Software Fundation
  • 3. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 3 Le libertà fondamentali del software libero • More precisely, it refers to four kinds of freedom, for the users of the software: • The freedom to run the program, for any purpose (freedom 0). • The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this. • The freedom to redistribute copies so you can help your neighbor (freedom 2). • The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3).
  • 4. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 4 Home page di R Project for Statistical Computing www.r-project.org 1.Cosa è R 2.Accesso al CRAN, Comprehensive R Archive Network 3.Accesso alla documentazione su R di vario tipo e livello
  • 5. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 5 Informazioni generali • Sviluppato originariamente da Ihaka and Gentleman nella seconda metà degli anni ‘90 • Rilasciato come software libero sotto licenza GNU-GPL, attualmente sviluppato da un gruppo di lavoro denominato R-Development Core Team • Software di riferimento per molti ricercatori, R rappresenta un sistema coerente e ben progettato entro il quale implementare le varie tecniche statistiche, matematiche, finanziarie… • Download dal sito The Comprehensive R Archive Network (CRAN): cran.r-project.org
  • 6. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 6 Cosa è R? Sul sito del progetto esiste un’ottima pagina che risponde a questa domanda
  • 7. Cosa è R • Un linguaggio e un ambiente per il calcolo statistico e la rappresentazione grafica • È un progetto GNU simile al linguaggio S sviluppato da Chambers e coll. presso i Bell Labs e ne rappresenta una sua diversa implementazione, con alcune importanti differenze, e con una buona compatibilità • È la base Open Source per la ricerca in statistica metodologica
  • 8. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 8 Cosa offre R • Un ambiente interattivo per il calcolo statistico e la rappresentazione grafica dei dati basato su un dialetto del linguaggio S (è un cugino del notissimo S-Plus) • Un linguaggio matriciale, basato sul paradigma funzionale e dotato di capacità di programmazione sia orientata agli oggetti, sia strutturata • Non necessita di dichiarazioni specifiche per definire gli array • Gli array possono essere definiti per concatenazione • Non necessita di iterazioni per operare sugli array
  • 9. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 9 Interfaccia • R offre all’utente è un’interfaccia di base a linea di comando • L’ambiente è interattivo: quando l’utente digita al prompt un’istruzione e preme invio, R la elabora e ne visualizza sullo schermo il risultato • Fanno eccezione le istruzioni di assegnazione a seguito delle quali non è previsto alcun output • Esistono molte interfacce grafiche alternative • Alcune rendono R simile ad altri ambienti di calcolo statistico con interfaccia grafica basata su menù • Altre sono maggiormente orientate alla programmazione • Maggiori info su http://www.sciviews.org/_rgui/
  • 10. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 10 La console a linea di comando
  • 11. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 11 L’SDK Rstudio Oggetti nel Workspace Code editor R console
  • 12. L’interfaccia a menù R Commander
  • 13. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 13 Alcuni esempi • c(4, 6, 11, 3, 2) # creazione di un vettore e relativo output • [1] 4 6 11 3 2 • > x<- c(4, 6, 11, 3, 2) # memorizzazione di un vettore • > x # stampa dell’output • [1] 4 6 11 3 2 • > y<- c(x, x^2, sqrt(x)) # creazione di un vettore a partire da ‘x’ • > y • [1] 4.000000 6.000000 11.000000 3.000000 2.000000 16.000000 • [7] 36.000000 121.000000 9.000000 4.000000 2.000000 2.449490 • [13] 3.316625 1.732051 1.414214 • > A<- matrix(y, nrow=3, ncol=5) # creazione di una matrice a partire da ‘y’ • > A • [,1] [,2] [,3] [,4] [,5] • [1,] 4 3 36 4.00000 3.316625 • [2,] 6 2 121 2.00000 1.732051 • [3,] 11 16 9 2.44949 1.414214
  • 14. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 14 Alcuni esempi • > matrix(y, nrow=3, ncol=3) # crea la matrice prendendo i primi 9 elementi di ‘y’ • [,1] [,2] [,3] • [1,] 4 3 36 • [2,] 6 2 121 • [3,] 11 16 9 • > matrix(y, nrow=3, ncol=5) # crea la matrice • [,1] [,2] [,3] [,4] [,5] • [1,] 4 3 36 4.00000 3.316625 • [2,] 6 2 121 2.00000 1.732051 • [3,] 11 16 9 2.44949 1.414214 • > matrix(y, nrow=3, ncol=4) # non crea la matrice perché 15 non è multiplo del # numero di colonne 4 • Warning message: • In matrix(y, nrow = 3, ncol = 4) : • data length [15] is not a sub-multiple or multiple of the number of columns [4]
  • 15. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 15 Alcuni esempi • > sum(y) • [1] 222.9124 • > mean(y) • [1] 14.86083 • > sd(y) • [1] 30.69358 • > s<- sqrt(sum((y-mean(y))^2)/(length(y)-1)) • > s • [1] 30.69358 • > median(y) • [1] 4 • > sort(y) • [1] 1.414214 1.732051 2.000000 2.000000 2.449490 3.000000 • [7] 3.316625 4.000000 4.000000 6.000000 9.000000 11.000000 • [13] 16.000000 36.000000 121.000000 • > summary(y) • Min. 1st Qu. Median Mean 3rd Qu. Max. • 1.414 2.225 4.000 14.860 10.000 121.000
  • 16. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 16 Liste • > l1<- list(pippo=c(1,2,3), letters[1:3], matrix(1:9, nrow=3, ncol=3)) • > l1 • R può gestire le liste • $pippo • [1] 1 2 3 • Una lista è un insieme ordinato di oggetti qualsiasi, anche di tipo • [[2]] eterogeneo • [1] "a" "b" "c" • Agli elementi di una lista può essere • [[3]] attribuito un nome • [,1] [,2] [,3] • Gli elementi di una lista sono • [1,] 1 4 7 accessibili anche attraverso l’indice di • [2,] 2 5 8 posizione • [3,] 3 6 9 • Esistono funzioni specifiche che • > l1[[3]] consentono di manipolare le liste in • [,1] [,2] [,3] modo rapido ed efficiente • [1,] 1 4 7 • [2,] 2 5 8 • [3,] 3 6 9 • > l1[[3]][2,] • [1] 2 5 8 • > l1$pippo • [1] 1 2 3
  • 17. Data frames • > n <- • c(2, 3, 5) > s <- c("aa", "bb", "cc") • > b <- c(TRUE, FALSE, TRUE) • I data frame sono un tipo di • > df <- data.frame(n, s, b) oggetto speciale destinato a • >df memorizzate le tabelle di dati • n s b • Un data frame è una semplice lista • 1 2 aa TRUE • 2 3 bb FALSE di vettori, anche di tipo • 3 5 cc TRUE eterogeneo, della stessa • > df$s lunghezza • [1] aa bb cc • R fornisce metodi per accedere • Levels: aa bb cc agevolmente ai dati in un data • > df[2:3, 1:2] frame • n s • 2 3 bb • 3 5 cc
  • 18. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 18 Attributi degli oggetti • È possibile specificare per ogni oggetto degli attributi • Alcuni possono essere stabiliti arbitrariamente dall’utente • Altri attributi – ad esempio dim, dimnames e class – hanno un significato specifico che consente ad R di espletare le sue funzioni in modo ottimale • Tali attributi sono • Accessibili mediante la funzione attributes() e • Modificabili mediante attr()
  • 19. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 19 Paradigma funzionale • In R, qualsiasi azione è definita mediante un’opportuna funzione alla quale vengono passati degli argomenti che possono essere oggetti (scalari, array o liste), parametri ed opzioni • La chiamata di una funzione produce un risultato che può essere • visualizzato direttamente o • memorizzato assegnandolo ad un nome simbolico • Gli utenti hanno la possibilità di definire nuove funzioni all’interno dello spazio di lavoro mediante la parola chiave function() • Le funzioni utente costituiscono l’elemento fondamentale della programmazione nel linguaggio R e per l’espansione del sistema verso l’implementazione di nuove tecniche statistiche
  • 20. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 20 Esempio: definizione di nuova funzione • Si vuole definire una funzione che calcola la deviazione standard con denominatore n anziché n-1: • > sd.n<- function(x) sqrt(sum((x-mean(x))^2)/(length(x))) • > sd.n(y) • [1] 29.65281 • > sd.n(3*y+10) • [1] 88.95843
  • 21. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 21 Esempio: intervalli di confidenza per proporzioni • prop.ic<- function(cases, n, labels, level=0.95) { • p<- cases/n • z<- qnorm(level) • me<- z*sqrt(p*(1-p)/n) • ic1<- p-me • ic2<- p+me • res<- data.frame(cases=cases, size=n, prop=round(p*100,2), inf=round(ic1*100,2), sup=round(ic2*100, 2)) • rownames(res)<- labels • return(res) • }
  • 22. Esempio: intervalli di confidenza per proporzioni • Etich<- c("2000/16-45/Diagnosi/Fumatore", "2000/16-45/Diagnosi/ExFumatore", "2000/16- 45/Diagnosi/MaiFumatore", "2000/46-65/Diagnosi/Fumatore", "2000/46-65/Diagnosi/ExFumatore", "2000/46-65/Diagnosi/MaiFumatore", "2005/16-45/Diagnosi/Fumatore", "2005/16- 45/Diagnosi/ExFumatore", "2005/16-45/Diagnosi/MaiFumatore", "2005/46-65/Diagnosi/Fumatore", "2005/46-65/Diagnosi/ExFumatore", "2005/46-65/Diagnosi/MaiFumatore") • Casi<- c(324,146,513,221,285,519, 344,245,756, 193,336,448) • Campione<- rep(c(983,1025,1345,977), each=3) • prop.ic(cases=Casi, n=Campione, labels=Etich) • cases size prop inf sup • 2000/16-45/Diagnosi/Fumatore 324 983 32.96 30.49 35.43 • 2000/16-45/Diagnosi/ExFumatore 146 983 14.85 12.99 16.72 • 2000/16-45/Diagnosi/MaiFumatore 513 983 52.19 49.57 54.81 • 2000/46-65/Diagnosi/Fumatore 221 1025 21.56 19.45 23.67 • 2000/46-65/Diagnosi/ExFumatore 285 1025 27.80 25.50 30.11 • 2000/46-65/Diagnosi/MaiFumatore 519 1025 50.63 48.07 53.20 • 2005/16-45/Diagnosi/Fumatore 344 1345 25.58 23.62 27.53 • 2005/16-45/Diagnosi/ExFumatore 245 1345 18.22 16.48 19.95 • 2005/16-45/Diagnosi/MaiFumatore 756 1345 56.21 53.98 58.43 • 2005/46-65/Diagnosi/Fumatore 193 977 19.75 17.66 21.85 • 2005/46-65/Diagnosi/ExFumatore 336 977 34.39 31.89 36.89 • 2005/46-65/Diagnosi/MaiFumatore 448 977 45.85 43.23 48.48
  • 23. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 23 Programmazione orientata agli oggetti • Le capacità di programmazione orientata agli oggetti si basa sulla possibilità di specificare e modificare lo speciale attributo class di un oggetto nello spazio di lavoro • R gestisce le classi di oggetti in modo che sia possibile definire funzioni generiche le quali invocano automaticamente una funzione specifica, detta metodo, determinata proprio dalla classe dell’oggetto passato come argomento alla funzione generica • Le funzioni print(), plot(), summary() ad esempio producono risultati diversi a seconda dell’oggetto cui vengono applicate
  • 24. Esempio: calcolo dettagliato del test Chi quadro • testchi2<- function(x, rn, cn) { • print.extchisq<- function(x) { • r<- length(rn) • t<- x$test • c<- length(cn) • p<- as.numeric(x$phi2) • tab<- matrix(x, r, c) • v<- as.numeric(x$V) • rownames(tab)<- rn • cat(" Sample size: ",x$n, "nn Observed • colnames(tab)<- cn Freqs.:n") • n<- sum(tab) • print(x$tab) • rel<- tab/n • rtot<- apply(tab, 1, sum) • cat("n Relative Freqs.:n") • print(x$rel) • rrel<- tab/rtot • ctot<- apply(tab, 2, sum) • cat("n Row conditioned freq.:n") • print(x$rrel) • crel<- tab/matrix(ctot, r, c, byrow=T) • test<- chisq.test(tab) • cat("n Col conditioned freqs.:n") • print(x$crel) • phi2<- test$statistic/n • V<- sqrt(phi2/(min(r,c)-1)) • cat("n Chi squared= ", t$statistic, ", df= ", t$parameter, ", P-value= ", • res<- list(n=n, tab=tab, rel=rel, t$p.value, "n Phi Squared= ", p, "n rrel=rrel, crel=crel, test=test, phi2=phi2, Cramer's V: ", v, "n") V=V) • } • class(res)<- "extchisq" • return(res) • }
  • 25. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 25 Automazione del lavoro • Il sistema, inoltre, consente di automatizzare il lavoro mediante script • Uno script è una sequenza di istruzioni del linguaggio R preventivamente registrate in un file di testo • R è essenzialmente un linguaggio di programmazione interpretato, ma per i compiti più gravosi è possibile un agevole interfacciamento con librerie scritte nei linguaggi C, C++ e FORTRAN • In questo ambito, sono molto utili gli ambienti tipo SDK come Rstudio o Eclipse
  • 26. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 26 Espandibilità con librerie esistenti • R gode di una collezione molto ampia di librerie dedicate ad applicazioni specifiche • Vi sono circa 1940 librerie ufficialmente supportate, molte altre sono disponibili da progetti collegati che utilizzano R come motore di calcolo • La descrizione di una particolare libreria può essere consultata a partire dall’indirizzo: http://cran.stat.unipd.it/web/packages/ available_packages_by_name.html • Altre fonti sulle librerie sono • R Journal (dal 2009): http://journal.r-project.org/index.html • R News (fino al 2008): http://www.r-project.org/doc/Rnews/index.html • Journal of Statistical Software: http://www.jstatsoft.org/ • CRAN Task Views: http://cran.r-project.org/web/views/
  • 27. CRAN Task Views • cran.r- project.org/web/views/ • Rappresentano un metodo rapido per guidare gli utenti nella scelta delle librerie da installare • Installando/caricando la libreria ‘ctv’ diventano disponibili le funzioni che consentono l’installazione/aggiornamen to di tutte le librerie legate a una vista • La vista ‘ClinicalTrials’ è sicuramente interessante
  • 28. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 28 Espandibilità mediante librerie create dagli utenti • R è un sistema progettato per essere espanso continuamente • Difatti, oltre alla citata possibilità di definire funzioni utente, è dotato di strumenti e di metodi atti • a raccogliere tali funzioni in librerie (denominate packages nel gergo proprio di R), • a documentare in modo esauriente ogni funzione, e • a pacchettizzare le librerie per la distribuzione al pubblico attraverso il sito http://cran.r-project.org.
  • 29. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 29 Note sulle sessioni di lavoro • Quando R è in esecuzione il workspace, o spazio di lavoro, è interamente contenuto nella memoria dell’elaboratore e contiene gli oggetti che vengono creati nel corso delle elaborazioni a seguito di operazioni di assegnazione a nomi simbolici — cioè i dati, i risultati e le eventuali funzioni create dall’utente • In R, qualsiasi cosa venga assegnata ad un nome simbolico diviene un oggetto nello spazio di lavoro. • È possibile salvare l’immagine del workspace in un file con estensione .RData nella directory di lavoro corrente.
  • 30. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 30 Istruzioni in R • Le istruzioni possono essere: • Espressioni: cioè sequenzefinite di operandi e operatori che deve essere valutata, • Assegnazioni: in una delle seguenti forme: • > <nome> <- <espressione> • > assign(<nome>, <espressione>) • Chiamate di funzione, • Una combinazione delle precedenti
  • 31. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 31 Nomi simbolici • La stringa <nome> sta ad indicare un generico nome simbolico usato per memorizzare il risultato della valutazione di <espressione> nello spazio di lavoro • Come in molti altri linguaggi, i nomi simbolici sono costituiti da stringhe alfanumeriche in cui il primo carattere deve essere una lettera. • In R esistono delle parole chiave che non è possibile usare come nomi simbolici e l’interprete delle istruzioni fa distinzione fra lettere maiuscole e minuscole • I nomi a e A sono considerati diversi, così come le funzioni f() ed F()
  • 32. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 32 Parole chiave riservate Valori speciali Parole chiave del linguaggio FALSE break Inf else NA for NaN function NULL if TRUE in next repeat while
  • 33. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 33 Visualizzazione dei risultati delle elaborazioni • Per visualizzare il valore assegnato ad un nome simbolico è necessario invocarne il nome al prompt dei comandi • Nei listati dei programmi, invece, è necessario digitare l’istruzione print(<nome>)
  • 34. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 34 Uso non interattivo • R offre anche la facoltà di lavorare in modo non interattivo • Cioè la possibilità di inserire sequenze di istruzioni in un file di testo per automatizzare il lavoro • Questi file possono essere letti dall’interprete dei comandi mediante l’istruzione source(<nomefile.r>, echo=T, print.eval=T)
  • 35. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 35 Istruzioni per la gestione della sessione di lavoro Istruzione Risultato ls() Visualizza l’elenco degli oggetti contenuti nel workspace. ls.str() Visualizza un elenco degli oggetti, aggiungendo informazioni sul tipo dell’oggetto esul valore. rm(<nome>) Rimuove l’oggetto <nome> dal workspace. save(<nome>, Salva nel file nomefile.rda l’oggetto<nome>. file=”nomefile.rda”) save(file=”nomefile.rda”) Salva l’immagine dell’intero workspace nel file nomefile.rda. Questa immagine non sarà letta al successivo riavvio del sistema, ma dovrà essere ricaricata esplicitamente. load(file=”nomefile.rda”) Carica nello spazio di lavoro gli oggetti contenuti nell’immagine nomefile.rda
  • 36. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 36 Istruzioni per la gestione della sessione di lavoro Istruzione Risultato getwd() Fornisce la directory di lavoro corrente. setwd(”<directory>”) Imposta la directory di lavoro. savehistory([file= Salva la cronologia dele istruzioni eseguite nel ”<nomefile.Rhistory>”]) file .Rhistory nella directory di lavoro corrente. Questo file viene letto all’avviosuccessivo del sistema. loadhistory(file= Carica la cronologia delle istruzioni contenuta nel ”<nomefile.Rhistory>”) file nomefile.Rhistory. options() Visualizza le opzioni di sistema. options(<parametro>= Imposta l’opzione <parametro> a <valore>. <valore>)
  • 37. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 37 Istruzioni per l’interrogazione dell’aiuto in linea Istruzione Risultato help(”<parola_chiave>”) Visualizza la pagina di aiuto relativa alla parola oppure ?<parola_chiave> chiave del linguaggio R, se esiste, altrimenti visualizza un messaggio di errore. help.search(”<stringa>”) Visualizza l’elenco delle pagine di aiutoche contengono <stringa>. È consigliabileinterrogare il sistema di aiuto conquesta istruzione quando non si conosceesattamente quale parola chiave cercare. help.start() Avvia il sistema di aiuto in formato HTML. Tutte le successive richieste di aiuto vengono inviate al browser. options(htmlhelp=FALSE) Disattiva il sistema di aiuto in formato HTML. example(<argomento>) Esegue il codice esemplificativo riportato in calce alla pagina relativa ad <argomento>
  • 38. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 38 Contenuti di una tipica pagina di aiuto Ogni pagina è identificata da un titolo ed è suddivisa nelle seguenti sezioni: • Description: breve descrizione dell’argomento. • Usage: fornisce la sintassi da usare nella chiamata della funzione, indicando il nome degli argomenti previsti e i loro eventuali valori predefiniti, nella forma nome=valore. • Arguments: riporta la lista degli argomenti, indicando per ogni argomento il tipo dei suoi valori, l’obbligatorietà o l’opzionalità dello stesso. • Details: fornisce dettagli tecnici inerenti al modo in cui viene eseguita la funzione. • Value: descrive la natura del risultato generato • Note : avvertenze utili, generalmente riguardanti il risultato prodotto • References: riferimenti bibliografici e documentali relativi alla metodologia usata. • See Also: indica quali argomenti del sistema di aiuto sono correlati con l’argomento visualizzato. • Examples: esempi di uso della funzione descritta.
  • 39. Regressione multipla • Tratto da • Sorgente dei dati: http://www.sci.usq.edu.au/courses/ http://www.amstat.org/publications/ sta3301/resources/handouts/ jse/datasets/fev.txt mrexampleR.pdf • Descrizione: • FEV (forced expiratory volume) is an • Le colonne sono separate da spazi index of pulmonary function that • Label Description measures the volume of air expelled after one second of constant effort. • Age discrete measure, positive The data contains determinations of integer (years) FEV on 654 children and young adults • FEV continuous measure (liters) aged 6–22 who were seen in the • Height continuous measure (inches) Childhood Respiratory Disease Study • Sex discrete/nominal (Female / in 1980 in East Boston, Male) Massachusetts. The data are part of a • Smoke discrete/nominal larger study to follow the change in (Nonsmoker / Smoker) pulmonary function over time in children
  • 40. Regressione multipla • Lettura dei dati • fev <- read.table("F:cigarette.dat", header = TRUE) • str(fev) • 'data.frame': 654 obs. of 5 variables: • $ Age : int 9 8 7 9 9 8 6 6 8 9 ... • $ FEV : num 1.71 1.72 1.72 1.56 1.9 ... • $ Height: num 57 67.5 54.5 53 57 61 58 56 58.5 60 ... • $ Sex : Factor w/ 2 levels "Female","Male": 1 1 1 2 2 1 1 1 1 1 ... • $ Smoke : Factor w/ 2 levels "NonSmoker","Smoker": 1 1 1 1 1 1 1 ... • > head(fev) • Age FEV Height Sex Smoke • 1 9 1.708 57.0 Female NonSmoker • 2 8 1.724 67.5 Female NonSmoker • 3 7 1.720 54.5 Female NonSmoker • 4 9 1.558 53.0 Male NonSmoker • 5 9 1.895 57.0 Male NonSmoker • 6 8 2.336 61.0 Female NonSmoker
  • 41. Regressione multipla Histogram of fev$FEV Histogram of fev$Age • Rappresentazione 150 100 150 grafica delle variabili: Frequency Frequency 100 • > par(mfrow = c(3, 2)) 50 50 • > hist(fev$FEV) 0 0 1 2 3 4 5 6 5 10 15 20 • > hist(fev$Age) fev$FEV fev$Age • > hist(fev$Height) • > plot(fev$Sex) Histogram of fev$Height • > plot(fev$Smoke) 300 20 40 60 80 Frequency 200 100 0 0 45 50 55 60 65 70 75 Female Male fev$Height 400 200 0 NonSmoker Smoker
  • 42. Regressione multipla • Rappresentazione grafica delle variabili: Male • > par(mfrow=c(1,1)) Female • > plot(FEV ~ Age, data=fev, 5 type = "n") • > points(FEV ~ Age, data=fev, 4 subset=fev$Sex=="Male", pch = 19, col = "lightblue") FEV • > points(FEV ~ Age, data=fev, 3 subset=fev$Sex=="Female", pch = 15, col = "red") • > legend("topleft", 2 pch = c(19, 15), col = c("lightblue", "red"), legend = c("Male", "Female")) 1 5 10 15 Age
  • 43. Regressione multipla • Stima del modello: lm( ) • > fit<- lm(FEV ~ Age*Sex, data=fev) • > fit • Call: • lm(formula = FEV ~ Age * Sex, data = fev) • Coefficients: • (Intercept) Age SexMale Age:SexMale • Tipico output di una regressione multipla • 0.8495 0.1627 -0.7759 0.1107 • > summary(fit) • Call: • lm(formula = FEV ~ Age * Sex, data = fev) • Residuals: • Min 1Q Median 3Q Max • -1.64072 -0.34337 -0.04934 0.33206 1.86867 • Coefficients: • Estimate Std. Error t value Pr(>|t|) • (Intercept) 0.849467 0.102199 8.312 5.51e-16 *** • Stime dei coefficienti e test T • Age 0.162729 0.009952 16.351 < 2e-16 *** • SexMale -0.775867 0.142745 -5.435 7.74e-08 *** • Age:SexMale 0.110749 0.013786 8.033 4.47e-15 *** • Residual standard error: 0.5196 on 650 degrees of freedom • Bontà di adattamento e test F • Multiple R-squared: 0.6425, Adjusted R-squared: 0.6408 • F-statistic: 389.4 on 3 and 650 DF, p-value: < 2.2e-16
  • 44. Regressione multipla • Aggiunta al grafico delle rette stimate Male Female • > beta<- coef(fit) • > beta 5 • (Intercept) Age ... • 0.8494671 0.1627289 ... 4 • > abline(beta[1:2], col="red") • > abline(beta[1:2]+beta[3:4], FEV col="lightblue") 3 2 1 5 10 15 Age
  • 45. Regressione logistica • Tratto da Everitt & Horton (2006), • Descrizione dei dati: Handbook of Statistical Analyses • Dataset ‘plamsa’ nella libreria Using R, cap. 6. ‘HSAUR’ • Si vuole valutare la probabilità che • A data frame with 32 observations on the following 3 variables. l’ESR sia superiore a 20 mm/ora al variare dei livelli di fibrinogeno e • fibrinogen globulina • the fibrinogen level in the blood. • globulin • the globulin level in the blood. • ESR • the erythrocyte sedimentation rate, either less or greater 20 mm / hour.
  • 46. Regressione logistica • Lettura dei dati • > data(plasma) • Stima del modello a due • > fit<- glm(ESR ~ fibrinogen + globulin, + data=plasma, family=binomial()) v.i. • > summary(fit) • Call: • glm(formula = ESR ~ fibrinogen + globulin, family = binomial(), • data = plasma) • Deviance Residuals: • Min 1Q Median 3Q Max • -0.9683 -0.6122 -0.3458 -0.2116 2.2636 • Coefficients: • Estimate Std. Error z value Pr(>|z|) • (Intercept) -12.7921 5.7963 -2.207 0.0273 * • fibrinogen 1.9104 0.9710 1.967 0.0491 * • globulin 0.1558 0.1195 1.303 0.1925 • --- • Null deviance: 30.885 on 31 degrees of freedom • Residual deviance: 22.971 on 29 degrees of freedom • AIC: 28.971 • Number of Fisher Scoring iterations: 5
  • 47. Regressione logistica • Interpretazione dei parametri • > b<- cbind(estimate=coef(fit), confint(fit)) • Waiting for profiling to be done... e intervalli di confidenza • > b • estimate 2.5 % 97.5 % • (Intercept) -12.7920764 -27.27978361 -3.1496138 • fibrinogen 1.9103687 0.33941838 4.2904709 • globulin 0.1557782 -0.06617422 0.4266588 • > exp(b) • estimate 2.5 % 97.5 % • (Intercept) 2.782735e-06 1.420825e-12 0.04286868 • fibrinogen 6.755579e+00 1.404131e+00 73.00083593 • globulin 1.168567e+00 9.359678e-01 1.53212986 • > anova(fit2, fit, test="Chisq") • Test sull’effetto principale • Analysis of Deviance Table della globulina • Model 1: ESR ~ fibrinogen • Model 2: ESR ~ fibrinogen + globulin • Resid. Df Resid. Dev Df Deviance Pr(>Chi) • 1 30 24.840 • 2 29 22.971 1 1.8692 0.1716
  • 48. Regressione logistica • Grafico di ‘densità condizionale’ ESR > 20 ESR > 20 1.0 1.0 • par(mfrow=c(1,2)) • cdplot(ESR ~ fibrinogen, 0.8 0.8 data=plasma) • cdplot(ESR ~ globulin, 0.6 0.6 data=plasma) ESR < 20 ESR ESR ESR < 20 0.4 0.4 0.2 0.2 0.0 0.0 2.5 3.5 4.5 30 35 40 45 fibrinogen globulin
  • 49. Regressione logistica • Grafico che mostra la variazione delle probabilità stimate 55 rispetto alle v.i. 50 45 globulin 40 35 30 25 2 3 4 5 6 fibrinogen
  • 50. Meta-analisi • Tratto da Everitt & Horton (2006), • Dataset ‘smoking’ nella libreria Handbook of Statistical Analyses ‘HSAUR’ Using R, cap. 12 • Descrizione: • Il problema riguarda l’efficacia • A data frame with 26 observations dell’uso di gomme alla nicotina (studies) on the following 4 nello smettere di fumare variables. • qt • the number of treated subjetcs who stopped smoking. • tt • the total number of treated subjects. • qc • the number of subjetcs who stopped smoking without being treated. • tc • the total number of subject not being treated.
  • 51. Meta-analisi • > library(rmeta) • > summary(smokingOR) • Carico il pacchetto richiesto: grid • Fixed effects ( Mantel-Haenszel ) meta-analysis • > ?meta.MH • [...] • > ?meta.DSL • ------------------------------------ • > data(smoking) • OR (lower 95% upper) • > smokingOR<- meta.MH(smoking[["tt"]], • Blondal89 1.85 0.99 3.46 smoking[["tc"]], • Campbell91 0.98 0.50 1.92 smoking[["qt"]],smoking[["qc"]], • Fagerstrom82 1.76 0.80 3.89 names=rownames(smoking)) • Fee82 1.53 0.77 3.05 • > print(smokingOR) • Garcia89 2.95 1.01 8.62 • Fixed effects ( Mantel-Haenszel ) Meta- Analysis • [...] • Call: meta.MH(ntrt = smoking[["tt"]], nctrl • Tonnesen88 2.12 0.93 4.86 = smoking[["tc"]], ptrt = smoking[["qt"]], • Villa99 1.76 0.55 5.64 • pctrl = smoking[["qc"]], names = • Zelman92 1.46 0.68 3.14 rownames(smoking)) • ------------------------------------ • Mantel-Haenszel OR =1.67 95% CI ( 1.47, • Mantel-Haenszel OR =1.67 95% CI ( 1.47,1.9 ) 1.9 ) • Test for heterogeneity: X^2( 25 ) = 34.9 ( p- • Test for heterogeneity: X^2( 25 ) = 34.9 value 0.09 ) ( p-value 0.09 )
  • 52. Meta-analisi Blondal89 Campbell91 Fagerstrom82 Fee82 Garcia89 Garvey00 Gross95 Hall85 Hall87 Study Reference Hall96 Hjalmarson84 Huber88 Jarvis82 Jensen91 Killen84 Killen90 Malcolm80 McGovern92 Nakamura90 Niaura94 Pirie92 Puska79 Schneider85 Tonnesen88 Villa99 Zelman92 Summary 0.40 1.00 2.51 6.31 15.85 Odds Ratio
  • 53. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 53 Insieme di Mandelbrot • Mandelbrot, B. (1975). Les Objects Fractals: Forme, Hazard et Dimension. Paris, Flammarion. • http://it.wikipedia.org/wiki/Insieme_di_Mandelbrot • > library(caTools) • > jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", + "#7FFF7F", yellow", "#FF7F00", "red", "#7F0000")) • > m <- 1200 # define size • > C <- complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ), + (-1.2,1.2, length.out=m), m ) ) • > C <- matrix(C,m,m) # reshape as square matrix of complex numbers • > Z <- 0 # initialize Z to zero • > X <- array(0, c(m,m,20)) # initialize output 3D array • > for (k in 1:20) { # loop with 20 iterations • + Z <- Z^2+C # the central difference equation • + X[,,k] <- exp(-abs(Z)) # capture results • + } • > write.gif(X, "Mandelbrot.gif", col=jet.colors, delay=100)
  • 54. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 54 Esempio: insiemi di Mandelbrot
  • 55. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 55 Blog: Statistica con R http://statisticaconr. blogspot.it/
  • 56. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 56
  • 57. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 57 Programming R http://www.programming r.com/

Hinweis der Redaktion

  1. Prima di iniziare vorrei soffermarmi su alcuni slogan relativi al software libero e sull’idea che libero non significa necessariamente gratis.
  2. Vorrei iniziare questa presentazione dall’home page di “ R Project for Statistical Computing”, pagina di riferimento dei progetti legati a R. In questa pagina troviamo i link alle pagine “What is R?”, al “CRAN&quot;