R: software e linguaggio statistico commerciale

R: software e linguaggio statistico commerciale

Introduzione a R

Logo linguaggio RR ebbe origine da un progetto di Ross Iheka e Robert Gentlmen dell’Università di Auckland: l’idea era lo sviluppo di una piattaforma per l’analisi statistica liberamente utilizzabile. Ben presto acquistò il nomignolo “GNU S” perché si poneva in netta contrapposizione con il più celebre linguaggio statistico commerciale S, sviluppato da AT&T Bell Laboratories. R si propone nel panorama open source come un potente ambiente di analisi computazionale e grafica, dotato di un completo linguaggio con cui l’utente interagisce con il motore interno. Il progetto garantisce una buona compatibilità con il linguaggio S (e la sua versione commerciale S-Plus): questo aspetto ha comportato senza dubbio gran parte del successo di R che, grazie alla licenza d’uso gratuita, ha attirato specialisti dell’area scientifica provenienti da ambienti di ricerca in cui S risultava lo strumento di analisi per antonomasia.

Oggigiorno R gode di una vasta comunità di specialisti (non solo del settore statistico) che utilizzano e spesso contribuiscono alla sua crescita mediante la condivisione di proprie soluzioni, disponibili sotto forma di package: a supporto di questa realtà è stato costituito il CRAN (Comprehensive R Archive Network), con l’obiettivo di organizzare al meglio tutte le risorse disponibili (sorgenti, documentazione, manuali, package) e di renderle facilmente accessibili in Internet.
Sebbene il linguaggio sia intuitivo e gli strumenti di analisi siano numerosi e molto potenti, la condizione necessaria per utilizzare al meglio R è che l’utente abbia una buona conoscenza sia delle potenzialità del software che delle modalità di analisi.

R - software e linguaggio statistico commerciale

Architettura di R

R è stato scritto in C ed è disponibile per tutti i principali sistemi operativi: Microsoft Windows, Macintosh OS X e UNIX. Il suo sviluppo è gestito dal cosiddetto R Development Core Team, costituito da programmatori ed esperti scientifici. La struttura principale di R può essere scomposta nei seguenti moduli:
– motore: è lo strato più basso del software in cui viene gestito l’aspetto computazionale (precisione di calcolo) e l’interpretazione dei comandi impartiti dal linguaggio con cui l’utente interagisce con il sistema. Gli sviluppatori hanno curato la possibilità di poter integrare il motore R in altri applicativi mediante una cosiddetta versione embedded, costituita da una particolare libreria dinamica: si rimanda all’appendice per un maggiore dettaglio tecnico.
– linguaggio: R utilizza un linguaggio molto semplice, adopera le notazioni standard dell’algebra (ad esempio 1+1, 3A4), non ha bisogno di file esterni da includere, le dichiarazioni sono implicite, non ci sono puntatori e le stringhe possono essere trattate e manipolate direttamente: in poche parole, non serve essere dei programmatori per poterlo utilizzare.
In R tutte le componenti del linguaggio sono oggetti: spesso l’output di un comando è un oggetto il cui contenuto può essere anche molto complesso: l’utente può accedere alle informazioni contenute richiamando gli opportuni attributi. La gestione della memoria associata agli oggetti è garantita da un garbage collection, analogamente al linguaggio Java.

Dal punto di vista implementativo, R è molto simile al Lisp (List Processor) che rappresenta uno dei primi linguaggi di programmazione, ideato nel 1958 da John McCarthy come linguaggio formale per studiare le equazioni di ricorsione in un modello computazionale. La popolarità del linguaggio fu subito immediata per il grande interesse suscitato nell’ambito dell’Intelligenza Artificiale: senza dubbio il successo è dovuto alla semplicità di un linguaggio con poche regole di sintassi e alla possibilità di generare e compilare al volo codice Lisp. Tuttavia questo successo portò alla definizione di numerosi dialetti come InterLisp, Maclisp, ZetaLisp, and Franz Lisp: solo nel 1994, ANSI pubblicò la versione standard di Lisp, chiamata ANSI X3.226-l994 Information Technology Programming Language Common Lisp o semplicemente Common Lisp. Sebbene oggi si preferisca utilizzare linguaggi di più alto livello come Java o Python, esistono molti programmi come Emacs e i sistemi CAD (ad esempio AutoCAD e intelliCAD) che impiegano Lisp come linguaggio di estensione.
– grafica: per R la grafica è uno dei requisiti più importanti. Questo aspetto è molto curato tanto da unire efficacia ed eleganza: l’analisi grafica deve necessariamente supportare l’analisi computazionale e aiutare l’utente a intuire informazioni particolari, come nel caso della distribuzione dei dati. A parte i classici istogrammi e boxplot, è possibile tracciare funzioni, disegnare punti, inserire notazioni di testo o legende: tutto questo con grande precisione e qualità. E’ possibile in qualsiasi momento stampare o salvare su file i grafici eventualmente prodotti.
– estensioni (package): il grandissimo pregio di R consiste nel poter ampliare il programma con plug-in che si integrano perfettamente nel sistema e nel linguaggio: tali estensioni sono dette package.

Questo approccio permette di svincolare il team di sviluppo di R dalla responsabilità di far crescere il progetto: viceversa sono gli specialisti utilizzatori di R che creano estensioni atte ad affrontare il proprio campo di analisi; una volta consolidato il lavoro, è possibile pubblicare il package. Nella rete CRAN sono disponibili decine e decine di estensioni pronte all’uso: l’offerta spazia dai pacchetti di utilità (ad esempio connessione ai database), a soluzioni trasversali (ad esempio il package tree per gli alberi decisionali e di regressione) o verticali (pacchetti per specifiche aree della biologia). Tuttavia possono presentarsi dei problemi nell’installazione dovuti o alla propria versione di R non compatibile con l’estensione o una dipendenza tra estensioni non soddisfatta.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *