% 16 scrittori di romanzi sono stati valutati da un campione di lettori che % hanno espresso opinioni sul tipo di contenuto e sul modo in cui sono state % scritte le loro opere in base alle seguenti variabili % X1: giudizio complessivo, % X2: leggibilità, % X3: politica, % X4: fantasia, % X5: desiderio di rilettura, % X6: attualità. % % Importare i dati delle 6 variabili dal file di Excel denominato % scrittori.xlsx utilizzando la funzione readtable % % QUESITI % 1) Rappresentare i dati in termini di icone (o facce) % in modo da individuare eventuali scrittori anomali. % 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) e commentare la relazione. Illustrare se in % questo diagramma di dispersione c'è qualche valore anomalo bivariato. % 3) Effettuare una riduzione delle dimensioni (operare sulle variabili in % forma standardizzata) % 4) Scegliere un numero di CP appropriato % 5) Calcolare e commentare le correlazioni tra CP e le variabili % originarie. Calcolare e interpretare le comunalità. % 6) Interpretare le CP estratte. Che caratteristiche hanno gli scrittori % che presentano valori elevati della prima CP? Che caratteristiche hanno % gli scrittori che presentano valori elevati della seconda CP? % 7) Costruire il biplot in funzione dei parametri alpha e omega (v. file % pdf in allegato) e commentare il grafico % 8) Applicare ai dati standardizzati la cluster analysis basata sul metodo % delle k-medie utilizzando 3 gruppi. % 9) Calcolare i centroidi dei 3 gruppi in termini di variabili % originarie e di variabili in forma standardizzata. Proiettare i % centroidi nello spazio delle prime due componenti principali. % Aggiungere al biplot precedente i 3 centroidi. Interpretare % i 3 gruppi che sono stati trovati. % 10) Calcolare la distanza Euclidea e la distanza di Mahalanobis di ogni % scrittore dal centroide. Calcolare e commentare il coefficiente di % correlazione tra le due graduatorie. % 11) Creare una nuova funzione MATLAB denominata biplotSDE con le seguenti % caratteristiche: % Argomenti obbligatori di input: % a) un oggetto di tipo table di dimensione nxp (contente la matrice di % dati in formato table in termini di scostamenti dalla media o di % scostamenti standardizzati). % b) gli scalari ome e alp (associati rispettivamente ai parametri omega e % alpha) v. fotocopie distribuite a lezione "Aspetti matematici del biplot" % Argomenti facoltativi di input: % a) una matrice di dimension kxp contenente i % centroidi derivanti dal risultato dell'applicazione di un metodo di % clustering. % Argomenti di output: un grafico che contiene il biplot in cui le righe della % matrice kxp facoltativa sono rappresentate nel biplot tramite croci % nere. La prima croce nera deve avere etichetta gr1, la seconda gr2, ... e la % k-esima grk. % ------------------- %% Soluzione % Importare i dati delle 6 variabili dal file di Excel denominato % scrittori.xlsx utilizzando la funzione readtable Xtable=readtable('scrittori.xlsx','ReadRowNames',1); %% 1) Rappresentare i dati in termini di icone (o facce) % in modo da individuare eventuali scrittori anomali. RowNam=Xtable.Properties.RowNames; ColNam=Xtable.Properties.VariableNames; X=table2array(Xtable); % rappresentazione tramite stelle glyphplot(X, 'glyph','star','obslabels',RowNam) % rappresentazione tramite facce glyphplot(X, 'glyph','face','obslabels',RowNam) % Commento: Tolkien Rowling hanno una faccia (stella) molto simile % Lucarelli sembra avere un profilo simile a Allende e King %% 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) e commentare la relazione. Illustrare se in % questo diagramma di dispersione c'è qualche valore anomalo bivariato. corr(X) i=2; j=5; plot(X(:,i),X(:,j),'o') text(X(:,i),X(:,j),RowNam) xlabel(ColNam(i),'Interpreter','none') ylabel(ColNam(j),'Interpreter','none') % Commento: % Nasar sembra essere un valore anomalo bivariato. E' uno scrittore che % presenta una leggibilità intorno alla media ma un desiderio di rilettura % molto più basso degli altri % 3) Effettuare una riduzione delle dimensioni (operare sulle variabili in % forma standardizzata) [n,p]=size(X); [Z,mu,Sigma]=zscore(X); [coeff,score,latent] =pca(Z); disp(cumsum(latent)/p) %Le prime due componenti principali spiegano il 75.18% della varianza %totale % Adottando il criterio di considerare solo gli autovalori >1 dobbiamo estrarre le prime due componenti principali % Adottando il criterio 0.95^p= % La prima componente spiega il 46% circa della variabilitá totale % presente nei dati, mentre il primo piano fattoriale (dato % dalle prime due componenti principali) spiega circa il % 75% della variabilitá. % 5) Calcolare e commentare le correlazioni tra CP e le variabili % originarie. Calcolare e interpretare le comunalità. % 6) Interpretare le CP estratte. Che caratteristiche hanno gli scrittori % che presentano valori elevati della prima CP? Che caratteristiche hanno % gli scrittori che presentano valori elevati della seconda CP? % Analisi delle correlazioni tra le variabili originarie e la prime % CP MatrComp=coeff(:,1:2).*sqrt(latent(1:2)'); % Se si adotta il segno che segue per la prima colonna di MatrComp disp(array2table(-MatrComp(:,1),'RowNames',ColNam,'VariableNames',{'corr_withPC1'})) % Gli scrittori che presentano valori elevati della prima CP sono % caratterizzati dai temi fantasy elevata leggibilità, temi non di % attualità e bassi temi di politica % Se si adotta il segno che segue per la seconda colonna di MatrComp disp(array2table(MatrComp(:,2),'RowNames',ColNam,'VariableNames',{'corr_withPC2'})) % Gli scrittori che presentano valori elevati della seconda CP hanno avuto % un alto giudizio complessivo, elevata leggibilità e ispirano alla % rilettura % Comunalità disp(array2table(sum(MatrComp.^2,2),'RowNames',ColNam,'VariableNames',{'Comun'})) % La variabile spiegata meglio è l’attualità %% Biplot close all hold('on') [U,Gammastar,V]=svd(Z,'econ'); % Controllo sulla svd 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; % Aggiungo l'asse x line([axislim(1);axislim(2)], [0;0], 'Color','black'); % Aggiungo l'asse y line([0;0],[axislim(3);axislim(4)], 'Color','black'); % Commenti: % Angolo piccolo tra politic e attual==> le due variabili sono fortemente % correlate ==>es. leggibilità e rilettura %...................... % 8) Applicare ai dati standardizzati la cluster analysis basata sul metodo % delle k-medie utilizzando 3 gruppi. [idx,C]=kmeans(Z,3,'Replicates',100); % spmplot(X,idx) % 9) Calcolare i centroidi dei 3 gruppi in termini di variabili % originarie e di variabili in forma standardizzata. Proiettare i % centroidi nello spazio delle prime due componenti principali. % Aggiungere al biplot precedente i 3 centroidi. Interpretare % i 3 gruppi che sono stati trovati. disp('Centroidi in forma di scostamenti standardizzata') disp(C) disp('Centroidi in termini dei dati originari') disp(C.*Sigma+mu) % Controllo di aver fatto i calcoli giusti % Centroide del gruppo 1 mean(X(idx==1,:)) % Proiezione dei centroidi nello spazio delle componenti principali Centrproiettati=C*V(:,1:2)*(sqn1^(omega-1))*Gamma(1:2,1:2)^(alpha-1); plot(Centrproiettati(:,1),Centrproiettati(:,2),'k+','MarkerSize',12,'LineWidth',2) sc=size(C,1); centrlabels=[repmat('C',sc,1) num2str((1:sc)')]; text(Centrproiettati(:,1),Centrproiettati(:,2)+0.04,centrlabels); % text(Centrproiettati(:,1),Centrproiettati(:,2),'+','FontSize',14) % Aggiunta al grafico del gruppo di appartenenza text(PuntiRiga(:,1)-0.03,PuntiRiga(:,2),num2str(idx)) %% 10) Calcolare la distanza Euclidea e la distanza di Mahalanobis di ogni % scrittore dal centroide. Calcolare e commentare il coefficiente di % correlazione tra le due graduatorie. mu=mean(X); % Calcolo delle distanze euclidee e di Mahalanobis dal centroide generale dMahalanobis=zeros(n,1); dEuclidea=dMahalanobis; invSigma=inv(cov(X)); for i=1:n dMahalanobis(i) = sqrt((X(i,:)-mu)*invSigma*(X(i,:)-mu)'); dEuclidea(i)= sqrt((X(i,:)-mu)*(X(i,:)-mu)'); end corr(dMahalanobis,dEuclidea,'type','Spearman') plot(dMahalanobis,dEuclidea,'o') % Commento la correlazione tra i posti d'ordine è scarsa.