% Procedura OUTPUT WLS
% ********************
  clear  INVX YVYR
% YDEP [YPOZ] ... vektor zavisle promenne
% XIND [XPOZ] ... matice nezavisle promennych
% BETA [BPAR] ... vektor regresnich koeficientu

  TBET=zeros(1,nvar);
  nob1=nobs-1;
%  
% ODHAD REGRESNICH KOEFICIENTU METODOU OLS [BETA]
  XMAT=XIND'*XIND;
  YVEK=XIND'*YDEP;
  INVX=inv(XMAT);
  BETA=INVX*YVEK;

% VYROVNANE HODNOTY [YVYR]
  YVYR=XPOZ*BETA;

% ODHADNUTA REZIDUA [URTR] A SOUCET JEJICH CTVERCU [UR2TR]
  URTR=YPOZ-YVYR;          % Nutno pracovat s YPOZ ,YVYR !
  UR2TR=0;
  for I = 1:nobs,
   UR2TR=UR2TR+URTR(I)*URTR(I);
  end

% ODHAD REZIDUALNIHO ROZPTYLU [SIGMA2]
  SIG2=UR2TR/nob1;
  SIGT=sqrt(SIG2);
  
% SMERODATNE ODCHYLKY PARAMETRU [SBET] A T-STATISTIKY [TBET]
  XMAX=XPOZ'*XPOZ;
  INXX=inv(XMAX);  
  DIAX=diag(INXX);
  SBET=SIGT*sqrt(DIAX);
  for J = 1:nvar,
   TBET(J)=BETA(J)/SBET(J);
  end
   
% ZOBRAZENI MEZIVYSLEDKU [parametry]
  disp('   regresni parametry')
  disp([BETA'])
  disp('   smerodatne odchylky parametru')
  disp([SBET'])
  disp('   t-statistiky parametru')
  disp([TBET]) 

% KOEFICIENT DETERMINACE [R2] a REKTIFIKOVANY R2 [RR2]
  YPR=mean(YPOZ);
  YDEV=YPOZ-YPR;
  YDEV2=YDEV'*YDEV;
  R2=1.-UR2TR/YDEV2;
  RR2=1-(1-R2).*nob1/(nobs/nvar);

% DURBIN-WATSONUV KOEFICIENT [DW] a von NEUMANNUV POMER [VN] 
  for I = 1:nob1,
   URTRD(I)=URTR(I+1)-URTR(I);
  end
  URTRD2=URTRD*URTRD';
  DW=URTRD2/UR2TR;
  VN=DW*NOBD/(nobs-nvar);
  
% DURBINOVA h-STATISTIKA [DH]
  EVB=SBET(2)*SBET(2);
  DH=(1.-DW/2)*sqrt(nobs/(1-nobs*EVB));
  
% ZOBRAZENI MEZIVYSLEDKU [vystiznost modelu]
  disp('   rezidualni chyba  koef.determinace   rektif.R2   ')
  disp([   SIGT                 R2                RR2 ])

% ZOBRAZENI CHARAKTERISTIK PRIPADNE AUTOKORELACE REZIDUI
  disp('   Durbin-Watson  von Neumannuv pomer   Durbinovo h ')
  disp([    DW                  VN                 DH  ])

% GRAF pozorovanych, vyrovnanych a rezidualnich hodnot [YPOZ,YVYR,UREZ]
%  
  figure
  plot(T,YPOZ,T,YVYR,T,URTR)
  legend('pozorovane','vyrovnane','rezidua')
  switch EST
   case 1, title('Kvantifikace OLS  : Pozorovane a vyrovnane hodnoty, rezidua rovnice')
   case 2, title('Kvantifikace WLS  : Pozorovane a vyrovnane hodnoty, rezidua rovnice')
   case 3, title('Kvantifikace GLS  : Pozorovane a vyrovnane hodnoty, rezidua rovnice')
   otherwise, title('Kvantifikace WLS3  : Pozorovane a vyrovnane hodnoty, rezidua rovnice')
  end
%  return
