Non è raro che una tabulazione incrociata di due variabili produca celle con un conteggio pari a zero. In questi casi, l’output di proc freq con l’opzione list ometterà le combinazioni di valori variabili che hanno un conteggio pari a zero. Per esempio, nel campione di dati che segue, non ci sono casi in cui gender = 2 eeth = 2. Il set di dati qui sotto contiene tre variabili. Due variabili, gender e eth, sono le variabili categoriche che vogliamo incrociare. La terza variabile è il conteggio, che è un peso di frequenza, che indica il numero di casi con quel modello nel dataset, cioè, ci sono 21 casi in cui gender=1 e eth=3.
data test; input gender eth count;datalines;1 1 121 2 121 3 212 1 22 3 43;run;
Quando eseguiamo proc freq senza l’opzione list, la tabella include la cella con un conteggio nullo (cioè gender=2 e eth=2). La dichiarazione di peso specifica che la variabile count dovrebbe essere usata per determinare il numero di casi con ogni modello nel dataset.
proc freq data = test; weight count; table gender*eth;run; The FREQ Procedure Table of gender by ethgender ethFrequencyPercent Row Pct Col Pct 1 2 3 Total 1 12 12 21 45 13.33 13.33 23.33 50.00 26.67 26.67 46.67 85.71 100.00 32.81 2 2 0 43 45 2.22 0.00 47.78 50.00 4.44 0.00 95.56 14.29 0.00 67.19 Total 14 12 64 90 15.56 13.33 71.11 100.00
Eseguendo proc freq con l’opzione list come mostrato sotto, tuttavia, produce una tabella senza una riga per gender=2 e eth=2, perché il conteggio per questa combinazione è zero.
proc freq data = test; weight count; table gender*eth /missprint list;run; Cumulative Cumulativegender eth Frequency Percent Frequency Percent 1 1 12 13.33 12 13.33 1 2 12 13.33 24 26.67 1 3 21 23.33 45 50.00 2 1 2 2.22 47 52.22 2 3 43 47.78 90 100.00
È possibile, con un po’ di lavoro, ottenere una tabella come quella sopra, che contiene la cella mancante. Il primo passo è quello di creare una variabile che sia una costante uguale a uno. Lo facciamo qui sotto con la variabile chiamata uno.
data test; set test; one = 1;run;
In seguito useremo ods per catturare l’output dell’esecuzione di proc means. L’opzione summary = t indica a SAS di memorizzare il riassunto prodotto da proc means in un dataset t. Nel comando proc means, l’opzione n specifica che solo n (cioè il numero di casi) deve essere calcolato. L’opzione completetypes specifica che tutte le combinazioni delle variabili di classe (genere ed etnia) devono essere elencate, comprese quelle con numero zero nel dataset; altrimenti verrebbero omesse. L’opzione freq specifica che la variabile count dovrebbe essere usata come il numero di casi che seguono un dato modello nel dataset (cioè, in questo esempio, l’opzione freq fa in proc means ciò che weight ha fatto in proc freq). La dichiarazione var indica la variabile sulla quale le statistiche devono essere calcolate; qui è dove viene usata la variabile uno.
ods output summary = t;proc means data = test n completetypes; class gender eth; freq count; var one;run; The MEANS Procedure Analysis Variable : onegender eth N Obs N 1 1 12 12 2 12 12 3 21 21 2 1 2 2 2 0 0 3 43 43
Questo crea un dataset t (mostrato sotto) con sei osservazioni, una per ogni combinazione di et per genere che appaiono entrambe come variabili nel nostro nuovo dataset. Il nuovo dataset contiene anche una variabile chiamata one_N, che è il numero di casi che rientrano in ciascuna delle categorie di genere per et (incluso un conteggio di 0 dove appropriato).
proc print data=t;run;Obs gender eth NObs one_N 1 1 1 12 12 2 1 2 12 12 3 1 3 21 21 4 2 1 2 2 5 2 2 0 0 6 2 3 43 43
Ora possiamo eseguire proc freq sul nuovo dataset t. La dichiarazione di peso usa one_N come variabile contenente il numero di casi con un dato schema di variabili. L’opzione /zeros indica a SAS di includere nella lista i casi in cui one_N = 0. La lista risultante include una riga per la combinazione di sesso ed et con un conteggio pari a zero.
proc freq data = t; table gender*eth /list; weight one_N /zeros;run; The FREQ Procedure Cumulative Cumulativegender eth Frequency Percent Frequency Percent 1 1 12 13.33 12 13.33 1 2 12 13.33 24 26.67 1 3 21 23.33 45 50.00 2 1 2 2.22 47 52.22 2 2 0 0.00 47 52.22 2 3 43 47.78 90 100.00