Linguaggio R e applicazioni statistiche

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Linguaggio R e applicazioni statistiche"

Transcript

1 Università degli Studi di Torino Ennio Davide Isaia Linguaggio R e applicazioni statistiche a.a Dipartimento di Statistica e Matematica Applicata Diego de Castro

2 È senza dubbio inevitabile che questi appunti presentino errori materiali; Sarò grato a tutti coloro, e specialmente agli Studenti, che vorranno segnalarci qualunque problema, dai più banali errori tipografici alle oscurità nell esposizione. Avvertenza Tutti i diritti di questa pubblicazione sono degli autori. Viene consentita la riproduzione integrale di questa pubblicazione a titolo gratuito. Altresì è permessa, sempre a titolo gratuito, l utilizzazione di parti di questa pubblicazione in altra opera all inderogabile condizione che ne venga citata la provenienza e che della nuova opera nella sua interezza vengano consentite la riproduzione integrale a titolo gratuito e l utilizzazione di parti a queste stesse condizioni. L uso di questa pubblicazione in qualsiasi forma comporta l accettazione integrale e senza riserve di quanto sopra. Dipartimento di Statistica e Matematica Applicata Diego de Castro Corso Unione Sovietica, 218/bis 10134, Torino (Italy) c

3 Capitolo 1 Introduzione ad R R, parente di S-Plus ed erede di S, è un ambiente integrato che consente di elaborare dati, eseguire calcoli e creare rappresentazioni grafiche; dotato di un linguaggio di programmazione ad alto livello, con esso è possibile eseguire operazioni assai complesse con poche linee di comandi e, pertanto, si dimostra uno strumento estremamente potente che permette di analizzare e risolvere problemi specifici attinenti a diversi settori scientifici. Le sue caratteristiche peculiari, ai fini statistici, sono rappresentate dalla possibilità di elaborazione di grandi quantità di dati, la vasta disponibilità di operatori per il calcolo matriciale e vettoriale nonché l enorme disponibilità di librerie ( package ) matematiche, statistiche e grafiche. R, inoltre, è un software completamente gratuito e continuamente aggiornato, disponibile per piattaforme Unix (FreeBSD, NetBSD, Linux, Irix, Solaris, OSF/1, AIX, HPUX), Windows 9x/NT nonché MacOS. La URL ufficiale per il progetto R è: dove è possibile prelevare l ultima versione di R, un manuale ufficiale di riferimento a cura del R Core Team (2000) nonché una vasta gamma di packages aggiuntivi; un interessante lista di Frequently Asked Questions, The R FAQ a cura di Kurt Hornik, è reperibile all indirizzo Una volta acquisito il programma e prescindendo dall installazione/compilazione a seconda della piattaforma di destinazione, l applicativo ed altri file, tra cui.renviron saranno raccolti in un unica directory, ad esempio <drive>\...\r Home Directory, la quale, a sua volta, conterrà altre directory, tra le quali: \library: contenente le librerie ( package ) di base nonché quelle di interesse per l utente, ad esempio: \library\base

4 Dipartimento di Statistica e Matematica Diego de Castro, nota tecnica 2, 2OO1 \library\ctest... \library\modreg nelle quali sono posti i file, in formato ACII, CONTENTS, DESCRIPTION, INDEX e TITLE; inoltre, ciascuna di esse ha una struttura comune, articolata in altre directory tra cui citiamo: \R: contenente il file sorgente, in formato ACII, delle funzioni definite per il package stesso; \data: contenente alcuni archivi di dati a cui viene spesso fatto riferimento nelle finestre di help di R stesso. \help: contenente, in formato compresso (.zip,.tar,...) i file di help in linea; \html, \latex: ove sono posti i file di help in formato html e L A TEX. \doc: contenente, organizzati in corrispondenti sotto-directory, alcuni documenti di aiuto. A tal proposito è bene tenere a mente che essenziale ai fini di un corretto funzionamento dell applicativo è la presenza del package base, contenente in \library\base\r il file di definizione dei principali comandi (base), nonché il file Rprofile di definizione dell ambiente di lavoro. 1.1 L ambiente di lavoro Una volta lanciato il programma compare la finestra R GUI 1, dove potranno essere impartiti i comandi e saranno visualizzati i risultati delle elaborazioni o gli eventuali messaggi di errore; tale finestra dispone di menu (File, Edit, Misc, Windows, Help) autoesplicativi. Nel seguito lavoreremo unicamente attreverso la finestra R GUI, cioè impartiremo, dopo il classico prompt >, i comandi in sequenza oppure li sottoporremo in modalità batch. All avvio R GUI mostra alcune informazioni, quali la versione di R che si sta usando ed alcuni comandi chiave per iniziare o chiudere una sessione di lavoro. Un comando, a cui ci abitueremo, è help(argomento); ad esempio help() chiede ad R di aprire una nuova finestra che contiene una breve guida in linea dal titolo 1 Sotto Unix compare la finestra R Console, il cui aspetto è piuttosto spartanto. Sotto MacOS e Linux-ppc comapre la fienstra R Console, delt tutto analoga alla finestra R GUI che caratterizza i sistemi Windows9x/NT e Linux. 2

5 E. D. Isaia, Linguaggio R e applicazioni statistiche R Information. Tale finestra offre una descrizione dettagliata del comando e, più importante, riporta in fondo una serie di esempi che, mediante copia e incolla, possono essere inseriti sulla Console. Un secondo comando utile per avvicinarsi ad R è demo(), il quale, a seconda della versione installata, potrebbe porgere: > demo() Use demo(topic) where choices for argument topic are: topics [1,] "graphics" [2,] "image" [3,] "lm.glm" [4,] "glm.vr" [5,] "nlm" [6,] "recursion" [7,] "scoping" [8,] "is.things" [9,] "dyn.load" In sostanza R suggerisce di utilizzare il comando nella forma demo(topics), dove topic è uno degli argomenti proposti; ad esempio demo(graphics). Una terza finestra disponibile è la Graphics Window ove verranno visualizzati, appunto, i grafici via via richiesti. Questa abitualmente non viene aperta all avvio di R, ma viene attivata allorché si impartisce un comando che prevede un output grafico. L utente può in ogni caso forzare la sua attivazione con il comando X11(), windows() o macintosh() a seconda della piattaforma Unix, Windows9x/NT o MacOS rispettivamente. È bene tenere a mente che per default l area di lavoro corrisponde alla directory \R Home Directory; tale situazione può essere modificata in qualsiasi istante ricorendo al comando setwd(<directory>). Così, ad esempio, immaginando un installazione su piattaforma Windows, potremmo avere: > getwd() [1] "C:\Programs\R" > setwd("c:\progetti") NULL > getwd() [1] "C:\Progetti" > setwd(r.home()) NULL > getwd() 3

6 Dipartimento di Statistica e Matematica Diego de Castro, nota tecnica 2, 2OO1 [1] "C:\Programs\R" Al momento di abbandonare R, ci viene richiesto se desideriamo registrare quanto svolto nella corrente sessione di lavoro: > q() Save workspace image? [y/n/c]: In caso affermativo, l intero workspace verrà registrato, per default, sul file Rdata; in tal modo sarà possibile ritornare al punto semplicemente lancianto R tramite Rdata. 1.2 Primi passi in R Le entità con cui lavora R vengono dette oggetti; questi vengono identificati tramite un nome, a discrezione dell utente, che deve iniziare con un carattere alfabetico e non può contenere spazi bianchi nè i #, $, _, mentre è ammesso l uso del punto (.) quale separatore tra i caratteri. Se gli elementi di un oggetto presentano tutti la stessa modalità, numerica, alfanumerica, logica oppure complessa, l oggetto stesso viene detto elementare. Tali oggetti, a loro volta, possono essere dotati di una struttura di matrice, e ciò nel senso algebrico del termine, oppure possono concorrere a creare quelli che nel seguito chiameremo oggetti complessi. Ciò premesso, dedichiamo i paragrafi che seguono alla descrizione di come definire e manipolare oggetti con struttura elementare, di matrice o complessa ed eseguire su di essi alcune semplici operazioni, ricorrendo a funzioni predefinite ovvero creadone altre ad hoc Creazione di oggetti elementari La creazione di un qualsiasi oggetto avviene ricorrendo al comando di assegnazione <- e non, come è norma abituale con altri linguaggi di programmazione, tramite il simbolo =, a cui segue, in linea di massima, entro parentesi tonde precedute dal prefisso c, acronimo di combine, l elenco dei suoi elementi, ciasuno dei quali separato da una virgola. Qualora l oggetto possedesse modalità alfanumerica, il suoi elementi debbono essere racchiusi entro virgolette ("). Ciò premesso, la visualizzazione degli elementi di un oggetto può avvenire digitandone il nome oppure, in fase di definizione, racchiudendone l istruzione entro parentesi tonde. Esempio Ci proponiamo di creare tre oggetti elementari e di visualizzarne il contenuto; più precisamente: 4

7 E. D. Isaia, Linguaggio R e applicazioni statistiche x contenente il solo elemento numerico 17: > x<-c(17) > x [1] 17 y i cui elementi corrispondono agli interi 10, 13, 17, 20: > (y<-c(10,13,17,20)) [1] alpha che conterrà tre caratteri alfanumerici > (alpha<-c("valor medio","mediana","varianza")) [1] "Valor medio" "Mediana" "Varianza" A questo punto, possiamo introdurre le seguenti istruzioni di utilità assai generale: ls(): visualizza l elenco degli oggetti definiti in una sessione di lavoro 2. ls.str(): porge un breve resoconto circa la struttura degli oggetti definiti nella corrente sessione di lavoro. Informazioni dettagliate circa uno specifico oggetto, si ottengono con il comando str(oggetto); mode(oggetto): indicato; restituisce, sottoforma di stringa, la modalità dell oggetto rm(oggetto1,...,oggetton): consente la rimozione degli oggetti specificati. Desiderando rimuovere tutti gli oggetti definiti nel corso di una sessione di lavoro si può ricorrere all istruzione rm(list=ls()). La rimozione del solo contenuto di un oggetto avviene tramite l assegnazione oggetto<-null Esempio Con riferimento ai tre oggetti introdotti all Esempio 1.2.1, si osservi il comportamento, autoesplicativo, delle istruzioni: > ls.str() alpha : chr [1:3] "Valor medio" "Mediana" "Varianza" x : num 17 y : num [1:4] > mode(alpha) [1] "character" > (y<-null) 2 In alternativa si può ricorrere al comando objects(). 5

8 Dipartimento di Statistica e Matematica Diego de Castro, nota tecnica 2, 2OO1 NULL > ls() [1] "alpha" "x" "y" > rm(x) > ls() [1] "alpha" "y" > rm(y,alpha) > ls() character(0) Può a volte capitare di volere elencare (o rimuovere) solo alcuni degli oggetti definiti durante una sessione di lavoro; ciò avviene ricorrendo all opzione pattern=, propria dei comandi ls(), rm() e ls.str(). A tal riguardo, si osservi il comportamento delle istruzioni: > C02<-c(0.011,0.012,0.013,0.012) > fattorea<-c(1,2,1,2) > fattoreb<-c(1,2,1,2) > ls() [1] "C02" "fattorea" "fattoreb" > ls.str(pattern="fat") fattorea : num [1:4] fattoreb : num [1:4] > rm(list=ls(pattern="fat")) > ls() [1] "C02" L opzione pattern=, come la maggior parte delle opzioni R, può essere abbreviata, qualora non sussistano ambiguità, ai primi tre caratteri; nel seguito tuttavia, per motivi di chiarezza espositiva, ricorreremo sempre alla forma estesa Creazione di oggetti contenenti sequenze regolari La creazione di oggetti contenenti sequenze regolari di elementi numerici o alfanumerici può avvenire ricorrendo ai comandi: c(n1:n2): crea una sequenza di interi consecutivi da n1 a n2, in ordine crescente se n1 < n2, in ordine decrescente altrimenti; seq(n1,n2,by=passo): crea una sequenza di numeri consecutivi da n1 a n2 con incrementi pari a quanto specificato in passo, in ordine crescente se n1 < n2, in 6

9 E. D. Isaia, Linguaggio R e applicazioni statistiche ordine decrescente altrimenti. Qualora l opzione by=passo fosse omessa e n1 e n2 fossero interi, l istruzione verrebbe ad essere equivalente a c(n1:n2). Un alternativa a by= è rappresentata dall opzione length=, con la quale si stabilisce appunto la lunghezza della sequenza o, meglio, il numero dei suoi elementi; rep(k:n): crea un oggetto contenente i valori, numerici o alfanumerici, specificati in k ripetuti n volte; letters[k:n] o LETTERS[k:n]: creano una sequenza di lettere, minuscole e maiuscole rispettivamente, dell alfabeto latino comprese tra k ed n. Altri comandi specifici, quali gl(), expand.grid(), ppoints() e sequence(), verranno presentati al paragrafo Esempio Creazione e visualizzazione dell oggetto x che conterrà i primi dieci interi positivi: > (x<-c(1:10)) [1] Si noti che saremmo giunti allo stesso risultato ricorrendo all istruzione seq(): > (x<-seq(1,10)) [1] Esempio Creazione e visualizzazione dell oggetto x che conterrà 11 numeri progressivi da 20 a 21 con passo 0.10: > (x<-seq(20,21,by=0.10)) [1] Allo stesso risultato saremmo pervenuti con il comando: > (x<-seq(20,21,length=11)) [1] Esempio Creazione dell oggetto x che conterrà, nell ordine, 3 elementi a valore nullo e 4 elementi a valore unitario. > (x<-c(rep(0,3),rep(1,4))) [1]

10 Dipartimento di Statistica e Matematica Diego de Castro, nota tecnica 2, 2OO1 Esempio Visualizzazione delle stringhe "Conforme" e "Difettoso" ripetute la prima tre volte e la seconda una sola volta: > c(rep("conforme",3),rep("difettoso",1)) [1] "Conforme" "Conforme" "Conforme" "Difettoso" Esempio Creazione e visualizzazione dell oggetto alfabeto che conterrà le prime sette lettere, in minuscolo, dell alfabeto (latino): > (alfabeto<-letters[1:7]) [1] "a" "b" "c" "d" "e" "f" "g" Si osservi il comportamento delle istruzioni: > LETTERS[1:7] [1] "A" "B" "C" "D" "E" "F" "G" > paste(letters[1:3],sep="",collapse="+") [1] "a+b+c" > paste("fattore",letters[1:3],sep="",collapse="+") [1] "Fattorea+Fattoreb+Fattorec" Manipolazione di oggetti elementari In R esistono svariati comandi che consentono la manipolazione di oggetti, numerici o alfanumerici; tra essi val qui la pena citare i seguenti di utilità generale: append(x,y): aggiunge agli elementi dell oggeto x gli elementi di y; c(x,y): crea un nuovo oggetto a partire da due oggetti x e y; paste(x,y): crea un un nuovo oggetto contenente, sottoforma alfanumerica, gli elementi appaiati degli oggetti x e y; l opzione sep="simbolo" consente di separare i diversi elementi con il simbolo desiderato, mentre l opzione collapse="simbolo" permette di separare i singoli risultati con il simbolo prescelto; rev(x): posiziona in senso inverso gli elementi di x; sort(x): ordina in senso crescente gli elementi di x; altrimenti; 8

11 E. D. Isaia, Linguaggio R e applicazioni statistiche unique(x): restituisce gli elementi non ripetuti contenuti in x. x[posizione1,..,posizionen]: estrae dall oggeto x gli elementi che occupano la posizione specificata in posizione1,..,posizionen; Altri comandi verranno presentati al paragrafo Esempio Ordinamento in senso crescente degli elementi di x<-c(10:1): > sort(x) [1] o, equivalentemente: > rev(x) [1] A proposito di rev(), si noti che: > rev(c(10,11,9)) [1] e ciò coerentemente con quanto detto a proposito. Esempio Creazione di un nuovo oggetto a partire da due oggetti definiti: > x<-c(1:5) > y<-rev(x) > (z<-c(x,y)) [1] Esempio Creazione, a partire da due oggetti, di un nuovo oggetto che contiene, sottoforma alfanumerica, gli elementi appaiati degli oggetti iniziali. > x<-c(1:5) > y<-c(-5:-1) > paste(x,y) [1] "1-5" "2-4" "3-3" "4-2" "5-1" Si ossservi che, coerentemente: > paste(x) [1] "1" "2" "3" "4" "5" Si noti, ancora, il comportamento dei seguenti comandi: 9

12 Dipartimento di Statistica e Matematica Diego de Castro, nota tecnica 2, 2OO1 > paste(y,x,sep="*") [1] "-5*1" "-4*2" "-3*3" "-2*4" "-1*5" > paste(y,x,sep="*",collapse="<->") [1] "-5*1<->-4*2<->-3*3<->-2*4<->-1*5" Esempio Estrazione dall oggetto x, che contiene gli interi consecutivi da 1 a 20, degli elementi che occupano la terza e la dodicesima posizione. > x<-c(1:20) > x[3] [1] 3 > x[12] [1] 12 Esempio Creazione, a partire dall oggetto x, che contiene gli interi consecutivi da 10 a 20, dell oggetto y che conterrà i tre elementi che occupano la prima, la terza e la sesta posizione in x. > (x<-c(10:20)) [1] > (y<-x[c(1,3,6)] ) [1] Esempio Creazione dell oggetto z che conterrà, nell ordine, i primi tre elementi di x, i due elementi di y quindi i restanti elementi di x. > (x<-c(10:17)) [1] > (y<-c(300,400)) [1] > (z<-append(x, y, after=3)) [1] Esempio Eliminazione ed ordinamento crescente degli elementi ripetuti di un oggetto. > (x<-c(c(5:8),c(1:7))) [1] > sort(unique(x)) [1]

13 E. D. Isaia, Linguaggio R e applicazioni statistiche Esempio Creazione, a partire dall oggetto x che contiene 3 elementi a valore nullo e 4 elementi a valore unitario, dell oggetto sesso che conterrà l etichetta Femmina se x=0 oppure Maschio se x=1. > (x<-c(rep(0,3),rep(1,4))) [1] > (sex<-c(rep("femmina",3),rep("maschio",4))) [1] "Femmina" "Femmina" "Femmina" "Maschio" "Maschio" "Maschio" "Maschio" Un alternativa è offerta dal ricorso al comando names(); ad esempio: > (x<-c(rep(0,3),rep(1,4))) [1] > (names(x)<-c(rep("femmina",3),rep("maschio",4))) [1] "Femmina" "Femmina" "Femmina" "Maschio" "Maschio" "Maschio" "Maschio" Per maggiori dettagli sul comando names(), cfr. paragrafo Operatori aritmetici e funzioni matematiche Sugli oggetti elementari con modalità numerica è possible eseguire le più comuni operazioni aritmetiche, quali la somma (+), il prodotto (*), la divisione (/), l elevamento a potenza (^), proprie di un qualsiasi linguaggio di programmazione. Esempio Dati i due oggetti x e y ad elemeti numerici: > x<-seq(1:5) > y<-x^2 le istruzioni che seguono si commentano da sè: > x-(1/y) [1] > 100*(x+y)^(-1) [1] > y^(.5)+x [1] Vale qui la pena accennare alla presenza di due particolari operatori, %% e %/%, il cui impiego, a volte utile, è illustrato dagli esempi che seguono. Esempio Posto che l oggetto x contenga gli interi consecutivi da 1 a 10, ci proponiamo di: 11

14 Dipartimento di Statistica e Matematica Diego de Castro, nota tecnica 2, 2OO1 individuare quali di essi è divisibile per 2. A tal fine possiamo considerare il comando x%%2 che porge il resto della divisione di ciascun elemento di x per 2: > x<-c(1:10) > x%%2 [1] calcolare la parte intera della divisione tra ciascun elemento di x e 2. A tal fine sopperisce il comando x%/%2, infatti: > x<-c(1:10) > x%/%2 [1] Quanto alle funzioni matematiche, tra le quali figurano exp(), log(), log10(), log2(),..., sin(), cos(), tan(), asin(), acos(), atan(), sqrt(), abs()..., è impensabile offrirne qui un elenco seppur parziale; alcune di esse, di interesse sotto il profilo statistico, sono presentate al paragrafo che segue, mentre altre ancora saranno introdotte più oltre allorché verranno affrontati problemi specifici. Accenniamo, infine, alla presenza di particolari funzioni che cosentono di eseguire le più comuni operazioni su insiemi: union(x,y): restituisce l insieme costituito dall unione degli insiemi x e y; intersect(x,y): restituisce l insieme costituito dall intersezione degli insiemi x e y; setdiff(x,y): rstituisce l insieme costituito dalla differenza tra insiemi x e y; setequal(x,y): restituisce il valore logico TRUE se gli insiemi contengono gli stessi elementi, il valore logico FALSE altrimenti; is.element(el,set): restituisce il valore logico TRUE se l elemento in el è contenuto in set, il valore logico FALSE altrimenti. Un alias del comando è %in%. Esempio Definiti gli oggetti A<-letters[1:4] e B<-letters[3:7], abbiamo: > union(a,b) [1] "a" "b" "c" "d" "e" "f" "g" > intersect(a,b) [1] "c" "d" > setdiff(a,b) [1] "a" "b" > setdiff(b,a) 12

15 E. D. Isaia, Linguaggio R e applicazioni statistiche [1] "e" "f" "g" > is.element(a,setdiff(a,b)) [1] TRUE TRUE FALSE FALSE > "f"%in%union(a,b) [1] TRUE > is.element("q",setdiff(letters[1:24],union(a,b))) [1] TRUE Si noti che tali operatori in ogni caso rimuovono gli elementi duplicati di un insieme Su alcune funzioni statistiche Tra le innumerevoli funzioni statistiche implementate, per il momento ci limitiamo a citare le più comuni e precisamente, posto x un oggetto elementare con modalità numerica: cumsum(x): restituisce la somma cumulata degli elementi di x; length(x): restituisce il numero degli elementi 3 contneuti in x; max(x), min(oggetto): porgono, rispettivamente, il massimo ed il minimo dei valori contenuti in x; mean(x): calcola la media aritmetica dei valori contenuti in x; median(x): calcola la mediana dei valori contenuti in x; prod(x): restituisce il prodotto degli elementi di x; quantile(x,alpha): porge il quantile di ordine alpha degli elementi di x; sum(x): restituisce la somma degli elementi di x; summary(x): visualizza 4 il minimo, il primo quartile, la media aritmetica, la mediana, il terzo quartile ed il massimo degli elementi di x; table(x): porge la distribuzione di frequenze assolute generata dalle osservazioni individuali registrate in x; var(x) e sd(x): calcolano, rispettivamente, la varianza e lo scarto quadratico medio dei valori contenuti in x. È bene ricordare, sin da ora, che la varianza, e di conseguenza lo scarto quadratico medio, è calcolata come: 1 n 1 n (x i µ x ) 2 i=1 3 A bene vedere trattasi di una funzione primitiva di impiego assai generale. 4 Tale è il suo comportamento se applicata ad un oggetto numerico elemementare. 13

16 Dipartimento di Statistica e Matematica Diego de Castro, nota tecnica 2, 2OO1 quindi con un numero di gradi di libertà pari a length(x)-1. Tale grandezza viene abitualmente detta varianza campionaria. weighted.mean(xi,ni): calcola la media aritmetica dei valori contenuti in xi con pesi ni. Esempio Si immagini che la rilevazione il voto conseguito all esame di Statistica, espresso in trentesimi, conseguito da un gruppo di 20 studenti abbia fornito i risultati: Definito l oggetto elementare voti.stat: > voti.stat<-c(18,23,30,25,27,27,30,20,20,25,27,25,27,23,30,25,23,20,25,23) facilmente possiamo ottenere: la distribuzione dei voti in termini di frequenze assolute: > table(voti.stat) voti.stat nonché relative: > table(voti.stat)/length(voti.stat) voti.stat Si osservi che, dal momento che table(voti.stat) restituisce un oggetto numerico, la media dei voti potrebbe essere calcolata ricorrendo all istruzione: > weighted.mean(sort(unique(voti.stat)),table(voti.stat)/20) [1] alcune misure di tendenza centrale: % > summary(voti.stat) % Min. 1st Qu. Median Mean 3rd Qu. Max. % Visto che summary(voti.stat) restituisce un oggetto composto da sei elementi, possiamo ottenere la differenza interquartilica come: 14

17 E. D. Isaia, Linguaggio R e applicazioni statistiche > summary(voti.stat)[5]-summary(voti.stat)[2]+. la varianza campionaria nonché la devianza: > var(voti.stat) [1] > var(voti.stat)*(length(voti.stat)-1) [1] Alcune funzioni di utilità generale Dedichiamo questo paragrafo alla presentazione di alcune funzioni, oltre a quelle già citate, a cui spesso può essere fatto ricorso durante una sessione di lavoro. abbreviate(oggetto, mln=, dot=false): abbrevia gli elementi dell oggetto specificato al una lunghezza minima pari a mln=. Ponendo dot=true viene visualizzato il suffisso.. Ad esempio: > x<-c("ennio","davide","isaia") > abbreviate(x[1:2], minl=1) Ennio Davide "E" "D" > abbreviate(x[1:2], minl=1,dot=true) Ennio Davide "E." "D." all(oggetto) consente di confrontare tutti gli elementi di un oggetto rispetto ad una condizione. Ad esempio: > x<-c(-2.2,-1.8,-1.5,-1.4,-1.2,-1.0,-0.9,-0.8,-0.7,0.2) > all(x>0) [1] FALSE Il suo complemento è la funzione any(oggetto). > x<-c(-2.2,-1.8,-1.5,-1.4,-1.2,-1.0,-0.9,-0.8,-0.7,0.2) > any(x>0) [1] TRUE 15

18 Dipartimento di Statistica e Matematica Diego de Castro, nota tecnica 2, 2OO1 all.names(expression) e all.vars(expression) porgono, rispettivamente, gli elementi e le variabili che compaiono nell espressione indicata e definita via expression() o quote(). append(oggetto, valori, after=posizione): aggiunge gli elementi contenuti in valori all oggetto specificato, eventualmente nella posizione desiderata. Ad esempio: > x<-integer(0) > (x<-append(x,1:10)) [1] > (x<-append(x,120,after=2)) [1] Si osservi che la situazione di default prevede after=length(x). Tale comando può tornare utile qualora si desideri inserire in un oggetto gli elementi via, via generati da specifiche funzioni. attr(oggetto,attributo): attribuisce all oggetto indicato un particolare attributo. Ad esempio: > x<-c(1:10) > attr(x,"dim")<-c(2, 5) > x [,1] [,2] [,3] [,4] [,5] [1,] [2,] > attr(x,"dim")<-null > x [1] cat(): acronimo di concatenate & print trasforma gli elementi indicati quale argomento in strighe alfanumeriche e li visualizza. Il suffisso "\n" consente al cursore di ritornare in modalità prompt (>). Ad esempio: > x<-c(1,2,3) > a<-c("degli elementi di x") > cat("la media ",a," e :",sum(x)/length(x),"\n") La media degli elementi di x e : 2 > 16

19 E. D. Isaia, Linguaggio R e applicazioni statistiche date(): restituisce, sottoforma alfanumerica, la data di sistema. > date() [1] "Tue Aug 28 05:16: " deparse(oggetto): trasforma la definizione dell oggetto specificiato in una stringa. Così, ad esempio: > a<-letters[1:3] > deparse(a) [1] "c(\"a\", \"b\", \"c\")" diff(oggetto,lag=): calcola le differenze tra i diversi elementi di un oggetto. Ad esempio: > diff(c(10,23,21,30),1) [1] duplicated(oggetto): indica, in forma logica, quali elementi dell oggetto specificato quale argomento sono ripetuti. Ad esempio: > x<-c(1:4) > y<-c(2:6) > duplicated(c(paste(x),paste(rev(y)))) [1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE eval(funzione): calcola il valore la funzione specificata in corrispondenza a determinati valori di interesse. Quali esempi, valgano le seguenti istruzioni: > eval(3 ^ 2 ^ 3) [1] 6561 > eval(sin(.25*pi)+cos(.25*pi)) [1] > sin(.25*x)+cos(2*.25*x) Error: Object "x" not found > x<-pi/2 > sin(.25*x)+cos(2*.25*x) [1]

20 Dipartimento di Statistica e Matematica Diego de Castro, nota tecnica 2, 2OO1 Si vedano anche i comportamenti delle funzioni expression() e quote(). expand.grid(x,y,z,...): crea un data frame (cfr. paragrafo 1.4.2) contenente tutte le combinazioni degli elementi dei vettori (o fattori) x, y, z,... specificati. Ad esempio: > expand.grid(temperatura=seq(100,120,10),pressione=seq(1,2,1)) temperatura pressione expression(funzione): restituisce l espressione di una funzione senza provvedere al calcolo automatico. Si ossservi il comportamento delle istruzioni: > (fx<-expression(x^2+2*x)) expression(x^2 + 2 * x) > eval(fx) Error in eval(expr, envir, enclos) : Object "x" not found > x<-seq(-1,1) > eval(fx) [1] > all.names(expression(sin(x+y))) [1] "sin" "+" "x" "y" > all.vars(expression(sin(x+y))) [1] "x" "y" Si veda anche il comportamento della funzione quote(). factor(oggetto,levels=(n1,...,nn)): definisce in modo diretto l oggetto specificato quale fattore a n livelli. Un alternativa è il ricorso a as.factor(oggetto). Sono, pertanto, comandi validi: > (temperatura<-factor(c(1,1,1,2,2,2),levels=c(1:2))) [1] Levels: 1 2 > trattamento<-c("a","b","b","a","b","a","c","c","c") 18

21 E. D. Isaia, Linguaggio R e applicazioni statistiche > (trattamento<-as.factor(trattamento)) [1] A B B A B A C C C Levels: A B C format(oggetto,...): attribuisce all oggetto specificato un formato per una migliore visualizzazione dei suoi elementi. Per default il comando prevede l allineamento a destra, justify="right", e un numero di decimali pari a quanto definito (cfr. paragrafo 1.9) in getoption("digits"). A commento: > (x<-c(2,15,21,25)/3) [1] > format(x,digits=3) [1] "0.667" "5.000" "7.000" "8.333" > format(x^3,digits=3,justify="right") [1] " 0.296" " " " " " " > alpha<-c("valor medio","mediana","varianza") > format(alpha,justify="left") [1] "Valor medio" "Mediana " "Varianza " > format(alpha,justify="right") [1] "Valor medio" " Mediana" " Varianza" > format(alpha,justify="none") [1] "Valor medio" "Mediana" "Varianza" formula("espressione"): consente di definire un nuovo oggetto con struttura tipo formula il cui impiego è principalmente riservato alle procedure di regressione (lm) e di analisi della varianza (aov). La trasformazione della struttura di un opportuna stringa in formula avviene con il comando as.formula(striga). Alcuni esempi sono: > (formulayx<-formula("y~x")) y ~ x > nomi.x<-paste("x",c(1:4),sep="") > (f<-as.formula(paste("y ~ ", paste(nomi.x, collapse= "+")))) y ~ x1 + x2 + x3 + x4 gl(n,k): genera in modo automatico una sequenza di interi positivi da 1 a n, ciascuno dei quali viene ripetuto k volte 5. Il risultato ha struttura factor. Ad esempio: 5 Si noti che length(gl(n,k))=n*k. 19

22 Dipartimento di Statistica e Matematica Diego de Castro, nota tecnica 2, 2OO1 > (temperatura<-gl(2,3)) [1] Levels: 1 2 L opzione labels =, che per default viene posta uguale a 1:n, consente di attribuire, a discrezione dell utente, etichette ai diversi livelli del fattore di interesse; ad esempio: > (temperatura<-gl(2,3,labels=c(120,160))) [1] Levels: > (sesso<-gl(2,3,labels=c("maschio","femmina"))) [1] Maschio Maschio Maschio Femmina Femmina Femmina Levels: Maschio Femmina levels(fattore): indica quali sono i livelli del fattore specificato. Infatti: > temperatura<-gl(2,3,labels=c(120,160)) > sesso<-gl(2,3,labels=c("maschio","femmina")) > levels(temperatura) [1] "120" "160" > levels(sesso) [1] "Maschio" "Femmina" match(x,y,nomatch=na): confronta i due oggetti x e y e restituisce l elenco degli elementi della loro intersezione. Gli elementi diversi sono, per default, definiti mancanti (NA). Ad esempio: > x<-c(1:10) > y<-c(7:20) > match(x,y) [1] NA NA NA NA NA NA mentre: > y[match(x,y,nomatch=0)] [1]

Corso Introduttivo all utilizzo di R! Prof.ssa D.F. Iezzi stella.iezzi@uniroma2.it

Corso Introduttivo all utilizzo di R! Prof.ssa D.F. Iezzi stella.iezzi@uniroma2.it Corso Introduttivo all utilizzo di R! Prof.ssa D.F. Iezzi stella.iezzi@uniroma2.it Il software R q Il software R è distribuito gratuitamente come software Open Source con licenza GPL (General Public License)

Dettagli

Primi passi con R. D. Fioredistella IEZZI e-mail: stella.iezzi@uniroma2.it

Primi passi con R. D. Fioredistella IEZZI e-mail: stella.iezzi@uniroma2.it Primi passi con R Che cosa è Ø R è un ambiente di programmazione (un insieme di funzioni, librerie, oggetti) Ø R è specializzato in analisi dei dati e rappresentazioni grafiche Ø R opera su sistemi operativi

Dettagli

Laboratorio di Statistica con R

Laboratorio di Statistica con R Laboratorio di Statistica con R R è un vero e proprio linguaggio di programmazione. Il suo nome, è dovuto probabilmente al nome dei suoi sviluppatori:robert Gentleman e Ross Ihaka Le principali funzioni

Dettagli

R - Esercitazione 1. Lorenzo Di Biagio dibiagio@mat.uniroma3.it. 30 Settembre 2013. Università Roma Tre

R - Esercitazione 1. Lorenzo Di Biagio dibiagio@mat.uniroma3.it. 30 Settembre 2013. Università Roma Tre R - Esercitazione 1 Lorenzo Di Biagio dibiagio@mat.uniroma3.it Università Roma Tre 30 Settembre 2013 Introduzione a R R è un software open-source, per Linux, Mac OS X, Windows, distribuito secondo la licenza

Dettagli

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t. Il programma MATLAB In queste pagine si introduce in maniera molto breve il programma di simulazione MAT- LAB (una abbreviazione di MATrix LABoratory). Introduzione MATLAB è un programma interattivo di

Dettagli

Vettori ed assegnamenti in R

Vettori ed assegnamenti in R Università degli Studi di Milano Laurea Specialistica in Genomica Funzionale e Bioinformatica Corso di Linguaggi di Programmazione per la Bioinformatica Vettori ed assegnamenti in R Giorgio Valentini e

Dettagli

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari Felice Iavernaro Dipartimento di Matematica Università di Bari http://dm.uniba.it/ iavernaro 6 Giugno 2007 Felice Iavernaro (Univ.

Dettagli

LAB LEZ. 1 STATISTICA DESCRITTIVA CON R

LAB LEZ. 1 STATISTICA DESCRITTIVA CON R LAB LEZ. 1 STATISTICA DESCRITTIVA CON R 1 2 L AMBIENTE DI SVILUPPO DI RStudio 1 3 4 2 1 FINESTRA PER GLI SCRIPT E PER VISUALIZZARE I DATI 2 CONSOLE DEI COMANDI 3 VARIABILI PRESENTI NELLA MEMORIA DEL PROGRAMMA

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Lezione 4 Introduzione a Microsoft Excel Parte Prima

Lezione 4 Introduzione a Microsoft Excel Parte Prima Lezione 4 Introduzione a Microsoft Excel Parte Prima Cenni preliminari... 1 Elementi sullo schermo... 2 Creazione di una cartella di lavoro... 3 Utilizzo di celle e intervalli... 3 Gestione della cartella

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Lab. 1 - Introduzione a Matlab

Lab. 1 - Introduzione a Matlab Lab. 1 - Introduzione a Matlab Alcune informazioni su Matlab Matlab è uno strumento per il calcolo scientifico utilizzabile a più livelli, dalla calcolatrice tascabile, alla simulazione ed analisi di sistemi

Dettagli

CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica

CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica CONTROLLI AUTOMATICI e AZIONAMENTI ELETTRICI INTRODUZIONE A MATLAB Ing. Alberto Bellini Tel. 0522 522626 e-mail: alberto.bellini@unimore.it

Dettagli

Modelli statistici per l economia e l azienda (Nuovo Ordinamento) Laurea Specialistica Docente: Prof.ssa J. MORTERA Numero di crediti: 9

Modelli statistici per l economia e l azienda (Nuovo Ordinamento) Laurea Specialistica Docente: Prof.ssa J. MORTERA Numero di crediti: 9 Modelli statistici per l economia e l azienda (Nuovo Ordinamento) Laurea Specialistica Docente: Prof.ssa J. MORTERA Numero di crediti: 9 1. Obiettivi Come obbiettivo principale si vuole spiegare come analizzare

Dettagli

Laboratorio di ST1 Lezione 2

Laboratorio di ST1 Lezione 2 Laboratorio di ST1 Lezione 2 Claudia Abundo Dipartimento di Matematica Università degli Studi Roma Tre Frequenze in R ESEMPIO Fiori preferiti da n=6 ragazze In R: fiori=c("rosa", "orchidea", "violetta",

Dettagli

MATLAB (1) Introduzione e Operazioni con array

MATLAB (1) Introduzione e Operazioni con array Laboratorio di Informatica per Ingegneria elettrica A.A. 2010/2011 Prof. Sergio Scippacercola MATLAB (1) Introduzione e Operazioni con array N.B. le slide devono essere utilizzate solo come riferimento

Dettagli

Foglio elettronico. Foglio elettronico EXCEL. Utilizzo. Contenuto della cella. Vantaggi EXCEL. Prof. Francesco Procida procida.francesco@virgilio.

Foglio elettronico. Foglio elettronico EXCEL. Utilizzo. Contenuto della cella. Vantaggi EXCEL. Prof. Francesco Procida procida.francesco@virgilio. Foglio elettronico Foglio elettronico EXCEL Prof. Francesco Procida procida.francesco@virgilio.it Il foglio elettronico è un programma interattivo, che mette a disposizione dell utente una matrice di righe

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag