Comments
Transcript
La stele di Rosetta di SAS, R, SPSS e STATA
La stele di Rosetta di SAS, R, SPSS e STATA Versione 1.0 - Aprile 2007 Silvia Sartorelli Dipartimento di Scienze Statistiche, Università degli Studi di Padova 1 Questa opera viene rilasciata sotto la licenza Creative Commons: Attribuzione - Non commerciale - Condividi allo stesso modo 2.5 Italia. Il fruitore è libero di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e re citare quest'opera e di modificare quest'opera. Alle seguenti condizioni: deve attribuire la paternità dell'opera nei modi indicati dal l'autore o da chi ha dato l'opera in licenza; non si può usare quest'opera per fini com merciali; se si altera o trasforma quest'opera, o se la si usa per crearne un'altra, si può distribuire l'opera risultante solo con una licenza identica a questa. Ogni volta che si usa o si distribuisce quest'opera, si deve farlo secondo i termini di questa licenza, che va comunicata con chiarezza. In ogni caso, si può concordare col titolare dei diritti d'autore utilizzi di quest'opera non consentiti da questa licenza. Nothing in this license impairs or restricts the author's moral rights. 2 Introduzione Una delle cose più belle del mio lavoro è che imparo tante cose. Una di quelle più brutte è che le cose da imparare sono così tante e da imparare così in fretta che poi è facile dimenticarle. Ho raccolto in questa dispensa alcune cose che ho imparato a proposito dei principali pacchetti statistici usati nella Facoltà di Scienze Statistiche; è una specie di riassunto delle operazioni più frequenti, “tradotte” nei vari linguaggi. Nelle mie intenzioni dovrebbe essere uno strumento schematico, agile e di veloce con sultazione per dare al lettore che già conosce (almeno un po', almeno uno tra) i pac chetti un suggerimento che gli permetta di procedere velocemente nel proprio lavoro. L'ho strutturato avendo in mente chi, come me, conosce abbastanza bene un pacchet to ma deve usarne (o vuole impararne) anche altri, nella speranza di dare una “spin ta” a chi si trova nelle fasi di approccio ad un nuovo strumento, ma desidera “lavora re” subito (o quasi). I programmi che ho preso in considerazione sono: • SAS 9.1: pacchetto molto potente e complesso basato su un modulo Base e di versi moduli aggiuntivi (ad esempio STAT, IML, GRAPH, ETS, etc). Richiede la conoscenza del proprio linguaggio di programmazione perché l'at tuale gestione a finestre di dialogo secondo me non è ancora sufficientemente completa e “amichevole”. • R 2.3: pacchetto a linea comando, open source, completo e interessante; carica all'avvio una serie di funzioni base a cui si possono aggiungere funzioni tramite librerie aggiuntive di interesse; ha notevoli potenzialità grafiche complesse ed eleganti. • STATA 9: nasce a linea comando con il proprio linguaggio ma attualmente può essere utilizzato ampiamente tramite l'interfaccia a menù e finestre di dialogo. • SPSS 14: pacchetto “amichevole” che ormai viene utilizzato quasi unicamente tramite l'interfaccia a menù e finestre di dialogo e per questo privilegiato in molti ambienti in cui c'è scarsa preparazione statistico-informatica. Ringrazio quanti mi hanno già aiutato con suggerimenti, consigli e correzioni e quanti lo faranno in futuro; in particolare ringrazio Alberto Cammozzo, Stefano Mazzuco e Guido Masarotto, al quale devo anche l'idea per il bellissimo titolo. Notazione La dispensa è formata da schede; ogni scheda presenta un titolo che riporta l'opera zione che verrà presa in considerazione, quindi una breve descrizione dell'operazione e infine come svolgerla nei quattro programmi presi in considerazione. Il codice è scritto in courier new e per riferirmi agli argomenti dei comandi ho cerca to di inventare dei nomi autoesplicativi. I percorsi tra le voci dei menù sono evidenziati tramite una sottolineatura ed i passag gi da una voce all'altra tramite un doppio segno maggiore (>>). L'ultima scheda funge anche da indice. 3 Scheda 1 - Avvertenze sull'uso dei programmi SAS • • • • • • • • • all'avvio si aprono 5 finestre tra cui l'Editor che è l'area in cui scrivere e/o caricare i programmi in linguaggio SAS da mandare successivamente in ese cuzione tramite il tasto F8 oppure l'icona dell'omino che corre oppure dal menù Esegui>>Sottometti1 non è case-sensitive ogni riga di comando deve finire con un ; (punto e virgola) comandi diversi possono essere scritti sulla stessa riga, oppure un comando può continuare sulla riga successiva ma le parole non devono essere spezza te il codice può iniziare in qualsiasi colonna dell'editor le parole che compongono un comando devono essere isolate da uno spazio o da un operatore i nomi di variabili e dataset possono essere formati con un numero di carat teri da 1 a 32, il primo carattere deve essere una lettera o il sottolineato (_) ed i caratteri seguenti possono essere lettere, numeri o sottolineati, non vi possono invece comparire spazi all'interno ci si riferisce ai comandi che riguardano la manipolazione dei dataset (e che costituiscono il linguaggio SAS vero e proprio) come comandi di DATA STEP mentre le procedure vengono genericamente definite PROC STEP I comandi opzionali sono riportati tra i segni di maggiore e minore (<...>) R • • • • • • all'avvio si apre una sola finestra che propone un prompt (>) per l'immissio ne di linee di comando che si mandano in esecuzione con l'Invio ( ). E' pos sibile anche caricare programmi già memorizzati in un file è case-sensitive per i nomi delle variabili sono permesse lettere, numeri, il punto (.) e il sot tolineato (_) con la restrizione che il primo carattere dev'essere il punto o una lettera e, nel caso del punto, il secondo carattere non può essere un nu mero; inoltre sono escluse alcune parole che sono parole riservate è basato su un linguaggio orientato agli oggetti che può essere arricchito an che dall'utente finale l'area di lavoro per R si chiama workspace e contiene tutti gli oggetti neces sari (dati, risultati delle elaborazioni, etc.) per lavorare; ogni cosa in R è un oggetto e ogni oggetto ha delle proprietà (modo, lunghezza, ...) ed appartie ne ad una classe in particolare ci riferiremo agli oggetti data.frame che sono matrici di dati in cui le colonne sono di tipi non necessariamente uguali 1 Traduzione dell'inglese “Submit” 4 Scheda 1 - Avvertenze sull'uso dei programmi STATA • • • • all'avvio si aprono 4 finestre tra cui Command in cui si scrivono le linee di comando che si mandano in esecuzione con l'Invio ( ). E' possibile caricare programmi già memorizzati in un file oppure ottenere le stesse funzioni tra mite menù e finestre di dialogo è case-sensitive e quasi tutti i comandi sono in minuscolo i nomi di comandi e variabili devono essere al massimo di 32 caratteri (ca ratteri, numeri e il sottolineato in cui il primo elemento è preferibilmente un carattere) è possibile usare abbreviazioni fintanto che non si creino ambiguità su ciò a cui ci si riferisce (il comando describe si può abbreviare con d, la finestra di sintassi di ciascun comando indica l'abbreviazione minima consentita tra mite una sottolineatura) SPSS • • • • • • all'avvio si apre la finestra dei dati che si presenta vuota. Attualmente in SPSS ci si muove prevalentemente tramite menù e finestre di dialogo ma è possibile accedere ad una finestra di sintassi (File>>Nuovo>>Sintassi) in cui scrivere e/o caricare programmi in codice SPSS da mandare in esecuzione tramite menù: Esegui>>... oppure con l'icona con la freccetta (che corri sponde a Esegui>>Corrente) non è case-sensitive i nomi delle variabili possono essere formati con un numero di caratteri da 1 a 64, devono iniziare con una lettera e i caratteri successivi possono essere lettere, numeri o simboli, esclusi !,?,',* e lo spazio; inoltre sono escluse al cune parole che sono parole riservate ciascun comando deve terminare con un punto oppure deve essere seguito da una linea vuota per specificare un singolo comando è possibile utilizzare un numero illimitato di righe; è possibile aggiungere uno spazio o delle interruzioni di riga in qualsiasi punto in cui sia ammesso l'utilizzo di un singolo spazio vuoto, come prima e dopo le barre, le parentesi e gli operatori aritmetici o tra i nomi di variabili la maggior parte dei sottocomandi vengono separati da barre (/). La barra che precede il primo sottocomando di un comando è in genere opzionale 5 Scheda 2 - Help Per ottenere aiuto sui comandi SAS L'intera documentazione riguardante SAS è adesso accessibile dal programma stes so. Scegliendo dal menù ?>>Guida e documentazione SAS viene avviata una apposita finestra con le schede Sommario (l'intero help per capitoli), Indice (tutti i comandi e la maggior parte delle problematiche d'interesse in ordine alfabetico con finestra di ricerca) e Cerca (finestra di ricerca che poi riporterà tutti gli argomenti collegati alla stringa richiesta). Data la vastità della documentazione, spesso le operazioni di ricerca riportano cen tinaia di argomenti ed è necessario particolarizzare la stringa di ricerca collegando più termini tramite gli operatori logici. R help(comando), ed il suo equivalente ?comando, aprono una nuova finestra che contiene una guida sul comando specificato. Altri comandi di aiuto interessanti sono: apropos(“stringa”) che restituisce una lista di tutti gli oggetti il cui nome contiene la stringa richiesta e help.search(“stringa”) che cerca la stringa specificata in tutta la documentazione ossia tra nomi, titoli, concetti e parole chiave. Una via alternativa è scegliere dalla barra dei menù Aiuto>>Guida Html che apre l'help in un browser e comprende un motore di ricerca (Search Engine & Keywords). 6 Scheda 2 - Help Per ottenere aiuto sui comandi STATA Digitando: help argomento si apre la finestra chiamata Viewer con la lista delle voci inerenti l'argomento speci ficato, che deve essere un comando; le voci sono link a corrispondenti pagine di help, che a loro volta possono contenere link ad ulteriori pagine. Se non trova una corrispondenza, il programma propone di cercare su tutta la documentazione con il comando search “stringa” che invece riporta nella finestra Results descrizioni di comandi STATA relativi al ter mine specificato nella stringa. Il risultato comprende anche articoli dello STATA Technical Bulletin e programmi ottenibili dagli archivi di STATA. Via menù, si può ottenere l'intera guida (Help>>Contents) oppure l'analogo di search (Help>>Search...) o l'analogo di help (Help>>Stata Command...) SPSS Scegliendo dal menù ?>>Argomenti si accede ad una finestra che presenta le sche de Sommario (l'intero help per capitoli), Indice (tutti i comandi e la maggior parte delle problematiche d'interesse in ordine alfabetico con finestra di ricerca) e Cerca (finestra di ricerca che poi riporterà tutti gli argomenti collegati alla stringa richie sta). Esiste anche una Guida Rapida cliccando con il tasto destro sugli elementi di inte resse delle varie finestre di lavoro. Infine, scegliendo altre voci del menù d'aiuto è possibile visualizzare esempi, anali si guidate, casi pratici, un aiuto specifico sulla sintassi e documentazione sugli al goritmi implementati. 7 Scheda 3 - “Diario” della sessione di lavoro Ogni programma permette di mantenere traccia delle operazioni compiute durante una sessione di lavoro SAS La finestra di Log riporta tutte le linee di codice mandate in esecuzione, eventuali messaggi di errore oppure la comunicazione del corretto svolgimento delle opera zioni richieste. La finestra è di sola lettura ed il contenuto va perduto alla chiusura del programma ma si può salvare in qualunque momento come testo con le con suete operazioni di “Salva” o “Salva con nome”. R La sequenza dei comandi mandati in esecuzione durante una sessione di lavoro è memorizzata ed accessibile tramite i tasti cursore (Freccia su e Freccia giù). L'inte ra sequenza di comandi dati, inoltre, è memorizzata in un file di testo con estensio ne .Rhistory che può anche essere riproposta tramite copia e incolla al prompt dei comandi. STATA La sequenza dei comandi mandati in esecuzione durante una sessione di lavoro è memorizzata ed accessibile tramite i tasti Pag+ e Pag-. La finestra Results riporta tutte le linee di codice mandate in esecuzione, eventuali messaggi di errore oppure i risultati delle funzioni richieste. La finestra è di sola let tura ed il contenuto va perduto alla chiusura del programma ma si possono memo rizzare tutti comandi inviati ed il relativo output in un file di testo esterno chiamato log-file. La sintassi per la creazione di un file di log è: log using nomefiledilog Si può interrompere e far riprendere la memorizzazione più tardi, riaprirlo e ag giungere o rimpiazzare le informazioni. Le stesse operazioni si possono richiedere via menù: File>>Log>>Begin... SPSS Nella finestra Generale evocata dal menù Modifica>>Opzioni è possibile configurare un giornale di sessione (con estensione .jnl) che memorizza tutte le richieste fatte durante una sessione di lavoro, tradotte nel linguaggio di SPSS. E' possibile scegliere se sovrascriverlo ad ogni sessione o aggiungere le nuove in formazioni che quindi vengono distinte da un titolo che riporta la data in cui sono state memorizzate. 8 Scheda 4 - Apri File Per caricare un file di dati che è già nel formato interno del programma SAS L'estensione dei file in formato SAS è .sas7bdat2. Per accedere ad un file in .sas7bdat è sufficiente usare il comando che crea un col legamento tra SAS e la directory in cui il file si trova: LIBNAME nomelib 'x:\percorsocompletodelladirectory'; Da quel momento si può accedere direttamente al file dalla finestra Explorer del SAS, in cui sarà comparsa un'icona corrispondente a “nomelib”. Per caricare un file .sas7bdat in un DATA STEP il comando è SET: DATA (nomelib.)nuovofile; SET (nomelib.)filesistente; RUN; Per specificare su quale file .sas7bdat vogliamo applicare le operazioni di una data procedura bisogna usare l'opzione DATA= in un PROC STEP: PROC nomeprocedura DATA=(nomelib.)filesistente; ...codice procedura... RUN; R In R non si carica il dataset ma un oggetto (workspace – area di lavoro) che contie ne anche i dati e ha estensione .Rdata: load(“x:\\percorsodirectory\\nome.Rdata”) All'avvio R carica l'area di lavoro (e anche la .Rhistory) della directory corrente, se esiste. L'ideale è che ciascun progetto abbia una directory dedicata e aprire R di volta in volta dove interessa, ritrovando così tutto e solo ciò che si è fatto sul rela tivo progetto. STATA L'estensione dei file in formato STATA è .dta. Per caricare un file tramite codice bisogna digitare nella finestra Command il co mando: use "x:\percorsodirectory\nomefile.dta" Oppure da menù tramite File>>Open... SPSS L'estensione dei file in formato SPSS è .sav e si può scegliere di aprire il file dal menù File>>Apri>>Dati. Per caricare un file tramite codice bisogna evocare la finestra di sintassi (dalla bar ra dei menù: File>>Nuovo>>Sintassi) e dare i comandi: GET FILE='x:\percorsodirectory\nomefile.sav'. 2 Nella versione 6 era .sd2 e precedentemente .ssd 9 Scheda 5 - Acquisizione File ASCII - formato libero Per acquisire file ASCII che si presentano in formato libero oppure in formato colonna ma con un delimitatore ed un simbolo per i dati mancanti. In tutti i casi è sufficiente specificare la lista dei nomi (validi) delle variabili nella giu sta sequenza. SAS Per acquisire dati in formato libero in SAS: DATA nomedatset; INFILE 'x:\percorso\filedaacquisire.txt' ; INPUT v1 v2 v3 ...; RUN; R nomedati<-read.table("x:\\percorso\\filedaacquisire.txt") Se la prima riga presenta i nomi delle variabili e la prima colonna un'etichetta di riga non occorrono ulteriori specificazioni altrimenti bisogna utilizzare le opzioni op portune (vedi scheda 6). Il comando read.table() non è il comando giusto per acquisire grandi matrici, so prattutto quelle con molte colonne; read.table() infatti è stato pensato per leg gere dataset che presentano colonne di classi differenti (e infatti nomedati sarà di classe data.frame). Negli altri casi è meglio usare scan(). Si noti che l'operatore di assegnazione è formato dai due caratteri “<” e “-”. In molti contesti, però, è possibile utilizzare il più comune operatore “=”. STATA Il comando è: infile v1 v2 v3 using "x:\percorso\filedaacquisire.txt", clear Oppure si può usare il menù File>>Import>>Unformatted ASCII data, che evoca una finestra di dialogo da compilare. SPSS Si può scegliere dal menù File>>Leggi dati testo... che evoca un wizard in cui spe cificare le caratteristiche del file da acquisire. Il corrispondente codice è: GET DATA /TYPE = TXT /FILE = 'x:\percorsofiledaacquisire.txt' /VARIABLES = v1 v2 v3 ... . EXECUTE. 10 Scheda 6 - Acquisizione File ASCII - formato colonna Per acquisire file ASCII che si presentano in formato colonna. Subito dopo il nome della variabile va specificato il numero di colonna o il range di co lonne corrispondenti nel dataset ASCII. SAS DATA nomedataset; INFILE 'x:\percorso\filedaacquisire.txt' ; INPUT var1 1-2 var2 5 var3 7-11...; RUN; R Il comando è read.fwf() (dove fwf sta per fixed-width-format) nomedati<-read.fwf("x:\\percorso\\filedaacquisire.txt", widths, sep=””) Con width=c(dim1, dim2, ...) si definiscono le dimensioni delle variabili nell'or dine in cui si presentano e con sep qual è il separatore tra loro. STATA Il comando è: infix var1 1-3 var2 4 using "x:\percorso\filedaacquisire.txt" Oppure da menù File>>Import>>ASCII data in fixed format, che evoca una fine stra di dialogo da compilare. SPSS Dal menù File>>Leggi dati testo... evoca un wizard in cui specificare le caratteristi che del file da acquisire. Per indicare il range delle colonne, al quarto passo (dei sei) del wizard si inserisce una freccetta (cliccando con il mouse) tra le colonne di numeri3. Il corrispondente codice è: GET DATA /TYPE = TXT /FILE = 'x:\percorso\filedaacquisire.txt' /ARRANGEMENT = FIXED /VARIABLES = var1 0-4 var2 5-6 var3 7-9 . EXECUTE. 3 Quando le variabili sono di una sola colonna è molto difficile ottenerle correttamente con lo strumento grafico del wi zard, meglio (o addiruttura necessario) passare per la sintassi. 11 Scheda 7 - Opzioni per l'acquisizione di file ASCII SAS Se la prima osser vazione non è sul la prima riga FIRSTOBS= numero di riga (opzione di INFILE) Variabili carattere4 $ dopo il nome della variabile. La dimensione di de fault è 8, altrimenti bisogna usare il mo dificatore di formato :#.5 Le date6 Si usa il modificatore di formato nell'istru zione INPUT dopo il nome della variabile :formatodata. Se c'è una riga con i nomi delle variabili R skip=numero da saltare STATA righe SPSS /FIRSTCASE= nume ro di riga str# prima del nome della variabile A# dopo il nome del la variabile La variabile si acqui sisce come fattore e poi si trasforma in data con la funzione as.Date() La data viene me morizzata come stringa e poi trasfor mata con il comando generate e la fun zione date() Il formato va specifi cato dopo il nome della variabile Va saltata indicando dov'è la prima os servazione con FIR STOBS= header=T La riga NON deve esserci con infile e infix, DEVE esserci con insheet /READNAMES = on/off solo con file .xls e il default è on Delimitatore carattere DELIMITER='char' (opzione di INFILE) sep=”char” Delimitatore tabulazione DELIMITER='09'x (opzione di INFILE) sep='\t' (con read.delim()) 4 # indica il numero che definisce il formato della variabile 5 sia i due punti che il punto fanno parte della sintassi 6 Per i dettagli sui formati si rimanda ai rispettivi manuali 12 /DELIMITERS = "char" ..., tab (con insheet) /DELIMITERS "\t" = Scheda 8 - Acquisizione File di altro formato Per acquisire file di formati diversi come ad esempio .xls, .dbf, etc. SAS Il wizard evocato da File>>Importa dati... permette di importare automaticamente dati che siano in formato di varie versioni di Excel, Access, Lotus e dBase. Specularmente, il wizard evocato da File>>Esporta dati... permette di esportare automaticamente dati da SAS in formati di varie versioni di Excel, Access, Lotus e dBase. R Il pacchetto aggiuntivo (library) foreign fornisce delle utili funzioni per importare dati da EpiInfo, Minitab, S-PLUS, SAS, SPSS, STATA e Systat. Va caricata la libreria e poi utilizzata la funzione necessaria, ad esempio: library(foreign) read.spss() Con write.foreign() è possibile anche esportare in altri formati, attualmente in SPSS, STATA e SAS. Per approfondimenti si veda R Data Import/Export nella Guida Html oppure dal menù Aiuto>>Manuali (in PDF)>> R Data Import/Export . STATA C'è la possibilità di leggere i SAS XPORT Transport format files con fdause. Per altri casi STATA presuppone che si passi per Excel oppure si usi un programma specifico per la trasformazione dei dati da un formato all'altro. SPSS Tramite il comando File>>Apri>>Dati... è possibile aprire automaticamente dati di vari formati tra cui file Excel, Lotus, dBase, SAS e STATA. Il comando File>>Salva con nome... invece, permette anche di esportare i dati da SPSS in altri formati tra cui Excel, Lotus, dBase, SAS e STATA scegliendo opportu namente l'estensione nel box “Salva come”. 13 Scheda 9 - I dati mancanti SAS SAS considera i dati mancanti come il valore più piccolo memorizzabile e come tale viene considerato nei confronti logici. Operazioni con dati mancanti restituiscono dati mancanti. Di default, nelle procedure le osservazioni con dati mancanti vengono eliminate e le operazioni svolte solo sui dati validi. R R rappresenta i valori mancanti con NA, ossia Not Available. Operazioni con dati mancanti restituiscono dati mancanti. Le varie funzioni prevedono un'opzione (na.action) tramite la quale si indica come vanno considerati i dati mancanti; il default va verificato caso per caso ed è possi bile modificarlo. STATA STATA considera i dati mancanti come il valore più grande memorizzabile e come tale viene considerato nei confronti logici. Operazioni con dati mancanti restituiscono dati mancanti. La maggior parte dei comandi agisce ignorando le osservazioni con uno o più dati mancanti. SPSS Operazioni con dati mancanti restituiscono dati mancanti. Di default, nelle procedure le osservazioni con dati mancanti vengono eliminate e le operazioni svolte solo sui dati validi. 14 Scheda 10 - Rinominare Variabili Per cambiare il nome di una variabile in un dataset che è stato acquisito SAS Il comando è: RENAME vecchionome=nuovonome; e va usato in un DATA STEP. Si può ripetere l'istruzione quante volte si desidera oppure scrivere un elenco separato da spazi prima del “;”. R Tra i molti modi per cambiare i nomi in R, forse vale la pena sottolineare quello che richiama la diversa organizzazione e struttura dei dati rispetto agli altri programmi. In questo esempio prima si salvano i nomi delle variabili in un vettore a cui si acce de tramite gli indici e poi si riassegna il nuovo vettore di nomi al dataframe a cui si riferiscono: nomivar<-names(dataframe) nomivar[j]<-”nuovonome” names(dataframe)<-nomivar Naturalmente si possono cambiare anche tutti i nomi definendo il contenuto di no mivar. STATA Se si desidera rinominare una variabile esistente il comando è rename: rename vecchionome nuovonome e si può rinominare una sola variabile alla volta. SPSS Nel foglio di “Visualizzazione variabili” è sufficiente sostituire il vecchio nome con quello nuovo nella colonna che riporta il nome delle variabili. Il codice corrispondente è: RENAME VARIABLES (vecchionome=nuovonome) . Si può scrivere un elenco di coppie separato da spazi e ciascuna racchiusa tra pa rentesi. 15 Scheda 11 - Selezione Variabili Per creare un dataset costituito da un sottoinsieme delle variabili originarie SAS Si può scegliere se usare KEEP e/o DROP come comandi, ad esempio: DATA nuovo; SET vecchio; DROP varchenonvoglio1 varchenonvoglio2; RUN; oppure come opzioni (in questo caso posso anche creare più dataset contempora neamente): DATA nuovo1 (KEEP=varchevoglio1 varchevoglio2) nuovo2 (KEEP=varchevoglio1 varchevoglio3); SET vecchio; RUN; R Considerando di avere i dati in un oggetto di classe data.frame: subset(oggettodataframe,select=c(varchevoglio1, varchevoglio2,...)) Si può procedere anche utilizzando gli indici di colonna: nuovodataframe<-dataframe[,-n] Le parentesi quadre racchiudono gli indici di riga e colonna; nella scrittura riportata “n” indica il numero della colonna da cancellare e il segno meno (-) prima del nu mero indica che venga cancellata anziché selezionata. STATA I comandi sono keep e/o drop di seguito ai quali specificare le variabili rispettiva mente da tenere o da eliminare: keep varchevoglio1 varchevoglio2 oppure drop varchenonvoglio1 varchenonvoglio2 Oppure da menù Data>>Variable utilities>>Keep or drop variables. SPSS Lavorando sulla matrice di dati nella finestra principale le variabili si possono elimi nare dando il comando di “cancella” dal menù dopo averle selezionate. In fase di acquisizione è sottointesa l'opzione di tenere tutte le variabili che si presentano ma si può decidere di selezionare quelle di interesse: GET FILE='file.sav' /DROP=varlist 16 Scheda 12 - Selezione Osservazioni Per creare un dataset costituito da un sottoinsieme delle osservazioni originarie SAS All'interno di un DATA STEP si scrive la condizione che individua le osservazioni di interesse e si dà il comando per tenerle o per cancellarle: IF condizione <THEN OUTPUT>; /*per tenerle*/ IF condizione THEN DELETE; /*per cancellarle*/ R Considerando di avere i dati in un oggetto di classe data.frame: subset(oggettodataframe, condizione) verranno tenute le osservazioni per le quali è vera la condizione specificata. Si può procedere anche utilizzando gli indici di riga: nuovodataframe<-dataframe[condizione,] Le parentesi quadre racchiudono gli indici di riga e colonna; nella scrittura riportata condizione indica la condizione che deve essere verificata perché l'osservazione venga memorizzata in nuovodataframe. STATA Si usano i comandi keep e drop, ponendo una condizione; verranno tenute (o eli minate) le osservazioni per le quali è vera la condizione specificata: keep if condizione drop if condizione Oppure da menù Data>>Variable utilities>>Keep or drop observations. SPSS Evocando dal menù Dati>>Seleziona casi... si apre una finestra in cui specificare la condizione desiderata. A questo punto si può scegliere tra le varie opzioni, ossia che vengano eliminate le osservazioni non selezionate o che quelle selezionate vengano copiate in un nuovo file o che venga creata una variabile filtro (filter_$) che distingue i casi a seconda che la condizione sia verificata o meno. A questo punto sarà segnalato che il filtro è attivo (sulla barra di stato, in fondo alla finestra dei dati) e qualsiasi operazione successiva avrà effetto sulle osservazioni per le quali la variabile filtro è uguale a 1. Per disattivare il filtro occorre tornare nella finestra di “Seleziona casi...” e scegliere “Tutti i casi”. 17 Scheda 13 - Condizioni Per specificare condizioni che devono essere verificate prima di compiere una determi nata operazione SAS Esistono due possibilità: il comando IF ed il comando SELECT (all'interno di un DATA STEP): IF condizione THEN operazione1;<ELSE operazione2>; oppure: SELECT; WHEN (condizione1) operazione1; WHEN (condizione2) operazione2; ... OTHERWISE altraoperazione; END; Se invece si vuole porre la condizione all'interno di un PROC STEP si usa il coman do: WHERE condizione; R Il comando which() restituisce gli indici degli elementi che soddisfano una deter minata condizione; possiamo salvarli in un vettore da utilizzare in comandi succes sivi: which(condizione)->z dataframe$nomevar[z] Qualsiasi condizione inoltre può essere specificata tra parentesi quadre come indi catore di riga e/o colonna. I risultati dell'espressione che indica la condizione sa ranno appunto gli indicatori di riga e/o colonna per l'oggetto considerato. Un altro comando interessante è ifelse() in cui si specificano una condizione ed il valore da sostituire agli elementi dell'oggetto che la soddisfano e uno per quelli che non la soddisfano. ifelse(condizione,nuovovaloresesì,nuovovaloreseno) 18 Scheda 13 – Condizioni Per specificare condizioni che devono essere verificate prima di compiere una determi nata operazione STATA Ogni comando di STATA prevede l'opzione per specificare una condizione: comando if condizione in questo modo si restringe l'esecuzione di comando a quelle osservazioni per le quali il valore dell'espressione specificata è vera. In tutte le finestre è offerta la possibilità di porre delle condizioni (sottofinestra “by/if/in”). SPSS Evocando dal menù Dati>>Seleziona casi... si apre una finestra in cui specificare la condizione desiderata. Viene creata una variabile filtro (filter_$) che distingue i casi a seconda che la condizione sia verificata o meno. A questo punto sarà segna lato che il filtro è attivo (sulla barra di stato, in fondo alla finestra dei dati) e qual siasi operazione successiva avrà effetto sulle osservazioni per le quali la variabile filtro è uguale a 1. Per disattivare il filtro occorre tornare nella finestra di “Seleziona casi...” e scegliere “Tutti i casi”. 19 Scheda 14 - Ordinamento Per ordinare un dataset secondo una (o più) variabili. SAS La procedura è la PROC SORT: PROC SORT DATA=originario OUT=ordinato; BY <DESCENDING> variabile1 <variabile2> ...; RUN; Si può ordinare il dataset secondo più variabili nidificate. Per default l'ordinamento sarà crescente o in ordine alfabetico; l'opzione DESCEN DING prima del nome della variabile indica se l'ordinamento debba essere fatto al contrario. R Per ordinare vettori o fattori il comando è sort(). Il default è in ordine crescente, per invertire l'ordine c'è l'opzione descreasing, ad esempio: sort(nomevettore, decreasing=TRUE) Se invece si desidera ordinare un data.frame secondo una delle variabili presenti il comando è order(): datiordinati<-dataframe[order(dataframe$variabile),] STATA Il comando sort ordina le osservazioni del dataset attivo solo in ordine crescente, secondo la variabile specificata: sort variabile Si può ordinare il dataset secondo più variabili nidificate. Per scegliere se ordinare in modo crescente o decrescente: gsort -variabile Il segno meno davanti al nome della variabile indica che si desidera l'ordine descre scente. Oppure dal menù Data>>Sort>>Ascending sort (per l'ordine crescente) e Data>>Sort>>Ascending e descending sort (per poter scegliere tra ordine crescen te e decrescente). SPSS Dal menù si può scegliere Dati>> Ordina casi... Il codice corrispondente è: SORT CASES BY variabile (A) . (A) indica che l'ordinamento sarà crescente (ascending) ma si può scegliere che sia decrescente (D - descending) 20 Scheda 15 - Unione Dataset (aggiungere nuove osservazioni) Per unire in un unico dataset informazioni che vengono da dataset diversi: in questo caso per aggiungere ad un primo dataset nuove osservazioni su cui sono state rilevate le stesse variabili SAS Supponiamo che le stesse variabili siano state rilevate su osservazioni memorizzate in diversi dataset di nome dati1, dati2, etc. DATA nuovo; SET dati1 dati2 ...; RUN; Sia dati1 che dati2 devono essere già in formato .sas7bdat R Si possono collegare informazioni memorizzate in oggetti diversi tramite il coman do: rbind(dati1, dati2) Se sono data.frame occorre che le variabili abbiano lo stesso nome. STATA Si supponga di avere caricato in memoria dati1 e di voler aggiungere le informazio ni memorizzate in dati2: append using dati2 dati2 deve essere già in formato .dta Oppure dal menù Data>>Combine Datasets>>Append datasets. SPSS Dal menù Dati>>Unisci file>>Aggiungi casi... che evoca una finestra in cui specifi care il dataset (caricato o esterno) da aggiungere ed ulteriori dettagli riguardo alle variabili. Il codice corrispondente è: ADD FILES /FILE=* /FILE='x:\percorso\filedaaggiungere.sav'. L'asterisco (*) indica il file corrente. Un'alternativa “pratica” consiste nell'aggiungere dati da un dataset all'altro utiliz zando semplicemente il copia-incolla delle osservazioni di interesse dopo aver aper to i dataset in due finestre. Bisogna però selezionare nel file di destinazione un'area congrua (cioè il numero di righe necessarie). 21 Scheda 16 - Unione Dataset (aggiungere nuove variabili) Per unire in un unico dataset informazioni che vengono da dataset diversi: in questo caso per aggiungere nuove variabili rilevate sulle stesse osservazioni del primo data set. Le nuove variabili devono avere nomi diversi da quelle già esistenti a meno che non siano effettivamente la stessa variabile nel qual caso la seconda (la duplicazione) ver rà scartata dal programma. SAS Supponiamo d'aver rilevato nuove variabili (dati2) sulle stesse osservazioni conte nute in dati1 e di voler unire tali informazioni: DATA nuovo; MERGE dati1 dati2; BY variabilechiave; RUN; la variabile chiave deve essere univoca, presente in entrambi i dataset con lo stes so nome e formato e i dataset devono essere ordinati secondo tale variabile. R Ci sono due modi per ottenere un risultato simile: si possono semplicemente af fiancare e collegare colonne con cbind()... cbind(oggetto1,oggetto2) oppure utilizzare merge() che permette di specificare una variabile chiave merge(dati1, dati2, by.x=”variabilechiavedati1”, by.y=”variabilechiavedati2”) A differenza degli altri programmi, non occorre che i dati siano già ordinati secondo la variabile chiave. 22 Scheda 16 - Unione Dataset (aggiungere nuove variabili) Per unire in un unico dataset informazioni che vengono da dataset diversi: in questo caso per aggiungere nuove variabili rilevate sulle stesse osservazioni del primo data set. Le nuove variabili devono avere nomi diversi da quelle già esistenti a meno che non siano effettivamente la stessa variabile nel qual caso la seconda (la duplicazione) ver rà scartata dal programma. STATA Supponiamo di aver caricato in memoria un primo dataset al quale vogliamo ag giungere le informazioni contenute in un secondo dataset, già in formato .dta. La sintassi è: merge variabilechiave using secondofile Il secondo file verrà unito al primo secondo la variabile chiave che deve essere uni voca, presente in entrambi i dataset con lo stesso nome e formato e i dataset de vono essere ordinati secondo tale variabile. Oppure dal menù Data>>Combine datasets>>Merge two datasets. SPSS Dal menù Dati>>Unisci file>>Aggiungi variabili... che evoca una finestra in cui specificare il dataset (caricato o esterno) da aggiungere e poi la variabile chiave ed ulteriori dettagli riguardo alle variabili. Il codice corrispondente è: MATCH FILES /FILE=* /FILE='FileDati2' /BY variabilechiave. L'asterisco (*) indica il file corrente. Anche in questo caso si possono aggiungere informazioni da un dataset all'altro uti lizzando semplicemente il copia-incolla delle variabili di interesse dopo aver aperto i dataset in due finestre. Bisogna però selezionare nel file di destinazione un'area congrua (cioè il numero di colonne necessarie) e non vi è certezza che siano colle gate informazioni che appartengono effettivamente alla stessa osservazione. 23 Scheda 17 - Creazione di una nuova variabile (ricodifica) Per ricodificare una variabile esistente SAS Per ricodificare le variabili si possono usare i costrutti di selezione in combinazione con le assegnazioni: IF condizione1 THEN assegnazione1; IF condizione...THEN assegnazione...; ELSE altrassegnazione; oppure SELECT; WHEN (condizione1) assegnazione1; ... OTHERWISE altrassegnazione; END; Le condizioni possono anche essere molto complesse e possono coinvolgere tutte le variabili esistenti e gli operatori logici e/o di confronto. Si noti che ogni istruzione IF costituisce un comando a sè, mentre la sequenza di WHEN appartiene ad un unico comando SELECT. R Si può trasformare un vettore da numerico a fattore e viceversa con le funzioni: as.numeric(oggetto) as.factor(oggetto) as.integer(oggetto) Il comando cut(), invece, assegna a ciascuna osservazione la classe di apparte nenza rispetto alla suddivisione in intervalli di una variabile quantitativa: cut(variabile, breaks) breaks permette di definire i limiti di ciascun intervallo oppure il numero di inter valli in cui si intende dividere la variabile. 24 Scheda 17 - Creazione di una nuova variabile (ricodifica) Per ricodificare una variabile esistente STATA In STATA esistono diverse possibilità: encode ricodifica una variabile carattere in una numerica (assegna un numero a ciascun gruppo identificato dalla variabile ca rattere) encode varchar, generate (nuovavarnum) Oppure dal menù Data>>Create or change variables>>Other variable transforma tion comands>>Encode value label from string variable. decode invece crea una variabile di tipo carattere basata sulla variabile numerica e sulle eventuali etichette attribuite ai suoi valori: decode varnum, generate (nuovavarchar) Oppure dal menù Data>>Create or change variables>>Other variable transforma tion comands>>Decode string from labeles numeric variable. Con recode infine, si possono stabilire le regole per ricodificare una variabile esi stente; se si desidera che la ricodifica sia memorizzata in una nuova variabile oc corre usare l'opzione generate(nuovavar) recode nomevar regola1 [regola2]..., generate(nuovavar) Oppure dal menù Data>>Create or change variables>>Other variable transforma tion comands>>Recode categorical variable. SPSS Dal menù Trasforma>>Ricodifica>>Nelle stesse variabili... oppure In variabili diffe renti... Il codice corrispondente è; RECODE var (regola1) (regola2) ... INTO nomenuovavar . EXECUTE . Per sovrascrivere la variabile basta omettere INTO nomenuovavar. 25 Scheda 18 - Creazione di una nuova variabile (trasformazione) Per creare una nuova variabile che sia una trasformata di variabili esistenti SAS Per creare una nuova variabile è sufficiente scegliere un nome valido e assegnarvi un valore all'interno di un DATA STEP. La prima assegnazione determina le carat teristiche (natura e attributi) della variabile. nomevariabile1 = valorenumerico ; nomevariabile2 = 'stringa' ; nomevariabile3 = formula matematica; nomevariabile4 = altra variabile esistente; In generale si può scrivere una qualsiasi espressione che sia combinazione di varia bili esistenti, operatori e funzioni. R In qualsiasi momento è possibile creare un oggetto che sia elaborazione di oggetti esistenti: nuovoelemento<-espressione(elementi esistenti) Se in particolare si desidera creare una nuova variabile in un data.frame (ad esem pio di nome dati) si può usare la seguente scrittura: dati$nuovavar<-espressione(elementi esistenti) l'espressione può essere combinazione di oggetti esistenti, operatori e funzioni (si faccia attenzione alle dimensioni degli oggetti). STATA Il comando generate permette di creare una nuova variabile che sia il risultato di una funzione e/o una trasformazione algebrica di altre variabili; la sintassi è: generate nuovavar=espressione l'espressione può essere combinazione di variabili esistenti, operatori e funzioni. Oppure dal menù Data>>Create or change variables>>Create new variable. SPSS Dal menù si sceglie Trasforma>>Calcola... e viene evocata una finestra che per mette di scrivere espressioni anche molto complesse ed eventualmente porre delle condizioni per l'effettivo calcolo. La sintassi corrispondente è; COMPUTE nuovavar = espressione . EXECUTE . Anche in questo caso l'espressione può essere combinazione di variabili esistenti, operatori e funzioni. 26 Scheda 19 - Informazioni sul dataset Per ottenere informazioni su un dataset di interesse (numero di osservazioni e di va riabili, nomi e attribuiti delle variabili, data di creazione e di modifica, etc) SAS PROC CONTENTS DATA=nomedataset; RUN; R Il comando str() restituisce natura e dimensioni dell'oggetto quindi, se è un data. frame, il numero di osservazioni e di variabili mentre il comando attributes() re stituisce una lista di tutte le caratteristiche non intrinseche dell'oggetto: str(oggetto) attributes(oggetto) Infine class() restituisce la classe dell'oggetto ed eventualmente di tutti gli oggetti che compongono l'oggetto. STATA Le informazioni sul dataset corrente si ottengono con il comando: describe mentre quelle su un file non caricato ma memorizzato in un punto accessibile sono ottenibili specificandone il nome ed il percorso describe using "x:\percorso\file.dta" Oppure dal menù Data>>Describe data>>Describe variabile in memory. SPSS Selezionando dal menù File>>Visualizza informazioni file dati si può scegliere se chiedere informazioni sul file attivo o un file esterno. Il codice è: SYSFILE INFO 'x:\percorso\file.sav'. 27 Scheda 20 - Stampa del dataset Per ottenere la stampa a video del contenuto di un dataset o di una sua parte SAS La procedura di interesse è: PROC PRINT DATA=nomedataset; <VAR lista di variabili>; RUN; Se si desidera vedere solo una parte dei dati allora bisogna specificare la lista delle variabili di interesse dopo il comando opzionale VAR. R Per vedere a video il contenuto di un oggetto è sufficiente scrivere il nome dell'og getto e dare l'Invio STATA Il comando è: list Se si desidera vedere solo una parte dei dati allora bisogna specificare la lista delle variabili di interesse list lista di variabili Oppure dal menù Data>>Describe data>>List data. SPSS Per come è strutturato il programma i dati sono sempre visibili sullo schermo in una delle finestre principali, comunque esiste il comando: PRINT / lista variabili. EXECUTE. Questo stampa a video le variabili specificate nella lista. Se interessa l'intero dataset allora si può scrivere all al posto della lista di variabi li. 28 Scheda 21 - Frequenze Semplici Per ottenere le tabelle di frequenze semplici SAS La procedura di interesse è: PROC FREQ DATA=file; <TABLES lista variabili;> RUN; Per default la procedura indica le modalità delle variabili specificate e per ciascuna le frequenze semplici, le percentuale semplici, le frequenze cumulate e le percen tuali cumulate. Senza il comando opzionale TABLES vengono proposte le frequenze di tutte le va riabili presenti nel dataset. R Il comando per ottenere le distribuzioni di frequenza è table(): table(nomevariabile) Se si desiderano le frequenze percentuali e/o le cumulate occorre usare contestual mente anche le funzioni length() e cumsum(): table(nomevariabile)/length(nomevariabile) cumsum(table(nomevariabile)) cumsum(table(nomevariabile)/length(nomevariabile)) STATA Se si desidera ottenere una serie di tabelle di frequenza semplici: tab1 varlist Per default vengono presentate le frequenze semplici e le percentuali semplici e cu mulate. Oppure dal menù Statistics>>Summaries, tables & tests>>Tables>>One way ta bles. SPSS Dal menù Analizza>>Statistiche descrittive>>Frequenze... Il codice corrispondente è: FREQUENCIES VARIABLES=lista variabili /ORDER= ANALYSIS . Per default vengono presentate le frequenze semplici, le percentuali semplici, quel le calcolate sui valori validi e quelle cumulate. 29 Scheda 22 - Tabelle di contingenza Per ottenere tabelle di frequenze incrociate SAS La procedura di interesse è la PROC FREQ e le variabili da incrociare vanno collegate da un asterisco PROC FREQ DATA=file; TABLES var1*var2; RUN; Per default le tabelle presentano frequenze semplici, percentuali sull'intera tabella, percentuali di riga e colonna. R Il comando per ottenere le distribuzioni di frequenza è table() in cui specificare la lista delle variabili coinvolte, separate da virgole: table(var1,var2,...) Un altro comando interessante è xtabs() per il cui approfondimento si rimanda al manuale. STATA Specificando due variabili dopo tabulate si otterrà una tabella a doppia entrata: tabulate var1 var2 Per default la tabella presenta solo le frequenze semplici, per avere le percentuali e anche quelle di riga e colonna occorre usare le opzioni: tabulate var1 var2, row column Oppure dal menù Statistics>>Summaries, tables & tests>>Tables>>Two-way ta bles with measures of association. SPSS Dal menù Analizza>>Statistiche descrittive>>Tavole di contingenza... Il codice corrispondente è: CROSSTABS /TABLES=var1 BY var2 . Per default la tabella presenta solo le frequenze semplici, per avere le percentuali e anche quelle di riga e colonna occorre usare l'opzione: /CELLS= COUNT ROW COLUMN TOTAL Nella procedura a finestre occorre selezionare il tasto “Celle”. 30 Scheda 23 - Indicatori di associazione Per ottenere indicatori di associazione SAS La procedura di interesse è la PROC FREQ nell'ambito della quale va usato l'opportu na opzione che è CHISQ: PROC FREQ DATA=file; TABLES var1*var2 /CHISQ; RUN; E' possibile ottenere anche altri indicatori (ad esempio gli odds ratio); specificando ALL dopo la barra, vengono calcolati tutti quelli possibili. R Il comando table() genera un oggetto di tipo tab al quale si può applicare la fun zione chisq.test() o summary() per il calcolo del chi-quadro: chisq.test(table(var1,var2)) summary(table(var,var2)) Il primo differisce dal secondo in quanto di default applica la correzione di continui tà di Yates. STATA Specificando due variabili dopo tabulate si otterrà una tabella a doppia entrata e per ottenere gli indicatori di associazione bisogna usare l'appropriata opzione; ad esempio per il chi-quadro: tabulate var1 var2, chi2 exact per il test esatto di Fisher gamma per il gamma di Goodman e Kruskal's taub per il tau-b di Kendall V per la V di Cramer Oppure dal menù Statistics>>Summaries, tables & tests>>Tables>>Two-way ta bles with measures of association. SPSS Dal menù Analizza>>Statistiche descrittive>>Tavole di contingenza... si evoca la finestra in cui specificare le tabelle da incrociare e gli indicatori desiderati tramite le sottofinestre “Statistiche...” e “Test esatti...” Il codice corrispondente è: CROSSTABS /TABLES=var1 BY var2 /STATISTIC=CHISQ CC PHI GAMMA BTAU. In questo esempio abbiamo richiesto il calcolo del chi-quadro, del coefficiente di contingenza, del coefficiente phi e del V di Cramér (assieme con l'opzione PHI), il gamma e il tau-b. 31 Scheda 24 - Indicatori univariati Per ottenere gli indicatori univariati per le variabili quantitative SAS La procedura di interesse è PROC UNIVARIATE; per default la procedura calcola tutti gli indicatori per tutte le variabili che considera numeriche. Per selezionare solo al cune variabili di interesse occorre specificare il comando opzionale VAR: PROC UNIVARIATE DATA=dataset; <VAR lista variabili;> RUN; R Con il comando summary() si ottengono media, mediana, quantili, massimo e mi nimo di un vettore oppure delle variabili numeriche di un data.frame: summary(oggetto) Se l'oggetto è di tipo fattore allora la funzione ne fornisce i livelli e le relative fre quenze. Se si desiderano varianze e covarianze: var(oggetto) cov(oggetto) STATA Con il comando summarize si ottengono i principali indicatori univariati delle varia bili elencate. Se si omette di indicare una lista verranno prese in considerazione tutte le variabili numeriche del dataset attivo. L'opzione detail fornisce informa zioni sulla distribuzione (varianza, asimmetria, curtosi, percentili e valori estremi): summarize lista variabili, detail Oppure dal menù Data>>Describe data>>Summary statistics. SPSS Dal menù Analizza>>Statistiche descrittive>>Descrittive... si evoca la finestra in cui scegliere le variabili su cui si vogliono calcolare gli indicatori. Per default vengo no calcolati massimo, minimo, media e deviazione standard, per averne altri occor re evocare “Opzioni...” e specificare quali si desiderano. Il codice corrispondente è (ad esempio): DESCRIPTIVES VARIABLES=lista variabili /STATISTICS=MEAN STDDEV VARIANCE MIN MAX . 32 Scheda 25 - Test di normalità Per ottenere uno o più test di normalità sulle variabili quantitative SAS La procedura di interesse è la PROC UNIVARIATE nell'ambito della quale va usato l'opportuna opzione che è NORMAL: PROC UNIVARIATE DATA=dataset NORMAL; <VAR lista variabili;> RUN; La procedura fornisce i test di Shapiro-Wilk, Mises e Anderson-Darling. Kolmogorov-Smirnov, Cramér-von R Uno dei modi per verificare la normalità di una distribuzione è usare il test di Sha piro Wilk tramite la funzione shapiro.test(). Altre funzioni interessanti sono con tenute in librerie aggiuntive come ad esempio shapiro.wilk.test() nella libreria cwhstat e lillie.test() della libreria nortest; quest'ultima calcola il test di Kol mogorov-Smirnov. STATA Il test di normalità di Shapiro-Wilk si ottiene tramite il comando swilk: swilk lista var Oppure dal menù Statistics>>Summaries, tables & tests>>Distributional plots & tests>>Shapiro-Wilk normality test. Nello stesso menù sono proposti anche altri test e numerosi strumenti grafici. SPSS Dal menù Analizza>>Statistiche descrittive>>Esplora si evoca la finestra in cui scegliere le variabili su cui si vuole calcolare il test di normalità quindi nella sottofi nestra evocata dal pulsante “Grafici” si deve vistare l'opzione “Grafici di normalità con test”. Verranno calcolati i test di Shapiro-Wilk e quello di Kolmogorov-Smirnov con correzione di significatività di Lilliefors. La sintassi corrispondente è: EXAMINE VARIABLES= lista variabili /PLOT NPPLOT . 33 Scheda 26 - Correlazione Per ottenere la matrice dei coefficienti di correlazione SAS La procedura di interesse è la PROC CORR che calcola matrici di correlazione con tutte le variabili numeriche che trova nel dataset oppure tra quelle eventualmente specificate dopo il comando opzionale VAR. PROC CORR DATA=dataset; <VAR lista variabili;> RUN; Per default i coefficienti calcolati sono quelli di Pearson ma è possibile dare altre specifiche tramite varie opzioni. R Il comando è: cor(nomedataframe) cor(var1,var2) Se si dà come oggetto un data.frame la funzione restituisce la matrice di correla zione tra tutte le variabili nel data.frame, altrimenti è possibile chiedere la correla zione tra due variabili. Il metodo di default è quello di Pearson ma è possibile chie dere quello di Kendall o di Spearman con l'opzione method=”nome”. 34 Scheda 26 - Correlazione Per ottenere la matrice dei coefficienti di correlazione STATA Il comando correlate calcola i coefficienti di correlazione per tutte le variabili nu meriche del dataset attivo oppure per la lista di variabili eventualmente specificate ma esclude le osservazioni per le quali c'è anche un solo dato mancante (esclusio ne listwise): correlate lista di variabili Oppure dal menù Statistics>>Summaries, Tables & tests>>Summary stati stics>>Correlations and coviarances. Il comando pwcorr calcola i coefficienti di correlazione con tutti i valori validi cop pia per coppia (esclusione pairwise) e su richiesta riporta anche la significatività: pwcorr lista variabili, sig Oppure dal menù Statistics>>Summaries, Tables & tests>>Summary stati stics>>Pairwise correlations. SPSS Si evoca dal menù Analizza>>Correlazione>>Bivariata... una finestra in cui si pos sono scegliere le variabili di interesse, i coefficienti di correlazione (Pearson, tau-b di Kendall e Spearman) e il tipo di test di significatività; con le “Opzioni...” si può scegliere anche di avere qualche statistica descrittiva e quale tipo di esclusione ef fettuare. Il codice corrispondente è (ad esempio): CORRELATIONS /VARIABLES=lista variabili /PRINT=TWOTAIL NOSIG /MISSING=PAIRWISE . Per default i coefficienti calcolati sono quelli di Pearson. 35 Scheda 27 - I grafici (presentazione) Breve presentazione delle funzionalità grafiche SAS In SAS è possibile ottenere dei grafici tramite opportune istruzioni opzionali delle specifiche procedure (se sono previste) oppure si possono utilizzare procedure apposite che appartengono al modulo SAS\GRAPH e che producono grafici di alto li vello. Ciascuna procedura produrrà il grafico (od i grafici) richiesti evocando una propria finestra grafica all'interno della quale i grafici verranno presentati nell'ordine in cui sono stati richiesti, uno sotto all'altro, ma è possibile accedere direttamente al gra fico desiderato tramite l'albero dei risultati della relativa finestra. Anche chiudendo la finestra grafica, questa ripresenterà tutti i grafici precedente mente prodotti non appena sarà nuovamente evocata, mentre alla chiusura del programma tutti i grafici andranno perduti a meno che non siano stati esplicita mente salvati. R Le opportunità grafiche sono una componente importante ed estremamente versa tile di R. E' possibile utilizzare funzioni per un'ampia varietà di grafici ed inoltre co struirne di nuovi. Le funzioni grafiche possono essere utilizzate in modalità interattiva oppure in mo dalità batch. La modalità interattiva è semplice perché all'avvio R attiva un sottoin sieme grafico che apre un'apposita finestra grafica. R, inoltre, offre una lista di parametri per personalizzare i propri grafici. I comandi grafici sono suddivisi in tre gruppi principali: • le funzioni di alto livello per creare i nuovi grafici, possibilmente con assi, eti chette, titoli, etc. • le funzioni di basso livello per aggiungere informazioni a grafici esistenti come punti ulteriori, linee ed etichette • le funzioni interattive che permettono di aggiungere od estrarre informazioni da grafici esistenti, utilizzando un periferica quale il mouse I comandi di alto livello sono tali da generare un nuovo grafico dei dati passati come argomento alla funzione e in cui sono automaticamente generati assi, titoli ed etichette; le funzioni di alto livello quindi iniziano sempre un nuovo grafico, eli minando se necessario il grafico precedente. 36 Scheda 27 – I grafici (presentazione) Breve presentazione delle funzionalità grafiche STATA STATA consente di creare numerosi tipi di grafici; offre una grande flessibilità non solo per l'impaginazione dei grafici ma soprattutto per il loro contenuto. Integra nei grafici le curve di aggiustamento e di lissage, gli intervalli di confidenza e tutti gli altri elementi grafici associati ai dati. Si possono modificare i titoli, i colori o i sim boli in tutta semplicità grazie alle finestre di dialogo. Infine, è possibile esportare i risultati in formati diversi compresi PostScript e PNG. I grafici sono memorizzati nella memoria centrale o sul disco fisso. Quando si dise gna un grafico questo verrà conservato in memoria centrale con il nome “Graph” e verrà sostituito dal comando graph successivo. STATA permette però di avere più finestre grafiche contemporaneamente; l'opzione name() crea un grafico dotato di un proprio nome e presentato in una propria fine stra. Tutti i comandi sono accessibili via menù e finestre di dialogo: Graphics>>Manage Graphs >>... Se non è salvato esplicitamente qualsiasi grafico sarà cancellato alla chiusura della sessione di lavoro ed è cancellato anche nel caso si usino i comandi clear o di scard. SPSS In SPSS è possibile ottenere un'ampia varietà di grafici tramite le finestre di dialo go del menù Grafici. Come in SAS, è possibile ottenere alcuni grafici tramite opportune istruzioni opzio nali (se previste) di procedure di analisi oppure si possono utilizzare comandi appo siti. I grafici richiesti saranno riportati nella finestra di Output Viewer SPSS e verranno presentati, alternati agli altri risultati di tipo testuale, tutti nell'ordine in cui sono stati richiesti; è possibile accedere direttamente al grafico desiderato tramite l'albe ro dei risultati della relativa finestra. E' possibile inoltre accedere al singolo grafico cliccandoci sopra ed evocando così l'Editor dei grafici tramite il quale si può modificarne l'aspetto. Alla chiusura del programma tutti i grafici andranno perduti a meno che non siano stati esplicitamente salvati. 37 Scheda 28 - I grafici (quali?) Come ottenere i grafici veri e propri SAS Le principali e più comuni procedure grafiche sono: PROC GCHART che produce diagrammi a barre e diagrammi a torta (ma non solo); PROC GPLOT per produrre i diagrammi di dispersione; PROC BOXPLOT che non appartiene a SAS\GRAPH ma a SAS\STAT produce grafici a scatole e baffi che vengono comunque presentati nella finestra grafica (attenzione: la procedura non è attualmente in grado di fornire boxplot “singoli” ma necessita di una variabile di raggruppamento; per ottenere, quindi, il boxplot di una sola varia bile, è necessario creare una finta variabile che contenga un valore costante per tutti i valori della variabile di interesse7). Naturalmente ciascuna procedura prevede poi ulteriori caratterizzazioni con propri comandi specifici. R La funzione grafica più comunemente usata è plot(), che è una funzione generica, il tipo di grafico dipenderà dal tipo o dalla classe dei dati forniti: plot(xvettorenumerico) produrrà una grafico dei valori memorizzati nel vettore contro il relativo indice; plot(xvettorenumerico,yvettorenumerico) produrrà un grafico di dispersione tra y e x; plot(fattore) produrrà un grafico a barre del fattore; plot(fattore, yvettorenumerico) produrrà dei diagrammi a scatola di y per ogni livello del fattore; hist(xvettore) produrrà un istogramma del vettore numerico x; con questa fun zione è opportuno dare anche le istruzioni opzionali nclass= (numero di classi) op pure breaks= (i precisi intervalli); pie() per i diagrammi a torta; Vi sono inoltre altre due funzioni molto utili quali: pairs(X) che produce una matrice in cui vengono confrontate a due a due tutte le variabili che costituiscono le colonne di X con una scala costante; coplot(a~b|c) che produce diagrammi di dispersione tra due variabili dati i valori di una terza (qui tra a e b, dati i livelli di c, se è un fattore o dati determinati inter valli, se c è numerica) 7 Si veda la Technical FAQ #4513 del sito del supporto tecnico di SAS 38 Scheda 28 – I grafici (quali?) Come ottenere i grafici veri e propri STATA Ci sono diversi tipi (“famiglie”) di grafici, ciascuno dei quali prevede poi ulteriori ca ratterizzazioni con propri comandi specifici: graph twoway per la rappresentazione di coppie di variabili quantitative graph bar per la creazione di istogrammi graph matrix per la creazione di grafici di dispersione graph box per la creazione di boxplot (diagrammi a scatole e baffi) graph pie per la creazione di grafici a torta Tutti i comandi appena citati sono accessibili via menù e finestre di dialogo: Gra phics>>... SPSS Tutti i grafici sono accessibili via menù e finestre di dialogo da Grafici. Se si desidera utilizzare il codice allora il comando principale è GRAPH al quale va aggiunta l'opzione desiderata; i più importanti sono: GRAPH /BAR per i diagrammi a barre /PIE per i diagrammi a torta /HISTOGRAM per gli istogrammi /SCATTERPLOT per i diagrammi di dispersione Ciascuno di questi prevede poi ulteriori caratterizzazioni con proprie opzioni specifi che. 39 Scheda 29 - I grafici (esportazione) Per esportare i grafici in vista di includerli in rapporti, relazioni, etc. SAS E' possibile esportare un grafico da SAS ad un'altra applicazione tramite il “copia ed incolla” (via clipboard). Oppure si può scegliere di esportare l'immagine, dopo averla precedentemente se lezionata, tramite menù: File>>Export as Image... che propone una serie di forma ti tra cui Metafile, Bmp, Tif, Jpeg, Gif e PS. R In generale è possibile esportare un grafico da R ad un'altra applicazione tramite il “copia ed incolla” (via clipboard). R può salvare i grafici in file di formato Postscript o PDF: questi due formati sono quelli più richiesti in ambito professionale perché vengono riprodotti correttamente indipendentemente dalla piattaforma e sono formati di grafica vettoriale quindi in dipendenti dalla risoluzione con cui sono stati generati. Per creare un file PDF è sufficiente scrivere il comando pdf() e da quel momento in poi tutti i comandi grafici vengono indirizzati al file PDF; al termine è necessario chiudere la periferica grafica: pdf(“nomedelfile.pdf”) plot(x,y) dev.off() Analogamente con postscript(). E' possibile salvare anche tramite menù, dopo aver selezionato la finestra grafica di interesse: File>>Salva con nome... e quindi scegliere il formato desiderato tra Me tafile, Postscript, PDF, Png, Bmp e Jpeg. 40 Scheda 29 – I grafici (esportazione) Per esportare i grafici in vista di includerli in rapporti, relazioni, etc. STATA Il modo più semplice per esportare un grafico da STATA ad un'altra applicazione è via clipboard. Dopo la creazione del grafico si deve selezionare la finestra grafica, quindi si evoca il menù con il tasto destro del mouse e si seleziona la voce “Copy”. STATA farà una copia del file come Enhanced Metafile (EMF); questo assicura che l'applicazione che riceverà il grafico l'avrà con la risoluzione più alta possibile. Se l'applicazione destinataria non è in grado di interpretare tale formato allora occorre cambiare alcune impostazioni: Prefs>>Graph Preferences si scelga l'aletta clip board e si selezioni Windows Metafile (WMF). Dopo aver copiato il grafico nella clipboard si può passare all'applicazione in cui si vuole importarlo e dove lo si può “Incollare”. STATA può salvare un grafico anche come Encapsulated PostScript (EPS). Per sal varlo come tale occorre selezionare la voce File>>Save Graph... e scegliere il for mato .eps dalla lista proposta. SPSS E' possibile esportare un grafico da SPSS ad un'altra applicazione tramite il “copia ed incolla” (via clipboard). Oppure si può scegliere di esportare l'immagine tramite menù: File>>Esporta... Nella finestra evocata da tale menù occorre scegliere se esportare tutto, solo l'out put testuale o solo i grafici. Scegliendo “solo i grafici” allora si potrà specificare se tutti i grafici o tutti i grafici visibili e quindi il formato tra Enhanced o Windows Me tafile, PCT, Png, Bmp, Tif, Jpeg e EPS. Ciascun formato offre una particolare serie di opzioni e naturalmente bisogna anche scegliere un luogo ed un nome di destina zione del file. In alternativa è possibile salvare un singolo grafico alla volta; in questo caso occor re selezionare il grafico desiderato, scegliere di esportare genericamente l'output e poi selezionare l'opportuna voce tra: • tutti gli oggetti della finestra • tutti gli oggetti visibili • solo gli oggetti selezionati ossia l'ultima. 41 Scheda 30 Scheda Quasi un indice - Schema (molto) riassuntivo, per nulla esaustivo SAS R STATA SPSS 1 - Avvertenze 2 - Help 3 – Log delle sessioni log using 4 – Apri file SET / DATA= load() use GET FILE 5 – Acquisizione (formato libero) INFILE,INPUT read.table() infile GET DATA 6 – Acquisizione (formato colon na) INFILE,INPUT read.fwf() infix GET DATA rename RENAME 7 – Opzioni per l'acquisizione 8 – Acquisizione (altri formati) 9 – Dati man canti 10 - Rinominare variabili RENAME 11 - Selezione variabili KEEP, DROP subset() keep, drop 12 - Selezione osservazioni IF subset() keep if, drop if SELECT IF 13 – Condizioni IF, SELECT which() if FILTER BY da COMPUTE 14 – Ordina mento SET rbind() append ADD FILES 15 - Unione da taset (per riga) MERGE cbind(), merge() merge MATCH FILES sort(), order() sort, gsort SORT CASES generate COMPUTE 16 - Unione da PROC SORT taset (per colon na) 17 – Ricodificare 42 prec. Scheda SAS 18 – Trasforma zioni R STATA SPSS as.*(), cut() encode, decode, RECODE recode str(), attributes() describe SYSFILE INFO list PRINT 19 - Informazio ni sul dataset PROC CONTENTS 20 - Stampa del dataset PROC PRINT 21 - Frequenze semplici PROC FREQ table() tab1 FREQUENCIES 22 - Tabelle di contingenza PROC FREQ table() tabulate CROSSTABS 23 - Indicatori di PROC FREQ associazione chisq.test(), summary() tabulate CROSSTABS 24 - Indicatori univariati summary(), var(), cov() summarize DESCRIPTIVES 25 – Test di nor PROC UNIVARIATE malità shapiro.test() swilk EXAMINE 26 - Correlazio ne cor() correlate, pwcorr CORRELATIONS PROC UNIVARIATE PROC CORR 27 – I grafici (presentazione) 28 – I grafici (veri e propri) 29 – I grafici (esportazione) 43 Mini Glossario Case sensitive Indica la capacità del programma di distinguere tra le lettere maiuscole e quelle minuscole. Clipboard Indica l'area temporanea di memoria dove i dati vengono imma gazzinati tramite la funzione “Copia” ed è detta appunti in italia no. Default E' un termine che si riferisce allo stato o alla risposta di un siste ma qualunque, in assenza di interventi espliciti. Open source Letteralmente “sorgente aperta”, indica che il programma è rilasciato con un tipo di licenza che include la disponibilità e mo dificabilità del codice sorgente che quindi è suscettibile di amplia menti e modifiche da parte di chi desidera partecipare al suo svi luppo. Prompt E' l'interfaccia che permette all'utente di interagire con il pro gramma tramite linee di comando (di cui si deve conoscere la sintassi). Wizard Letteralmente “mago”, indica una procedura informatica che permette all'utente di eseguire determinate operazioni (solita mente complesse) tramite una serie di passi successivi che ven gono presentate in finestre di dialogo. Riferimenti Agostinelli, C., Sartorelli, S. (2002), Introduzione al linguaggio di SAS System, Qua derno 1, Quaderni ASID, Facoltà di Scienze Statistiche, Università di Padova. Iacus, S.M., Masarotto G. (2003), Laboratorio di statistica con R, McGraw-Hill. Muenchen, R.A. (2006), R for SAS and SPSS Users. Pastore, M. (2007), Introduzione all'uso di SPSS 14.0 per Windows. Sartorelli, S. (2006), Introduzione a STATA. STATA Press (2005), User's Guide, Release 9, StatCorp, College Station, Texas, USA. Venables, W.N., Smith, D.M. and the R Development Core Team (2006), An Intro duction to R. Wikipedia: http://it.wikipedia.org/wiki/Portale:Informatica 44