%% Caricamento dati X=readtable('ADMjan2022.xlsx','Range','A1:F48','ReadRowNames',true); %% Distribuzione di frequenze classi=[65000 72000:6000:90000 100000]'; labels=cellstr(strcat(num2str(classi(1:end-1)),'-',num2str(classi(2:end)))); % Rappresentazione grafica della distribuzione di frequenze h=histogram(X.POP,classi); Dist=array2table(h.Values','RowNames',labels','VariableNames',{'Distr-Freq'}); disp('Distribuzione di frequenze') disp(Dist) %% Analisi degli outliers univariati e dei missing values figure % Osservazione: utilizzo solo le variabili quantitative [Mispat,tMisAndOut]=mdpattern(X(:,2:end),'dispresults',true); % La variabile POP non presenta valori anomali. Le variabili DENS e ALT % presentano 3 valori mancanti. % La variabile con il numero più elevato numero di missing (5) è SUP. % Le province con valori completi sono 38. % Per quanto riguarda i valori anomali, dall'esame di tMisAndOut risulta che % ci sono 4 città anomale per la variabile DENS e due per la variabile ALT. %% X1 = sottomatrice di 38 righe che non contiene missing X1=rmmissing(X); %% Matrice dei diagrammi di dispersione (distinta per zona geografica) spmplot(X1(:,2:end),X1{:,1}) % Relazione fortemente non lineare tra SUP e DENS. % SUP, DENS e ALT presentano asimmetria positiva. % 4) Dopo aver standardizzato i dati, calcolare la matrice delle distanze % Euclidee tra le città di PISA, PISTOIA e AREZZO. Denominare questa % matrice con le prime 3 lettere del proprio cognome. % Standardizzazione. ZX1=X1(:,2:end); ZX1{:,:}=zscore(X1{:,2:end}); cit=["PISA", "PISTOIA", "AREZZO"]; Z2=ZX1(cit,:); RIA=squareform(pdist(Z2{:,:})); RIAtable=array2table(RIA,"RowNames",cit,"VariableNames",cit); % La distanza tra Arezzo e Pisa è maggiore della distanza tra Pisa e Pistoia. % Modo 2 (calcolo la matrice delle distanze Euclidee sulle variabili % standardizzate per tutte le città ed estraggo successivamente la % sottomatrice delle distanze che mi interessa). Dist=squareform(pdist(X1{:,2:end},'seuclidean')); namall=X1.Properties.RowNames; Disttable=array2table(Dist,"RowNames",namall,"VariableNames",namall); Distsel=Disttable(cit,cit); % Verifico che la matrice delle distanze tra le 3 città calcolata con i due % procedimenti produca lo stesso risultato. disp(RIAtable) disp(Distsel) %% Matrice di correlazione tra le variabili POS, SUP e ALT nomi=["POP" "SUP" "ALT"]; [R,Pval]=corr(X1{:,nomi}); % nomi = vettore che contiene i nomi delle variabili quantitative POS SUP e % ALT Rtable=array2table(R,'VariableNames',nomi,'RowNames',nomi); disp(Rtable) Pvaltable=array2table(Pval,'VariableNames',nomi,'RowNames',nomi); disp(Pvaltable) % L'unica correlazione significativa è tra POP e ALT % All'aumentare dell'altitudine la popolazione diminuisce. %% Matrice di cograduazione tra le variabili POS SUP e ALT [R,Pval]=corr(X1{:,nomi},'type','Spearman'); % nomiq = vettore che contiene i nomi delle variabili quantitative Rtable=array2table(R,'VariableNames',nomi,'RowNames',nomi); disp(Rtable) Pvaltable=array2table(Pval,'VariableNames',nomi,'RowNames',nomi); disp(Pvaltable) % Nessuna cograduzione risulta significativa al livello di significatività % del 5 per cento. % 6) Tramite la funzione boxplotb creare e commentare il boxplot bivariato tra le variabili SUP e DENS. % Aggiungere come titolo sull'asse y del grafico il proprio nome cognome e numero di matricola. figure boxplotb(X1{:,["SUP", "DENS"]}); % Un valore anomalo bivariato (città 29 (Pavia)) % Le relazione tra le due variabili esiste ed è non lineare. % Ecco perché la matrice di correlazione segnalava una relazione non % significativa ylabel('Marco Riani 051485')