%% LABORATORIO 2 - METODI STATISTICI PER LA BIOINGEGNERIA %% Direttive per la gestione del workspace e delle figure clearvars % - cancella tutte le variabili dal workspace clc % - Clear Command Window - cancella la command window close all % - chiude tutte le figure aperte in precedenza %% Esercizio 5 %% Caricamento dati load("data_IVGTT.mat") %% Conversione dati - da matrici a tabelle % CERCO MANUALMENTE NELLE VARIABILI QUELLE CHE MI INTERESSANO % Salvataggio delle sole variabili di interesse % - estraggo le variabili di interesse Gss_IVGTT (INDICE 7) e Gb_IVGTT % (INDICE 11) subset_data = raw_data(:,[7 10]); % - estraggo le etichette di interesse Gss_IVGTT e Gb_IVGTT subset_labels = labels([7 10]); %% Uso del find close all % voglio trovare tutti i soggetti i cui campioni di Glucosio (corrispondenti % allo stato stazionario dell'esperimento IVGTT) con valori superiori a 90 [mg/dl] indGssHigh = find(subset_data(:,1)>90); figure(1) % Mostro anche i valori di Glucosio basale degli stessi soggetti boxplot(subset_data(indGssHigh,:),'Labels',subset_labels) % Alternativa - invece di utilizzare find, utilizzo un array booleano % (binario) che mi permette di selezionare i dati con operatori % unari/binari (NOT, AND, OR, XOR) maskGssHigh = subset_data(:,1)>90; figure(2) boxplot(subset_data(maskGssHigh,:),'Labels',subset_labels) title('Variables of Subjects with Gss > 90 ml/dl') figure(3) boxplot(subset_data(not(maskGssHigh),:),'Labels',subset_labels) title('Variables of Subjects with Gss <= 90 ml/dl') %% Esercizio 6 . MEAN, MEDIAN, MODE of the variable of interest stats_data=struct(); % stats_data stats_data.mean=mean(raw_data(:,7)); stats_data.median=median(raw_data(:,7)); stats_data.mode=mode(raw_data(:,7)); for ii=1:size(subset_data,2) stats_data.mean(ii)=mean(subset_data(:,ii)); stats_data.median(ii)=median(subset_data(:,ii)); stats_data.mode(ii)=mode(subset_data(:,ii)); end %% % 4. Probability density estimate % Calculate the probability density estimate (ksdensity) and plot it data.Gss_IVGTT = raw_data(:,7); data.Gb_IVGTT = raw_data(:,10); %GSS figure(2), subplot(221), h=histogram(data.Gss_IVGTT) %istogramma con i valori subplot(222), histogram(data.Gss_IVGTT,'Normalization','probability') %gli stessi valori si ottengono facendo h.Values/sum(h.Values) subplot(223), histogram(data.Gss_IVGTT,'Normalization','pdf') %istogramma i cui valori precendenti sono stati normalizzati pesando l'ampiezza del bin %ossia % h=histogramvariable_Gss); % norm1=h.Values/sum(h.Values); % norm2=h.Values/sum(h.Values)/h.BinWidth; [f,xi] = ksdensity(data.Gss_IVGTT); subplot(224), histogram(data.Gss_IVGTT,'Normalization','pdf') , hold on, plot(xi,f,'-g','LineWidth',2) %saveas(figure(2), fullfile("figures", "Hist_Glucose.png")) %Gb figure, subplot(221), h=histogram(data.Gb_IVGTT) %istogramma con i valori subplot(222), histogram(data.Gb_IVGTT,'Normalization','probability') %gli stessi valori si ottengono facendo h.Values/sum(h.Values) subplot(223), histogram(data.Gb_IVGTT,'Normalization','pdf') %istogramma i cui valori precendenti sono stati normalizzati pesando l'ampiezza del bin [fb,xib] = ksdensity(data.Gb_IVGTT); subplot(224), histogram(data.Gb_IVGTT,'Normalization','pdf') , hold on, plot(xib,fb,'-g','LineWidth',2) %% % 5. Domanda: Le due variabili possono essere descritte con una funzione di % densita' di probabilita' normale? %% Test di lillefors (evoluzione del test di Kolmogorov-Smirnov [h,p]=lillietest(data.Gss_IVGTT); % h=0 p>0.05 -> h0 accettata - Gss_IVGTT appartiene ad una distribuzione % normale [h,p]=lillietest(data.Gb_IVGTT); % h=1 p<0.05 -> h0 rifiutata - Gb_IVGTT NON appartiene ad una distribuzione % normale