echo off; cla; clear; format; hold off;
'TCV uloha 3, priklad 2'
%---- ZADANI C.102 -----------------------------------

data102 = [
   0.621
   1.053
   0.867
   2.126
  -1.507
   0.118
   0.534
   0.578
  -1.938
  -0.769
   0.254
   0.246
  -0.272
  -0.788
   1.911
   0.621
   0.958
  -1.045
  -0.431
   0.312
  -0.032
  -0.685
  -2.225
  -0.664
  -2.873
   3.280
   0.733
  -0.558
   1.535
   2.346
  -0.206
  -3.251
  -0.473
   0.055
   1.049
  -0.658
  -0.188
  -1.132
  -0.680
  -0.419
  -0.244
  -1.529
  -0.615
  -0.300
  -0.932
   2.220
   2.991
   3.360
  -1.714
  -1.785
   1.023
  -0.826
  -1.634
  -0.414
  -1.043
   0.663
  -1.582
  -0.232
   2.086
  -3.617
];

data = data102;
n = size (data,1);


% ------------------  1  --------------------
% -------------------------------------------


%prumerny uzaver:
prumer = mean (data)

%median:
median = 1/2 * ( data(n/2,1) + data(n/2+1,1) )

%smerodatna odchylka:
smerodatna_odchylka = sqrt ( (sum(data.^2)) / n )


% ------------------  2  --------------------
% -------------------------------------------


interval = 0.6;

%serazeni uzaveru podle velikosti
data = sort (data);

%pocet intervalu
intervalu_min = floor ( min (data) / interval );
intervalu_max = ceil ( max (data) / interval );
intervalu = length (intervalu_min:intervalu_max) - 1;
meze = intervalu_min*interval : interval : intervalu_max*interval;
sloupce = intervalu_min*interval+interval/2 : interval : intervalu_max*interval-interval/2;

%seskupeni uzaveru podle velikosti
cetnost = zeros (1,intervalu);
for uzaver = data'
    for i = intervalu_min:intervalu_max    
        if ( i * interval ) <= uzaver & uzaver < ( (i+1) * interval )
            cetnost ( i+abs(intervalu_min) + 1 ) = cetnost ( i+abs(intervalu_min) + 1 ) + 1;
        end
    end
end

%Vypocet reltivni cetnosti
relcetnost = cetnost / n;

%Vykresení histogramu pro relativni cetnosti
figure(1)
hold on;
bar ( sloupce , relcetnost , 1 )


% ------------------  3  --------------------
% -------------------------------------------


%Normalni rozdeleni pro intervaly uzaveru
normpdf = normpdf ( sloupce , 0, smerodatna_odchylka ) * interval;
plot ( sloupce , normpdf , '+-r' )


% ------------------  4  --------------------
% -------------------------------------------


% a) Vyneseni 1 sigma okoli
okoli = (  (1-normpdf).*normpdf / n  ).^(1/2);
normpdf_up = normpdf + okoli*t;
normpdf_down = normpdf - okoli*t;
plot ( sloupce , normpdf+okoli , '--g' )
plot ( sloupce , normpdf-okoli , '--g' )


% ------------------  5  --------------------
% -------------------------------------------

% Cyklus pro jednotlive t-okoli 
for t=[ 1 , 1.5 , 2 , 2.5 ]
    vyhovuje=0;
    % Cyklus pro jednotlive intervaly uzaveru 
    for x=1:intervalu
        % Inkrementace úspìšnosti
        if normpdf_down(x) < relcetnost(x) & relcetnost(x) < normpdf_up(x)
            vyhovuje=vyhovuje+1;
        end   
    end
    % Výpis výseldkù pro jednotliva t
    t
    uspesnost_v_procentech=round(100*vyhovuje/intervalu)
end


% ------------------  6  --------------------
% -------------------------------------------

%Teoreticka CDF:
normcdf = normcdf ( meze , 0, smerodatna_odchylka ) * n;

%Skutecna CDF:
cdf(1)=0;
for x = (1:intervalu)
    cdf(x+1)=sum (cetnost(1:x));
end

%Výpoèet sigma okolí pro normcdf
okoli_cdf = ((n-normcdf).*normcdf/n).^(1/2);
cdf_down = normcdf-okoli_cdf;
cdf_up = normcdf+okoli_cdf;

%Vykreslení grafu
figure(2)
hold on;
plot (meze, cdf, '-b')
plot (meze, normcdf, '+-r')
plot (meze, normcdf+okoli_cdf , '--g' )
plot (meze, normcdf-okoli_cdf , '--g' )



% výpoèet úspìšnosti sèítaných èetností
vyhovuje=0;
for x=(1:intervalu+1)
    if cdf(x) > cdf_down(x) & cdf(x) < cdf_up(x)
        vyhovuje=vyhovuje+1;
    end
end

uspech_v_procentech_cdf = round(100*vyhovuje/(intervalu+1))

