load MNPV2003p

% costruisce la matrice D dei dati
% s = sesso (0 = M - 1 = F)
% h = altezza
% w = peso
% a1 = voti di Analisi 1
% a2 = voti di Analisi 2
% f1 = voti di fisica A
% g = voti di Algebra e Geometria
% cd1 = ?
% sede = sede (0 = PV - 1 = MN)
D = [s h w a1 a2 f1 g cdl sede];

disp('Vettore delle medie');mean(D)
disp('Numero di elementi');length(D)
disp('Vettore delle deviazioni standard');std(D)

% costruisce il vettore delle medie
MM = mean(D);

disp('Media dei sessi');ms = MM(1)  % media dei sessi
disp('Media delle altezze');mh = MM(2)  % media delle altezze
disp('Media dei pesi');mw = MM(3)  % media dei pesi

disp('Premi un tasto per continuare...')
pause
disp(' ');disp(' ')

disp('Vettore delle varianze');var=std(D).^2
disp('Varianza dei sessi');vs = var(1)
disp('Varianza delle altezze');vh = var(2)
disp('Varianza dei pesi');vw = var(3)

% vettore delle deviazioni standard
ds = std(D);

disp('Deviazione standard delle altezze');dsh = ds(2)
disp('Deviazione standard dei pesi');dsw = ds(3)

disp('Premi un tasto per continuare...')
pause

% crea l'istogramma dei sessi
figure(1)
hist(s,sqrt(length(h)))

% crea l'istogramma delle altezze
figure(2)
hist(h,sqrt(length(h)))

% crea l'istogramma dei pesi
figure(3)
hist(w,sqrt(length(h)))

disp('Matrice dei coefficienti di correlazione');corrcoef(D)

% matrice delle covarianze)
disp('Matrice delle covarianze');cov(D)

% scatter plot pesi-altezze
figure(10)
hold on % i punti vengono disegnati senza cancelare i precedenti
for i = 1:length(D)
    plot(D(i,2),D(i,3),'*')
end
hold off

% scatter plot sesso-altezze
figure(11)
hold on
for i = 1:length(D)
    plot(D(i,1),D(i,2),'*')
end
hold off

% scatter plot sesso-pesi
figure(12)
hold on
for i = 1:length(D)
    plot(D(i,1),D(i,3),'*')
end
hold off

% d.d.p. delle altezze
figure(20)
hold on
for k =1:length(D)
    x = D(k,2);
    fh = exp(-0.5 * (x - mh)^2 / vh) / (sqrt (2 * pi * vh));
    plot(x,fh,'o')
end
hold off

% d.d.p. dei pesi
figure(21)
hold on
for k =1:length(D)
    x = D(k,3);
    fw = exp(-0.5 * (x - mw)^2 / vw) / (sqrt (2 * pi * vw));
    plot(x,fw,'o')
end
hold off

% conteggio dei maschi
sommaM = 0;
for i=1:length(D)
    sommaM = sommaM + (s(i)==0);
end

% conteggio delle femmine
sommaF = 0;
for i=1:length(D)
    sommaF = sommaF + (s(i)==1);
end

disp('Premi un tasto per continuare...')
pause

% probabilità a priori di sesso = M
Pm = sommaM / length(D) % coincide con 1 - ms

% probabilità a priori di sesso = F
Pf = sommaF / length(D) % coincide con ms

% costruisce il vettore M dei maschi
j = 0;
for i = 1:length(D)
    if (D(i,1) == 0)
       M(j+1,:) = D(i,:);
       j = j+1;
    end
end

% costruisce il vettore F delle femmine
j = 0;
for i = 1:length(D)
    if (D(i,1) == 1)
       F(j+1,:) = D(i,:);
       j = j+1;
    end
end

mwM = mean (M(:,3))  % media pesi dei maschi
vwM = std(M(:,3))^2  % varianza dei pesi dei maschi

% calcolo di fwM (d.d.p. dei pesi dei maschi)
figure(22)
hold on
for k =1:length(M)
    x = M(k,3);
    fwM = exp(-0.5 * (x - mwM)^2 / vwM) / (sqrt (2 * pi * vwM));
    plot(x,fwM,'o')
end
hold off

mwF = mean (F(:,3))  % media pesi delle femmine
vwF = std(F(:,3))^2  % varianza dei pesi delle femmine

% calcolo di fwF (d.d.p. dei pesi delle femmine)
figure(23)
hold on
for k =1:length(F)
    x = F(k,3);
    fwF = exp(-0.5 * (x - mwF)^2 / vwF) / (sqrt (2 * pi * vwF));
    plot(x,fwF,'o')
end
hold off

x = input('Inserire il peso = ')

% calcolo della probabilità se maschio
%figure(24)
%hold on
%for k =1:length(M)
    %x = M(k,3);
    fwM = exp(-0.5 * (x - mwM)^2 / vwM) / (sqrt (2 * pi * vwM))
    %plot(x,fwM,'o')
%end

%figure(25)
%hold on
%for k =1:length(F)
    %x = F(k,3);
    fwF = exp(-0.5 * (x - mwF)^2 / vwF) / (sqrt (2 * pi * vwF))
    %plot(x,fwF,'o')
%end

% calcolo delle probabilità totali
fw = fwM * Pm + fwF * Pf

% calcolo della probabilità di essere maschio dato il peso
PMw = fwM * Pm / fw

if PMw > 0.5, disp('Lo studente è probabilmente maschio con probabilità pari a '),disp(PMw)
end

if PMw < 0.5, disp('Lo studente è probabilmente femmina con probabilità pari a '),disp(1 - PMw)
end

if PMw == 0.5, disp('Non è possibile stabilire il sesso dello studente')
    disp('essendo la probabilità che sia maschio pari a'),disp(PMw)
end


