%% Testo
% La matrice denominata dati (v. di seguito) contiene i dati relativi ai passeggeri e alle merci trasportate da 8 aeroporti. I nomi degli aeroporti sono contenuti nella cell eti I nomi delle variabili sono contenuti nella cell etivar
% 1) Calcolare e commentare il coefficiente di cograduazione di Spearman tra le variabili "numero di passeggeri" e "merci trasportate" utilizzando la funzione corr.
% 2) Verificare il risultato ottenuto passando attraverso la funzione tiedranks.
% 3) Verificare il risultato implementando direttamente la formula $ 1- 6 \frac{\sum_{i=1}^n \left[ g(x_i) -g(y_i) \right]^2}{n(n^2-1)} $
% 4) Costruire il diagramma di dispersione tra le variabili "numero di passeggeri" (asse x) e "merci trasportate" (asse y), utilizzando come simboli quadrati con bordo nero e riempimento rosso e aggiungendo ai punti i nomi degli aeroporti. Aggiungere al grafico le etichette degli assi.
%% Dati di input

eti={'Bergamo-Orio'
    'Bologna-BorgoP'
    'Cagliari-Elmas'
    'Milano-Linate'
    'Milano-Malpensa'
    'Roma-Fiumicino'
    'Venezia-Tessera'
    'Verona-Villafranca'};

dati=  [ 47820    4291239;
    54780   3624072;
    26425   2344282;
    93942   9085999;
    227718  19499158;
    302890  28208161;
    75196   5780783;
    33178   2581420];
 
etivar={'Numero_passeggeri' 'Merci_trasportate'};

%
%% Soluzione
%% Calcolo cograduazione
% 1) Calcolare e commentare il coefficiente di cograduazione di Spearman tra le variabili "numero di passeggeri" e "merci trasportate" utilizzando la funzione corr.

% Calcolo della matrice di cograduazione e dei relativi palues
[R,Pval]=corr(dati,'type','Spearman');
disp('Matrice di cograduzione')
disp(R)

disp('Matrice dei coefficienti di cograduazione')
disp(array2table(R,'VariableNames',etivar,'RowNames',etivar))

disp('Matrice dei pvalues')
disp(array2table(Pval,'VariableNames',etivar,'RowNames',etivar))

% Commento: il pvalue è molto basso. Rifiuto decisamente l'ipotesi nulla di
% assenza di cograduazione (assenza di relazione lineare tra i posti
% d'ordine) tra le variabili merci trasportate e passeggeri trasportati

%
%% Implementazione utilizzando la funzione tiedrank
% 2) Verificare il risultato ottenuto passando attraverso la funzione tiedranks.

datirank=zeros(size(dati));
for j=1:2
    datirank(:,j)=tiedrank(dati(:,j));
end
Rchk=corr(datirank);
disp('Matrice dei coefficienti di correlazione basati sui gradi')
disp(array2table(Rchk,'VariableNames',etivar,'RowNames',etivar))

%
%% Implementazione utilizzando direttamente la formula in funzione dei ranks
% 3) Verificare il risultato implementando direttamente la formula $ 1- 6 \frac{\sum_{i=1}^n \left[ g(x_i) -g(y_i) \right]^2}{n(n^2-1)} $

n=size(datirank,1);
R12chk1=1-6*sum((datirank(:,1)-datirank(:,2)).^2)/(n*(n^2-1));
% Controllo che la differenza tra le due implementazioni sia "negligible"
disp(Rchk(1,2)-R12chk1)

%
%% Diagramma di dispersione personalizzato
% 4) Costruire il diagramma di dispersione tra le variabili "numero di passeggeri" (asse x) e "merci trasportate" (asse y), utilizzando come simboli quadrati con bordo nero e riempimento rosso e aggiungendo ai punti i nomi degli aeroporti. Aggiungere al grafico le etichette degli assi,

plot(dati(:,1),dati(:,2),'s',...
    'MarkerEdgeColor','k','MarkerFaceColor','r')
text(dati(:,1),dati(:,2),eti)

xlabel(etivar{1},'Interpreter','none')
ylabel(etivar{2},'Interpreter','none')
% E' stata utilizzata l'opzione  'Interpreter','none' in quanto nel
% linguaggio LATEX il simbolo _ significa pedice 
% per maggiori informazioni su LATEX
% https://it.wikipedia.org/wiki/LaTeX