%------------------------------------------------------------------------------- % Primo laboratorio 24 Settembre 2002 % Statistica Descrittiva. % help stats per informazioni sul toolbox statistico. %------------------------------------------------------------------------------- %------------------------------------------------------------------------------- % generazione di dati casuali % numero dei dati n = 100; % vettore delle medie: mu = [20 24 25]; % matrice di varianze e covarianze sigma = [9 -2 -1; -2 6 2; -1 2 3] % sigma = % % 9 -2 -1 % -2 6 2 % -1 2 3 % generiamo n osservazioni da un vettore normale tridimensionale data = ceil (mvnrnd (mu, sigma, n)); M = data (:,1); % estraggo la 1a colonna (Matematica) F = data (:,2); % estraggo la 2a colonna (Fisica) I = data (:,3); % estraggo la 3a colonna (Informatica) %------------------------------------------------------------------------------- %------------------------------------------------------------------------------- % Indici di posizione (min, max, mean, median) min (M) max (M) mean (M) % = sum(M)/n median (M) % N.B. si puo' anche dare in argomento una matrice; si ottiene un vettore mean (data) median (data) % Indici di dispersione (range, var, std, prctile, iqr) range (M) % = max(M)-min(M) var (M) % varianza normalizzata con n-1: sum((M-mean(M)).^2)/(n-1) var (M, 1) % varianza normalizzata con n std (M) % dev. std normalizzata con n-1 = sqrt(varianza) std (M, 1) % dev. std normalizzata con n % anche qui si puo' anche dare in argomento una matrice: var (data) prctile (data, [25,50,75]) % fornisce i percentili organizzati in matrice: % colonna 1 il percentile 25, ecc. prctile (M, [0:100]); % fornisce tutti i percentili plot (prctile (M, [0:100])); Q2 = prctile (data, 50); % Coincide con la mediana: median (data); % distanza interquartile iqr (data) % coincide con Q3-Q1: Q1 = prctile (data, 25); Q3 = prctile (data, 75); Q3-Q1 %------------------------------------------------------------------------------- %------------------------------------------------------------------------------- % istogrammi e grafici % crea il vettore delle frequenze assolute hist (data) % Istogramma di tutti e tre i vettori su un unico grafico. % Di default, le osservazioni sono ripartire in 10 classi % Nel nostro caso e' piu' ragionevole una classe per ogni voto: fa = hist (M, range(M)+1) % produce l'istogramma e salva i valori % nel vettore fa. fr = fa/n; % frequenze relative % grafici della distribuzione delle frequenze assolute voti = [min(M):max(M)]'; % si traspone (') perche' fa e' un vettore colonna. plot (voti, fa) % grafico bar (voti, fa) % diagramma a barre. Il primo argomento deve essere % un vettore di dati numerici. pareto (fa, voti)% pareto mostra solo i 10 maggiori valori in ordine % decrescente. Sovrappone il grafico di % frequenza cumulativa. NomeVoti = int2str (voti) % genera un vettore di stringhe pareto(fa, voti) % si ottiene lo stesso diagramma di prima. NomeVoti = strvcat ('quindici', 'sedici', 'diciassette', 'diciotto', ... 'diciannove', 'venti', 'ventuno', 'ventidue', 'ventitre''', ... 'ventiquattro', 'venticinque', 'ventisei', 'ventisette') pareto (fa, NomeVoti) % Riportiamo le frequenze assolute delle tre sequenze di voti in un % unico grafico. voti2 = [min(F):max(F)]; fa2 = hist (data(:,2), max(F)-min(F)+1); voti3 = [min(I):max(I)]; fa3 = hist (data(:,3), max(I)-min(I)+1); plot (voti, fa, voti2, fa2, voti3, fa3) % i colori sono nell'ordine % blu, verde, rosso % boxplot delle 3 sequenze:: boxplot (data) %............................................................................... % Calcolo delle frequenze assolute cumulative e grafico. Fa(1) = fa(1); for i = 2:length(voti) Fa(i)=Fa(i-1)+fa(i); end plot (voti, Fa); % Grafico congiunto delle frequenze assolute cumulative: Fa2(1) = fa2(1); for i = 2:length(voti2) Fa2(i)=Fa2(i-1)+fa2(i); end Fa3(1) = fa3(1); for i = 2:length(voti3) Fa3(i)=Fa3(i-1)+fa3(i); end plot (voti, Fa, voti2, Fa2, voti3, Fa3); % Ricavare la moda della prima sequenza. % Crea una matrice con prima colonna i voti e seconda colonna la freq. ass. mat = [min(M):max(M); fa]'; % Ordina le righe, sulla base della seconda componente. smat = sortrows(mat, 2); % la prima componente fornisce il valore della moda moda = smat (length (smat), 1) %............................................................................... %------------------------------------------------------------------------------- %------------------------------------------------------------------------------- % skewness e curtosi sk = skewness (data); % valori prossimi a 0: distribuzione quasi simmetrica k = kurtosis (data); %------------------------------------------------------------------------------- %------------------------------------------------------------------------------- % Analisi congiunta. % matrice di covarianza: l'elemento cov(i,j) e' la covarianza tra % il dato i e il dato j. Sulla diagonale vi e' la varianza. cov (data) % controllare che la diagonale e' uguale a var (data) % La covarianza e' normalizzata con n-1. Per avere quella normalizzata % con n fare: cov (data, 1) % confrontare la diagonale con var (data, 1) % matrice di correlazione: R(i,j) = cov(i,j)/(std(i) * std(j)) R = corrcoef(data) % diagramma di dispersione: % rappresentiamo a coppie i risultati dei due esami scatter(M,F) scatter(M,I) scatter(F,I) Calcoliamo la retta di regressione c = polyfit (M, F, 1) z = polyval (c, M) plot (M, F, '*', M, z) c = polyfit (M, I, 1) z = polyval (c, M) plot (M, I, '*', M, z) c = polyfit (F, I, 1) z = polyval (c, F) plot (F, I, '*', F, z) %-------------------------------------------------------------------------------