%% Statistica per la digital economy
%% Compito 12 dic 2022


% Osservazione: si assume che sia presente FSDA ultima versione.

% Caricare in memoria il dataset USArrest tramite l'istruzione
% load USArrest
% Questo dataset contiene 3 indicatori di criminalità dei 50 stati
% Americani (Murder, Assault, Rape) 
% Murder = Assassini
% Assault = Aggressioni
% Rape =  Stupri
% ed un indicatore legato alla densità della popolazione urbana (UrbanPop).
% 
% I nomi dei 50 Stati Americani sono contenuti nel file USAnomi.xlsx.
% Assegnare alla table USArrest i nomi delle righe (RowNames) contenuti nel
% file USAnomi.xlsx. (PUNTI 5)
%
% ------------------------------------------
% Osservazione: chi non riesce a risolvere il punto precendete può
% assegnare come RowNames della table UrbanPop la sequenza 1, 2, 3, ..., 50
% Chi non riesce a fare nemmeno questo, può andare avanti con i passi
% succcessivi
% ----------------------------------------
%
% ANALISI PRELIMINARI (PUNTI 8)
% Costruire il diagramma di dispersione tra le variabili UrbanPop (asse x) e
% Murder (asse y).
% Aggiungere come titolo del grafico il proprio cognome e numero di matricola.

% Costruire la matrice di correlazione e dei relativi p-values in formato
% table (è indifferente il metodo che si utilizza per trovare queste table).
% Denominare la matrice di correlazione con le prime 4 lettere (senza accenti) 
% del proprio cognome.
% Costruire la matrice dei diagrammi di dispersione sovrapponendo ad ogni
% pannello la retta di regressione. Inserire il valore del coefficiente di
% correlazione lineare tra ogni coppia di variabili in ogni pannello e
% colorarlo in rosso oppure in nero a seconda della sua significatività.
% Commentare il grafico che si ottiene e le correlazioni 
% che non risultano significative

% COMPONENTI PRINCIPALI (PUNTI 8)
% Utilizzando la tecnica delle componenti principali ridurre le dimensioni.
% Commentare la varianza spiegata dalle diverse componenti e il numero di
% componenti da tenere.
% Interpretare la prima e la seconda componente principale.
% Commentare la posizione dello Stato della Florida nello spazio delle
% prime due componenti principali.
% Commentare l'angolo nel biplot tra la variabile UrbanPop e Murder.

% CLUSTER ANALYSIS (PUNTI 8) 
% Dopo aver opportunamente trasformato i dati utilizzando la metodologia di
% cluster gerarchico del legame medio, mostrare il dendrogramma
% visualizzando tutte le aggregazione con l'opzione 'Orientation','left'.
% Colorare nel dendrogramma i rami utilizzando la 'ColorThreshold' di
% default. Quanti gruppi questa metodologia suggerisce se si utilizza la
% 'ColorThreshold' di default? Utilizzando il numero di gruppi suggerito
% dalla 'ColorThreshold' di default, assegnare ogni unità ad un determinato
% gruppo. Costruire la distribuzione di frequenza dei gruppi che sono stati
% trovati. Quale Stato Americano è segnalato come potenzialemente anomalo
% dal metodo del legame medio?

% RAPPRESENTAZIONE SCORE + INTERPRETAZIONE DEI GRUPPI (PUNTI 4)
% Rappresentare in un diagramma di dispersione gli score delle prime due PC
% + gruppo di appartenenza + etichetta dello stato. Inserire come etichette
% degli assi l'interpretazione delle prime due componenti principali.
% Commentare le caratteristiche degli Stati che appartengono al gruppo 2.
% Aggiungere come titolo del grafico il proprio nome cognome e 
% numero di matricola.


%% CARICAMENTO DATI E ASSEGNAZIONE NOMI RIGA (PUNTI 5)


load USArrest.mat;
Nomi=readtable('USAnomi.xlsx');
% Assegno alla table USArrest i nomi
USArrest.Properties.RowNames=Nomi{:,1};

%%  ANALISI PRELIMINARI (PUNTI 8)

Xtable=USArrest;
% Relazione diretta tra le due variabili
scatter(Xtable,"UrbanPop","Murder")

% Aggiungere come titolo del grafico il proprio cognome e numero di matricola.
title('Marco Riani 051485')


[RIAN,Pvaltable]=corrplot(Xtable,'TestR','on')
% Commentare le correlazioni che non risultano significative
% L'unica correlazione non significativa è tra Murder e Urban Population.

%
%% COMPONENTI PRINCIPALI (PUNTI 8)

outPCA=pcaFS(Xtable);
% Secondo il criterio 095^p occorre spiegare almeno il 0.95^4=0.8145 di
% variabilità totale. Le prime due componenti spiegano circa l'87 per
% cento.
% La prima componente principale è un indicatore di "Sicurezza". Tanto più
% ci si sposta da sinistra verso destra tanto più Murder, Assault e Rape
% diminuiscono.
% La seconda componente principale è determinata prevalente da UrbanPop in
% maniera indiretta ed in misura minore da Murder (in maniera diretta).
% Si noti che la freccia associata a UrbanPop
% è quella che presenta l'angolo più piccolo con l'asse y (seconda PC).
% 
% Di conseguenza, valori elevati della seconda PC sono associati a stati
% con bassi valori di UrbanPop.
% Commentare la posizione dello Stato della Florida nello spazio delle
% prime due componenti principali.
% La Florida presenta il valore più basso della prima PC.
% E' nella direzione delle variabili Rape e Assault, di conseguenza
% presenta valori molto elevati di questi due indicatori.

% Commentare l'angolo nel biplot tra la variabile UrbanPop e Murder.
% L'angolo è vicino a 90 gradi e sta ad indicare l'assenza di correlazione
% tra queste due variabili. Questo conferma quello che avevamo visto in
% precedenza (correlazione non significativa).
%
%

%% CLUSTER ANALYSIS (PUNTI 8)
% Dopo aver opportuanemen trasformato i dati utilizzando la metodologia di cluster gerarchico del legame medio. Mostrare il dendrogramma visualizzando tutte le aggregazione con l'opzione
%  'Orientation','left'. Colorare nel dendrogramma i rami utilizzando la  'ColorThreshold' di default. Quanti gruppi questa metodologia suggerisce  se si utilizza la 'ColorThreshold' di default? Utilizzando il numero di  gruppi suggerito dalla 'ColorThreshold' di default, assegnare ogni unità  ad un determinato gruppo.
%

X=Xtable{:,:};
% Passo a valori standardizzati per eliminare la diversa unità di misura ed
% il diverso ordine di grandezza
[Z,mu,sigma]=zscore(X);
% Metodo del legame medio
tree = linkage(Z,'average');
% Motrare il dendrogramma visualizzando tutte le aggregazioni
% con l'opzione 'Orientation','left'.
% Colorare nel dendrogramma i rami utilizzando la 'ColorThreshold' di default
figure
dendrogram(tree,0,'Orientation','left','ColorThreshold','default','Labels',USArrest.Properties.RowNames);
% Quanti gruppi questa metodologia suggerisce
% se si utilizza la 'ColorThreshold' di default? 

% Se si utilizza la 'ColorThreshold' di default questa metodologia
% suggerisce la presenza di quattro gruppi

% Utilizzando il numero di
% gruppi suggerito dalla 'ColorThreshold' di default, assegnare ogni unità
% ad un determinato gruppo. 

% La funzione cluster viene chiamata con il name/value MaxClust',4 per
% utilizzare 4 gruppi
idxLegameMedio = cluster(tree,'MaxClust',4);

%
%% RAPPRESENTAZIONE SCORE + INTERPRETAZIONE DEI GRUPPI (PUNTI 4)



% Y = score non standardizzati (cov(Y) = matrice che contiene gli
% autovalori sulla diagonale principale)
Y=outPCA.score;
etirighe=Xtable.Properties.RowNames;

%% Rappresentazione degli score + centroidi + gruppo di appartenenza + etichetta dello stato
figure
idxAndRowLabels=strcat(num2str(idxLegameMedio),'--',etirighe);
plot(Y(:,1),Y(:,2),'o')
xlabel('PC1 (indicatore di sicurezza)');
ylabel('PC2 (Urban population (-) e in maniera minore murder (+))');
text(Y(:,1),Y(:,2),idxAndRowLabels)
% Aggiungo assi cartesiani
xline(0)
yline(0)
% Il gruppo 2 presenta stati con valori inferiori alla media della prima
% componente principale (di conseguenza stati con tasso di criminalità
% superiore alla media) e valori generalmente inferiori alla media per la
% seconda componente principale (di conseguenza stati ad elevata densità
% urbana).
% Lo stato dell'Alaska (riga 2) secondo il metodo del legame medio è da considerarsi
% un outlier. Questo stato infatti presenta anche la più grande distanza di
% Mahalanobis. 
% Osservazione: quest'ultima parte sulla distanza di Mahalanobis non era
% richiesta dall'esercizio.
distM=mahalFS(X,mu,cov(X));
bar(distM)