% DOMANDA 1 % Inserire dentro MATLAB le informazioni contenenti il numero degli ordini % e l'ammontare degli ordini effettuati da 4 clienti A, B, C e D % % N. IMPORTO % A 3 20 % B 10 42 % C 8 30 % D 2 12 % % Calcolare % a) La matrice delle distanze Euclidee % b) La matrice delle distanze della città a blocchi % c) La matrice delle distanze di Minkowski con k=4 % d) La matrice delle distanze Lagrangiane % e) La matrice delle distanze Euclidee al quadrato % f) La matrice delle distanze di Mahalanobis % Mostrare l'output in formato table con i nomi delle righe e delle colonne % % DOMANDA 2 % In un’indagine sulla qualità della vita il quotidiano “Italia Oggi” ha fornito, tra l’altro, i seguenti dati sulla situazione ambientale in alcune province emiliane: % ZTL= zone a traffico limitato (mq per abitante); % VERDE = verde pubblico (mq per abitante); % DIFF = raccolta differenziata rifiuti (in percentuale della raccolta totale). % Si calcoli la corrispondente matrice degli scostamenti standardizzati; % Si calcoli la matrice delle distanze della città a blocchi dapprima sui % dati originari e quindi sugli scostamenti standardizzati e se ne commenti % il significato. % PROVINCE ZTL VERDE DIFF % PIACENZA 4.17 13.6 31.6 % PARMA 4.1 13 14.7 % REGGIO 0.82 13.3 36.7 % MODENA 3.9 17.9 17.5 % %% Soluzione % DOMANDA 1 % Inserire dentro MATLAB le informazioni contenenti il numero degli ordini % e l'ammontare degli ordini effettuati da 4 clienti A, B, C e D % % N. IMPORTO % A 3 20 % B 10 42 % C 8 30 % D 2 12 % % Inserimento dei dati X=[3 20;10 42;8 30; 2 12]; %% Calcolo della matrice delle distanze Euclidee. D=squareform(pdist(X)); names={'A', 'B', 'C', 'D'}; Dtable=array2table(D,'RowNames',names','VariableNames',names); disp('Matrice delle distanze Euclidee') disp(Dtable) %% Calcolo della matrice delle distanze cityblock. D=squareform(pdist(X,'cityblock')); Dtable=array2table(D,'RowNames',names','VariableNames',names); disp('Matrice delle distanze della città a blocchi') disp(Dtable) %% Calcolo della matrice delle distanze di Minkowski con k=4. D=squareform(pdist(X,'minkowski',4)); Dtable=array2table(D,'RowNames',names','VariableNames',names); disp('Matrice delle distanze di Minkowski con k=4') disp(Dtable) %% Calcolo della matrice delle distanze Lagrangiane - chebychev - scacchiera (modo rozzo) D=squareform(pdist(X,'minkowski',100)); Dtable=array2table(D,'RowNames',names','VariableNames',names); disp('Matrice delle distanze Lagrangiane') disp(Dtable) %% Calcolo della matrice delle distanze Lagrangiane D=squareform(pdist(X,'chebychev')); Dtable=array2table(D,'RowNames',names','VariableNames',names); disp('Matrice delle distanze Lagrangiane') disp(Dtable) %% Calcolo della matrice dei quadrati delle distanze Euclidee D=squareform(pdist(X,'squaredeuclidean')); Dtable=array2table(D,'RowNames',names','VariableNames',names); disp('Matrice degli indici di distanza Euclidea al quadrato') disp(Dtable) %% Calcolo della matrice delle distanze di Mahalanobis D=squareform(pdist(X,'mahalanobis')); Dtable=array2table(D,'RowNames',names','VariableNames',names); disp('Matrice delle distanze di Mahalanobis') disp(Dtable) %% Domanda 2: % In un’indagine sulla qualità della vita il quotidiano “Italia Oggi” ha % fornito, tra l’altro, i seguenti dati sulla situazione ambientale in % alcune province emiliane: % ZTL= zone a traffico limitato (mq per abitante); % VERDE = verde pubblico (mq per abitante); % DIFF = raccolta differenziata rifiuti (in percentuale della raccolta % totale). % PROVINCE ZTL VERDE DIFF % PIACENZA 4.17 13.6 31.6 % PARMA 4.1 13 14.7 % REGGIO 0.82 13.3 36.7 % MODENA 3.9 17.9 17.5 % Si calcoli la corrispondente matrice degli scostamenti % standardizzati; % Si calcoli la matrice delle distanze della città a blocchi dapprima sui % dati originari e quindi sugli scostamenti standardizzati e se ne commenti % il significato. X=[4.17 13.6 31.6; 4.1 13 14.7; 0.82 13.3 36.7; ... 3.9 17.9 17.5]; %% Z= matrice degli scostamenti standardizzati Z=zscore(X); % Si calcoli la corrispondente matrice degli scostamenti standardizzati; % Si calcoli la matrice delle distanze della città a blocchi dapprima sui % dati originari e quindi sugli scostamenti standardizzati e se ne commenti % il significato. % Si calcoli la matrice delle distanze Euclidee sulle variabili % standardizzate senza far riferimento ai dati standardizzati names={'PIACENZA' 'PARMA' 'REGGIO' 'MODENA'}; Dori=squareform(pdist(X,'cityblock')); Dtableori=array2table(Dori,'RowNames',names','VariableNames',names); disp('Matrice delle distanze della città a blocchi (var originarie)') disp(Dtableori) Dsta=squareform(pdist(Z,'cityblock')); Dtablesta=array2table(Dsta,'RowNames',names','VariableNames',names); disp('Matrice delle distanze della città a blocchi (var standardizzate)') disp(Dtablesta) % Commento: le variabili presentano diversa unità di misura e diverso % ordine di grandezza. La matrice delle distanze Euclidee sulle variabili % originarie segnala, ad esempio, che la distanza tra PC e PR è maggiore % della distanza tra PC e RE, al contrario operando sugli scostamenti % standardizzati si ha il contrario. Chiaramente in presenza di varaibili % con diversa unità di misura e/o diverso ordine di grandezza è sicuramente % preferibile standardizzare i dati (eventualmente in maniera robusta). % Si calcoli la matrice delle distanze Euclidee sulle variabili % standardizzate senza far riferimento ai dati standardizzati Dori=squareform(pdist(X,'seuclidean')); Dtableori=array2table(Dori,'RowNames',names','VariableNames',names); disp('Matrice delle distanze Euclidee sulle variabili standardizzate') disp(Dtableori)