%  _______ single Regressions - Analyse ____ OLS - Schätzer _________
%  _____________________________________________________
%  Bsp.:  Filial-Umsätze ''nur'' in Abh. von Verkaufsfläche (Area) und
clear all;   close all;  clf;
format compact
disp(['°°°°°°°°°°°°°°°°°° S T A R T °°°°°°°°°°°° ',date,' °°°°°°°°°°°'])
fprintf('\n')
% :::::::::::::::::::::::::::::::::::::
Area = [  0.31         0.98         1.21         1.29         1.12         1.49 ...
             0.78         0.94         1.29         0.48         0.24         0.55 ];
Rev = [  2.93         5.27         6.85         7.01         7.02         8.35 ...
            4.33         5.77         7.68         3.16         1.52         3.15];
n = length(Area);
% ::::::::::::::: Erzeuge X - Matrix der unabh. Inputs :::::::::::::::
vec1 = ones(1,n);
X   = [vec1; Area]';                                 % <-Achtung: 1. Spaltervektor =1
y   = [Rev];
% :::::::::::::::::: Mean & Abweichungs-Quadrate :::::::::::::.
xMi = 1/n*[vec1*Area'];                           % x-mean!
xAbw = Area'-xMi;                                  % single Abweichgn.
xxAbw = xAbw'*xAbw;                              % Sum of Abwgs-Quadrate der empir. x-Werte
% ::::::::::::::: OLS Schätzer ::::::::::::::::::::
H = X'*X 
b = inv(H)*X'*y'    
B = X \ y'                                              % check up
% :::::::::::::::::::::::: Regress-Werte ::::::::::::::::::
yFit = X*b;                        
% ::::::::::::::::::::::: Get the Residuals ::::::::::::::
e = y'-yFit
ResDiff  = fix(sum(e))                              % Sum of Residuals must be ''Null''
ResSum = vpa(sum(e),5)                        % Sum of Residuals must be ''Null''
% ::::::::: Logical - Query ::::::::::::::::::
if ResDiff == 0                                   % <<===  wenn ich ResDiff nehme, klappt's
    disp(' >>>> Keep Moving <<<< ')
else 
    disp(' >>>> bad fitting or Error <<<< ')
    return
end
% :::::::::::::::::::::: Std.-Fehler der Regression ''Se'' :::::::::::::::::
E   = e'*e
Se = sqrt(E / (n-2))
% ::::::::::::::::::::::::::::::Std.-Fehler der Coeffs :::::::::::::::::::::
Hinv = inv(H);
sbo = Se*sqrt(Hinv(1))
sb1 = Se*sqrt(Hinv(4))
% :::::::::::::::::::::::::::::::: Test - Parameter: tbo , tb1 :::::::::::::::::
tbo = b(1)/sbo
tb1 = b(2)/sb1
% ::::::::::::::::::::::: Bestimmtheitsmaß R² :::::::::::::
yy = y*y';                                                             % = Sum(y²)
yMi = 1/n*[vec1 * y'];                                             % y-mean!
RR1 = vpa(1-(E / (yy-n*yMi^2)),5)
% :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
subplot(121)
      plot (Area, Rev, 'o', 'linewidth', 2);
      xlabel('\bf Verkaufsfläche Tsd. m²')
      ylabel('\bf Jahresumsatz  Mio. €')
      title('\bf Filial - Umsätze ')
      hold on
      grid on       
      plot(Area, yFit , 'r-', 'Linewidth', 1.5)
      pause(1)
      t = 1.812;                                                   % t-Value Student-Distr.,95%,2-sided
      plot(Area, yFit + t * Se, ':', ...
             Area, yFit - t * Se, ':','Linewidth', 1.5)
