Proc freq

Proc freq

di Maria Elisa Dominguez Velasco -
Numero di risposte: 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 riposta a Maria Elisa Dominguez Velasco

Ri: Proc freq

di 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 riposta a Simone Scolaro

Ri: Proc freq

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

Ri: Ri: Proc freq

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

Ri: Ri: Proc freq

di 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 riposta a Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

di 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 riposta a Simone Scolaro

Ri: Ri: Proc freq

di 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 riposta a Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

di 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 riposta a Simone Scolaro

Ri: Ri: Proc freq

di 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 riposta a Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

di 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 riposta a Simone Scolaro

Ri: Ri: Proc freq

di 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 riposta a Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

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

Ri: Ri: Proc freq

di 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 riposta a Maria Elisa Dominguez Velasco

Ri: Ri: Proc freq

di 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 riposta a Simone Scolaro

Ri: Ri: Ri: Proc freq

di 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.