%% Testo % % 1) Caricare dentro Matlab i dati presenti nel file corr.xlsx prima % tramite la funzione xlsread e poi tramite readtable % % 2) Calcolare la matrice di covarianze. % Chiamare le funzioni GUIvar e GUIcov per mostrare i dettagli dei calcoli % da effettuare per calcolare le due varianze e la covarianza. % Calcolare la matrice di correlazione % % 3) Verificare il coefficiente di correlazione lineare 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 % 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 prima % tramite la funzione xlsread e poi tramite readtable [X,Nomi,pippo] = xlsread('corr.xlsx','Foglio1','A1:C26'); % L'istruzione xlsread era il vecchio modo di caricare i dati dentro MATLAB % da file Excel. E' indubbiamente meglio caricare i dati tramite readtable % I dati numerici della zona A1:C26 sono stati inseriti dentro X. % X è un array di dimensione 25x2 % I dati non numerici della zona A1:C26 sono stati inseriti dentro nomi % nomi è un cell array di dimensione 26x3. Dentro nomi la zon % nomi(2:26,2:3) è composta da 0x0 char. Dato che nella zona B2:C26 del % file di Excel c'erano dati numerici questi non vengono caricati dentro % nomi. % pippo è un cell array di dimensione 26x3 che contiene sia dati numerici % sia dati non numerici. % Caricamento dati tramite readtable X1=readtable('corr.xlsx','Sheet','Foglio1','Range','A1:C26','ReadRowNames',true); % Si noti che X è un array al contrario X1 è una table. %% Calcolo della matrice di varianze e covarianze (S). S=cov(X); disp('Matrice di varianze e covarianze') disp(S) % Sulla diagonale principale ho le varianze delle due variabili. % L'elemento (1,2) o l'elemento (2,1) è la covarianza tra le due variabili. %% Dettaglio dei calcoli da effettuare per calcolare la varianza e la covarianza GUIvar(X(:,1)) GUIvar(X(:,2)) GUIcov(X(:,1),X(:,2)) %% Calcolo della matrice di correlazione (R) 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 r (correlazione tra la prima Colonna e la seconda colonna % della matrice X = correlazione tra Prezzo e Potenza) 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 circa del valore massimo possibile %% Diagramma di dispersione % L'istruzione figure è necessaria altrimento il grafico si sovrappone ai % precedenti figure plot(X(:,1),X(:,2),'o') % Aggiunta delle etichette ai punti etichette=Nomi(2:end,1); text(X(:,1),X(:,2),etichette) xlabel(Nomi{1,2}) ylabel(Nomi{1,3}) title(['Diagramma di dispersione 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)) % Cambia la FontSize nel grafico set(gca,'FontSize',16) % Aggiungo la griglia sull'asse Y set(gca,'YGrid','on')