Proc freq

Proc freq

by Maria Elisa Dominguez Velasco -
Number of replies: 15

Salve prof,

Non mi è molto chiaro come e quando va usato il weight nella proc freq perché in alcuni esercizi lo avrei messo ma nelle soluzioni non c'era.

Grazie in anticipo.


In reply to Maria Elisa Dominguez Velasco

Ri: Proc freq

by Simone Scolaro -
Con una proc freq senza weight ogni osservazione vale 1 nel conteggio delle frequenze.
Il weight serve a dare un peso diverso alle osservazioni. Ogni osservazione conterà come il valore della variabile indicata nella weight.
In reply to Simone Scolaro

Ri: Proc freq

by Maria Elisa Dominguez Velasco -
Quindi è giusto usarlo quando mi viene chiesta la distribuzione di una determinata variabile rispetto ad un' altra?
In reply to Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

by Gianluca Della Vedova -
Sì. E' importante ricordare che weight vuole una variabile quantitativa e tables una o più variabili qualitatitive
In reply to Gianluca Della Vedova

Ri: Ri: Proc freq

by Maria Elisa Dominguez Velasco -
Ad esempio per quanto riguarda l'esercizio Giappone quando chiede
Per ogni sito (site_id),determinare il numero di stazioni presenti.
È sbagliato in questo caso usare una weight ?
E per quanto riguarda la tables vuole sempre una variabile qualitativa?
In reply to Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

by Simone Scolaro -
In quel caso è sbagliato, perchè ogni osservazione è una stazione e va contata una volta.

Se mette una variabile quantitativa nella tables non avrà un errore, però bisogna aver ben chiaro il risultato.
La tables serve a costruire una distribuzione di frequenza delle modalità assunte da una variabile.
Se per esempio la usa con il colore degli occhi (qualitativa), avrà quante persone hanno gli occhi di un certo colore, sono un numero ristretto di modalità.
Se nella tables invece mette una variabile quantitativa discreta o continua (per esempio il reddito) avrà una frequenza per ogni singolo valore di reddito che appare, e quindi una tabella molto lunga e probabilmente poco utile (10000 euro e 10001 euro sono valori diversi per la tables). Se i valori assunti dalla variabile cominciano a essere 20, 50, 100 (o anche tanti quante sono le osservazioni del dataset se sono tutti diversi) oltre ad avere un output inutile, metterà in crisi SAS.

Per questo il prof le diceva che nella tables bisogna mettere una o più variabili qualitative, perchè nella stra grande maggioranza dei casi si vuole avere la distribuzione di frequenza di quelle, perchè assumono un numero ristretto di modalità ed è anche utile indagarle.
In reply to Simone Scolaro

Ri: Ri: Proc freq

by Maria Elisa Dominguez Velasco -
Allora se la variabile ha tutte le osservazioni diverse,quindi vengono contate una sola volta perchè non ce ne sono altre uguali (come nell'esempio), anche se mi viene chiesta la distribuzione di una variabile rispetto ad un'altra non viene usata la weight ma solo la tables?

E sempre per quanto riguarda l'esercizio Giappone perchè SITE_ID viene messa come variabile qualitativa e quindi poi usata nella tables?

scusi del disturbo e grazie ancora per la disponibilità
In reply to Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

by Simone Scolaro -
Credo si riferisca al punto 3 di Giappone.
In quel caso l'esercizio richiede di mostrare come si distribuiscono le precipitazioni RA nei diversi giorni. Questo vuol dire che dovrà avere una tabella in cui ci sono tutti i giorni che compaiono, e accanto il numero totale di precipitazioni in quel giorno. La soluzione proposta utilizza una proc freq. Nella tables ci va la variabile DATE, così avremo tutto l'elenco delle date che compaiono. Però ogni osservazione non deve pesare 1 ma deve pesare tanto quanto vale la precipitazione RA.
Forse può essere più chiaro se le dico che si poteva fare anche con una proc means:
proc means data=japan sum;
var ra;
class date;
run;

Un altro esempio dell'utilizzo e dell'utilità della weight, guardi l'esercizio Elezioni. Nei punti 1 e 2 si chiede di fare la somma dei voti di ogni candidato. Però in questo caso ogni riga non rappresenta un voto, quindi non conta come 1. Ogni riga contiene nella variabile "numero_voti" il numero di voti ricevuti, quindi la prima riga deve pesare 217, la seconda 105, ecc... Per questo bisogna mettere una "weight numero_voti".

SITE_ID viene usata come qualitativa perchè è una variabile di cui non ha senso calcolare media, stddev o simili, perchè è un codice identificativo. Per questo nel messaggio precedente le dicevo che bisogna sempre pensare al risultato che si vuole ottenere.
In reply to Simone Scolaro

Ri: Ri: Proc freq

by Maria Elisa Dominguez Velasco -
Mi riferivo alla parte tre dell'esercizio Giappone il punto 3. Nell'incontro online ha fatto vedere che poteva essere fatto sia con una proc means sia con una proc freq e non mi era chiaro come mai nella proc freq non usasse la weight ma solo la tables usando come variabile SITE_ID.

Quindi la weight viene usata quando non ho una variabile con valori tutti differenti e quindi hanno un peso diverso.

Se ho una variabile come SITE_ID, sulla quale non ha senso fare dei calcoli perchè è un codice identificativo, posso segnarlo come una stringa nella input e usarla come variabile qualitativa (dunque nella tables) in caso dovessi usarlo nella proc freq?
Si poteva fare lo stesso ragionamento con la variabile STATION_ID?

Per quanto riguarda la proc freq quindi mi può dare sia la distribuzione di frequenza che una somma come ad esempio nell'esercizio elezioni che mi ha scritto?
In reply to Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

by Simone Scolaro -
1) Nell'incontro online per Giappone3 punto 3 non ha messo weight perchè siccome ogni riga è una stazione, va bene contare le righe una volta per vedere quante ce n'è in ogni sito. Quindi basta mettere "tables SITE_ID".

2) L'avere valori tutti differenti non c'entra nulla con l'uso della weight. Per l'uso della weight si deve chiedere solo se ogni osservazione ha un peso diverso. Deve calcolare le precipitazioni rispetto ai giorni? Se vede che una osservazione contiene un numero di precipitazioni diverso rispetto alle altre allora le deve pesare diversamente con la weight. Se invece ogni riga pesa uguale, come nel caso di Giappone3 punto 3, ogni osservazione è una sola stazione come tutte le altre e pesano tutte 1 (può notarlo dal fatto che STATION_ID identifica le singole stazioni).

3) Può farlo, il prof ve le faceva tenere come numeri per non complicarvi troppo la vita. Non credo all'esame lo segni come errore, ma può chiederglielo in sede d'esame per essere sicura di non sbagliare. Ad ogni modo, come le dicevo, la tables funziona lo stesso.
Stesso ragionamento per STATION_ID, è sempre un id.

4) Se usata correttamente sì, in questo caso ottiene lo stesso risultato.
In reply to Simone Scolaro

Ri: Ri: Proc freq

by Maria Elisa Dominguez Velasco -
Ho capito, quindi per calcolare il numero di stazioni per ogni sito mi bastava vedere la distribuzione di sito visto che per ogni riga ho una stazione diversa.
Ora mi è tutto più chiaro.
Grazie mille per la spiegazione.

Avrei un'altra domanda
Quando viene usato datalines?
In reply to Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

by Simone Scolaro -
Datalines serve a creare a mano un dataset SAS senza importarlo o leggerlo da un file di dati esterno.
In reply to Simone Scolaro

Ri: Ri: Proc freq

by Maria Elisa Dominguez Velasco -
va bene grazie.

Quando faccio l'importazione direttamente da SAS, senza fare il data step, come faccio a sapere se ha importato correttamente?
Ovvero so che viene fatta una proc means per controllare i valori mancanti ma non mi è chiaro come capire se ha importato correttamente tutti i dati o meno.
In reply to Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

by Simone Scolaro -
Esattamente come quando fa un data step. Controlla se ci sono errori/warnings/messaggi di ogni tipo nel log. Apre il dataset per vedere se tutte le colonne sono riempite come erano nel file di dati grezzi. Poi può fare la proc means come dice lei, una proc freq per vedere se ci sono mancanti tra le qualitative e anche una proc contents.
In reply to Simone Scolaro

Ri: Ri: Ri: Proc freq

by Gianluca Della Vedova -

3) Può farlo, il prof ve le faceva tenere come numeri per non complicarvi troppo la vita. Non credo all'esame lo segni come errore, ma può chiederglielo in sede d'esame per essere sicura di non sbagliare. Ad ogni modo, come le dicevo, la tables funziona lo stesso.
Stesso ragionamento per STATION_ID, è sempre un id.

Normalmente in sede d'esame viene esplicitata la variabile su cui agire. L'obiettivo è capire se avete imparato le basi di SAS.