% Importazione dei dati dentro MATLAB

X = readtable('Spumanti.xlsx', 'Sheet','Dati','range','A1:R107','ReadRowNames',true);

% Creazione tabella di contingenza tra le variabili GUSTO e ABBINAMENTO

% Creo la tabella di contingenza tra le variabili gusto e abbinamento
[N,chi2,p,labels] =crosstab(X.GUSTO,X.ABBINAMENTO);
[r,c]=size(N);
% Il primo argomento di output di crosstab contiene la tabella di
% contingenza in formato double (senza nomi ma solo con le frequenze)
% Il secondo argomento di ouptut di crosstab contiene il valore del test
% Chi quadrato di indipendenza tra le due variabili
% Il terzo argomento di ouptut di crosstab contiene il p-value del test
% Chi quadrato di indipendenza tra le due variabili
% Il quarto argomento di ouptut di crosstab contiene una matrice con le etichette delle righe della
% tabella di contingenza (prima colonna) e le etichette delle colonne delle tabella di contingenza (seconda colonna) 

% Visualizzo la tabella di contingenza in formato table
% Costruzione della matrice di contingenza in formato table
Ntable=array2table(N,'RowNames',labels(1:r,1),'VariableNames',labels(1:c,2));

disp('Tabella di contingenza originale')
disp(Ntable)

% Calcolo degli indici di associazione per variabili nominali

% Utilizzo la funzione corrNominal dell'FSDA toolbox. 
% Osservazione: per installare l'FSDA toolbox dal menu APPS selezionare
% "Get More Apps".  Nella casella di ricerca "Search for add-ons" digitare
% FSDA.

%

out=corrNominal(Ntable);
% Osservazione la funzione corrNominal poteva essere chiamata anche con un
% input in formato numerico (ad esempio N) e non in formato table
% In altri termini, si poteva utilizzare l'istruzione 
% out=corrNominal(N);


% Calcolo di tutti gli indici tramite la funzione corrNominal dell'FSDA toolbox partendo dalla cell [X.GUSTO X.ABBINAMENTO]

out=corrNominal([X.GUSTO X.ABBINAMENTO],'datamatrix',true)

%
% Modo alternativo di chiamare la funzione corrNominal passandogli come input una table

outCHK=corrNominal(X(:,{'GUSTO' 'ABBINAMENTO'}),'datamatrix',true);