Your SlideShare is downloading. ×
Introduzione a R
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introduzione a R

261

Published on

prova

prova

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
261
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Prima di iniziare vorrei soffermarmi su alcuni slogan relativi al software libero e sull’idea che libero non significa necessariamente gratis.
  • 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"
  • Transcript

    • 1. INTRODUZIONE A RUn linguaggio di programmazione libero e gratuito……in salsa statistica
    • 2. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 2Software 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 3Le libertà fondamentali del softwarelibero• 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 4Home page diR Project forStatisticalComputingwww.r-project.org1.Cosa è R2.Accesso al CRAN,Comprehensive RArchive Network3.Accesso alladocumentazione suR di vario tipo elivello
    • 5. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 5Informazioni 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 6Cosa è R?Sul sito delprogetto esisteun’ottima paginache risponde aquesta 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 8Cosa 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 9Interfaccia• 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 10La console a linea di comando
    • 11. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 11L’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 13Alcuni 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 14Alcuni 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 15Alcuni 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 16Liste • > 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 18Attributi 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 19Paradigma 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 20Esempio: 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 21Esempio: 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 23Programmazione 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, Cramers V: ", v, "n") V=V) • }• class(res)<- "extchisq"• return(res)• }
    • 25. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 25Automazione 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 26Espandibilità 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 28Espandibilità mediante librerie createdagli 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 29Note 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 30Istruzioni 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 31Nomi 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 32Parole chiave riservateValori speciali Parole chiave del linguaggioFALSE breakInf elseNA forNaN functionNULL ifTRUE in next repeat while
    • 33. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 33Visualizzazione dei risultati delleelaborazioni• 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 34Uso 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 35Istruzioni per la gestione della sessione dilavoro 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 36Istruzioni per la gestione della sessione dilavoro 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 37Istruzioni per l’interrogazione dell’aiutoin 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 38Contenuti di una tipica pagina diaiutoOgni 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 53Insieme 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 54Esempio: insiemi di Mandelbrot
    • 55. 01/22/13 Dott. Marco Biffino - Statistica Demografia Matematica - Firenze 55Blog:Statistica conRhttp://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 57ProgrammingRhttp://www.programmingr.com/

    ×