% ESAME SDE 14/12 2021 %% ESERCIZIO I % Generare 100 osservazioni da una distribuzione normale trivariata con % vettore delle medie uguale (2 3 5) e matrice di covarianze (Sigma) % riportata di seguito % X1 X2 X3 % X1 1.00 -0.7 -0.65 % X2 -.7 1.00 0.95 % X3 -0.65 0.95 1.00 % Per replicabilità dei risultati utilizzare rng(100). % Denominare questa matrice X. % % Calcolare la matrice di correlazione in maniera matriciale. % Denominare questa matrice con le prime 3 lettere del proprio cognome. % % Calcolare e mostrare la distanza della città a blocchi e la distanza % Euclidea tra la riga 5 e la riga 15 della matrice X. % % Applicare alla matrice dei dati originaria X, il metodo di clustering % gerarchico del legame medio. Visualizzare il dedrogramma. % Tagliare il dendrogramma in modo da formare 3 gruppi. % Visualizzare l'assegnazione delle unità ai diversi gruppi tramite la % funzione spmplot. Commentare i gruppi che sono stati ottenuti. % % Esercizio I soluzione rng(100); Sigma=[1 -0.7 -0.65; -0.7 1 0.95; -0.65 0.95 1]; mu=[2;3;5]; n=100; % X è la matrice dei dati che contiene un campione di 100 realizzazione % dalla distribuzione normale trivariata X=mvnrnd(mu,Sigma,n); % Matrice di correlazione in maniera matriciale Z=zscore(X); Ria=Z'*Z/(n-1); disp('Matrice di correlazione campionaria') disp(Ria) % Distanza Euclidea tra la riga 5 e al riga 15 diff=X(5,:)-X(15,:); dist1=sum(abs(diff)); dist2=sqrt(sum(diff .^2)); disp(['Distanza città a blocchi tra x_5 e x_15: ' num2str(dist1)]) disp(['Distanza Euclidea tra x_5 e x_15: ' num2str(dist2)]) % Applicare alla matrice dei dati originaria X, il metodo di clustering % gerarchico del legame medio. Visualizzare il dedrogramma. % Tagliare il dendrogramma in modo da formare 3 gruppi. % Visualizzare l'assegnazione delle unità ai diversi gruppi tramite la % funzione spmplot. Commentare i gruppi che sono stati ottenuti. tree=linkage(X,'average'); dendrogram(tree,0); % taglio del dendrogramma cutoff=3; idx=cluster(tree,'cutoff',cutoff,'Criterion','distance'); spmplot(X,idx) % Un gruppo di due unità con che presentano valori elevati di X1, valori % bassi di X2 e X3. % Un gruppo di 6 unità con che presentano valori bassi di X1, valori % elevati di X2 e X3. % Un terzo gruppo contenente valori intermedi delle 3 variabili. %% ESERCIZIO II % Caricare il dataset smoke.mat presente dentro FSDA. Costruire la tabella % di contingenza tra le due variabili "profession" e "smoke_frequency". La % variabile profession è qualitativa ed indica il tipo di professione. La % variabile smoke_frequency è qualitativa e si riferisce all'attitudine % verso il fumo. Denominare la tabella di contingenza con le prime 4 % lettere del proprio cognome (senza accenti). Calcolare e commentare % l'indice di Cramer tra queste due variabili, l'indice H e l'indice tauyx. % Effettuare un'analisi delle corrispondenze tra le due variabili di cui % sopra e commentare il grafico. Aggiungere come titolo del grafico il % proprio cognome ed il numero di matricola. Utilizzando la funzione % CorAnaplot costruire il grafico di analisi delle corrispondenze in modo % tale che il colore delle etichette dei punti COLONNA (attenzione punti % colonna non punti riga) sia proporzionale alla comunalità (quota di % inerzia spiegata) di ogni punto. Discutere la differenza in termini di % inerzia spiegata tra i punti colonna "None" e "Medium". load smoke; title('Riani 051485') out=CorAna(smoke,'datamatrix',true); Rian=out.Ntable; % Calcolo indici V, H e tauyx outind=corrNominal(Rian); %L'associazione misurata con Cramer è pari al 17 per cento del valore %massimo possibile. La riduzione dell'eterogeneità misurata tramite tauyx %oppure Hyx è pari al 3 per cento circa. Gli intervalli di confidenza non %contengono il valore 0 di conseguenza la relazione tra la professione e %l'atteggiamento verso il fumo è significativa. disp(['Indice Hyx:' num2str(outind.Hyx(1))]) disp(['Indice tauyx:' num2str(outind.tauyx(1))]) plots=struct; plots.ColorMapLabelCols='CntrbDim2In'; CorAnaplot(out,'plots',plots) % Il punto colonna None presenta un'inerzia spiegata maggiore di Medium. % Entrambi i punti tuttavia, hanno una comunalità vicina ad 1. out.OverviewCols(["None","Medium"],["CntrbDim2In_1","CntrbDim2In_2"]) % Quota di inerzia spiegata dalle prime due dimensioni latenti di % "None","Medium" disp('Quota di inerzia spiegata dalle prime due dimensioni latenti dei punti colonna "None","Medium"') disp(sum(out.OverviewCols{["None","Medium"],["CntrbDim2In_1","CntrbDim2In_2"]},2)) %% Domanda facoltativa. % Creare tramite cicli for la matrice che segue % 1 1 1 1 1 1 % 1 2 2 2 2 2 % 1 2 3 3 3 3 % 1 2 3 4 4 4 % 1 2 3 4 5 5 % 1 2 3 4 5 6 % Mostrare questa funzione nella command window tramite istruzione disp. % L'elemento i,j è uguale al minimo tra i e j n=6; A=zeros(n,n); for i=1:n for j=1:n A(i,j)=min([i,j]); end end % oppure Achk=gallery("minij",6); %% ESERCIZIO III % Creare una nuova funzione (denominata ipotenusa.m) che dati come argomenti di % input la lunghezza dei 2 cateti di un triangolo rettangolo, applichi la formula di % Pitagora per calcolare l'ipotenusa % Per testare se la funzione ipotenusa funziona. ipo=ipotenusa(3,4); function ipo = ipotenusa(a,b) ipo = sqrt(a^2+b^2); end