%% Caricamento dei dati Xtable=readtable('AZ.xlsx','ReadRowNames',true); RowNam=Xtable.Properties.RowNames; ColNam=Xtable.Properties.VariableNames; X=table2array(Xtable); %% Rappresentazione iconica % 1) Rappresentare i dati in termini di icone (o facce) % in modo da individuare eventuali aziende anomale e costruire la matrice % dei diagrammi di dispersione. % Rappresentazione tramite facce. glyphplot(X,'glyph','face','obslabels',RowNam); % Rappresentazione tramite stelle. glyphplot(X,'glyph','star','obslabels',RowNam); % Costruzione della matrice dei diagrammi di dispersione. gplotmatrix(X); %% 2. Matrice di correlazione. % 2) Calcolare la matrice di correlazione. Commentare il coefficiente di % correlazione lineare tra le variabili X5 e X2. Costruire e commentare il % diagramma di dispersione tra le variabili X5 (in asse delle ordinate) e % X2 (in asse delle ascisse). Illustrare se in % questo diagramma di dispersione c'č qualche valore anomalo. correl=corr(X); corrtable=array2table(correl,'RowNames',ColNam,'VariableNames',ColNam); % La presenza di elevate correlazioni tra le variabili č la condizione % necessaria per la corretta applicazione della tecnica delle CP %% 2) Calcolare la matrice di correlazione. % Commentare il coefficiente di % correlazione lineare tra le variabili X5 e X2. disp(corrtable(2,5)) % Commento: l'indebitamento č incorrelato con il cash flow. %% Costruire e commentare il % diagramma di dispersione tra le variabili X5 (in asse delle ordinate) e % X2 (in asse delle ascisse). Illustrare se in % questo diagramma di dispersione c'č qualche valore anomalo. i=2; j=5; plot(X(:,i),X(:,j),'o'); text(X(:,i),X(:,j),RowNam); xlabel(ColNam(i)); ylabel(ColNam(j)); % Commento: Plasmon e Parmalat, sono valori anomali univariati % Plasmon presenta un cash flow molto superiore alla media % Parmalat presenta un indebitamento molto superiore alla media figure % Rappresento i dati anche con la funzione scatterhist scatterhist(X(:,i),X(:,j)); %% 3) Effettuare una riduzione delle dimensioni (scegliere se operare sulle % variabili in forma standardizzata. Motivare la scelta) % Le variabili in esame presentano un ordine di grandezza molto diverso. E' % necessario operare sulle variabili in forma standardizzata. %% Riduzione delle dimensioni. [Z,mu,Sigma]=zscore(X); [coeff,score,latent]=pca(Z); [n,p]=size(X); disp(cumsum(latent)/p); % Le prime due componenti principali spiegano il 78.31% della varianza totale % La prima componente spiega il 50% circa della variabilitį totale % presente nei dati. %% 4. Scegliere un numero di CP appropriato. % Secondo il criterio di considerare solo gli autovalori >1 (dato che le % variabili sono state standardizzate) vanno estratte le prime due % componenti principali. % Adottando il criterio 0.95^p= 73.5 considero solo le prime due % componenti principali %% 5. Calcolare e commentare le correlazioni tra le CP estratte e le variabili % originarie. % Che caratteristiche hanno le aziende % che presentano valori elevati della prima CP? Che caratteristiche hanno % le aziende che presentano valori elevati della seconda CP? MatrComp=coeff(:,1:2).*sqrt(latent(1:2)'); disp(array2table(MatrComp(:,1),'RowNames',ColNam,'VariableNames',{'corr_withPC1'})); % Valori elevati della prima CP = % Aziende con alto economic profit, alto cash flow, basso costo del % lavoro, elevato ROE (e basso fatturato). % Se invece si considera -MatrComp(:,1) allora abbiamo che valori elevati % della prima CP corrispondono a % Aziende con basso economic profit, basso cash flow, elevato costo del % lavoro, elevato ROE (e alto fatturato). disp(array2table(MatrComp(:,2),'RowNames',ColNam,'VariableNames',{'corr_witchPC2'})); % Le aziende che presentano elevati valori della seconda PC sono % caratterizzati da un alto indebitamento sul capitale proprio e da un % basso costo del lavoro sul valore aggiunto. %% Calcolare e interpretare le comunalitą. disp(array2table(sum(MatrComp.^2,2),'RowNames',ColNam,'VariableNames',{'Comun'})) % La variabile spiegata meglio č 'ECON' quella spiegata peggio č il % fatturato. %% 7. Costruire il biplot e commentare il grafico. Commentare la posizione % della Ferrero e della Parmalat. close all; hold on; [U,Gammastar,V]=svd(Z,'econ'); sqn1=sqrt(n-1); Gamma=Gammastar/sqn1; omega=0.7; alpha=0.5; PuntiRiga=sqn1^omega*U(:,1:2)*Gamma(1:2,1:2)^alpha; PuntiColonna=V(:,1:2)*(Gamma(1:2,1:2)^(1-alpha))*sqn1^(1-omega); plot(PuntiRiga(:,1),PuntiRiga(:,2),'o'); text(PuntiRiga(:,1),PuntiRiga(:,2),Xtable.Properties.RowNames); zeroes=zeros(p,1); quiver(zeroes,zeroes,PuntiColonna(:,1),PuntiColonna(:,2)); varlabs=Xtable.Properties.VariableNames; dx=0.02; dy=0.03; text(PuntiColonna(:,1)+dx,PuntiColonna(:,2)+dy,varlabs,'Color','b','Interpreter','none'); axislim=axis; line([axislim(1);axislim(2)],[0;0],'Color','black'); line([0;0],[axislim(3);axislim(4)],'Color','black'); % Interpretazione: % I punti che si trovano in direzione del vettore stanno a indicare che % quelle aziende presentano valori alti di quella variabile (es. Parmalat č % sulla direzione di INDE, e infatti ne presenta un valore molto alto). Al % contrario, i punti che si trovano nella direzione opposta hanno valori % bassi di quella variabile (es. Eridania ha un valore molto basso di % ECON). I vettori con un angolo molto ridotto tra loro indicano una % correlazione alta tra le varaibili corrispondenti (es. CASH e ROE). Al % contrario, i vettori con un angolo vicino a 90 gradi indicano le due % corrispondenti variabili sono incorrelate (es. ECON e COSVA). I vettori % con un angolo ridotto rispetto all'asse delle x (y) sono correlati % (positivamente o inversamente in base al quadrante di appartenenza) con % la prima (seconda) componente principale. %Commento: Parmalat presenta un elevato grado di indebitamento sul capitale %proprio. Ferrero un elevato profitto economico. %% 8. Applicare ai dati standardizzati la cluster analysis basata sul metodo % delle k-medie utilizzando 2 gruppi. [idx,C]=kmeans(Z,2,'Replicates',100); %% 9. Creare un nuovo grafico in modo da aggiungere al biplot % precedentemente creato l'etichetta del gruppo di appartenenza di ogni azienda. figure plot(PuntiRiga(:,1),PuntiRiga(:,2),'o'); % Aggiungo ai nomi delle righe l'etichetta del gruppo di appartenenza lab=strcat(Xtable.Properties.RowNames,'-',cellstr(num2str(idx))); text(PuntiRiga(:,1),PuntiRiga(:,2),lab); hold on; zeroes=zeros(p,1); quiver(zeroes,zeroes,PuntiColonna(:,1),PuntiColonna(:,2)); varlabs=Xtable.Properties.VariableNames; text(PuntiColonna(:,1)+dx,PuntiColonna(:,2)+dy,varlabs,'Color','b','Interpreter','none'); axislim=axis; line([axislim(1);axislim(2)],[0;0],'Color','black'); line([0;0],[axislim(3);axislim(4)],'Color','black'); text(PuntiRiga(:,1)-0.03,PuntiRiga(:,2),num2str(idx)); title('Biplot con indicazione del gruppo di appartenenza') % Commento: le aziende del gruppo 1 (Plasmon e Ferrero) presentano valori % negativi della prima CP. Questo gruppo č caratterizzato da % aziende con elevato CASH flow, elevato ROE ed elevato economic profit.