%% Caricamento dati X=readtable('ADMjan2021.xlsx','Range','A1:F48','ReadRowNames',true); %% Distribuzione di frequenze classi=[65000 70000:10000:100000]'; labels=cellstr(strcat(num2str(classi(1:end-1)),'-',num2str(classi(2:end)))); h=histogram(X.POP,classi); Dist=array2table(h.Values','RowNames',labels','VariableNames',{'Distr-Freq'}); disp('Distribuzione di frequenze') disp(Dist) %% Boxplot figure boxplot(X.SUP,X.ZONA) title('Riani') ylabel('Analisi della distribuzione di SUP al variare della zona') % Commento: per le città del sud distribuzione con simmetria nella parte % centrale della distribuzione e asimmetria positiva nelle code (nessun valore anomalo) %% Matrice di correlazione R=corr(X{:,2:end}); % nomiq = vettore che contiene i nomi delle variabili quantitative nomiq=X.Properties.VariableNames(2:end); Rtable=array2table(R,'VariableNames',nomiq,'RowNames',nomiq); disp(Rtable) %% Analisi in componenti principali outPCA=pcaFS(X(:,2:end)); % Utilizzando il criterio di spiegare almeno 0.95^4 dovrei spiegare almeno % l'81 per cento circa. Con le prime due PC spiego solo il 75.27 per cento % Prima CP (correlata positivamente con superficie e (in misura minore) altitudine e % negativamente con densità) % Seconda CP (correlata positivamente con POP e negativamente con ALT) % Valori elevati della prima PC e bassi per la seconda PC==> % città con elevata superficie, elevata altitudine e bassa popolazione %% Estraggo la communalità della vriabile DENS % La communalità spiegata di DENS dalle prime due PC è 0.77 disp(outPCA.communalitiesT('DENS',:)) [~,indmaxcomu]=max(outPCA.communalitiesT{:,'PC1-PC2'}); disp(outPCA.communalitiesT(indmaxcomu,:)) % SUP con 0.82 e la var meglio spiegata dalle prime due PC %% Matrice dei diagrammi di dispersione (distinta per zona geografica) spmplot(X(:,2:end),X{:,1}) %% Grafico in coordinate parallele (colore diverso a seconda della zona) figure parallelplot(X,'GroupVariable','ZONA') %% Distr freq zona disp(tabulate(X{:,1})) %% Dist Euclidea tra Lucca e Como (Modo 1) StEucliDist=squareform(pdist(X{:,2:end},'seuclidean')); % Estraggo la matrice riferita a Lucca e Como [~,ia]=intersect(X.Properties.RowNames,{'LUCCA', 'COMO'}); % ia = vettore che contiene gli indici di riga di Lucca e Como disp('Dist Euclidea su Z tra Lucca e Como') disp(StEucliDist(ia(1),ia(2))) % Oppure % disp(StEucliDist(ia(2),ia(1))) %% Dist Euclidea tra Lucca e Como (Modo 2) StEucliDist=squareform(pdist(X{:,2:end},'seuclidean')); % Xnames = nomi delle righe in formato stringa Xnames=string(X.Properties.RowNames); disp('Dist Euclidea su Z tra Lucca e Como') disp(StEucliDist(Xnames=='LUCCA',Xnames=='COMO')) %% Dist Euclidea tra Lucca e Como (Modo 3) % Estraggo le righe riferite a Lucca e Como XX=X{{'LUCCA' 'COMO'},2:end}; % stdd = vettore che contiene i sigma delle 4 variabili stdd=std(X{:,2:end}); % diff = vettore riga che contiene la diff tra le due righe in termini di % scostamenti standardizzati diff=(XX(1,:)-XX(2,:))./stdd; Eu=sqrt(diff*diff'); disp('Dist Euclidea su Z tra Lucca e Como') disp(Eu)