Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lez 1 2/11/20
Per creare un data set provvisorio (dato dalla parola “work”) nominato prova
Scrivere
Data work.prova;
e lo voglio prendere da lab_sas.lux_h_files
run;
quindi ogni data set è dato dal nome delle libreria. Nome del file (work.prova)
prova lo abbiamo inventato noi, mentre lab_sas.lux_h_files è un nome specifico che c’è, è la libreria dove si
trova il file lux_h_files.
Quindi ha creato un nuovo data file chiamato work.prova, ovvero di nome prova che si trova nella directory
work dove ho duplicato il file lux_h_file che già esisteva,
Voglio fare una regressione, vai su ? e guida documentazione sas , se io voglio fare una regressione scrivo
regression, gli do invio e mi dice tutte le cose che ha trovato dove ha trovato la parola regression
Se scrivo procedure regression mi dà la proc reg che è la procedura che ci sereve per fare la regressione
Se io volessi mettere in relazione il mio reddito con altre variabili , faccio
Proc reg data=prova;
model hx090 = hx050
ho regredito il mio reddito hx090 con la scala di equivalenza hx050
Run;
Per sas il dato mancate è il “.”
Per creare una nuova libreria fare click su nuova libreria
Ci metto il nome e la collego fisicamente a desktop.
Se cerco trovo la mia directory prova, se ci clicco è vuota, se vado su proprietà
Quindi anche se poi ho interrotto il collegamento fisico fra sas libreria prova e la directory desktop, però io
ce l’avevo salvato.
Data è l’istruzione dove va a mettere i nostri dati e set è invece da dove li va a prendere
C’è il primo modo , che si fa prendendo dall’esterno
Il secondo
Nel secondo metodo (quello evidenziato nella foto) attenzione a dove mettiamo il ;
lo ha messo nella riga successiva, se io il ; lo metto al termine di questa riga, non va bene
nel terzo metodo al posto di datalines puoi mettere cards
Invece di dire che il codice va dalla colonna 1 alla 3, scrivendo 3. Si dice che codice ha 3 cifre.
Il simbolo @i indica di spostare indica al puntatore di spostarsi alla colonna i
il $ sta ad indicare che è un carattere, il +1 sta ad indicare che c’è uno spazio, l’anno è numerico e ha
lunghezza 2, +1 perché c’è uno spazio data ddmmyy (il sas parla inglese),+1 e punteggio da 1 (del primo
giudice trattino (quindi comprende i numeri nel mezzo , cioè punt1-punt5 è = a dire
punt1,punt2,punt3,punt4,punt5) fino al punteggio del terzo giudice,
L’anno 00 me lo considera 0, la data mi sa che la considera come numero di giorni a partidre da una certa
data
A noi questa situazione non piace tantissimo e quindi vado ad inserire il formato
3 DIVERSI FORMATI
1) dove inserisco i numeri del giorno mese e anno
2) scrivo mese e l’anno
3) i 2 giorni, mesi e anno
Attraverso il format possiamo andare a stampare/evidenziare la nostra data con formati diversi.
Il terzo lo posso congelarlo come se fosse un commento con * e /
Mi prende il */marca anno*/ come un commento e quindi non me lo manda in esecuzione, come se non ci
fosse
Infatti marca e anno sono congelati e non si vedono
Con /* ecc*/
/* per iniziare e */ per finire
Quindi il sas dopo che ha letto genere e peso, sa che le informazioni che trova dopo sa che sono della
osservazione successiva
lo lancio e ottengo
Doce che ha creato un file temporaneo che si chiama un record che ha non 2 ossevazioni perché avevo 2
record , ma ben 6 perché ho detto che con @@ finisce il record
Questo data set invece di riportare solo le ultime 2 cifre dell’anno, anziché di 00 e quindi il sas legge solo 0,
abbiamo 2000
Il sas si aspettava di leggere attraverso l’input 6 variabili, quindi legge le 4 osservazioni più le prime 2
osservazioni della riga successiva e gli ultimi 2 della riga 2 li tralascia. E riparte allo stesso modo dalla riga
successiva.
Dato che a me non interessa salvarlo in modo definitivo lo lascio in work, gli do un nome,
apro work, e apro consumi_toscana
e ho i dati dei consumi delle famiglie toscane
Se io voglio fare una proc contents del mio file report,
scrivo
Senza specificare niente invece ottengo la proc contents del consumo toscana. Fa riferimento all’ultimo
data set creato.
Betti consiglia di specificare il data set che vogliamo, data set= report
Quando non vado a specificare, il data set in automatico mi prende in considerazione l’ultimo data set che
ho creato.
Dato creo ho ricreato l mio data set report, allora quando faccio la proc contents fa riferimento a questo
Lui comunque consiglia di inserire il nome della proc a cui si fa riferimento
se nelle opzioni ci mettiamo il by andiamo ad ordinare o in modo decrescente rispetto a una particolare
variabile, oppure possiamo mettere l’opzione pageby, ovvero andando a specificare delle pagine sulle quali
vogliamo stampare la nostra informazione
Con sumby, ad es vogliamo stampare dei dati e ne vogliamo anche fare la somma. Oppure possiamo usare
anche altre opzioni
Nel primo caso andiamo a stampare solo alcune osservazioni , dalla 5 fino alla decima , ma non di tutte le
variabili che abbiamo nel data set, ma solo quelle per numero di componenti, sesso e età
(sumby) Ultima colonna spese in bar, in lire, e mi somma anche le spese nei bar per queste prime 10
famiglie.
Che cosa vogliamo fare? Vogliamo leggere un data set che noi chiamiamo segreteria, che questo data set
contiene le informazioni sull’identificativo (1,2,3,4), il genere che è nella terza colonna (mffm) che sappiamo
essere carattere perché abbiamo il $, poi abbiamo la variabile dummy ricovero (si no), e poi abbiamo le
informazioni sulle analisi.
Vogliamo attaccare dei format, perché vogliamo dire che m ha un format che corrisponde a maschio e f che
è femmina. Questo lo faccio attraverso value $genere
E invece il valore dellle nostre analisi si no , 1 è sì e il 2 è ilno, sia per quanto riguarda il ricover, sia per
quanto riguarda l’analisi.
Andiamo in sas e facciamolo
Esempio
Io non ho la libreiria lib
È possibile all’interno di un programma assegnare a dellel variabili dei valori oppure fare delle operazioni
Operatori (possono essere somme , funzioni eccetera). Di tipo aritmetico (somma esponenziale
logaritmico ) di comparazione (essere più piccolo di , = a ecc) ecc
Ci solo delle regole (prima le moltriplicaz e poi le somme) anche qui c’è un certo ordine, abbiamo 7 livelli di
priorità.
l’elevamento a potenza ha 1 livello di priorità, ecc
Mi creo un nuovo data set e lo chiamo (info capofamiglia 1), e prendo i dati originari da info capofamiglia
Es se io mi volessi stimare un modello di regressione, e invece di stimare l’età, so che è significativa l’età al
quadrato, creerò l’eta squared, e l’età al quadrato sarà età^2 oppure età*età
Oppure stato civile sarà = a stato civile
Se stato civile era = a 3 oppure se era =4 o =a 5 allora lo stato civile ricodificato è = a 3, quindi ricodifico le
variabili 3 4 5 della variabile originaria nella cateogria 3 dello stato civile ricodificato.
Titolo di studio lo voglio ricodificare
Se titolo di studio era in 1,2,3 allora ricodificato mi metto in 1
In sas io andrò a creare un nuovo data set dove faccio tutte queste operazioni comparazioni
Ho generato dei missing values, e ho creato un nuovo data set che ha lo stesso numero di osservazioni e 11
variabil.
mi sono creato la età^2 , lo stato civile ricodificato
Le variabili 4, 444 (quarta colonna)me le mette nella 3 (nona colonan)
Il titolo di studio me lo mette il titolo di studio ricodificato avrà nella
Lezione 4 16/11
Quando utilizziamo la proc sort dobbiamo specificare attraverso il by la variabile o le variabili per le quali
dobbiamo ordinare il nostro data set.
Con descending l’ordinamento è decrescente. Se non scriviamo niente è in forma ascendente.
È possibile memorizzar un nuovo data set attraverso l’opzione out, cioè creare un file di output
Non ci sono errori, nella mi libreria work ho consumo toscana donne uomini info…
Semplice ordinamento se io apro infocapofamiglia1 ho questo file
Di 1284 osservazioni e eta 1 non è ordinato. Se il lo chiudo e faccio girare l’ordinamento semplice, non mi
sostituisce il file ma lo ordina in funzione dell’età del capofamiglia.
Il sas considera i missing come valori che tendono a – infinito e quindi sono più piccoli di qualsiasi altro
numero.
Ora ordiniamo per 2 variabili. Crea un nuovo data set ordinato, chiamato “sorted”
Sorted è ordinato inizialmente per il genere (individui che non hanno risposto poi genere 1 e poi genere 2)
L’istruzione set vuol dire che mi inserisce uno dopo l’altro in modo verticale i miei data set , quindi il
numero delle mie osservazioni si sommano,
set uno due
andrò a mettere verticalmente prima il data set 1 e poi il 2
Ho creato tot dove ho inserito nelle prime 2 riche ciò che conteneva nel data set 1, mentre nella riga 3 e 4
vado a mettere ciò che avevo nel data set 2
MERGE
Ci permette di fondere, di concatenare in modo orizzontale 2 data set
Noi di solito facciamo un match merging attraverso il by, ovvero facciamo un merge utilizzando un certo
identificativo e per fare questo dobbiamo ordinare by
Nel data set 1 noi vogliamo costruire un identificativo (k) e una variabile (x)
Nella “ “ 2 “ “ “ “ “ (k) e una var (y)
Li lancio
Quando faccio il merge e lo lancio, il log non mi dà errori ma se vado a lanciare e apro il tot, l’identificativo k
me lo prende una volta sola
E mi prende la variabile identificativo che trova per ultima.
Ho fatto un errore logico, per correggerlo dovrò prima ordinare entrambi i miei dataa set
E a questo punto potrò fare un merge by la variabile k e ora il mio tot sarà ordinato il mio identificativo e x e
y saranno corrispondenti e quindi ho creato in modo corretto il mio data set
Quando facciamo il merge e dato che vogliamo mettere insieme dei file che provengono da logiche diverse
(file familiare, file individuale ecc…) i quali possono essere concatenati con l’identificativo della famiglia,
allora dobbiamo sempre fare la proc sort per l’identificativo e poi un data merge attraverso il by che
prende in considerazione proprio questo identificativo.
La proc contents mi fa vedere le mie variabile non in ordine alfabetico ma in ordine di come io le ho nel
data set
Poi mi creo questo nuovo data set
Erano 65 variabili e ora 64 perché ho creato il mio age class
Poi
Poi dato che in qualche modo avevo creato delle etichette per la condizione professionale, faccio una proc
freq utilizzando il format
Ho la stessa distribuzione ma ora so che 1 è occupato, 2 disoccupato ecc
Facciamo una proc freq sesso e regione, utilizzando i format … non stampando le righe
Rispetto al caso precedente dove avevamo i valori assoluti e poi avevamo delle marginali avevamo la
somma per riga e con le %
Ora abbiamo un’informazione in meno
Non abbiamo le nostre % per riga e quindi nel nostro output abbiamo solo 3 informazioni
Poi ci fa il test del chi quadrato dove l’ipotesi nulla è quella che non ci sia associazione tra el 2 variabili e
questa invece la andiamo a rifiutare ha una prob molto alta
Quindi c’è un’associazione fra le nostre distribuzioni
Se lanciamo questa proc freq stables vogliamo vedere se c’è un’associazione anche in questo caso
Anche in questo caso c’è un’associazione anche se il sas dice “attenzione noi abbiamo almeno il 45%
(ovvero l’incrocio tra le 20 regioni e numero di componenti) ha un numero di counts < di 5.
Quindi il sas ci suggerisce di diminuire il numero di celle della nostra
Questo es l’ha fatto per farci vedere che quando vogliamo calcolare delle misure di associazione, ma il
numero di variabili è troppo grande, rischiamo che all’interno delle celle abbiamo un numero troppo
piccolo di associazioni, e quindi dobbiamo accorpare le nostre modalitàle regioni da 20 vanno a 3
macroregioni e le componenti da 10 vanno a 5 perché la quinta ingloba tutte le famiglie che hanno da 5 a
10 componenti.
Lezione 5 17/11
L’istruzione out out ci permertte di salvare risultati non solo della proc freq ma anche di qualsiasi
operazione.
la proc means può essere fatta by ovvero per modalità di una certa variabile o di tante variabili queste
variabili possono essere ordinate in maniera crescente per default o ecrecente scrivendolo.
Quindi io prima dovrò ordinare i miei dati per questa variabile e poi effettuo la proc means
ora ho la proc means disaggregata epr le 3 categorie perché oltre che ai maschi e femmine io ho dei casi nei
quali il genere è mancante.
con il PLOT
Proc plot