%% Carico i dati dentro MATLAB nella table denominata X X = readtable('corrisp.xlsx', 'Sheet','dati','range','A1:D427','ReadRowNames',true); % A titolo di esempio di seguito si mostra come effettuare l'analisi delle % corrispondenze tra le variabili professione e titolo di studio % utilizzando la funzione corAna di FSDA toolbox. %% Creo la tabella di contingenza tra le variabili professione e Tipo_di_Acquisto % oppure titolo di studio [N,chi2,pvalchi2,labels] =crosstab(X.Professione,X.Tipo_di_Acquisto); % [N,chi2,pvalchi2,labels] =crosstab(X.Professione,X.Titolo_studio); % N è la la matrice che contiene le frequenze per ogni combinazione di % professione e di tipo di acquisto (tabella di contingenza) % chi2 è il valore del test chi quadrato % pvalchi2 è il valore del p-value del test chi quadrato % label è un array di dimensione 13 x 2 che contiene nella prima colonne le % etichette delle modalità di riga (Professione) e nella seconda colonna % (nelle prime 4 posizioni) le etichette delle modalità di colonna (Tipo di acquisto) % r e c sono rispettivamente il numero di righe e di colonne della tabella % di contingenza [r,c]=size(N); %% Modo 1: chiamata della funzione CorAna (di FSDA) fornendo le etichette di riga e di colonna % Come input della funzione CorAna inserisco la tabella di contingenza in formato array e i % due vettori che contengono rispettivamente le etichette di riga e di % colonna. % L'argomento opzionale Lr (label rows) specifica il vettore che contiene % le etichette di riga della tabella di contingenza % L'argomento opzionale Lc (label coloumns) specifica il vettore che contiene % le etichette di colonna della tabella di contingenza outModo1=CorAna(N,'Lr',labels(1:r,1),'Lc',labels(1:c,2)); %% Modo alternativo: costruzione della table e chiamata a CorAna senza argomenti opzionali % Costruzione della matrice di contingenza in formato table Ntable=array2table(N,'RowNames',labels(1:r,1),'VariableNames',labels(1:c,2)); % Se l'input della funzione CorAna è una table, ossia un array che contiene % i nomi delle righe e delle colonne è sufficiente chiamare la funzione % CorAna con un unico argomento di input (ossia non è necessario passare a % CorAna gli argomenti opzionali 'Lr' e 'Lc') outModo2=CorAna(Ntable); %% Modo alternativo: senza passare dalla costruzione della tabella di contingenza % Per default l'analisi delle corrispondenze viene effettuata tra le prime % due colonne della table X outModo3=CorAna(X(:,[1 3]),'datamatrix',true); %% Correspondence analysis of the housetasks dataset % The data are a contingency table containing 13 housetasks and their % repartition in the couple: rows are the different tasks, colums values are the % frequencies of the tasks done: "by the wife only", "alternatively by the % husband only" or "jointly", % As the above contingency table is not very large, with a quick visual % examination it can be seen that: % The house tasks Laundry, Main_Meal and Dinner are dominant in the column % Wife Repairs are dominant in the column Husband Holidays are dominant in % the column Jointly N=[156 14 2 4; 124 20 5 4; 77 11 7 13; 82 36 15 7; 53 11 1 57; 32 24 4 53; 33 23 9 55; 12 46 23 15; 10 51 75 3; 13 13 21 66; 8 1 53 77; 0 3 160 2; 0 1 6 153]; rowslab={'Laundry' 'Main_meal' 'Dinner' 'Breakfeast' 'Tidying' 'Dishes' ... 'Shopping' 'Official' 'Driving' 'Finances' 'Insurance'... 'Repairs' 'Holidays'}; colslab={'Wife' 'Alternating' 'Husband' 'Jointly'}; tableN=array2table(N,'VariableNames',colslab,'RowNames',rowslab); out=CorAna(tableN,'plots',1);