1 Introduzione
v1.1.3 30/10/2023
1.1 Cosa c’è da imparare in questo capitolo.
Questa è una breve introduzione a R. Ti suggerisco di scorrere velocemente questo capitolo per farti un’idea generale del linguaggio e delle sue potenzialità.
1.2 Convenzioni e guida alla lettura e all’uso del codice.
Quando nel testo compare un blocco in grigio, come quello che segue
> demo(graphics)
si tratta di un comando o di una serie di comandi, e deve essere scritto nella console5 così come appare, senza il carattere >
, se presente (questo carattere indica il prompt dei comandi, roba che risale a decine e decine di anni fa…). Quando ometto il carattere >
vuol dire che quell’insieme di comandi è pensato per essere eseguito come script (va copiato e incollato in uno script e eseguito in gruppo o comando per comando).
<esc>
indica che dovete pigiare (o sfiorare, o martellare) il tasto esc sulla vostra tastiera. Lo stesso vale per <cmd>
, <ctrl>
e simili.
<File -> Open recent>
rappresenta una serie di click su menu e, eventualmente sottomenu, generalmente nella barra principale dei menu della GUI6 di R o RStudio.
Un comando del tipo plotrix::fan.plot()
indica che il comando (in questo caso fan.plot()
) appartiene ad un determinato pacchetto (in questo caso plotrix
).
Linee orizzontali delimitano figure o tabelle
I titoli dei paragrafi che costituiscono degli approfondimenti sono in corsivo.
1.3 Tutti vogliono imparare a usare R.
Se sei un ricercatore (più o meno in erba) devi per forza aver usato qualche forma di analisi grafica e statistica dei dati che hai prodotto. Nella peggiore delle ipotesi, avrai usato qualcuno dei rudimentali strumenti offerti dalla maggior parte dei software per fogli di calcolo. Nel migliore dei casi, avrai già avuto un’esperienza più o meno estesa con veri software per l’analisi statistica (stand alone o, sempre più frequentemente, basati sul cloud computing).
Tuttavia, se stai leggendo questo libro, stai più o meno seriamente considerando di imparare a usare R. R è, al tempo stesso un linguaggio (nel senso di linguaggio di programmazione), un ambiente, nel senso di ambiente di programmazione e un’applicazione, che puoi scaricare da uno dei siti del CRAN, che sta per Comprehensive R Archive Network7.
R, abbastanza ovviamente, è il linguaggio e l’ambiente per l’analisi statistica e per la scienza dei dati, anche se altri linguaggi, come Python e Julia, possono essere più indicati per alcune applicazioni e, soprattutto, per l’analisi di big data. Ci sono diverse ragioni (4, 5, 6, 8, 10…, prova a cercare “reasons to learn R” con un motore di ricerca) per investire del tempo per imparare a usarlo:
è un software gratuito, libero ed aperto, mantenuto e sviluppato da una grande comunità di statistici e programmatori
è disponibile per diverse piattaforme: è possibile installarlo su sistemi basati su UNIX, MacOS, Windows8
è il software statistico più ricco di funzionalità: fra l’applicazione base, scaricabile dal CRAN e le migliaia di librerie (o pacchetti, o packages9), scaricabili dal CRAN, o da repository più o meno specializzati come Bioconductor o creati da singoli programmatori e disponibili su GitHub, offre il più incredibile insieme di funzionalità per la programmazione, la gestione e l’analisi statistica e grafica di dati. Insomma, se c’è uno strumento nuovo è probabile che sia disponibile su R anni prima che sia reso disponibile (se mai lo sarà) in altri software, commerciali o gratuiti.
è potente: anche con un notebook relativamente poco performante è possibile eseguire in maniera efficace e rapida analisi molto complesse di set di dati relativamente grandi (alcuni GB). R, tuttavia, può essere usato su cluster di calcolo e gestire problemi veramente enormi10.
è popolare, trasparente e riproducibile: la comunità degli utilizzatori di R ha una fortissima tradizione di condivisione e aiuto reciproco, come testimoniato dalle decine di blog, forum, siti web dedicati, in maniera più o meno specifica, a R. Inoltre, se scrivi bene il codice e fornisci tutti i dati necessari, le tue analisi possono essere ripetute esattamente come le hai “pensate” (e persino migliorate!): in un mondo in cui sempre più spesso viene richiesto di fornire dati e software in maniera aperta questo è un aspetto assolutamente fondamentale. Infine, per come la vedo io, ha strumenti potentissimi per la presentazione dei risultati dell’analisi sotto una miriade di formati, inclusi quelli interattivi11.
può migliorare le tue prospettive di carriera: una buona conoscenza della programmazione in R sta diventando rapidamente un asset fondamentale per lavorare nella ricerca pubblica e privata e, in generale, nell’analisi dei dati.
Vorrei poter aggiungere che saper usare R è una cosa fighissima e sexy (e migliora di molto la tua probabilità di rimorchiare ragazz*), ma non sono del tutto sicuro che sia vero. Quello che è vero è che programmare in R può essere molto soddisfacente.
1.3.1 Provare per credere: App, GUI, IDE e altre diavolerie.
Installare R.
Puoi scaricare l’applicazione (o software o app) R dal CRAN12. In alternativa, se ti fa piacere, puoi scaricare Microsoft R qui. Fai attenzione alla versione del tuo sistema operativo e in generale alle caratteristiche della tua macchina: non tutte le versioni di R sono supportate dalle macchine più “antiche”, ma puoi sempre trovare la versione “legacy” adatta alla tua macchina. Se hai già installato altro software sul tuo computer non dovresti avere difficoltà. Altrimenti, usando un motore di ricerca puoi trovare facilmente dei video tutorial, anche in italiano13.
R GUI.
Concluso il processo di installazione troverai l’icona di R sul tuo desktop o dovunque siano le icone delle applicazioni sul tuo sistema, e potrai aprire l’interfaccia grafica (Graphical User Interface o GUI).
Quella che vedi qui sotto è la GUI di R 4.1 per MacOS.
Anche se ho aperto qualche finestra in più, ti renderai conto che si tratta di un’interfaccia minimalista: pochi menu, tab, frame, pochissime finestre…14. E, soprattutto c’è un inquietante cursore lampeggiante vicino al segno >
nella console (lo spazio principale in cui è possibile inserire i comandi e il segno >
è il prompt).
In R i comandi vengono scritti nella console (e per eseguirli è sufficiente premere <invio>
), ed è nella console che appaiono molti dei risultati delle analisi, oltre che messaggi (inclusi quelli di errore).
Proviamo ad eseguire un comando. Nella console, scrivi dopo il prompt:
>demo(graphics)
e premi invio. Se segui le istruzioni sulla console15, vedrai apparire una serie di demo delle capacità grafiche di R (c’è molto di più, credimi).
Ora, prova a scrivere:
>help(demo)
Si aprirà una finestra con l’aiuto (le istruzioni) per l’uso della funzione/comando “demo”, che hai appena usato.
Complimenti, hai scritto ed eseguito i tuoi due primi comandi in R!!.
Altre GUI.
Facciamo un salto in avanti e proviamo a scrivere ed eseguire un altro comando16.
>library(Rcmdr)
Se appare un errore è perché il pacchetto non è ancora installato nel tuo sistema. Vedremo in dettaglio l’installazione dei pacchetti in un capitolo successivo, ma, per installare R commander e i pacchetti di cui ha bisogno per funzionare (le “dependencies”) puoi eseguire il comando:
>install.packages("Rcmdr", dependencies = T)
Se tutto va bene, sulla console appariranno un po’ di messaggi:17
Il risultato è l’apertura della GUI di R Commander, una graphical user interface
piuttosto bruttina e minimalista che però consente di usare R in maniera simile a molti altri software di analisi grafica e statistica (ma credimi, non è quello che vuoi veramente, o, se lo vuoi, puoi smettere di leggere questo libro).
RStudio.
RStudio è un ambiente di sviluppo integrato (IDE)18 disponibile sia come versione gratuita che con una serie di versioni professionali. L’installazione di RStudio richiede la presenza di R sul tuo sistema. Scaricare e installare RStudio è semplice. Scegli la versione che preferisci, scarica l’installer e segui le istruzioni19.
Una volta scaricato e installato il software, aprilo, ed ecco qui:
RStudio rende molto più facile lavorare con R ed è il software che useremo per tutto questo corso.
Radiant.
Radiant è una piattaforma interattiva per condurre analisi statistiche per l’analisi aziendale. In realtà, si tratta di un’interfaccia realizzata con RStudio, piuttosto completa.
L’uso è abbastanza semplice e intuitivo. E’ sufficiente scaricare il pacchetto dal CRAN e installarlo, caricarlo in memoria e lanciare l’interfaccia (per uscire usa il tasto
>install.packages("radiant")
>require(radiant)
>radiant::radiant()
In alternativa, dopo aver installato il pacchetto, è possibile lanciarlo da RStudio con <Tools -> Addins -> Browse Addins...>
.
Il software si apre di default nel vostro browser, ma può essere aperto nel Viewer di RStudio.
1.4 L’altra faccia della medaglia: troppa fatica.
Beh, ma ancora una volta, se sei qui è perché non hai voglia di perdere tempo o perché, essendo pigr*, non vuoi fare troppa fatica per imparare a usare R, o perché ci hai già provato e hai lasciato perdere. Molti avranno cercato di scoraggiarti, proponendoti alternative più o meno valide. Fra i (tanti) difetti di R viene citata la lentezza, le limitazioni nell’uso della memoria, etc., ma il principale è sicuramente lo sforzo richiesto per raggiungere un ragionevole livello di padronanza dell’uso di questo linguaggio per l’analisi dei dati.
“R has a steep learning curve”.
Avrai sicuramente letto che “R has a steep learning curve”: è una frase che non ha molto senso (se si pensa alla forma di una curva di apprendimento) ma che vuole fondamentalmente dire che, all’aumentare dell’esperienza o del tempo speso nell’apprendimento i progressi iniziali sono relativamente lenti (una curva che compara diversi software è qui). D’altra parte, con R non si finisce mai di imparare e, sicuramente, l’esperienza di apprendimento di R, se sei motivat*, ripaga molto più degli sforzi comunque necessari per apprendere l’uso di molti software statistici professionali20. E’ certamente un processo frustrante, come puoi vedere dalla figura successiva21, ma se terrai duro, leggendo (beh, studiando, almeno un po’) questo libro arriverai sicuramente alla fase 2.
Ma perché può essere difficile imparare a usare R?
è un linguaggio22 e, fondamentalmente, devi “scrivere”, sotto forma di singole istruzioni o script o app quello che vuoi fare, e quindi ti tocca conoscere la sintassi (l’insieme di regole che ti permettono di comporre un comando che funzioni)23 (figura 1.6) e acquisire il vocabolario (R base ha centinaia di funzioni e migliaia di altre funzioni sono aggiunte dai pacchetti/librerie)
la documentazione è quasi esclusivamente in inglese (e talvolta in un inglese decisamente tecnico)
ci sono, letteralmente, molti modi di scuoiare un gatto: lo stesso risultato (in termini di operazioni preliminari di trasformazione e riorganizzazione dei dati, di analisi grafica e statistica) può essere ottenuto in molti modi diversi. Per esempio i pacchetti del tidyverse costituiscono in qualche modo un’evoluzione del linguaggio di base, basato su un concetto molto coerente di organizzazione della sintassi e delle strutture dei dati. Scegliere se concentrarsi sull’apprendimento della versione “base” di R o sugli equivalenti “tidy” di molte funzioni è un una scelta personale ma, per molte ragioni, è necessario avere una qualche conoscenza di entrambi i sistemi
R può essere usato in molti modi:
in modo “interattivo”, per se stessi: immettendo i comandi ad uno alla volta nella console ed eseguendoli uno per volta: il risultato del comando produrrà altri oggetti, un output (che andrà su file o alla console) o un “effetto collaterale” (p.es. il salvataggio di un file). Questo è ovviamente il modo più semplice per iniziare, ma più inefficiente per “comunicare” i risultati dell’analisi e meno ripetibile24, ma è anche il modo in cui “si provano” i comandi.
in modo “programmatico”, per se stessi, o per altri: i comandi (probabilmente testati in modo interattivo) vengono raccolti in uno script e, se si organizza il tutto sotto forma di un documento in R Markdown e si usano altri accorgimenti (p.es. con l’uso di “progetti”) è possibile riprodurre e ripetere l’analisi (eventualmente con minime modificazioni) quante volte si vuole, generando report che includono i risultati delle analisi statistiche e grafiche, oltre che, eventualmente, il codice sotto forma di una varietà di formati (documenti in MS Word, html, pdf, slide, etc.).
sviluppando applicazioni interattive: con R (e diversi pacchetti aggiuntivi) si possono sviluppare documenti e applicazioni interattive, che consentono ad utenti anche inesperti di controllare l’output dell’analisi, scegliendo per esempio cosa rappresentare in un grafico (e, in alcuni casi, come farlo). Molti pacchetti di R (Shiny, Plotly, learnr, bookdown25) consentono di sviluppare documenti, tutorial o applicazioni interattive, pronte per l’uso nel web.
Questa enorme flessibilità è una della ragioni per cui chiunque voglia condurre analisi grafica e statistica in modo professionale dovrebbe imparare a usare R.
1.5 R, per pigri.
E quindi, eccoci qui: questo libro nasce proprio per aiutare te (che sei pigr* o non hai tempo) ad imparare ad usare R e condurre almeno il minimo indispensabile di analisi grafiche e statistiche tipicamente utilizzate nella ricerca biologica. L’approccio sarà sostanzialmente pragmatico, cercando di limitare al minimo le descrizioni formali e facendo il possibile per indirizzarti verso i percorsi di apprendimento più rapidi e verso le risorse (libri, siti web, etc.) più utili. Credo che questa sia, forse, la cosa più importante, anche se finirà per riflettere quelle che sono, inevitabilmente, inclinazioni personali: la documentazione su R è sterminata e non sempre molto efficace. Nelle note a piè di pagina e nei link troverai le risorse essenziali, ma anche ulteriori risorse per approfondire.
Dal momento che tutto (beh, quasi tutto26 c’è qualcosa in altre lingue) il materiale interessante su R è in inglese, la scelta di scrivere in italiano potrebbe sembrare un po’ controintuitiva. Tuttavia, tu siete pigr* e io, per esperienza, so che il mix di inglese, informatica e statistica può essere decisamente letale.
Nel caso la tua pigrizia ti spingesse a credere che imparare a fare analisi statistica con un qualsiasi altro software sia più semplice che farlo con R, vorrei dire un’altra volta che questo può essere vero, ma solo in parte. L’ultima volta che ho guardato i manuali d’uso di Systat erano qualcosa come 7 volumi e imparare ad usare bene un software professionale per l’analisi statistica non è sicuramente una passeggiata (per pigri).
Quindi, iniziamo!!
eh, ma che cos’è una console… un po’ di pazienza, arrivate almeno al capitolo 1↩︎
Graphical User Interface↩︎
se ti interessa un pistolotto abbastanza lungo sulla storia di R il migliore è qui, anche se è decisamente un tantino tecnico, ed è in inglese. Qualcosa in italiano la trovi qui. R è un linguaggio recente: la prima versione stabile appare nel 2000↩︎
esiste addirittura un’implementazione di Microsoft, Microsoft R e RStudio rende disponibile una versione cloud di R↩︎
al momento della revisione di questo capitolo, agosto 2023, nel solo CRAN sono disponibili oltre 20.000 pacchetti; il numero di pacchetti disponibili su varie fonti è ancora maggiore; clicca qui per delle statistiche aggiornate↩︎
qualche dettaglio in più, con un confronto con alcuni software commerciali, lo trovi qui↩︎
questo libro è scritto in RStudio sotto forma di documento Rmarkdown, usando comandi di R per generare analisi statistiche e grafiche↩︎
in realtà dallo stesso sito potresti voler scaricare varie utility necessarie per la compilazione delle librerie o pacchetti, ma questo non è strettamente necessario, perché quasi tutti i pacchetti sono o saranno disponibili in un formato immediatamente installabile↩︎
ecco un video di Federica web learning↩︎
puoi confrontarla con quella dei software statistici che conosci, o, semplicemente, cercare “SAS graphical user interface” su un motore di ricerca, sostituendo SAS con il tuo software favorito (beh, favorito fino all’altro ieri) e selezionando le immagini come risultati↩︎
se ti stanchi usa il tasto
<esc>
↩︎questo particolare comando carica nell’“ambiente” un pacchetto già installato.↩︎
sono dei
warning
o avvisi, in rosso: richiedono l’attenzione dell’utente ma non indicano condizioni fatali, che non permetterebbero di portare a termine le operazioni↩︎usa un motore di ricerca per cercare “installare RStudio video” e appariranno i link a decine di video, più o meno efficaci, un tributo alla necessità di essere rassicurati, immagino.↩︎
e ti spinge a pensare a quello che stai facendo, soprattutto in termini di analisi statistica, il che é un’ottima cosa↩︎
non sono riuscito a trovare la fonte originale dell’immagine, che comunque ho modificato; il candidato più probabile è qui↩︎
per quanto di alto livello, cioé relativamente vicino al linguaggio naturale↩︎
R può essere molto “sensibile”, basta usare male maiuscole o minuscole o non scrivere esattamente il nome di una funzione o di un parametro per ottenere soltanto un messaggio di errore, qualche volta molto criptico; fortunatamente RStudio ti aiuta con suggerimenti e altro, cosa che non fa la scontrosa GUI di R, che è progettata per i puri e duri↩︎
a meno che, come vedremo dopo, tu non conservi una traccia di quello che hai fatto sotto forma di uno script↩︎
incidentalmente questo libro è scritto con R markdown e trasformato in un libro con bookdown e, nel futuro, i tutorial saranno prodotti con learnr↩︎