% DOMANDA 1 % Sia data la tabella che segue % % POP SUP DENS ALT % _____ ______ ____ ___ % ANDRIA 99307 402.89 246 151 % AREZZO 99258 384.7 258 296 % UDINE 99051 57.17 1733 113 % % Dopo aver standardizzato i dati calcolare la matrice delle distanze % euclidee e citiblock. Inserire le distanze in una table denominata con le prime ter lettere del proprio cognome % che contenga come nomi delle righe e delle colonne le 3 città. X=[99307 402.89 246 151 99258 384.7 258 296 99051 57.17 1733 113]; Xtilde=zscore(X); Deuclid=squareform(pdist(Xtilde)); Dcity=squareform(pdist(Xtilde,'cityblock')); nomicitta = {'ANDRIA','AREZZO','UDINE'}; DeuclidTable=array2table(Deuclid,'RowNames',nomicitta,'VariableNames',nomicitta); DcityTable=array2table(Dcity,'RowNames',nomicitta,'VariableNames',nomicitta); disp('Matrice delle distanze Euclidee') disp(DeuclidTable) disp('Matrice delle distanze cityblock') disp(DcityTable) % Città con la più alta distanza: Udine e Arezzo % Città più simili: Arezzo e Andria %% Domanda 2 % Caricare in memoria la table di dimensione 200x6 contenente le % caratteristiche di 200 banconote tramite l'istruzione % load('swiss_banknotes'); % Calcolare e commentare l'indice di curtosi per la prima variabile. % Dopo aver standardizzato i dati, applicare la cluster analysis utilizzando % il metodo gerarchico del legame medio. % Rappresentare il dendrogramma. Tagliare il dendrogramma in modo da % formare 2 gruppi. Rappresentare graficamente l'allocazione delle unità ai % 2 gruppi che sono stati % ottenuti tramite la matrice dei diagrammi di dispersione. load('swiss_banknotes'); Xtable=swiss_banknotes; X=swiss_banknotes{:,:}; % Calcolare e commentare l'indice di curtosi per la prima variabile. disp("Indice di curosi per la prima variabile") disp(kurtosis(X(:,1))) % Commento: code leggermente più pesanti % curva leptocurtica, cioè più "appuntita" di una normale. % Standardizzazione % Xst matrice degli scostamenti standardizzati (formato array) Xst=zscore(X); % Xstable matrice degli scostamenti standardizzati (formato table) Xsttable=Xtable; Xsttable{:,:}=Xst; out=linkage(Xst,'average'); dendrogram(out); title('Dendrogramma basato sul metodo del legame medio') ylabel('Livelli di distanza con cui avviene l''aggregazione') % Taglio il dendrogramma in modo da formare 2 gruppi idx=cluster(out,'Cutoff',4.8,'criterion','distance'); figure spmplot(Xsttable,idx); % Ovviamente questa classificazione non è ragionevole. Ci sono 199 unità % che sono incluse in un gruppo e una unità che va a formare % il rimanente gruppo. %% Domanda 3 % Data la seguente tabella di contingenza % farmaco \Effetto_terapia no forse Sì % farmaco A 36 49 15 % farmaco B 24 61 13 % farmaco C 34 47 19 % % Calcolare gli indici di associazione tra il tipo di farmaco e l'effetto % della terapia. Commentare i risultati. % Implementare manualmente il test Chi2 ed il relativo p-value. % Confrontare il risultato con quello che si ottiene applicando la funzione % corrNominal.m % Effettuare l'analisi delle corrispondenze e commentare i % risultati. Qual è il farmaco più efficace e quello meno efficace? N=[ 36 49 15 24 61 13 34 47 19]; Ntable=array2table(N,'RowNames',{'farmaco A' 'farmaco B' 'farmaco C'},... 'VariableNames',{'no','forse','sì'}); outCA=CorAna(Ntable); out=corrNominal(Ntable); % Tutti gli intervalli di confidenza dei diversi indici di associazione non % risultano significativi (il loro intervallo di confidenza contiene il % valore 0). Conclusione: non c'è alcuna evidenza statistica tra il tipo % di farmaco e l'effetto della terapia. Il grafico di analisi delle % corrispondenze mostra che i punti riga e colonna sono collocati vicino al % centroide. Il farmaco A è più vicino alla modalità no ed il farmaco C % alla modalità sì. La relazione tuttavia non è statisticamente % significativa. Il p value del test Chi2 conferma la non significatività % di questa associazione- % Valore del test Chi2 e relativo pval tramite la funzione corrNominal. % Valore del test chi2 e p-value associato disp(['Valore del test Chi2:' num2str(out.Chi2)]) disp(['pval del test Chi2:' num2str(out.Chi2pval)]) % Implementazione manuale indice Chi2 e pval % Calcolo della tabella delle frequenze teoriche % sumc = frequenze marginali di colonna sumc=sum(N,1); % sumr = frequenze marginali di riga sumr=sum(N,2); n=sum(N,"all"); Ntheo=(sumr*sumc/n); % Calcolo indice Chi2 Chi2=sum(((N-Ntheo).^2)./Ntheo,'all'); % Calcolo p-value della statistica di Pearson % La statistica di Pearson si distribuisce come una v.c. Chi2 con (r-1)(c-1) % gradi di libertà. In questo esempio dato che r=c=3; gdl=4; pval=1-chi2cdf(Chi2,gdl); disp('Implementazione manuale test chi2 e del relativo pvalue') disp(['Valore del test Chi2:' num2str(Chi2)]) disp(['Il pvalue del test è: ' num2str(pval)]) % Commento: accetto l'ipotesi nulla di assenza di relazione tra tipo di % farmaco e effetto della terapia