function [TWald,TpomVer,kvantil,p1,p2,zamitnuti1,zamitnuti2]=test_shody_pp(nij,P0,alfa)
% funkce test_shody_pp provede test dobre shody 
% pro pozorovane a ocekavane cetnosti
% synatxe: 
% [TWald,TPomVer,kvantil,p1,p2,zamitnuti1,zamitnuti2]=test_shody_pp(nij,P0,alfa)
% vstupni parametry:
% nij ... matice pozorovanych cetnosti
% P0 ... matice ocekavanych pravdepodobnosti prechodu
% alfa ... hladina vyznamnosti testu
% vystupni parametry:
% TWald ... testova Waldova statitika
% TPomVer ... testova statistika pomerem verohodnosti
% kvantil ... prislusny kvantil chi-kvadrat rozlozeni
% p1 ... p-hodnota v pripadu Wald. testu
% p2 ... p-hodnota v pripadu testu pomerem verohodnosti
% zamitnuti{1/2} ...=0, kdyz H0 nezamitame
%                   =1, kdyz H0 zamitame{ve Wald.testu/testu pom.verohod.}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
k=size(nij,1);
%najdeme ci - pocet pripadu, kdy je retezec ve stavu i
for i=1:k
    ci(i)=sum(nij(i,:));
end
%odhad matice prechodu P
for i=1:k
    P(i,:)=nij(i,:)/ci(i);
end
for i=1:k
    cipij(i,:)=ci(i)*P0(i,:);
end
if sum(sum((cipij<5)&(cipij>0)))>0
    poruchy_podminek=(sum((cipij<5)&(cipij>0)))'
    error('Nejsou splneny podminky dobre aproximace.')
end;

%vypocet Waldovy statistiky
a=(P-P0).^2;
b=a./P0;
m=find(b==Inf);
b(m)=0;
c=sum(b');
d=ci.*c;
TWald=sum(d);
%vypocet statistiky testu pomerem verohodnosti
l=nij.*log(P./P0);
r=find(l==Inf);
l(r)=0;
TpomVer=2*(sum(sum(l)));

if sum(sum(P0==0))>0
    pij=[P0(P0>0)]';
    s=size(P0,1)^2-length(pij);
    kvantil=chi2inv(1-alfa,k*(k-1)-s);
    %p-hodnota pro Waldovu statistiku
    p1=1-chi2cdf(TWald,kvantil);
    zamitnuti1=(p1<alfa);
    %p-hodnota pro statistiku testu pomerem verohodnosti
    p2=1-chi2cdf(TpomVer,kvantil);
    zamitnuti2=(p2<alfa);
else
    kvantil=chi2inv(1-alfa,k*(k-1));
    %p-hodnota pro Waldovu statistiku
    p1=1-chi2cdf(TWald,kvantil);
    zamitnuti1=(p1<alfa);
    %p-hodnota pro statistiku testu pomerem verohodnosti
    p2=1-chi2cdf(TpomVer,kvantil);
    zamitnuti2=(p2<alfa);
end
end