...

La stele di Rosetta di SAS, R, SPSS e STATA

by user

on
Category: Documents
42

views

Report

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
Fly UP