clear;
% Dušan Kokosík, 317 484, 2.ročník Bc štúdia, 3ZEH20

data = sort(importdata('data01.txt'));
k = 7; % pocet tried
u = 1.96; % pri 5%
N = length(data);
minimum = min(data);
maximum = max(data);

R = maximum - minimum; % rozsah
h = ceil(R/k*100)/100;

% Rozdelenie do tried
for i=1:k    
    n_j(i,1) = length(find((minimum+h*(i-1))<=data & data<(minimum+h*i)));
    p_j(i,1) = n_j(i,1)/N;
end
N_j(1,1) = n_j(1,1);
M_j(1,1) = p_j(1,1);
for i=2:k
    N_j(i,1) = N_j(i-1,1) + n_j(i,1);
    M_j(i,1) = M_j(i-1,1) + p_j(i,1);
end

% Bodovy odhad pre strednu hodnotu
stredna_hodnota = 0;
for i=1:k
    x_j(i,1) = (minimum+h*(i-1) + minimum+h*i)/2;
    stredna_hodnota = stredna_hodnota + x_j(i,1)*n_j(i,1);
end
stredna_hodnota = stredna_hodnota/N;

% Bodovy odhad pre rozptyl
rozptyl = 0;
for i=1:k
    rozptyl = rozptyl + n_j(i,1)*(x_j(i,1)-stredna_hodnota)^2;
end
rozptyl = rozptyl/(N-1);

% Bodovy odhad pre smerodajnu odchylku
smerodajna_odchylka = sqrt(rozptyl);

% Intervalovy odhad strednej hodnoty pre alpha = 5%
dolna_hranica = stredna_hodnota - smerodajna_odchylka/sqrt(N)*u;
horna_hranica = stredna_hodnota + smerodajna_odchylka/sqrt(N)*u;

% Intervalovy odhad pre rozptyl
dolny_rozptyl = (N-1)*rozptyl/chi2inv(0.975,N-1);
horny_rozptyl = (N-1)*rozptyl/chi2inv(0.025,N-1);

% Intervalovy odhad pre smerodajnu odchylku
dolna_odchylka = sqrt(dolny_rozptyl);
horna_odchylka = sqrt(horny_rozptyl);

% Vypisovanie 
for i=1:k
    interval(i,1)=strcat("[",num2str(minimum+h*(i-1)),",",num2str(minimum+h*i),")");
end
T=table(interval,x_j,n_j,p_j,N_j,M_j);

disp(T);
disp("Bodovy odhad pre strednu hodnotu: " + stredna_hodnota);
disp("Bodovy odhad pre rozptyl: " + rozptyl);
disp("Bodovy odhad pre smerodajnu odchylku: "+ smerodajna_odchylka);
disp("Intervalovy odhad: ["+ dolna_hranica +"; "+ horna_hranica +"]");
disp("Intervalovy odhad pre rozptyl: ["+ dolny_rozptyl +"; "+ horny_rozptyl +"]");
disp("Intervalovy odhad pre smerodajnu odchylku: ["+ dolna_odchylka +"; "+ horna_odchylka +"]");