%% Caricamento dati close all clear X = readtable('ADM2020.xlsx','Sheet','Foglio1','range','A1:B1037'); %% Distribuione di frequenza della variabile Marca Xca=categorical(X.Marca); disp('Distribuzione di frequenze della variabile marca') summary(Xca); subplot(2,1,1) % Grafico a barre histogram(Xca); title('RI485'); % Grafico a torta subplot(2,1,2) pie(Xca); % GRAFICO A TORTA title('RI485'); % Commento: Coke, V e RedBull sono le tre marche più frequenti %% Tabella di contingenza [N,chi2CHK,pvalCHK,labels] =crosstab(X.Parola,X.Marca); % chi2CHK e pvalCHK sono rispettivamente il valore dell'indice chi quadrato % ed il p-value da confrontare con l'implementazione manuale. [r,c]=size(N); % Costruzione della tabella di contingenza in formato table % Dall'array N alla tabella Ntable Ntable=array2table(N,'RowNames',labels(1:r,1),'VariableNames',labels(1:c,2)); disp('Tabella di contingenza tra Parola e Marca') disp(Ntable) %% Calcolo della tabella delle frequenze teoriche % n= numero di unità del campione n=sum(sum(N)); sumc=sum(N,1); sumr=sum(N,2); Ntheo=(sumr*sumc/n); MAR5=array2table(Ntheo,'RowNames',labels(1:r,1),'VariableNames',labels(1:c,2)); disp('Tabella delle frequenze teoriche nel caso di indipendenza') disp(MAR5) %% Calcolo in maniera manuale indice Chi2 e p value Chi2=sum(((N-Ntheo).^2)./Ntheo,'all'); disp(['Indice Chi2:' num2str(Chi2)]) disp('Controllo uguaglianza sulle due implementazioni indice Chi2') disp(isequal(Chi2,chi2CHK)); % Calcolo p value del test = probabilità di ottenere un valore supereriore % a Chi3 nella v.c. chi quadrato con (r-1)*(c-1) ossia 45 gradi di libertà gdl=(r-1)*(c-1); pval=chi2cdf(Chi2,gdl,'upper'); disp('differenze tra le due implementazioni del p-value') disp(pval-pvalCHK); % p value vitualmente uguale a zero===> forte associzione tra le variabili "parola" e % "marca". Rifiutiamo sicuramente l'ipotesi nulla di indipendenza tra le due % variabili ==> Ogni brand è associato ad una o più parole. L'obiettivo % dell'analisi delle corrispondenze è capire quali parole sono associate a % quali marchi. %% calcolo indice Cramer tramite la funzione corrNominal out=corrNominal(N); RIANI=out.CramerV(1,1); disp("Indice di Cramer"); disp(RIANI); %l'indice di Cramer ci dice che l'associazione tra le due variabili della %tabella è pari al 27.67% del valore massimo posssibile. %% Analisi delle corrispondenze outCA=CorAna(N,'Lr',labels(1:r,1),'Lc',labels(1:c,2)); title('Marco Riani 051485') %% Mostro la tabella che contiene i dettagli dell'inerzia spiegata disp(outCA.Summary) % Con le prime due dimensioni latenti arriviamo a spiegare il 97,3% di % variabilità (inerzia) della tabella di contingenza. Ottima riduzione % delle dimensioni. % Il grafico di analisi delle corrispondenze presenta una rappresentazione % 2D molto accurata della posizione dei punti nello spazio originario a (r-1) e (c-1) % dimensioni. % % Commento: % Ci 3 "gruppi" ben precisi: % 1) il brand "Fanta" è associato alle parole Kids e Fun (bambini e % divertimento) % 2) I marchi "Diet Coke", "Pepsi" e "Coke" sono associati prevalentemente alle % parole Relax, Enjoy Life, Teens e Cheers you Up % I marchi "V" e "Red Bull" sono associati alle parole "When Tired", "Picks you % up" e "Energy". % L'angolo tra il gruppo Coke/Pepsi e Redbull è vicino a 90 gradi==> % assenza di relazione. % L'angolo tra il gruppo Coke/Pepsi e Fanta è vicino a 90 gradi==> % assenza di relazione. % L'angolo tra Red Bull/V e Fanta è circa 180 gradi ==> forte relazione % inversa. I marchi Red Bull e V sono visti per adulti. Il marchio Fanta è % associato ai bambini. % La prima dimensione latente quindi è legata in qualche modo all'età, da % adolescenti ad adulti passando da sinistra destra. % % Durante la correzione ho notato con piacere che un gruppo di studenti ha % rilevato una ulteriore cosa che non avevo notato. % Nella seconda dimensione latente "andando dal basso verso l'alto % si può notare come si passa da bevande ad alto contenuto energetico e di zuccheri a una % 'diet coke' con assenza di zuccheri". % % Durante le correzioni del compito ho apprezzato anche ulteriori interpretazioni. % % Il punto più vicino all'origine è CheersYouUp che secondo me, % indipendentemente dall'età, è il motivo principale per cui si beve una % soft drink (mia interpretazione ad libitum) % %% Punti riga dominanti % I punti riga dominanti che più spiegano l'inerzia della prima dimensione % latente sono le parole Kids (42%) e i Fun(20%). disp('Mostro in ordine crescente il contributo dei punti riga') disp('alla spiegazione dell''inerzia della prima dimensione latente') disp(sortrows(outCA.OverviewRows(:,'CntrbPnt2In_1'))) % Osservazione: l'istruzione sortrows non era necessaria %% Ora è arrivato il momento di rilassarsi un poco disp('--------------------------------------------') disp('Per chi si vuole divertire con MATLAB') disp('Provate a digitare nella command fifteen') disp('oppure teapotdemo') disp('Date un''occhiata anche al video') disp('https://www.youtube.com/watch?v=58zTI4Mlk-I') % Infine per chi vuole giocare con la musica provate load handel sound(y) % Mi farebbe piacere che dopo i risultati mi poteste mandare feedback su % cosa posso fare per migliorarmi e/o più in generale per migliorare il % corso. Grazie a tutti.