Modulo di Analisi di Mercato Docente: Ida D’Attoma Corso di Laurea in Management e Marketing Anno accademico 2012-2013 Programma del modulo • Introduzione a SAS system per l’analisi dei dati e principali operazioni di data cleaning • Analisi in componenti principali in SAS: passi per l’implementazione e l’interpretazione attraverso lo studio di un caso • Principali tecniche di cluster analysis in SAS: passi per l’implementazione e la descrizione attraverso lo studio di un caso a cura di Ida D'Attoma SAS: La Struttura e la Sintassi Interfaccia Grafica: Le Finestre • EDITOR: scrittura istruzioni • OUTPUT: risultati dell’elaborazione • LOG: informazioni sull’elaborazione (es. SEGNALAZIONE DI ERRORI, Warnings, osservazioni presenti, le note al programma, il tempo di elaborazione, etc.) • EXPLORER: navigazione tra directory e file • RISULTATI: navigazione della finestra di output tramite struttura ad albero N.B. La composizione dei menù dipende dalla finestra attiva e varia notevolmente a cura di Ida D'Attoma I TASTI CHIAVE L’elenco dei tasti chiave è disponibile nel menù Tools – options – keys Alcuni tasti chiave: CTL+E clear (cancella il contenuto della finestra attiva); CTL+B libname (visualizza le librerie); F8 submit (permette di eseguire le istruzioni evidenziate) a cura di Ida D'Attoma Il Linguaggio 1. DATA STEP: acquisizione,creazione, gestione e manipolazione di dati in formato SAS 2. PROC STEP: procedure per l’analisi dei dati (metodi statistici) a cura di Ida D'Attoma Regole di sintassi per i comandi • Ogni istruzione o comando finisce sempre con il punto e virgola (;) • Le istruzioni possono essere scritte sia in lettere maiuscole che minuscole • Più istruzioni possono essere scritte sulla stessa riga, perché ciò che indica la fine di un’istruzione e l’inizio della successiva è il punto e virgola (;) • Le parole che compongono un’istruzione sono separate da uno spazio o da un operatore (es. =) • I commenti vanno inseriti tra i simboli /*commento*/ a cura di Ida D'Attoma Regole di sintassi per i nomi delle variabili e dei dataset • I nomi delle variabili possono essere formati da 1 a 32 caratteri • Il primo carattere deve essere una lettera o un underscore (_), mai un numero • Gli spazi non possono essere usati per definire il nome di una variabile o di un dataset N.B. Le variabili hanno degli attributi(NAME, TYPE,LENGTH, LABEL,INFORMAT,FORMAT) a cura di Ida D'Attoma SAS: L’acquisizione dei dati L’ambiente di lavoro • • • Directory (libreria) temporanea: WORK Directory (libreria) permanente: SASUSER o definita dall’utente Creazione libreria permanente tramite: a) Istruzione (comando globale) LIBNAME LIBNAME nomelogico ‘x:nomecompletodirectory’; • • b) Da menù: icona librerie barra degli strumenti – Nuova Libreria Nomi dataset ad un livello (memorizzati in WORK) Nomi dataset a 2 livelli memorizzati permanentemente: nomelogico.nomefile a cura di Ida D'Attoma Acquisizione automatica dei file • dati ASCII (.txt; .dat) • dati formato standard (Microsoft Excel o dBASE): file - importa dati -formato file da importarelocalizzazione del file da importare- eventuali opzioni – scelta directory di destinazione associata ad un nome logico – scelta nome file di destinazione a cura di Ida D'Attoma Alcune Procedure Utili Le procedure: concetti generali • • • • • Cominciano con la parola PROC Hanno un proprio nome Sono composte da una parte essenziale (senza la quale non agiscono) e una opzionale ( per richiedere risultati specifici) Agiscono sul dataset indicato dopo il nome della procedura nell’opzione DATA= Terminano con: a) b) c) L’istruzione RUN; Quando incontrano l’inizio di un altro proc step o data step; QUIT; se si tratta di procedure di tipo iterativo ( es. PROC REG, PROC GPLOT) a cura di Ida D'Attoma Proc Contents Funzione: stampa la descrizione del contenuto di uno o più file SAS. E’ utile per controllare l’esattezza dell’acquisizione dei dati e l’ammissibilità delle operazioni che si intendono compiere. Sintassi: PROC CONTENTS DATA=NomeLibreria.Nomedataset; RUN; a cura di Ida D'Attoma Proc Fsview Funzione: apre una nuova finestra all’interno della quale viene visualizzato il contenuto del dataset indicato. Sintassi: PROC FSVIEW DATA=NomeLibreria.NomeDataset; RUN; Alcune opzioni: VAR lista di variabili: permette di scegliere un sottoinsieme di variabili WHERE condizione: permette di richiedere la visualizzazione del sottoinsieme di unità per cui si verifica la condizione specificata a cura di Ida D'Attoma Proc sort FUNZIONE: Ordina le osservazioni di un dataset secondo una o più variabili, memorizzando il risultato dell’ordinamento in un nuovo dataset o rimpiazzando il dataset originale. PROC SORT DATA=NomeLibreria.DatasetOrigine Nodupkey OUT=NomeLibreria.DatasetDestinazione; BY NomeVariabileOrdinamento; RUN; Variabile d’ordinamento numerica: ordine crescente Variabile d’ordinamento alfabetica: ordine alfabetico L’opzione NODUPKEY cancella le osservazioni con valore a cura di Ida D'Attoma duplicato della variabile di by. Proc Print Funzione: stampa le osservazioni di tutte le variabili di un dataset o di un loro sottoinsieme nella finestra di OUTPUT. PROC PRINT DATA=NomeLibreria.NomeDataset; VAR variabile1 variabile2 variabilep; RUN; Alcune opzioni: NOOBS: omette la stampa del numero di osservazioni SUM: calcola i totali ed i subtotali delle variabili numeriche BY: stampa le osservazioni separate per ciascun livello della variabile indicata dopo questa istruzione. Occorre che le osservazioni vengano ordinate secondo tale variabile a cura di Ida D'Attoma tramite la procedura PROC SORT. Manipolazione di Dataset in Formato SAS Il comando IF come selezionatore Funzione: Se usato come selezionatore serve ad escludere alcune osservazioni dal dataset; SAS lavorerà solo sui record che rispondono ai criteri del comando IF. Esempi: If NomeVariabile=valore : lavora solo sulle osservazioni che soddisfano la condizione If NomeVariabile ne valore : esclude dall’analisi le osservazioni che soddisfano la condizione a cura di Ida D'Attoma Istruzioni Condizionali Funzione: consentono di esprimere azioni condizionate da cui dipendono istruzioni successive. Esempi di applicazione: creazioni di variabili dummy, ricodifica di variabili esistenti, selezione di osservazioni. • IF condizione THEN istruzione; • IF condizione THEN istruzione; ELSE istruzione; • IF condizione(1) THEN istruzione(1); ELSE IF condizione(2) THEN istruzione(2); ELSE IF condizione(n) THEN istruzione(n); ELSE istruzione(n+1); • IF condizione; La prima e la seconda forma gestiscono condizioni di tipo dicotomico, mentre la terza gestisce condizioni di tipo non dicotomico. La quarta forma impone una condizione di selezione delle righe (selezione di osservazioni – IF subsetting). La dichiarazione ELSE segue immediatamente IF/THEN per specificare un’istruzione che deve essere eseguita se la condizione IF non è soddisfatta. L’istruzione ELSE individua una classe residuale che include tutte le osservazioni che non soddisfano le condizioni precedenti. a cura di Ida D'Attoma Operatori Logici, di Confronto e Operazioni Aritmetiche Operatori di confronto --------------------------------------Maggiore > gt Maggiore o uguale >= ge Minore < lt Minore o uguale <= le Uguale = e Diverso ^= ne Operazioni -----------------------------Somma + Sottrazione Moltiplicazione * Divisione / Elevamento ** Operatori logici -------------------AND & OR | NOT ^ a cura di Ida D'Attoma Principali Operazioni 1. Creazione di sottoinsiemi del dataset di partenza 2. Trasformazioni, assegnazioni, riclassificazioni di variabili 3. Unione di dataset a cura di Ida D'Attoma 1. Creazione di sottoinsiemi a) Comandi che consentono di selezionare le variabili: – KEEP: elenchiamo le variabili separate da spazi che devono essere riportate nel dataset finale – DROP:elenchiamo le variabili separate da spazi che devono essere cancellate dal dataset finale DATA libreria.nome_nuovo_dataset; SET libreria.nome_dataset_di_partenza; KEEP nomevar_1 nomevar_2 nomevar_p; /* oppure DROP nomevar_1 nomevar_2 nomevar_p;*/ RUN; N.B. KEEP e DROP possono essere usati sia come comandi, in istruzioni vere e proprie oppure come opzioni dell’istruzione DATA a cura di Ida D'Attoma 1. Creazione di sottoinsiemi b) Comandi che consentono di selezionare le unità: – – OUTPUT DELETE DATA libreria.nuovo_dataset; SET libreria.vecchio_dataset; IF confrontologico THEN OUTPUT; /* osservazioni da tenere */ IF confrontologico THEN DELETE; /*osservazioni da cancellare */ RUN; a cura di Ida D'Attoma 2. Trasformazioni, assegnazioni, riclassificazioni di variabili Una variabile può essere definita: a) Per assegnazione diretta nomevariabile=valorenumerico; nomevariabile=‘stringa’ (N.B. stringa sempre tra apici); nomevariabile=formula matematica; nomevariabile=altravariabileesistente; b) Come funzione di una o più variabili IF confrontologico THEN assegnazione; ELSE assegnazione; a cura di Ida D'Attoma 3. Unione di dataset • Concatenazione: Istruzione SET • Unione a chiave: Istruzione MERGE a cura di Ida D'Attoma Concatenazione: comando SET Funzione: legge le osservazioni da uno o più dataset. Permette di unire ( mettere uno sotto l’altro) più dataset aggiungendo al primo le osservazioni del secondo e così via. DATA dataset in scrittura; SET dataset ( o lista di dataset ) in lettura <opzioni>; RUN; Opzioni: OBS= indica il numero dell’ultima osservazione che si vuole leggere. FIRSTOBS= indica il numero dell’osservazione dalla quale si vuole partire per leggere il dataset. N.B. Perché l’unione avvenga correttamente è necessario che i nomi delle variabili che contengono la stessa informazione siano uguali nei 2 o più dataset. a cura di Ida D'Attoma Unione a chiave: comando MERGE Funzione: consente di unire (mettere uno a fianco dell’altro) le osservazioni provenienti da 2 o più dataset diversi in un’unica osservazione inserita nel dataset in scrittura. L’associazione tra osservazioni è fatta secondo valori uguali di una o più variabili comuni (CHIAVI). Tali variabili devono essere indicate dopo una dichiarazione BY e i dataset dovranno essere ordinati sui valori di queste variabili. PROC SORT DATA=dataset1; BY nome_variabile_chiave; RUN; PROC SORT DATA=dataset2; BY nome_variabile_chiave;RUN; DATA nome_dataset_nuovo; MERGE dataset1 dataset2; BY nome_variabile_chiave; RUN; a cura di Ida D'Attoma Unione a chiave: comando MERGE E’ possibile unire 2 (o più dataset) secondo una chiave seguendo criteri differenti. In tutti i casi i dataset devono essere preventivamente ordinati secondo la chiave. Criterio 1: il nuovo dataset deve contenere tutte le osservazioni che appartengono o a dataset1 o a dataset2 indifferentemente. DATA nome_dataset_nuovo; MERGE dataset1(in=A) dataset2(in=B); BY nome_variabile_chiave; RUN; Criterio 2: il nuovo dataset deve contenere tutte le osservazioni che appartengono almeno a dataset1 DATA nome_dataset_nuovo; MERGE dataset1(in=A) dataset2(in=B); BY nome_variabile_chiave; if A; RUN; a cura di Ida D'Attoma Unione a chiave: comando MERGE Criterio 3: il nuovo dataset deve contenere tutte le osservazioni che Appartengono almeno a dataset2. DATA nome_dataset_nuovo; MERGE dataset1(in=A) dataset2(in=B); BY nome_variabile_chiave; if B; RUN; Criterio 4: il nuovo dataset deve contenere tutte le osservazioni che appartengono a dataset1 e dataset2 contemporaneamente. DATA nome_dataset_nuovo; MERGE dataset1(in=A) dataset2(in=B); BY nome_variabile_chiave; if A and B; RUN; a cura di Ida D'Attoma Unione a chiave: comando MERGE Criterio 5: il nuovo dataset deve contenere tutte le osservazioni che appartengono a dataset1 ma non appartengono a dataset2. DATA nome_dataset_nuovo; MERGE dataset1(in=A) dataset2(in=B); BY nome_variabile_chiave; if A and NOT(B); RUN; Criterio 6: il nuovo dataset deve contenere tutte le osservazioni che appartengono a dataset2 ma non appartengono a dataset1 DATA nome_dataset_nuovo; MERGE dataset1(in=A) dataset2(in=B); BY nome_variabile_chiave; if NOT(A) and B; RUN; a cura di Ida D'Attoma Unione a chiave: comando MERGE Criterio 7: il nuovo dataset deve contenere tutte le osservazioni tranne quelle che appartengono a dataset1 e dataset2 contemporaneamente. DATA nome_dataset_nuovo; MERGE dataset1(in=A) dataset2(in=B); BY nome_variabile_chiave; if NOT(A and B); RUN; a cura di Ida D'Attoma Alcune funzioni Numeriche: abs (argomento) : fornisce il valore assoluto di un argomento exp (argomento) : fornisce l’esponenziale di un argomento int (argomento) : fornisce il valore intero dell’argomento log (argomento) : fornisce il logaritmo naturale dell’argomento round (argomento, decimale) : arrotonda il valore dell’argomento al decimale specificato sqrt (argomento) : fornisce la radice quadrata dell’argomento Di testo: substr (argomento, posizione, n) : estrae una sottostringa dell’argomento, che inizia dal carattere nella posizione specificata e di a cura di Ida D'Attoma lunghezza n Alcune Procedure Statistiche Proc Means Funzione: permette di calcolare per variabili di tipo numerico, alcune statistiche univariate di base. Sintassi: PROC MEANS DATA=nomedataset <opzioni> <statistic-keyword(s)>; BY <DESCENDING> nomevar_1 … <DESCENDING> nomevar_p <NOTSORTED>; CLASS nomevar(s); FREQ nomevar; ID nomevar; OUTPUT OUT=nomedataset_output <output statistic specification(s)>; VAR nomevar(s); WEIGHT var; RUN; a cura di Ida D'Attoma Proc Means Alcune opzioni: NOPRINT: sopprime la stampa sulla finestra di output MAXDEC=:determina il numero massimo di decimali mostrati Alcune istruzioni: VAR: stabilisce le variabili numeriche da analizzare VAR _NUMERIC_ analizza tutte le variabili numeriche presenti nel dataset CLASS e BY: stabiliscono gli strati per cui calcolare le statistiche (il primo a differenza del secondo non necessita che il dataset sia ordinato per tali strati). FREQ E WEIGHT:indicano delle variabili numeriche che danno pesi diversi alle osservazioni analizzate. OUTPUT <OUT=NomeDatasetOutput> <statistiche di output> istruzione per mandare in output le statistiche su un nuovo dataset SAS a cura di Ida D'Attoma Proc Means Alcune Statistic-keywords: n, nmiss, mean, median, cv, min, max, std, var, range Differenza tra freq e weight: FREQ: si specifica una variabile numerica il cui valore rappresenta la frequenza dell’osservazione. La procedura assume che ogni osservazione rappresenti “n” osservazioni, dove “n” è dato dal valore assunto dalla variabile numerica specificata. Occorre che “n” sia un numero intero. WEIGHT: si specifica una variabile numerica i cui valori pesano i valori della variabile di analisi. Non occorre che i valori della variabile siano numeri interi. a cura di Ida D'Attoma Proc Univariate Funzione: calcolare indici di sintesi di una variabile statistica quantitativa. I risultati si presentano suddivisi in sei sezioni: gli indici di sintesi basati sui momenti, misure e test di locazione, quantili, i valori estremi della distribuzione e le osservazioni mancanti. È molto simile alla proc means ma rispetto a quest’ultima permette di calcolare un numero molto maggiore di statistiche descrittive oltre che fornire una rappresentazione grafica delle distribuzioni (es. può essere utile per individuare valori anomali). N.B. Non sempre gli indici e i test forniti in output sono interessanti e applicabili alla nostra analisi. Sta a noi distinguere e ricavarne alecura informazioni utili. di Ida D'Attoma Proc Univariate Sintassi: PROC UNIVARIATE DATA=nomedataset <opzioni>; BY <DESCENDING> nomevar_1 … <DESCENDING> nomevar_p <NOTSORTED>; CLASS nomevar(s); FREQ nomevar; HISTOGRAM nomevar(s)</options>; OUTPUT OUT=nomedataset_output statistic-keyword= name; VAR nomevar(s); WEIGHT var; RUN; a cura di Ida D'Attoma Proc Univariate Opzioni: NORMAL: esegue un test di verifica della normalità delle variabili analizzate. MU0=: specifica il valore della media per il quale si vuole verificare l’uguaglianza. PLOT: genera alcuni grafici per lo studio delle distribuzioni. Istruzioni: VAR: stabilisce le variabili numeriche da analizzare CLASS e BY: stabiliscono gli strati dei valori per cui calcolare le statistiche (il primo, a differenza del secondo, non necessita che il dataset sia ordinato per tali strati). FREQ e WEIGHT: indicano delle variabili numeriche che danno pesi diversi alle osservazioni analizzate. OUTPUT OUT=nomedataset_output statistic-keyword= name: manda in output le statistiche su un nuovo dataset SAS. HISTOGRAM: genera l’istogramma variabili indicate. a cura di Ida delle D'Attoma Proc freq Funzione: consente di ottenere tabelle di frequenze (assolute, relative, cumulate) a una o a più entrate ed il calcolo di indici per valutare la presenza di forme di dipendenza. È utilizzabile sia per variabili numeriche che alfabetiche. Sintassi: PROC FREQ DATA=nomedataset; TABLES nomevar1 nomevar2 nomevar1*nomevar2/CHISQ; RUN; TABLES: è il comando fondamentale con cui richiediamo la costruzione di tabelle di frequenza semplice e di una tabella a doppia entrata. CHISQ: opzione per il calcolo di misure di associazione basate sul χ². N.B. In output per ogni cella della tabella a doppia entrata sono riportati nell’ordine: la frequenza a cura diassoluta, Ida D'Attomala frequenza relativa, la frequenza percentuale di riga ( distribuzione condizionata di var2 dato 1) di l ( di t ib i di i t di 1d t 2) Proc Corr Funzione: fornisce in output una brevissima analisi delle singole variabili e la matrice di correlazione. Sintassi: PROC CORR DATA=NomeLibreria.NomeDataset outp=CorrOutp; VAR var1 var2 varp; RUN; outp= permette il salvataggio della matrice di correlazione in un dataset di output in formato SAS N.B. In output sotto il valore di ciascun coefficiente di correlazione è riportata la significatività rispetto al test d’uguaglianza a zero. a cura di Ida D'Attoma Proc Princomp Funzione: Effettua l’analisi in componenti principali a partire dalla matrice dei dati oppure da matrici di correlazione e varianza/covarianza. Sintassi: PROC PRINCOMP DATA=nome_dataset_input OUT=nome_dataset_output OUTSTAT=nome_dataset_statistiche; FREQ nome_variabile; VAR var1 var2 varp; RUN; N.B. • osservazioni con valori missing vengono omesse dall’analisi. • data una matrice dei dati, la procedura calcola le CP a partire dalla matrice di correlazione (che equivale a fare l’analisi su dati standardizzati), se non diversamente specificato. a cura di Ida D'Attoma Proc Princomp DATA= dataset da analizzare. Matrice dei dati oppure matrice di correlazione se TYPE=CORR o matrice di varianza/covarianza se TYPE=COV. OUT= crea un dataset di output contenente tutte le variabili originarie e le componenti principali. Quest’ultime sono denominate di default Prin1, Prin2… OUTSTAT= crea un dataset di output contente alcune statistiche: media, deviazione standard (std), numero di osservazioni (n), correlazione (corr) o covarianza (cov), autovalori (eigenval) e autovettori (score). FREQ= specifica una variabile che fornisce le frequenze per ogni osservazione presente nel dataset. Se n è il valore della variabile FREQ per una data osservazione, allora quell’osservazione è usata n volte. VAR= lista delle variabili d’analisi. Se omessa, vengono analizzate tutte le variabili numeriche presenti nel dataset. a cura di Ida D'Attoma Proc Princomp: Output Grafico Sintassi Versione 9.1 ods html; ods graphics on; proc princomp data=nome_dataset n=numero_componenti; run; ods graphics off; ods html close; N.B. dell’output fornito ci interessa soprattutto l’eigenvalue plot (scree plot o scree diagram) che è un grafico degli autovalori ordinati in senso decrescente. a cura di Ida D'Attoma Proc Cluster Funzione: divide le osservazioni di un dataset in gruppi gerarchici utilizzando uno degli undici metodi previsti. I dati iniziali possono essere valori di variabili numeriche o distanze. Se sono valori, essa calcola le distanze euclidee. Sintassi: PROC CLUSTER DATA=nomedataset METHOD=metodo OUTTREE=nomedataset_tree pseudo print=; VAR elenco_variabili; COPY elenco_variabili; Id identifier; RUN; a cura di Ida D'Attoma Proc Cluster DATA: indica il dataset contenente le osservazioni da raggruppare in cluster; METHOD: con questa istruzione si specifica con quale criterio raggruppare le unità. SAS prevede 11 metodi. Alcuni metodi sono specificati come segue: SINGLE; AVERAGE; COMPLETE; WARD. OUTTREE: con questa opzione viene indicato il nome di un dataset di output in cui memorizzare i risultati della procedura; le informazioni in esso contenute servono per costruire il dendrogramma. VAR: vengono specificate quali sono le variabili da considerare per il calcolo delle distanze. Se le omettiamo SAS utilizza tutte le variabili numeriche presenti nel dataset indicato. PSEUDO: fornisce in output la pseudo-F e la pseudo-t2 che possono essere utili per la scelta del numero dei cluster COPY: permette di riportare le variabili elencate dal dataset di input al dataset di output ID: il valore della variabile indicata serve per identificare le unità statistiche, se omessa verrà usato il numero dell’osservazione. a cura di Ida D'Attoma Proc tree Funzione: crea il dendrogramma. Sintassi: PROC TREE DATA=nomedataset_tree HORIZONTAL OUT=nomedataset_gruppi N=numero_gruppi; ID identifier; COPY elenco_variabili; RUN; a cura di Ida D'Attoma Proc tree HORIZONTAL: opzione che fa sì che l’albero sia disegnato in orizzontale (il valore di default è verticale) ID: il valore della variabile indicata serve per identificare le unità statistiche, se omessa verrà usato il numero dell’osservazione. La variabile che identifica le unità deve ssere la stessa utilizzata nella PROC CLUSTER. OUT: viene indicato il nome di un dataset in cui verrà memorizzato il gruppo di appartenenza della singola unità statistica (di default in out sono presenti le variabili cluster, clusname). N: indica il numero di gruppi in cui si è deciso di tagliare l’albero COPY: permette di copiare variabili dal dataset di input a quello di output che altrimenti non verrebbero riportate. a cura di Ida D'Attoma Proc ttest Funzione: Effettua test su 1 campione, 2 campioni e dati appaiati. Il test a 2 campioni confronta la media del primo campione meno la media nel secondo campione con un dato numero (Default: zero). Sintassi: PROC TTEST DATA=NomeLibreria.NomeDataset; CLASS NomeVariabile; VAR NomeVariabile; BY NomeVariabile; WHERE condizione; RUN; a cura di Ida D'Attoma Proc ttest BY: permette di ottenere analisi separate sulla base dei gruppi di osservazioni definiti dalla variabile di by. (È necessario che i dati siano preventivamente ordinati in base a tale variabile di by). CLASS: la specificazione di una variabile è obbligatoria quando si fa un confronto usando 2 campioni. Tale variabile deve avere 2 e solo 2 livelli. Usando tali livelli la Proc ttest divide le osservazioni in 2 gruppi sui quali effettuare il ttest. Può essere specificata sia una variabile numerica che alfanumerica. VAR: viene specificato il nome della variabile da usare nell’analisi. a cura di Ida D'Attoma Proc Anova Funzione: è una delle molte procedure utilizzabili in SAS per l’analisi della varianza. È concepita per gli studi di piani bilanciati ma può essere tranquillamente utilizzata nei disegni in cui tutti i fattori sono ortogonali tra loro. Sintassi: PROC ANOVA DATA=nomedaset; CLASS NomeVarClassificazione; MODEL NomeVarDipendente=NomeVarIndipendente; RUN;QUIT; Output: Viene fornito un riassunto sui livelli di classificazione ed il numero di osservazioni coinvolte e poi il risultato dell’analisi della varianza vera e propria. a cura di Ida D'Attoma