%% Testo
% 1) Caricare dentro Matlab i dati presenti nel file corr.xlsx
% 2) Calcolare la matrice di correlazione
% 3) Verificare il risultato tramite l'implementazione manuale. Calcolare la codevianza (numeratore della covarianza) utilizzando sia l'implementazione matriciale sia la moltiplicazione elemento per elemento
% Commentare il valore della correlazione ottenuto
% 4) Rappresentare graficamente i dati tramite diagramma di dispersione aggiungendo le etichette degli assi, aggiungendo nel titolo il valore della correlazione ed aggiungendo ad ogni punto la rispettiva etichetta (nome di riga)
% 5) Assegnare agli assi ed al titolo una dimensione dei caratteri ('FontSize') uguale a 16. Aggiungere al grafico la griglia sull'asse Y ('YGrid') Osservazione: una volta creato il grafico per accedere alle sue proprietà occorre digitare get(gca) (v. l'help di gca=get current axes) L'istruzione set(gca,'Nome_Caratteristica_Richiesta','Valore') consente di cambiare una determinata proprietà del grafico
%% Carico i dati dentro MATLAB
% 1) Caricare dentro Matlab i dati presenti nel file corr.xlsx

[X,nomi,pippo] = xlsread('corr.xlsx','Foglio1','A2:C26');

%
%% Calcolo della matrice di correlazione

R=corr(X);

%
%% 3) Implementazione manuale della correlazione

m=mean(X);

% Calcolo della codevianza (numeratore della covarianza)
% utilizzando sia l'implementazione matriciale 
% codev = codevianza (numeratore della covarianza)
codev=(X(:,1)-m(1))'*(X(:,2)-m(2));

% Calcolo della codevianza utilizzando la moltiplicazione
% elemento per elemento (istruzione .*) e facendo poi la somma
Y1=(X(:,1)-m(1));
Y2=(X(:,2)-m(2));
codevCHK=sum(Y1.*Y2);

% Controllo l'uguaglianza delle due implementazioni
isequal(codev,codevCHK)

% devianza prima variabile
devX1=sum((X(:,1)-m(1)).^2);
% devianza seconda variabile
devX2=sum((X(:,2)-m(2)).^2);
% Calcolo di R2
Rmanuale=codev/(sqrt(devX1*devX2));

% Mostra la differenza in valore assoluto tra le due implementazioni
disp(abs(R(1,2)-Rmanuale))

% In alternativa a corr è possibile usare anche la funzione corrcoef
% corrcoef(X(:,1),X(:,2))

%
%% Commentare il valore della correlazione ottenuto
% La relazione lineare tra le due variabili è crescente e pari a circa l'81 per cento del valore massimo possibile
%% Diagramma di dispersione

plot(X(:,1),X(:,2),'o')
% Aggiunta delle etichette ai punti
text(X(:,1),X(:,2),nomi)
xlabel('Prezzo')
ylabel('Potenza')
title(['Diagramma e  $r_{xy}$=' num2str(R(1,2))],'Interpreter','Latex')

%
%% Font personalizzati e griglia
% 5) Assegnare agli assi ed al titolo una dimensione dei caratteri ('FontSize') uguale a 16. Aggiungere al grafico la griglia sull'asse Y ('YGrid')

% L'istruzione get(gca) mostra tutte le proprietà del grafico
disp(get(gca))

% Cambio la FontSize nel grafico
set(gca,'FontSize',16)
% Aggiungo la griglia sull'asse Y
set(gca,'YGrid','on')