% Importazione dei dati dentro MATLAB

X = readtable("CONADR.xlsx", 'Sheet','dati','range','A1:D509','ReadRowNames',false,'PreserveVariableNames',true);
% L'opzione ReadRowNames è impostata su false in quanto questo
% dataset non contiene i nomi delle righe
% Durante il caricamento dei dati MATLAB produce un warning che ci avvisa che i nomi delle variabili sono stati cambiati 
% (i nomi delle variabili non possono contenere caratteri speciali) 
% Se volevo forzare MATLAB a non modificare i nomi delle colonne dovevo
% utilizzare l'istruzione
% X = readtable("CONADR.xlsx", 'Sheet','dati','range','A1:D509','ReadRowNames',false,'PreserveVariableNames',true);

% Mostro le prime 20 righe della table X
disp(X(1:20,:))

%
% Calcolo della matrice di covarianze e correlazione

% Estraggo nella matrice Xdouble i numeri contenuti nella table X
Xdouble=X{:,:};
% Calcolo matrice di covarianze (utilizzo la funzione cov)
covX=cov(Xdouble);
% Calcolo matrice di correlazione (utilizzo la funzione corr)
corX=corr(Xdouble);

disp('Matrice di varianze e covarianze senza nomi delle righe e delle colonne')
disp(covX)

disp('Matrice correlazione senza nomi delle righe e delle colonne')
disp(corX)

% Mostro le matrici di covarianze e correlazione con le intestazioni

% Trasformo le matrici di double covX e corY in table aggiungendo le
% etichette di riga e di colonna
covXtable=array2table(covX,"RowNames",X.Properties.VariableNames,"VariableNames",X.Properties.VariableNames);
corXtable=array2table(corX,"RowNames",X.Properties.VariableNames,"VariableNames",X.Properties.VariableNames);

disp('Matrice di covarianze con intestazioni')
disp(covXtable)
disp('Matrice di correlazione con intestazioni')
disp(corXtable)

%
% Diagramma di dispersione tra le variabili visite (asse x) e spesa (asse y) aggiungendo come etichette dei punti il "numero di componenti".

plot(X{:,"visite"},X{:,"spesa"},'o')
text(X{:,"visite"},X{:,"spesa"},num2str(X{:,'componenti'}))
xlabel('Visite')
ylabel('Numero di componenti')

%
% Costruzione delle matrici dei diagrammi di dispersione
% Utilizzo la funzione spmplot di FSDA toolbox

spmplot(Xdouble)

%
% Matrice dei diagrammi di dispersione con i boxplot sulla diagonale principale

figure
spmplot(Xdouble,'dispopt','box');

% Matrice dei diagrammi di dispersione con i boxplot sulla diagonale principale e i nomi delle varaibili

figure
nomi=X.Properties.VariableNames;
plo=struct;
plo.nameY=nomi
spmplot(Xdouble,'dispopt','box','plo',plo);