bsp_5_4.m

% Beispiel für Kap 5.4
%% Biegefestigkeit von Querlenkern
mu = [480, 470, 480, 490];
sigma = 20;
ni = [12, 10, 8, 9];
n = length(ni);
nmax = max(ni);
rng(42);  % For reproducibility
xij = normrnd(ones(nmax,1)*mu, sigma, nmax, n);
for I=1:n
  xij(ni(I)+1:end,I) = NaN;
end
fprintf('%6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n', xij);

%% test all pairs with al=5%
al = 0.05;
fprintf('\n2-sample t-tests:\n');
for I = 1:(n-1)
  for J = (I+1):n
    % direkt mit STB-Funktion
    [h, p] = ttest2(xij(:,I), xij(:,J), 'Alpha', al);
    fprintf('  (%1d,%1d): %6.4f\n', I,J,p);
  end
end

%% test al with Bonferroni-Holm
alloc = al/6    % zu klein selbst für (2,4)

%% jetzt mit Varianzanalyse
xqi = mean(xij, 'omitnan')
N = sum(ni);
xq = sum(sum(xij, 'omitnan'))/N
Y1 = sum(sum((xij - ones(nmax,1)*xqi).^2, 'omitnan'))/sigma^2
Y2 = ((xqi - xq).^2)*ni'/sigma^2
T = (Y2/(n-1))/(Y1/(N-n))
al = 0.05;
c = finv(1-al, n-1, N-n)
pW = 1-fcdf(T, n-1, N-n)

% komplett mit Matlab-Test
[p,tbl] = anova1(xij, [], 'off') % keine Plots, tbl/F = T, tbl/Prob>F = pW

%% und schließlich Kruskal-Willis-Test
N = sum(ni);

liste = xij(:);               % xij als 1d-Vektor
[~, idx] = sort(liste);       % sortierte Indizes 
raenge = (1:length(liste))';
[~, idx2] = sort(idx);    % idx2 = inverse Sortierung
rangMat = reshape(raenge(idx2), size(xij));  % raenge sortieren und umordnen
rangMat(rangMat > N) = NaN

rqi = mean(rangMat, 'omitnan')
T = 12/(N*(N+1))*(rqi.^2)*ni' - 3*(N+1)
al = 0.05;
c = chi2inv(1-al, n-1)
pW = 1 - chi2cdf(T, n-1)

% komplett mit Matlab-Test
[p, tbl] = kruskalwallis(xij, [], 'off')