%% Test esercizio % Il foglio dati del file stand.xlsx contiene informazioni su 25 modelli di % home theatre. % 1) Costruire la matrice degli scostamenti standardizzati % utilizzando la funzione zscore. % Verificare che il risultato ottenuto sia uguale a quello che si ottiene utilizzando le funzioni % mean e std. % 1) Per ciascuna delle 3 variabili calcolare % la varianza campionaria (corretta) e verificare il risultato % tramite l'implementazione manuale % 3) calcolare gli indici di asimmetria e % curtosi (corretti) usando le formule di Matlab % skewness e kurtosis (verificare il risultato tramite implementazione % manaule). Per le formule si vedano le slide e/o il libro di statistica % Milioli Riani Zani (2019) p. 176 e p. 189 % 4) Calcolare i MAD normalizzati (ossia 1.4826*Me(|xi-Me(X)|)) per ognuna % delle 3 variabili. % Interpretare il MAD del prezzo. % 5) Standardizzare i dati in maniera robusta % utilizzando le mediane ed i MAD. % 6) Verificare che il risultato ottenuto coincide con quello che si % ottiene applicando la funzione zscoreFS dell'FSDA toolbox. % 7) Modificare la prima riga della matrice dati % imputando il valore 10000. Confrontare la standardizzazione % robusta con quella non robusta. Commentare i risultati ottenuti %% Controllo il modo di visualizzare i dati % L'istruzione che segue specifica il tipo di formato di visualizzazione dei % dati (shortG utilizza 5 cifre, il default è format short 4 cifre decimali dopo % la virgola) % Questa istruzione non è assolutamente necessaria per la risoluzione % dell'esercizio format shortG %% Soluzione % caricamento dei dati dentro MATLAB X = readtable("stand.xlsx", 'Sheet','dati','range','A1:D26','ReadRowNames',true); % Osservazione: nelle vecchie versioni di MATLAB era necessario anche % aggiungere l'istruzione % ,'Format','Auto'); % Definisco la matrice Xd come il contenuto della table X in formato double % (ossia contentente solo i numeri dentro X e senza i nomi di riga e % colonne) Xd=X{:,:}; %% 1) Costruire la matrice degli scostamenti standardizzati % utilizzando la funzione zscore. Z=zscore(Xd); % Calcolo delle medie campionarie disp('Media campionarie') medie=mean(Xd); disp(medie) % Calcolo degli scostamenti quadratici medi corretti disp('sigma_corr') scorr=std(Xd); disp(scorr); %% Verificare che il risultato ottenuto sia uguale a quello che si ottiene utilizzando le funzioni % mean e std. Zchk=(Xd-medie)./scorr; %% Calcolo delle varianze campionarie disp('Varianze campionarie corrette') varianze=var(Xd); disp(varianze) n=size(Xd,1); % Implementazione manuale delle varianze disp('Implementazione manuale delle varianze') varc=sum((Xd-mean(Xd)).^2)/(n-1); disp(varc); %% 3) calcolare gli indici di asimmetria e % curtosi (corretti) usando le formule di Matlab % skewness e kurtosis % Calcolo degli indici di asimmetria disp('Indici di asimmetria (calcolati tramite la formula skewness)') % Il secondo argimento di skewness consente di specificare che vogliamo la % versione corretta (non distorta) dell'indice skauto=skewness(Xd,0); disp(skauto) % Indici di skewness calcolati manualmente disp('Indici di asimmetria (calcolati manualmente)') skman=(n/((n-1)*(n-2)))*sum(Z.^3,1); disp(skman) % Calcolo degli indici di curtosi disp('Indici di curtosi (calcolati tramite la funzione kurtosis)') % Il secondo argomento di kurtosis consente di specificare che vogliamo la % versione corretta (non distorta) dell'indice % Osservazione: i valori che calcola MATLAB sono uguali a quelli di Excel +3 kuauto=kurtosis(Xd,0); disp(kuauto) disp('Indici di curtosi (calcolati manualmente)') kuman=((n+1)*n)/((n-1)*(n-2)*(n-3))*sum(Z.^4,1)-3*(n-1)^2/((n-2)*(n-3))+3; disp(kuman) %% Standardizzazione dei dati in maniera robusta % Calcolo degli indici MAD (normalizzati) disp(' Calcolo degli indici MAD (normalizzati)') madnorm=1.4826*mad(Xd,1); disp(madnorm) Zrob=(Xd-median(Xd))./madnorm; % Standardizzazione tramite mediana e MAD (implementazione manuale) disp('Standardizzazione robusta (implementazione manuale)') disp(Zrob) % Standardizzazione robusta (tramite la funzione zscoreFS dell'FSDA % toolbox). % Osservazione: per installare l'FSDA toolbox dal menu APPS selezionare % "Get More Apps". Nella casella di ricerca "Search for add-ons" digitare % FSDA. disp('Standardizzazione robusta (tramite la funzione zscoreFS)') disp(zscoreFS(Xd)) %% Confronto tra standardizzazione tradizionale e standardizzazione robusta in % presenza di contaminazione % Il contenuto della matrice di double Xd viene copiato in una nuova % matrice di double denominata Xcont Xcont=Xd; % La prima riga di Xcont viene contaminata con il valore 10000 Xcont(1,:)=10000; disp('Standardizzazione tradizionale (dati contaminati)') disp(zscore(Xcont)) % Tutti i valori sono negativi tranne il primo (per soddisfare il vincolo % che le medie siano 0) disp('Standardizzazione robusta (dati contaminati)') disp(zscoreFS(Xcont)) % La standardizzazione robusta non risente del valore anomalo (prima riga % della matrice dei dati).