Statistica con R

Atlante di anatomia
Atlante di Anatomia
Umana
Entamoeba coli1
Atlante di Parassitologia
Virus2
Atlante di ematologia
new
Atlante di Virologia
Atlante di Ematologia
Per ricevere sullo smartphone le novità del blog mediante i feed RSS scarica e installa gratuitamente sullo smartphone il lettore di codice QR, lancia il software e inquadra con la fotocamera del telefono il codice che vedi qui sotto
RSS_feed
Bayes
DNA_0527s
Informazioni: info@bayes.it
Scrivimi: webmaster@bayes.it

Ultimo aggiornamento: 12 febbraio 2012

117.194 visitatori dal maggio 2008

Per la riproduzione dei contenuti del sito è necessario il permesso dell’Autore

NOTA LEGALE
 
L’interpretazione dei risultati delle analisi di laboratorio deve essere effettuata esclusivamente dal medico e alla luce dei dati clinici.
Questo sito ha uno scopo esclusivamente educativo e formativo. Pertanto le informazioni in esso contenute possono essere utilizzate esclusivamente a scopo didattico, e anche in questo caso sotto la responsabilità personale di chi le utilizza, sia per sé stesso sia per terzi.
Le informazioni contenute in questo sito non possono e non devono essere utilizzate né a scopo diagnostico, né a scopo prognostico, né a scopo terapeutico, né per qualsiasi attività che abbia un impatto sia diretto sia indiretto sullo stato di salute di  un individuo o di più individui.
Nessuna responsabilità può essere imputata all’autore per danni diretti o indiretti e di qualsivoglia natura che potrebbero essere causati a sé stessi o a terzi a causa di errori, imprecisioni, omissioni, interpretazioni o utilizzo dei contenuti di questo sito o dei siti cui esso fa riferimento.

 

 
NOTA SUI COLLEGAMENTI
ALLE FONTI BIBLIOGRAFICHE
 
La maggior parte dei collegamenti ad articoli scientifici riportati nel sito fa riferimento a riviste online che forniscono gratuitamente l’articolo originale. In alcuni casi è necessario registrarsi sul sito per avere libero accesso agli articoli: questo accade per esempio con il BMJ. Quando i collegamenti  fanno riferimento a fonti bibliografiche a pagamento, chi non ha sottoscritto un abbonamento con la rivista potrebbe vedere comparire un messaggio del tipo “access forbidden”, ma il più delle volte vedrà comparire una pagina che consente di acquistare online l’articolo originale.
 
 

Le statistiche complete del sito

Corso base di statistica con R

“Ma a cosa serve saper calcolare le radici quadrate?”
(Fabio Fazio)
 
“Quando non sai fare niente, bisogna essere almeno ambiziosi.”
(Georges Wolinsky)
 
 
Perchè usare R, se esistono già MedCalc, Minitab, SAS, SPSS, Stata, Systat, decine di altri programmi di statistica e add-on per fare statistica con Excel (come ad esempio Analyse-it) e per fare statistica con Access (come ad esempio Total Access Statistics)? [a]
 
Per almeno quattro buone ragioni:
R è gratuito, e questo fatto è significativo, visto il costo di un pacchetto di statistica;
R è disponibile per tutti e tre i sistemi operativi più diffusi, cioè per Windows, per MacOS X e per Linux (personalmente ho installato la versione per Windows e quella per MacOS X e funzionano perfettamente entrambe);
→ una volta installata la versione base di R potete accedere a un repository di oltre 1900 pacchetti aggiuntivi, anch'essi gratuiti, che offrono soluzioni di calcolo ed elaborazioni statistiche e grafiche per praticamente qualsiasi problema;
→ se non trovate quello che vi serve tra i pacchetti già disponibili (ma ne dubito), R vi permette di riutilizzare e adattare migliaia di funzioni già scritte e di scriverne di nuove per adattare un pacchetto già esistente ovvero per creare ex-novo il vostro pacchetto di analisi dei dati, orientato al vostro specifico problema.
 
R non è, come asseriscono gli stessi curatori del progetto, e come avete intuito, un semplice programma di statistica, ma piuttosto un ambiente, che è stato sviluppato e viene costantemente aggiornato nell’ambito del The R Project for Statistical Computing (http://www.r-project.org/), un ambiente che consente di sviluppare analisi statistiche e grafiche dei dati estremamente potenti e flessibili. R è un programma open-source disponibile come software gratuito (free software) nei termini previsti dalla Free Software Foundation (http://www.gnu.org/).
 
Il problema cruciale di R è che è basato su un linguaggio di programmazione, è quindi molto tecnico, e per questo è difficile superare le difficoltà iniziali, al punto che molti rinunciano ad utilizzarlo: e il senso di frustrazione che ne consegue è tale che in genere allontana definitivamente il soggetto da successivi tentativi. Lo scopo di questo corso è proprio quello di aiutarvi a superare queste difficoltà iniziali, per aprirvi al mondo di R: sono certo che chi è motivato ad affrontare qualche problema di analisi dei propri dati vi troverà uno strumento straordinario.
 
In aggiunta a questo mio corso vi possono aiutare nel processo di apprendimento di R:
→ la documentazione di R che trovate sul sito ufficiale di R;
→ il sito di Robert I. Kabacoff Quick-R for SAS/SPSS/Stata Users (http://www.statmethods.net/);
→ il blog Statistica con R (http://statisticaconr.blogspot.com/);
 
o qualcuno dei seguenti documenti, per i quali un ringraziamento va ai colleghi che li hanno pubblicati consentendone il libero utilizzo a scopo didattico con la Licenza per Documentazione Libera GNU:
 
Introduzione ad R, di Roberto Boggiani, ;
Esercitazioni di statistica biomedica, di Matteo Dell'Omodarme;
Formulario di Statistica con R, di Fabio Frascati;
Applied Statistics for Bioinformatics using R, di Wim P. Krijnen;
Using R for Data Analysis and Graphics - Introduction, Code and Commentary, di J. H. Maindonald;
Una guida all'utilizzo dell'ambiente statistico R, di Angelo M. Mineo;
R: un ambiente opensource per l'analisi statistica dei dati, di Vito Ricci;
Analisi delle serie storiche con R, di Vito Ricci;
Rappresentazione analitica delle distribuzioni statistiche con R, di Vito Ricci;
Principali tecniche di regressione con R, di Vito Ricci;
simpleR - Using R for Introductory Statistics, di John Verzani.
 
Se imparerete ad utilizzare R scoprirete che è un linguaggio e ambiente per lo sviluppo del calcolo statistico per il quale nessun ringraziamento è adeguato al genio e all’impegno dell’R Development Core Team (2009). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. ISBN 3-900051-07-0, URL http://www.R-project.org.
 
Il materiale del corso è organizzato in una prima parte preliminare (questa parte) che include i seguenti argomenti generali:
download e installazione base di R;
la Console dei comandi di R;
documentazione di R e pacchetti aggiuntivi rispetto all’installazione base;
come strutturare i dati da importare in R;
gli script e i dati dimostrativi utilizzati per questo corso;
come utilizzare gli esempi;
un esempio per iniziare;
il sistema di help di R.
e alcuni argomenti specifici, tutti fondamentali per iniziare:
come importare in R i dati di un file .csv;
come importare in R i dati di un file .xls;
gestione dei file con dati mancanti;
inserimento dati dalla Console di R;
salvare la sessione in un file;
salvare i grafici in un file;
l’interfaccia grafica (GUI) di R.
utilizzare i dati e gli script con MacOS X
 
La seconda parte dedicata agli esempi serve a familiarizzare con il linguaggio di R e ha come scopo finale fornire una serie di funzioni e comandi che si possono copiare, incollare all’interno di nuovi script e modificare opportunamente per realizzare alla fine una propria libreria di funzioni e comandi in R. Che fornisce la base per costruire rapidamente e personalizzare le più comuni elaborazioni di dati (si tratta, ricordate, di un corso base), lasciando le elaborazioni più complesse alla capacità e al desiderio dei singoli di affrontare in modo autonomo le infinite altre possibilità di elaborazione che si hanno con R. Questa seconda  parte dedicata agli esempi è stata (convenzionalmente) suddivisa in due pagine web, dedicate rispettivamente a:
R funzioni grafiche;
R funzioni statistiche.
 
Attenzione: le indicazioni qui riportate fanno riferimento alla versione di R per Windows©.
Per MacOS X© vedere come utilizzare i dati e gli script con MacOS X.
 
Download e installazione base di R
 
La prima cosa da fare se volete cimentarvi con R è collegarvi al sito http://www.r-project.org/, che trovate anche digitando semplicemente R su Google, ed effettuare il download dell’ultima versione del programma da uno dei siti del CRAN (Comprehensive R Archive Network), in Italia o in una delle nazioni che trovate elencate. Sul sito dal quale avrete deciso di effettuare il download, qualsiasi esso sia, troverete i link alle versioni di R precompilate per i sistemi operativi sia Linux, sia MacOS X, sia Windows.
 
Dal sito http://www.r-project.org/ fate click sui vari collegamenti fino a raggiungere la pagina di download, selezionate la sola distribuzione/installazione base (dei pacchetti aggiuntivi parleremo tra poco), salvatela sul vostro disco in un posto sicuro (il file avrà un nome del tipo R-2.9.1-win32.exe, dove invece di 2.9.1 troverete la sigla dell’ultima versione aggiornata che avete appena scaricato). Terminato il download fate doppio click sul file scaricato e seguite le istruzioni per installare R sul vostro PC.
 
La Console dei comandi di R
 
Al termine dell’installazione sul desktop del PC vi comparirà l’icona di R-ico
Fate doppio click su di essa per avviare il programma, e vi apparirà la Console di R con la quale inizieremo a lavorare.
 
R-Console
 
Il simbolo > è il prompt di R, e indica che R è in attesa che scriviamo che cosa vogliamo fare tramite la tastiera (come faremo tra poco) e nel suo linguaggio (del quale cercheremo di apprendere i rudimenti).
 
Le prime tre cose che facciamo con R sono molto semplici:
→ al prompt di R scrivete demo(), premete invio, e vi comparirà un elenco di dimostrazioni disponibili nel pacchetto base appena installato;
→ scrivete ora demo(graphics), premete invio, seguite le istruzioni che compaiono nella Console di R e potrete assistere  a una dimostrazione delle capacità grafiche della sola installazione di base. Nei pacchetti aggiuntivi disponibili per R (vedere appresso), troverete una infinità di altre possibilità di elaborazione grafica;
→ scrivete ora help.start(), premete invio, e nel giro di qualche secondo vedrete aprirsi nel browser la guida (l’help) di R, che come vedete è quindi sempre disponibile ed assai completo.
 
Documentazione di R e pacchetti aggiuntivi rispetto all’installazione base
 
Prima di procedere vi consiglio di esplorare meglio il sito di R http://www.r-project.org/, e in particolare vi consiglio di prendere confidenza due sezioni importanti.
 
La prima è la sezione Documentation: qui potete fare click su Manuals e scaricare, in formato pdf,  tutti i manuali relativi alla versione di R che avete appena installato, ovvero da qui potete accedere alla sezione contributed documentation nella quale trovare anche dei tutorial in lingua italiana. Anche se in questo corso base non faremo diretto ricorso alla documentazione disponibile sul sito di R, questa risulterà ovviamente essenziale per affrontare le esigenze più evolute che vi si manifesteranno (mi auguro) dopo questo corso.
 
La seconda è la sezione Software: qui potete fare click su Packages per visualizzare gli oltre 1900 (sì, sono più di mille e novecento!) pacchetti che è possibile aggiungere all’installazione base che avete effettuato. Sono ciascono orientato alla risoluzione di un problema specifico, che va dalla rappresentazione grafica dei dati alla cluster-analysis, dalla analisi dei risultati dell’array-CGH alla analisi bayesiana dei dati. Dalla console di R è possibile scaricare un pacchetto dal CRAN prescelto (il pacchetto viene installato automaticamente) selezionando dal menù Pacchetti l’opzione Installa pacchetti.... Per familiarizzare con questa funzione scaricate il pacchetto RODBC che ci servirà per importare i dati da file .xls. Attenzione: talora il pacchetto che si desidera installare presuppone uno o più altri pacchetti, cui esso si appoggia. In questo caso viene effettuato automaticamente il download e l’installazione di più pacchetti, tutti quelli tra loro concatenati e quindi necessariamente e contemporaneamente richiesti per garantire la funzionalità dell’unico pacchetto che si desiderava installare. Data la necessità di disporre, per eseguire i vari esempi forniti, di alcuni pacchetti che inizialmente non avrete nella vostra installazione di R, è importante seguire gli esempi che faremo avendo sempre il PC collegato con Internet.
 
Come strutturare i dati da importare in R
 
Poichè R non dispone di una gestione brillante dei dati in forma tabellare, e comunque per ridurre al minimo l’impatto, parto dal presupposto che continuerete a gestire i vostri dati con lo strumento cui siete abituati, che io assumo essere un foglio elettronico (spreadsheet) che gestisce file in formato  .xls:, e tipicamente Excel© o, meglio ancora OpenOffice.org© Calc, che è gratuito e del quale potete effettuare il download dal sito http://it.openoffice.org/.
 
Una struttura dei dati tipica è quella che segue
 

id

Sesso

Colesterolo

Trigliceridi

Urea

Creatinina

MT

M

189

164

32

0.6

GF

F

215

188

 

1.2

MC

F

197

153

26

0.5

SB

M

236

280

22

 

FE

F

203

158

48

1.3

 
nella quale le cose da notare sono assai semplici:
→ le colonne corrispondono alle variabili;
→ le righe corrispondono ai casi;
→ i nomi delle variabili sono riportati nella prima riga, e sono facoltativi (ma ovviamente raccomandati);
→ l’identificativo univoco di ciascun caso è riportato nella prima colonna (nella variabile che io per comodità denominerò sempre id), ed è facoltativo (può essere utile in casi specifici);
→ le variabili possono essere sia numeriche, sia qualitative (per esempio, qui, il Sesso);
→ è possibile definire una o più variabili in base alla/e quale/i raggruppare i dati (nell’esempio, i dati potranno essere elaborati o tutti insieme o suddivisi in due gruppi in base al Sesso). Poichè R riconosce lettere maiuscole e lettere minuscole, è indispensabile che la variabile in base alla quale i dati sono raggruppati sia codificata in modo rigoroso (sesso maschile sempre M, e non M o m a caso, eccetera);
→ è ammessa la mancanza di dati (per esempio qui manca la Creatinina del caso SB, e il campo è quindi vuoto), che R riconosce e classifica automaticamente riportando NA (Not Available).
 
Ulteriori possibili osservazioni sulla struttura dei dati emergeranno nel trattare i dati dimostrativi utilizzati per questo corso.
 
Gli script e i dati dimostrativi utilizzati per questo corso
 
L’impostazione di questo corso è quella dell’imparare-facendo. Per questo ho predisposto una serie di esempi: ciascuno di essi include uno o più file.
 
I file nomedelfile.txt sono script, cioè semplici file in formato testo che contengono i comandi di R scritti con il linguaggio e la sintassi previste (il contenuto degli script è rappresentato da quello che d’ora in poi chiameremo “codice R”). In Windows è possibile aprirli, salvarli ed editarli utilizzando il Blocco note di Windows che si trova in Programmi >> Accessori. In alternativa potete utilizzare l’Editor di R, che potete aprire dalla Console di R selezionando File >> Nuovo script o, per uno script già esistente, File >> Apri script... Ricordo che dalla console di R gli script sono salvati di default con l’estenzione .R invece che con l’estensione .txt: ma di fatto si tratta di file di testo assolutamente identici.
 
I file nomedelfile.xls contengono i dati da elaborare nel formato per Excel© e OpenOffice.org© Calc. In realtà è raccomandato per R l’utilizzo di dati in formato csv (comma separated value), quindi file nomedelfile.csv. Questi possono essere generati sempre con Excel© e OpenOffice.org© Calc semplicemente selezionando il formato csv al momento di salvare i dati. Attenzione: negli esempi che ho fornito il separatore nei file .csv è il punto e virgola (;). R lo riconosce come tale in quanto come vedremo negli script viene specificato il separatore utilizzato nel file di dati .csv con il parametro sep=";". Cambiando il valore tale parametro è possibile importare dati delimitati per esempio con la virgola (sep=","), con uno spazio vuoto (sep=" ") o con qualsiasi altro separatore (ovviamente attenzione alla compatibilità tra file realizzati su PC diversi, che potrebbero essere diversamente configurati ed utilizzare differenti separatori di  campo).
 
Come utilizzare gli esempi
 
Per utilizzare gli esempi delle pagine R funzioni grafiche e R funzioni statistiche procedete in questo modo:
→ create sul dico C: una cartella R (attenzione: come già detto R è un linguaggio che riconosce le lettere maiuscole e le lettere minuscole, quindi controllate bene quello che avete digitato);
→ create nella cartella C:\R, per ogni esempio, la cartella che verrà via via indicata, e copiatevi gli script e file di dati forniti;
→ lanciate la Console di R facendo doppio click sull’icona di R presente sul desktop;
→ dalla Console di R selezionando File >> Apri script... aprite lo script che contiene l’esempio (lo script verrà aperto in una seconda finestra, nell’Editor di R);
→ per eseguire passo passo i comandi necessari per sviluppare l’esempio [procedura consigliata!], memorizzarne la sintassi, capire la relazione tra quanto compare nello script e quanto viene eseguito da R, copiate via via, come vi viene indicato, le righe di ciascun esempio dall’Editor di R alla Console di R e digitate invio ;
→ se volete eseguire tutto il contenuto dello script in un solo passaggio dall’Editor di R selezionate Modifica >> Esegui tutto.
 
Detto così potrebbe sembrare tutto ancora troppo complicato: ma vedrete che con il primo esempio, quello che segue, diventerà tutto molto semplice.
 
Un esempio per iniziare
 
→ create la cartella C:\R\InputSource\;
→ salvate (tasto destro del mouse, Salva con nome...) in questa cartella i file InputSource.txt, InputSourceData.txt e InputSource.csv;
→ dalla Console di R con File >> Apri script... aprite il file C:\R\InputSource\InputSource.txt;
→ dalla finestra dell’Editor di R nella quale il file è stato aperto selezionate Modifica >> Esegui tutto.
 
Vedrete comparire questo grafico del tipo "diagramma a scatola e baffi" (“box & whiskers plot”). che illustra la concentrazione delle IgA (in mg/dL) in un gruppo di soggetti sani (Controlli) e la confronta graficamente con quella rilevata in soggetti con cirrosi alcolica (AC), epatite cronica attiva (CAH), epatite cronica persistente (CPH), epatite alcolica non cirrotica (NCAH).
 
IgAdemo
 
Mentre i dettagli di questo tipo di rappresentazione grafica sarannno discussi successivamente in uno specifico esempio, limitiamoci qui ad analizzare che cosa è accaduto. Innanzitutto nel file InputSource..txt è contenuto il seguente codice R:
 
# INIZIO ESEMPIO ********************************
# legge uno script e ne esegue il contenuto
 
source("c:/R/InputSource/InputSourceData.txt")
 
# FINE ESEMPIO ********************************
 
Le righe di codice precedute dal simbolo # rappresentano dei semplici promemoria, dei commenti, e non sono eseguite (prima regola di R). Quindi di fatto nel file InputSource.txt è contenuta una sola riga di codice da eseguire:
 
source("c:/R/InputSource/InputSourceData.txt")
 
che semplicemente indica a R di eseguire il codice sorgente (source()) che si trova in un file di cui viene specificato il percorso per intero (questa in R è una regola fondamentale). Come vedete il codice che va a leggere i dati e li rappresenta graficamente è contenuto nel file InputSourceData.txt: se aprite questo file con il Blocco note di Windows trovate il seguente codice R
 
# INIZIO ESEMPIO ********************************
# BOXPLOT
# la prima riga contiene i nomi delle variabili, il separatore è parametrizzabile
# la prima colonna contiene la Diagnosi
# la seconda colonna contiene la concentrazione delle IgA in mg/dL
# notare / invece di \ su windows
 
mydata <- read.table("c:/R/InputSource/InputSource.csv", header=TRUE,
   sep=";")
 
# traccia Boxplot delle IgA per ciascuna diagnosi
 
boxplot(IgA~Diagnosi, data=mydata, main="IgA nelle malattie croniche del fegato",
   xlab="Diagnosi clinica", ylab="IgA in mg/dL", notch=FALSE, col="yellow")
 
# FINE ESEMPIO ********************************
 
Se togliete le righe di commento (che iniziano con #) vedete che tutta la complessa sequenza di istruzioni  che porta alla realizzazione del grafico è realizzata con due sole righe di istruzioni. Ecco evidenziato un fatto importante: R è un linguaggio non prolisso, ma decisamente conciso ed essenziale.
 
La prima riga di codice:
mydata <- read.table("c:/R/InputSource/InputSource.csv", header=TRUE, sep=";")
 
dice che i dati devono essere letti (read.table()) dal file c:/R/InputSource/InputSource.csv, aggiunge che il file ha una intestazione (header=TRUE) nel quale si trovano i nomi delle variabili, che il separatore tra campi è un punto e virgola (sep=";") e che il contenuto del file di dati deve essere assegnato (<- è l’operatore di assegnazione) ad un oggetto denominato mydata.
 
I dati sono quindi contenuti nel file InputSource.csv. Se aprite questo file con il Blocco note di Windows ci trovate scritto (per concisione qui sono stati eliminate le numerose righe di dati intermedi):
 
Diagnosi;IgA
Controlli;1.22
......
Controlli;2.37
NCAH;7.44
......
NCAH;3.75
CPH;2.45
.....
CPH;3.47
CAH;2.35
......
CAH;2.93
AC;3.51
......
AC;6.22
 
Nella prima riga sono riportati i nomi delle due variabili contenute nel file, rispettivamente la diagnosi (Diagnosi) e la concentrazione delle IgA in mg/dL (IgA), che sono separate da un punto e virgola (;). Nelle righe successive sono riportati i valori delle due variabili per ciascuno dei casi osservati.
 
La seconda riga di codice :
boxplot(IgA~Diagnosi, data=mydata, main="IgA nelle malattie croniche del fegato", xlab="Diagnosi clinica", ylab="IgA in mg/dL", notch=FALSE, col="yellow")
 
dice di tracciare un diagramma a scatola e baffi (boxplot()), traendo i dati dall’oggetto mydata (data=mydata),  aggregando i dati per diagnosi (IgA~Diagnosi), aggregando cioè i valori della variabile IgA per ciascun valore della variabile Diagnosi. Aggiunge il titolo del diagramma (main="IgA nelle malattie croniche del fegato"), l’etichetta dell’asse delle x (xlab="Diagnosi clinica"), l’etichetta dell’asse delle y (ylab="IgA in mg/dL"), specifica che vogliamo la scatola di colore giallo (col="yellow"), e che le scatole non devono avere l’incisura (notch=FALSE, i dettagli di questo tipo di rappresentazione grafica sarannno discussi successivamente in uno specifico esempio).
 
Ora ripartiamo da capo:
→ chiudete tutti i file che avete aperto (l’Editor di R, la Console di R e quant’altro).
→ lanciate la Console di R facendo doppio click sull’icona di R presente sul desktop;
→ aprite il file InputSourceData.txt utilizzando il Blocco note di Windows;
→ selezionate e copiate tutto il codice/testo che vedete;
→ incollate il codice/testo così copiato nella Console di R.
 
Come vedete avete ottenuto lo stesso identico risultato di prima in un modo ancora più semplice. Ma adesso avete un vantaggio. Avete capito che per lavorare con R è sufficiente essere in grado di scrivere gli opportuni comandi nella Console di R: tutto qui. Anche se ovviamente gli script sono uno strumento fondamentale in quanto consentono di memorizzare i comandi, modificarli senza doverli riscrivere, costruirsi una libreria di file di testo contenenti i comandi orientati a specifici problemi, da riutilizzare senza dovere ridigitare ogni volta le sequenze di istruzioni.
 
Adesso:
→ nella Console di R digitate mydata e premete invio.
 
Come vedete è stato sufficiente richiamare semplicemente il nome dell’oggetto (mydata) per vederlo presentato ordinatamente nella Console di R (spostatevi con i tasti Pag-su e Pag-giù per fare scorrere tutto quanto è accaduto finora ed è stato visualizzato nella Console di R ). 
 
Ancora:
→ nella Console di R digitate names(mydata) e premete invio;
→ nella Console di R digitate str(mydata) e premete invio.
 
Nel primo caso vedete i nomi (names) delle variabili contenute nell’oggetto mydata, nel secondo caso ne vedete la struttura (str).
 
Ora che abbiamo illustrato tutti i passi che verranno seguiti nella presentazione degli esempi, possiamo anche procedere ad una semplificazione dell’esposizione, eliminando le espressioni ridondanti, per migliorare la leggibilità del testo. Pertanto:
→ diamo per sottinteso “nella Console di R digitate
→ diamo per sottinteso “e premete invio
→ utilizziamo la convenzione per cui il simbolo # indica l’inizio di un commento, e manteniamo per i commenti il carattere normale
→ utilizziamo la convenzione per cui il codice attivo di R, cioè quello che viene effettivamente eseguito, viene rappresentato in grassetto e colore bruno
 
Ecco allora che le tre azioni illustrate sopra diventano più concisamente (e, spero, chiaramente):
mydata # visualizza l’oggetto mydata
names(mydata) # visualizza nomi delle variabili in mydata
str(mydata) # visualizza la struttura di mydata
 
Il sistema di help di R
 
Ecco alcuni comandi che vi consentono di accedere rapidamente alle varie possibilità offerte dal sistema di help di R, e che vi suggerisco ovviamente di provare:
→ help navigabile con il browser, il più importante
help.start()
→ aiuto sulla funzione plot
help(plot)
→ aiuto sulla funzione plot
?plot
→ lista tutte le fuzioni che contengono la stringa plot
apropos("plot")
→ ricerca aiuto sul sito web di R
RSiteSearch("")
→ mostra i set di dati di esempio
data()
→ mostra un esempio della funzione plot
example(Theoph)
 
Potete accedere al sistema di help di R anche dal menù Aiuto della Console di R.
 
Come importare in R i dati di un file .csv
 
→ create la cartella C:\R\InputCSV\;
→ salvate (tasto destro del mouse, Salva con nome...) in questa cartella i file InputCSV.txt, InputCSVconid.csv e InputCSVsenzaid.csv;
→ dalla Console di R con File >> Apri script... aprite nell’Editor di R il file C:\R\InputCSV\InputCSV.txt, nel quale è contenuto il codice che vogliamo utilizzare e commentare.
 
Entrambi i file .csv contengono gli stessi dati relativi alla composizione in calcio, fosfato, ossalato e magnesio di 10 calcoli delle vie urinarie. Aprite il file InputCSVcoinid.csv utilizzando il Blocco note di Windows, per vedere come sono organizzati i dati in un tipico file csv (comma separated values) nel quale la prima variabile (id) contiene l’identificativo univoco del caso mentre le successive quattro contengono la quantità di Calcio, Fosfato, Ossalato  Magnesio (primo esempio):
 
id;Calcio;Fosfato;Ossalato;Magnesio
C1;99;81;69;61
C2;78;65;53;43
C3;81;66;38;54
C4;45;23;19;16
C5;44;18;24;19
C6;102;83;72;66
C7;83;68;49;45
C8;74;71;41;57
C9;38;19;22;14
C10;48;14;21;12
 
Nell’Editor di R vedete che nel primo esempio vi è una sola riga di codice così scritta:
mydata <- read.table("c:/R/InputCSV/InputCSVconid.csv", header=TRUE, sep=";", row.names="id")
con la quale è possibile importare in R questi dati specificando che gli identificativi univoci dei casi sono contenuti nella colonna id (row.names="id"). Il codice può essere interamente riutilizzato per le vostre specifiche esigenze, ricordando che dovete semplicemente:
→ sostituire il nome del file "c:/R/InputCSV/InputCSVconid.csv" con quello del vostro file;
→ controllare il separatore di campo usato ed eventualmente correggere opportunamente il punto e virgola in sep=";”.
 
Se controllate ora il secondo esempio, trovate che nel file InputCSVsenzaid.csv i dati sono i medesimi, tranne che per il fatto che manca il campo/variabile id:
 
Calcio;Fosfato;Ossalato;Magnesio
99;81;69;61
78;65;53;43
81;66;38;54
45;23;19;16
44;18;24;19
102;83;72;66
83;68;49;45
74;71;41;57
38;19;22;14
48;14;21;12
 
Coerentemente con questo vedete che nell’Editor di R nel secondo esempio per importare di dati in R vi è una sola riga di codice così scritta:
mydata <- read.table("c:/R/InputCSV/InputCSVconid.csv", header=TRUE, sep=";")
nella quale rispetto al primo esempio il solo dato evidente e significativo (a parte il diverso nome del file) è che è scomparso il parametro row.names="id".
 
Copiate ora il codice/testo del primo esempio dalla finestra dell’Editor di R nella Console di R per eseguirlo e verificare quanto accade effettivamente, e ripetete la cosa separatamente per il secondo esempio. In alternativa potete dalla finestra dell’Editor di R selezionare Modifica >> Esegui tutto. per eseguire entrambi gli esempi.
 
In entrambi i casi utilizzate casi i tasti Pag-sù e Pag-giù per scorrere nella finestra della Console di R quanto avete fatto/è accaduto. Come potete notare nel caso in cui (come nel secondo esempio) manchi l’identificativo della riga/caso, R provvede ad assegnarlo automaticamente, sotto forma di un numero progressivo (1 per la prima riga, 2 per la seconda riga, eccetera).
 
Infine ricordate che:
→ i file csv sono generati automaticamente da  Excel© e OpenOffice.org Calc© salvando il file con l’opzione Salva con nome... e scegliendo come Tipo di File: appunto un file .csv.
→ il formato csv è il formato raccomandato per importare i dati in R.
 
Come importare in R i dati di un file .xls
 
→ create la cartella C:\R\InputXLS\;
→ salvate (tasto destro del mouse, Salva con nome...) in questa cartella i file InputXLS.txt e InputXLS.xls;
→ dalla Console di R con File >> Apri script... aprite nell’Editor di R il file C:\R\InputXLS\InputXLS.txt, nel quale è contenuto il codice che vogliamo utilizzare e commentare.
 
Il file InputXLS.xsl (apritelo con Excel© o OpenOffice.org Calc©) contiene due fogli, con gli stessi dati relativi alla composizione in calcio, fosfato, ossalato e magnesio di 10 calcoli delle vie urinarie che abbiamo visto per il caso di file .csv. Nel primo foglio (Conidriga) compare una colonna id con l’identificativo univoco di ciascun caso/riga, nel secondo foglio (Senzaidriga) questa colonna non compare.
 
Nell’Editor di R vedete che nel primo esempio il codice per importare in R i dati da file .xls è il seguente:
library(RODBC)
channel <- odbcConnectExcel("c:/R/InputXLS/InputXLS.xls")
mydata <- sqlFetch(channel, "Conidriga", rownames="id")
odbcClose(channel)
 
Osservate la prima riga di codice (library(RODBC)). Per importare i dati da un file .xls, R impiega una tecnologia denominata Open DataBase Connect, per la quale è necessara la libreria denominata RODBC. La prima volta che eseguite l’istruzione library(RODBC) dovete essere connessi a Internet, perchè R cercherà automaticamente sul CRAN da voi prescelto la libreria e la caricherà e la installerà sul vostro PC.
 
Le successive righe di codice hanno questo significato:
→ apre la connessione ODBC per il file di cui viene specificato per intero il percorso
channel <- odbcConnectExcel("c:/R/InputXLS/InputXLS.xls")
→ legge i dati dal foglio Conidiriga e specifica che gli identificativi univoci dei casi sono contenuti nella colonna id
mydata <- sqlFetch(channel, "Conidriga", rownames="id")
→ chiude la connessione ODBC
odbcClose(channel)
 
Nel secondo esempio come vedete il codice è praticamente identico rispetto al primo esempio: e il solo dato evidente e significativo (a parte il diverso nome del file) è che è scomparso il parametro rownames="id".
 
Copiate ora il codice/testo del primo esempio dalla finestra dell’Editor di R nella Console di R per eseguirlo e verificare quanto accade effettivamente, e ripetete la cosa separatamente per il secondo esempio. In alternativa potete dalla finestra dell’Editor di R selezionare Modifica >> Esegui tutto. per eseguire entrambi gli esempi.
 
In entrambi i casi utilizzate casi i tasti Pag-sù e Pag-giù per scorrere nella finestra della Console di R quanto avete fatto/è accaduto. Come potete notare nel caso in cui (come nel secondo esempio) manchi l’identificativo della riga/caso, R provvede ad assegnarlo automaticamente, sotto forma di un numero progressivo (1 per la prima riga, 2 per la seconda riga, eccetera).
 
Infine ricordate che:
→ Excel© e OpenOffice.org Calc© come formato di default salvano in formato xls;
il formato csv è il formato raccomandato per importare i dati in R.
 
Gestione dei file con dati mancanti
 
→ create la cartella C:\R\InputNA\;
→ salvate (tasto destro del mouse, Salva con nome...) in questa cartella i file InputNA.txt e InputNA.csv;
→ dalla Console di R con File >> Apri script... aprite nell’Editor di R il file C:\R\InputNA\InputNA.txt e selezionate Modifica >> Esegui tutto.
 
Innanzitutto aprite il file InputNA.csv utilizzando il Blocco note di Windows, e vedrete che i dati (gli stessi di un esempio per iniziare) non erano sempre disponibili per tutte e cinque classi di pazienti:
 
Normali;NCAH;CPH;CAH;AC
1.22;7.44;2.45;2.35;3.51
2.81;4.58;1.63;3.21;4.23
4.02;3.71;3.44;3.88;7.66
2.23;4.94;2.47;1.56;9.54
2.35;3.49;1.95;1.78;11.35
1.64;3.88;4.56;2.49;6.43
2.08;4.71;7.31;3.11;5.28
1.96;4.32;5.78;4.56;2.14
1.54;4.9;3.4;5.11;4.76
1.63;11.43;5.12;2.36;7.91
3.25;4.63;6.88;2.98;9.33
2.9;4.11;3.21;2.53;18.57
3.44;5.03;3.64;1.77;8.81
2.55;9.12;2.8;1.51;14.31
1.18;1.32;3.47;2.93;10.83
1.78;4.33;;;8.48
2.56;5.66;;;9.56
1.36;4.08;;;9.01
1.83;2.48;;;12.44
2.4;1.95;;;7.61
2.61;3.75;;;7.03
3.02;;;;8.8
3.18;;;;6.12
2.97;;;;5.22
1.99;;;;7.99
2.57;;;;6.11
2.13;;;;5.88
3.56;;;;12.3
3.76;;;;14.83
2.28;;;;9.07
1.24;;;;6.83
1.88;;;;6.22
2.76;;;;
1.88;;;;
3.12;;;;
3.54;;;;
3.88;;;;
3.02;;;;
1.18;;;;
2.66;;;;
2.28;;;;
1.33;;;;
1.99;;;;
3.15;;;;
3.18;;;;
4.03;;;;
1.16;;;;
1.96;;;;
3.44;;;;
2.37;;;;
 
Ora passate alla Console di R e utilizzate casi i tasti Pag-sù e Pag-giù per scorrere nella finestra della Console di R quanto è accaduto.
 
Innanzitutto vedete che R ha sostituito automaticamente i dati mancanti con la sigla NA (che sta per Not Available).
 
Poi vedete che R ha calcolato la media nella colonna normali nella quale non vi sono dati mancanti:
# calcola la media della colonna Normali
x <- mydata[c("Normali")]
mean(x)
Normali
  2.457
 
Subito dopo R non ha calcolato la media della colonna NCAH, che ha dati mancanti:
# non calcola la media della colonna/variabile NCAH, ma causa di dati mancanti resituisce NA
x <- mydata[c("NCAH")]
mean(x)
NCAH
  NA
 
Con il parametro na.rm=TRUE che ha rimosso i dati mancanti la media è stata invece calcolata:
# calcola la media della colonna/variabile NCAH dopo avere rimosso i dati mancanti
x <- mydata[c("NCAH")]
mean(x, na.rm=TRUE)
    NCAH
4.755238
 
Infine con il comando:
newdata <- na.omit(mydata)
i dati sono stati trasferiti dall’oggetto mydata all’oggetto newdata omettendo tutti i casi con dati mancanti, e il nuovo set di dati è stato presentato semplicemente invocandolo con il nome newdata.
 
Inserimento dati dalla Console di R
 
→ create la cartella C:\R\InputConsole\;
→ salvate (tasto destro del mouse, Salva con nome...) in questa cartella il file InputConsole.txt;
→ dalla Console di R con File >> Apri script... aprite nell’Editor di R il file C:\R\InputConsole\InputConsole.txt e selezionate Modifica >> Esegui tutto.
 
Ora passate alla Console di R e utilizzate casi i tasti Pag-sù e Pag-giù per scorrere nella finestra della Console di R quanto è accaduto. Nei tre esempi riportati vedete alcune sequenze di codice con le quali potete generare vettori e matrici direttamente con R. I commenti riportati nello script InputConsole.txt sono da soli sufficienti per capire gli esempi, del resto molto semplici. Potete conservare il codice e modificarlo opportunamente per le vostre future esigenze.
 
Questo impiego di R è piuttosto particolare ed ha un significato essenzialmente didattico, visto che di fatto i dati saranno sempre importati da file esterni. Ma per esempio il comando
y <- rnorm(10)
è interessante perchè consente di generare con R sequenze di deviate normali standardizzate z che possono essere utili nell’ambito di simulazioni o verifiche di set di dati.
 
Salvare la sessione di R in un file
 
→ create la cartella C:\R\OutputDati\;
→ salvate (tasto destro del mouse, Salva con nome...) in questa cartella i file OutputDati.txt e OutputDati.csv;
→ dalla Console di R con File >> Apri script... aprite nell’Editor di R il file C:\R\OutputDati\OutputDati.txt e selezionate Modifica >> Esegui tutto.
 
Dopo avere importato i dati (sono gli stessi dati visti in come importare in R i dati di un file .csv) con il codice che ormai ben conoscete, con il comando
sink("c:/R/Outputdati/OutputFile.txt", append=FALSE, split=FALSE)
l’output viene ridiretto dalla Console di R a un file, di cui sono specificati nome e percorso. Il successivo comando
mydata
scriverà i dati su questo file invece di inviarli alla Console di R, come dimostrato dal fatto che nella cartella C:\R\OutputDati\ vi comparirà il file OutputFile.txt nel quale trovate appunto i dati dell’oggetto mydata. Il successivo comando
sink()
ripristina l’output alla Console di R.
 
Salvare i grafici in un file
 
→ create la cartella C:\R\OutputDati\;
→ salvate (tasto destro del mouse, Salva con nome...) in questa cartella i file OutputGrafici.txt e OutputGrafici.csv;
→ dalla Console di R con File >> Apri script... aprite nell’Editor di R il file C:\R\OutputGrafici\OutputGrafici.txt e selezionate Modifica >> Esegui tutto.
 
I dati sono quelli di un esempio per iniziare. Dopo avere presentato il grafico nella finestra questo viene salvato sul disco sotto forma di file nella cartella C:\R\OutputGrafici\ con il nome File[sigla del formato].[sigla del formato] con i seguenti comandi:
 
→ genera un file bmp (Windows bitmap)
bmp("c:/R/OutputGrafici/Filebmp.bmp")
→ genera un file jpeg (Joint Photographic Experts Group)
jpeg("c:/R/OutputGrafici/Filejpeg.jpg")
→ genera un file pdf (Portable Document Format)
pdf("c:/R/OutputGrafici/Filepdf.pdf")
→ genera un file png (Portable Network Graphics)
png("c:/R/OutputGrafici/Filepng.png")
→ genera un file ps (postscript)
postscript("c:/R/OutputGrafici/Fileps.ps")
→ genera un file wmf (Windows metafile)
win.metafile("c:/R/OutputGrafici/Filewmf.wmf")
 
La struttura generale del comando per un file jpeg è la seguente:
# importare i dati
jpeg("c:/R/OutputGrafici/Filejpeg.jpg")
# inserire qui il codice che traccia il grafico
dev.off()
 
ovvero, in altre parole, dovete:
1) come prima cosa importare i dati
2) lanciare il comando jpeg("c:/R/OutputGrafici/Filejpeg.jpg")
3) scrivere o copiare in questa posizione il codice che traccia il grafico
4) lanciare il comando dev.off() per chiudere e salvare il file.
 
Controllate infine che nella cartella C:\R\OutputGrafici\ compaiano i sei file generati dallo script. Ora siete completamente autonomi nel generare i file con le immagini che potete utilizzare per le vostre presentazioni.
 
L’interfaccia grafica (GUI) di R
 
Nonostante questo corso sia basato sull’uso della Console di R, non va dimenticato che questo dispone anche di una interfaccia grafica (GUI, Graphic User Interface) che consente di utilizzare il linguaggio di R senza conoscerlo, semplicemente selezionando i comandi da userie di menù. E che consente quindi all’utente di interagire con R con una interfaccia “evoluta”, simile a quella degli altri programmi di statistica in ambiente Windows©.
 
La GUI ufficiale di R è R Commander. Per installarla dovete collegarvi a Internet e digitare nella Console di R il comando:
library(Rcmdr)
 
R si collegherà al CRAN prescelto per scaricare il pacchetto Rcmdr che volete installare, ma attenzione: Rcmdr presuppone che siano installati sul PC altri pacchetti, cui esso si appoggia. Per questo vedrete effettuare automaticamente il download e l’installazione di più pacchetti, tutti quelli tra loro concatenati e quindi necessariamente e contemporaneamente richiesti per garantire la funzionalità dell’unico pacchetto (Rcmdr) che avete selezionato.
 
Una volta installato R Commander viene richiamato al bisogno sempre con il comando
library(Rcmdr)
digitato il quale vedrete comparire la sua interfaccia grafica dalla quale è possibile accedere alla documentazione di R Commander selezionando Aiuto >> Introduzione a R Commander. Potete anche accedere per altra documentazione al sito dell’autore John Fox (http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/). In ogni caso il materiale che trovate è più che sufficiente per imparare a utilizzare R Commander, per cui io non lo tratto ulteriormente.
 
Una cosa molto importante riportata nella documentazione. Per funzionare propriamente sotto Windows©, R Commander necessita della Single Document Interface (SDI). Per questo è necessario (ma solamente la prima volta) configurare l'avvio di R come segue:
→ fare click con il tasto destro del mouse sull'icona di R che avete sul desktop;
→ scegliere Proprietà;
→ selezionare la scheda Collegamento;
→ nel campo Destinazione dopo Rgui.exe aggiungere --sdi (aggiungere prima uno spazio quindi --sdi, in modo che la Destinazione risulti indicata come Rgui.exe --sdi).
 
Utilizzare i dati e gli script con MacOS X
 
Per i possessori di Mac utilizzare i dati e gli script qui riportati è fortunatamente molto semplice:
→ scaricare il file di dati (ad esempio Statcorr.csv) e lo script (ad esempio Statcorr.txt) desiderati, che MacOS X salva automaticamente nella cartella Download;
→ lanciare R;
→ nel menù Misc >> Cambia Cartella di Lavoro... selezionare come cartella di lavoro la cartella Download;
→ dal menù File >> Apri Documento... aprire lo script con il codice che volete eseguire (nell’esempio Statcorr.txt);
→ nella riga che legge i dati trovate scritto mydata <- read.table("c:/R/Statcorr/Statcorr.csv", header=TRUE, sep=";");
→ correggete il codice in mydata <- read.table("Statcorr.csv", header=TRUE, sep=";") eliminando c:/R/Statcorr/ ovvero, in altre parole, lasciate all’interno delle virgolette solamente il nome del file.
 
Fatta questa modifica, potete eseguire passo passo le righe di codice esattamente come indicato negli esempi!
 
Ovviamente potete anche spostare i dati e gli script dalla cartella Download in qualsiasi altra cartella: ricordatevi semplicemente che dovrete selezionare questa nuova cartella come cartella di lavoro, nella quale sono contenuti i dati, dal menù Misc >> Cambia Cartella di Lavoro...
 
 
********************************
 
 
BuiltWithNOF
[Home] [Errori cognitivi] [Epistemologia] [Teorema di Bayes] [Decisioni mediche] [Le basi biochimiche]
[Analisi tradizionali] [Analisi genetiche] [Qualità in laboratorio] [Statistica e laboratorio]
[Storia delle medicina] [Download] [Link] [Bacheca] [FAQ] [Chi sono]
Cornice_265
iNRiM
Il linguaggio delle misure
it
LabTestOnline
The_Merck_Manual
Tavole metaboliche
IEoMet
R
Manuale Merck di diagnosi
e terapia
Tavole metaboliche
Errori congeniti del metabolismo
Corso base di statistica con R
Segui i temi del sito anche sul mio blog Segui il blog di Marco Besozzi
Ricevi le novità mediante i feed RSS Segui i feed RSS di Marco Besozzi
Esplora i contenuti del sito in sintesi su Segui Marco Besozzi su twitter
Inprimopianochiaro
new

Senza dati di appropriatezza i tagli indiscriminati sono inevitabili

 Attualità in tema di eGFR:

 eGFR o creatinina nel siero?

 eGFR, indagine in Piemonte  [b]

 eGFR, riflessioni critiche  [b]

Esercizi di statistica

Teorema di Bayes e medicina basata sull’evidenza (EBM)

Informazione diagnostica e curve ROC

Download02

Programma di statistica Ministat (versione per Windows)

Programma di statistica Open Source R(per Linux, Mac OS X e Windows)

OpenOffice, la suite Open Source (per Linux, Mac OS X e Windows)
new

Regressione lineare parametrica con quattro modelli inclusa la regressione di Deming

Calcolo degli intervalli di confidenza di sensibilità, specificità, valore predittivo, likelihood ratio

 I migliori  02  scelti per voi...

The Medical Biochemistry Page

Corso di Epidemiologia

FreeBooks4Doctors

Westgard QC

Le letture
consigliate
Book-03-june

         L’articolo da non perdere...    

E ora che i test genetici sono alla portata di tutti?
Con meno di mille euro è possibile comprare un test genetico su Internet: si manda un piccolo campione di cellule e poi si aspetta la risposta.
Ma... a che cosa serve la risposta?
Un dossier di Marika De Acetis,
lo trovate sul sito www.torinoscienza.it
I migliori libri del mese
 
Leonard Mlodinow
   La passeggiata dell’ubriaco. Le leggi scientifiche del caso.
Rizzoli Editore, 2009, pp. 294. ISBN: 17034081.
I migliori libri del mese
new 
  Giovanni Federspil
   Logica clinica. I principi del metodo in medicina.
McGraw-Hill, 2004, pp. 368. ISBN: 88 386 2984-6.
e-books...
 
Wim P. Krijnen
Applied Statistics for Bioinformatics using R
e-books...
 
Mauss, Berg, Rockstroh, Sarrazin, Wedemeyer, at al.
Hepatology - A clinical textbook. Seconda Edizione - 2010
e-books...
 
Dennis A. Noe
The logic of Laboratory Medicine.