Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
title "MEDIA DI X PER CLASSE";
proc means data = normalebis mean std;
class classe;
var x;
run; 132
Vai all’indice Dispensa a cura di Gabriele Pelli
Università Cattolica del Sacro Cuore
dove: a) Abbiamo specificato le opzioni mean e std per
“personalizzare” l’output secondo le nostre necessità;
statement
b) Abbiamo aggiunto lo class per dire a SAS
di calcolare media e deviazione standard a seconda
classe
del valore assunto dalla variabile “ ”.
output
9.2.15. Il comando
Quando facciamo questo tipo di analisi, può essere utile scaricare i
risultati delle procedure in una tabella (attraverso il comando
output). La sintassi sarà data da:
title "MEDIA DI X PER CLASSE";
proc means data = normalebis mean;
class classe;
var x;
output out = mediaperclasse
mean(x) = media;
run; output
Il comando output è fatto così: bisogna specificare il comando
out
con l’opzione = [nome della tabella in cui scaricare i dati], poi
misura
sotto si deve inserire la da utilizzare (nel nostro esempio
mean) con tra parentesi la variabile su cui calcolarla (nel nostro caso
x) = [nome della variabile da dare – in questo caso – alla media].
In questo caso l’output tabellare sarà
dato da:
Tale tabella è così composta:
= 0)
- la prima riga (_TYPE_ riguarda l’intero campione, dove
sarà riportata la media complessiva;
= 1)
- la seconda e la terza riga (_TYPE_ riguardano invece le
due classi.
_TYPE_
La variabile distingue i vari livelli di aggregazione, dove il
valore zero è associato alla massima aggregazione, e cos’ via.
133
Vai all’indice Dispensa a cura di Gabriele Pelli
Università Cattolica del Sacro Cuore
Mentre l’output “stampabile” (HTML) sarà dato da:
(ossia un’unica tabella contenente le
informazioni su entrambe le classi)
statement
La stessa operazione può essere eseguita tramite lo by. La
differenza è che con lo statement class costruiamo tutte le medie
possibili (di tutti i livelli di aggregazione), mentre con by SAS
costruisce solo le medie relative al livello di aggregazione più “fine”
(quello relativo alle classi).
La formattazione sarà in questo caso data da:
title "MEDIA DI X PER CLASSE";
proc means data = normalebis mean;
by classe;
var x;
output out = mediaperclassebis
mean(x) = media;
run;
In questo caso, l’output sarà dato da:
Notiamo che non c’è più la riga relativa al livello “aggregato”
_TYPE_
dell’intero campione e che la variabile adesso associa al
0).
livello delle classi (l’unico) il livello di aggregazione minore (=
Per quanto riguarda l’output HTML,
invece, in questo caso avremo due distinte
tabelle, una per ogni classe, ossia:
134
Vai all’indice Dispensa a cura di Gabriele Pelli
Università Cattolica del Sacro Cuore
sort
9.2.16. La procedura per ordinare i dati
Supponiamo ora di voler mettere “in ordine” i valori della variabile
x contenuti nella tabella “normalebis”.
Per fare ciò si utilizza la procedura di ordinamento data da proc
sort, la cui sintassi è data da:
proc sort data = normalebis;
by x;
run;
Dove, come al solito, al comando proc segue il nome della procedura
(sort), seguita a sua volta dal nome della tabella contenente i dati da
ordinare (nel nostro caso “normalebis”).
Sotto va poi aggiunta come opzione (by) l’indicazione della variabile
in base alla quale ordinare i dati (nel nostro caso x).
NB: La procedura sort riscrive la tabella in modo ordinato. È
quindi molto importante che la tabella da riordinare non sia
aperta in visualizzazione, altrimenti SAS non può eseguire
l’operazione. 135
Vai all’indice Dispensa a cura di Gabriele Pelli
Università Cattolica del Sacro Cuore
9.2.17. Alcune operazioni di base sui dati
base1
Costruiamo adesso un’altra tabella chiamata “ ” per vedere
alcune operazioni fondamentali da poter eseguire sui dati. Questa
volta, però, inseriamo nella tabella ben cinque variabili anziché una
sola (ossia x, y, z, u, w).
Per farlo usiamo di nuovo un proc step con la seguente sintassi:
data base1;
progressivo = _N_;
input x y z u w;
datalines;
1.306178 6.077897 2.440473 6.724015 5.426946
3.044741 6.804383 3.692840 3.726937 2.946138
3.452986 8.837831 6.515427 3.153617 7.476390
0.764138 4.830966 5.933424 7.222378 4.377574
3.864150 3.952410 6.749218 2.597643 3.320156
4.191905 6.350277 6.191484 1.882216 3.357744
5.269706 4.237352 2.256300 6.422650 4.142015
4.269014 6.515223 2.768523 6.276812 .
;
run;
Notiamo quindi che adesso le cinque colonne non rappresentano più
un’unica variabile su più colonne (che avevamo specificato usando
@@
l’opzione dopo l’opzione input [nome variabile]), bensì cinque
distinte variabili.
Notiamo inoltre che c’è un valore
mancante in corrispondenza
dell’ultima osservazione relativa
all’ultima variabile (che SAS
sostituisce con un puntino).
log
Nel vediamo che è stata quindi
creata una tabella (base1) con 20
osservazioni e sei variabili (sei
perché oltre alle 5 già menzionate
c’è anche il progressivo “_N_”). 136
Vai all’indice Dispensa a cura di Gabriele Pelli
Università Cattolica del Sacro Cuore
Come prima operazione sui dati, andiamo a costruire una nuova
base2
tabella (che chiamiamo ) a partire dai dati contenuti nella
base1
tabella appena creata, operando alcune trasformazioni.
La sintassi che usiamo è la seguente:
data base2;
set base1;
somma1 = x + y + z + u + w;
somma2 = sum(x,y,z,u,w);
prodotto = x*y;
potenza = z**2;
logaritmo = log(x);
esponenziale = exp(y);
media = mean(x,y,z,u,w);
run;
Nella prima riga specifichiamo il nome della nuova tabella;
Nella seconda riga diciamo a SAS dove prendere i dati;
Nella terza e quarta riga costruiamo due nuove variabili chiamate
“somma1” e “somma2”, date dalla somma delle 5 variabili.
Notiamo che per sommare delle variabili possiamo farlo in due modi:
- scrivendo la somma per esteso usando il simbolo “+”;
- usando la funzione sum(∙) nel cui argomento vanno inserite le
variabili da sommare separate da una virgola.
Nella quinta riga troviamo una nuova variabile chiamata “prodotto”,
data dal prodotto (che si esegue con l’asterisco “∗”) di x e y;
Nella sesta riga c’è la variabile chiamata “potenza”, data dal
quadrato della variabile z (NB: per scrivere una potenza si usano
due asterischi “∗∗” e non il solito “^”).
Nella settima riga costruiamo una variabile chiamata “logaritmo”
usando l’apposita funzione (la cui sintassi è data da log(∙) usando
come argomento il nome della variabile di interesse);
Nell’ottava riga creiamo la variabile “esponenziale” usando
l’apposita funzione exp(∙); 137
Vai all’indice Dispensa a cura di Gabriele Pelli
Università Cattolica del Sacro Cuore
Nella nona riga, infine, creiamo una variabile chiamata “media”,
usando la già nota funzione mean(∙).
Chiudiamo il tutto con l’usuale comando run.
Il risultato sarà la seguente tabella:
Notiamo che in corrispondenza dell’ultima colonna di somma1 c’è un
valore mancante. Ciò è dovuto al fatto che abbiamo sommato le
variabili usando il “+”, mentre ciò non si sarebbe verificato (e non si
è di fatto verificato guardando alla variabile somma2) se avessimo
usato la funzione sum(∙).
9.2.18. Come accodare due o più tabelle
Adesso vediamo come accodare due o più tabelle. Per farlo è
sufficiente creare una nuova tabella con l’usuale comando data, e
quindi aggiungere, dopo l’opzione set, i nomi delle tabelle che si
intende accodare. base1 base2
La sintassi sarà (nel nostro esempio con e ) quindi data
da:
data base3;
set base1 base2;
run; 138
Vai all’indice Dispensa a cura di Gabriele Pelli
Università Cattolica del Sacro Cuore
base3
La risultante tabella ( ) sarà data da:
Notiamo che, poiché SAS riporta tutte le variabili di tutte le tabelle,
qualora alcune non compaiano in qualche tabella queste risulteranno
come dato mancante. contents
9.2.19. La procedura
Infine, vediamo la procedura contents, che serve a riportare le
informazioni sul contenuto di una tabella (sostanzialmente il
tracciato record più qualche altra informazione ausiliaria).
La sintassi in questo caso è data (ad esempio per quanto riguarda la
base2
tabella ) da:
title "CONTENUTO DI BASE2";
proc contents data = base2 varnum;
run;
Ossia proc + contents (nome procedura) + data (per dire quali dati
= base2)
usare, in questo caso + (eventualmente) l’opzione varnum
che dice a SAS di riportare le variabili nello stesso ordine in cui si
default
trovano nella tabella (altrimenti SAS di le ordina in ordine
alfabetico). 139
Vai all’indice Dispensa a cura di Gabriele Pelli
Università Cattolica del Sacro Cuore
Il relativo output sarà dato da: 140
Vai all’indice Dispensa a cura di Gabriele Pelli
Università Cattolica del Sacro Cuore
9.3. ESEMPIO 1.2.
Come sempre, per prima cosa eseguiamo il comando:
ods graphics off
Se si vuole iniziare un nuovo programma cancellando tutto il codice,
basta premere l’apposito pulsante. Per cancellare invece le tabelle e
le informazioni contenute nella cartella “work”, si può procedere con
la cancellazione manuale o in alternativa usare l’apposito comando
“canc”.
Procediamo dunque con il caricare i dati con l’usuale data step, la
cui formattazione è data da:
data base;
tempo = _N_;
input periodo x;
datalines;
1980 87.744
1981 91.511
1982 89.097
1983 89.371
1984 90.455
1985 90.591
1986 93.410
1987 92.582
1988 94.716
1989 96.230
1990 95.374
1991 96.386
1992 98.444
1993 99.162
1994 98.875
1995 99.734
1996 100.382
1997 102.806
1998 102.688
1999 103.280
2000 104.357 141
Vai all’indice Dispensa a cura di Gabriele Pelli
Università Cattolica del Sacro Cuore
2001 105.5