%% Testo
% 1) Mostrare la funzione di densità della v.c normale standardizzata e la funzione di ripartizione nell'intervallo [-4 4].  Rappresentare le due funzioni in due pannelli separati nello stesso grafico.
% 2) implementare manualmente la densità della normale e confrontare il risultato ottenuto con l'output della funzione normpdf.
% 3) Confrontare la densità normale standardizzata con la densità della v.c. T di student. Inserire nel grafico una legenda che scriva in automatico i gradi di libertà utilizzati.
% 4) Trovare in una v.c. normale standardizzata, in una variabile casuale normale con media 2 e varianza 3 e in una variabile casuale T di student con 6 gradi di libertà:
% a) il valore che lascia alla sua destra il 2.3% di probabilità
% b) la probabilità di ottenere un valore minore di 2.7
% c) la probabilità di ottenere un valore compreso tra -1.5 e 1
%% Soluzione

% Esercizio: mostrare la funzione di densità della v.c normale
% standardizzata nell'intervallo [-4 4] e la funzione di ripartizione
x=-4:0.1:4;
nr=2;
nc=1;
y=normpdf(x,0,1);
subplot(nr,nc,1)
plot(x,y);
title('Funzione di densità')

y1=normcdf(x,0,1);
subplot(nr,nc,2)
plot(x,y1);
title('Funzione di ripartizione')

%


%% Implementazione manuale della funzione di densità normale univariata
mu=0;
sigma=1;
x=-4:0.1:4;
yCHK = exp(-0.5 * ((x - mu)./sigma).^2) ./ (sqrt(2*pi) .* sigma);
disp('Controllo di coerenza ')
isequal(y,yCHK)

%

%% Confronto densità normale standardizzata con densità T di student
x=-4:0.1:4;
% nu = gradi di libertà della T di Student
nu=18;
% lw = linewidth of the plot
lw=2;
y=normpdf(x,0,1);
yt=tpdf(x,nu);
plot(x,y,'LineWidth',lw);
hold('on')
plot(x,yt,'LineWidth',lw);
legend({'Normale' ['Student t con ' num2str(nu) ' gradi di libertà']})

%
% 5) Trovare in una v.c. normale standardadizzata, in una variabile casuale normale con media 2 e varianza 3 e in una variabile casuale T di student con 6 gradi di libertà
% a) il valore che lascia alla sua destra il 2.3% di probabilità

disp('--------------')

mu=0;
sigma=1;
disp('Quantile 0.977 in N(0,1)')
disp(norminv(1-0.023,mu,sigma))

mu=2;
sigma=sqrt(3);
disp('Quantile 0.977 in N(2,3)')
disp(norminv(1-0.023,mu,sigma))

nu=6;
disp('Quantile 0.977 in T(6)')
disp(tinv(1-0.023,nu))


% b) la probabilità di ottenere un valore minore di 2.7

disp('--------------')
mu=0;
sigma=1;
disp('P(X<2.7) in N(0,1)')
disp(normcdf(2.7,mu,sigma))

mu=2;
sigma=sqrt(3);
disp('P(X<2.7) in N(2,3)')
disp(normcdf(2.7,mu,sigma))

nu=6;
disp('P(X<2.7) in T(6)')
disp(tcdf(2.7,nu))

%
% c) la probabilità di ottenere un valore compreso tra -1.5 e 1

disp('--------------')
mu=0;
sigma=1;
disp('P(-1.5<X<1) in N(0,1)')
disp(normcdf(1,mu,sigma)-normcdf(-1.5,mu,sigma))

mu=2;
sigma=sqrt(3);
disp('P(-1.5<X<1) in N(2,3)')
disp(normcdf(1,mu,sigma)-normcdf(-1.5,mu,sigma))

nu=6;
disp('P(-1.5<X<1) in T(6)')
disp(tcdf(1,nu)-tcdf(-1.5,nu))