% Creazione della tabella di contingenza

N=[20, 40, 20; 10, 45 45; 0, 5, 15];

% Calcolo degli indici di associazione per variabili ordinali

% Utilizzo la funzione corrOrdinal 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=corrOrdinal(N);

% Verificare che l'indice taub (Kendall) può essere ottenuto anche tramite la funzione corr

% Ricostruisco la matrice di partenza
X=crosstab2datamatrix(N);
% Chiamo la funzione corr con l'opzione 'type','Kendall'
[taub,pvaltaub]=corr(X,'type','Kendall')
% Controllo l'uguaglianza nelle due implementazioni
assert(isequal(out.taub(1),taub(1,2)),"Le due implementazioni di taub sono diverse")


% Verificare che Taub può essere ottenuto come media geometrica dei due
% indici di Somers.

dyx= out.som(1);

out1=corrOrdinal(N');
dxy=out1.som(1);
taubchk=sqrt(dyx*dxy);

assert(abs(taubchk-out.taub(1))<1e-10,"taub calcolato come emdia geometrica " + ...
    "dei due indici di Somers non è uguale a quello calcolato direttamente")

assert(abs(out1.taub(1)-out.taub(1))<1e-10,"taub è un indice simmetrico di conseguenza " + ...
    "calcolarlo partendo da N oppure dal suo trasposto produce gli stessi risultati")

