Uji-t dua sampel menjawab pertanyaan untuk tepat dua kelompok. Ketika ada tiga varietas padi yang harus dibandingkan, memanggil ttest2 tiga kali (A-B, A-C, B-C) pada alpha 0.05 ternyata menaikkan peluang kesalahan tipe I gabungan hampir tiga kali lipat — masalah multiple comparisons. Analisis variansi (ANOVA) menyelesaikannya dengan satu uji tunggal untuk seluruh grup. Chapter ini merakit one-way ANOVA manual dari definisi variansinya, menyusun tabel ANOVA standar, lalu membandingkannya dengan fungsi anova1 dari Statistics Toolbox MATLAB.

Konsep: Variansi Antar dan Dalam Grup #

ANOVA menguji H0: semua mean populasi sama (mu1 = mu2 = mu3), melawan H1: paling tidak satu mean berbeda. Triknya membedah total variasi data menjadi dua bagian:

  • Between-group (antar grup): keragaman mean grup terhadap mean keseluruhan. Kalau H0 salah, mean grup berjauhan dan komponen ini membengkak.
  • Within-group (dalam grup): keragaman data terhadap mean grupnya masing-masing. Komponen ini mengukur noise murni — keraguan sampling yang selalu ada apa pun kebenaran H0.

Statistik F adalah rasio rata-rata kedua komponen: F = MSB / MSW dengan MSB = SSB/(k-1) dan MSW = SSW/(N-k). Bila H0 benar, F berkisar sekitar 1 karena kedua komponen sama-sama mengestimasi variansi noise; F yang jauh lebih besar dari 1 menjadi bukti bahwa perbedaan antar grup melebihi apa yang noise mampu jelaskan. Nilai kritis dibaca dari tabel distribusi-F dengan df pembilang k-1 dan df penyebut N-k.

Implementasi Manual dan Tabel ANOVA #

Kasus: hasil panen tiga varietas padi, masing-masing 10 petak uji — total N = 30, df antar = 2, df dalam = 27, dan nilai kritis F(2, 27) pada alpha 0.05 sekitar 3.35. Kode lengkap ada di berkas contoh.m:

matlab
A = [4.2 4.8 4.5 5.1 4.6 4.9 4.4 4.7 5.0 4.3];   % varietas A (ton/ha)
B = [5.4 5.9 5.6 6.0 5.7 5.8 5.5 6.1 5.9 5.6];   % varietas B
C = [6.3 6.8 6.5 7.0 6.4 6.7 6.6 6.9 6.8 6.2];   % varietas C

k = 3;                 % jumlah grup
nA = numel(A); nB = numel(B); nC = numel(C);
N  = nA + nB + nC;     % total pengamatan
mA = mean(A); mB = mean(B); mC = mean(C);
grand = mean([A B C]); % mean keseluruhan

% jumlah kuadrat antar grup (between / treatment)
SSB = nA*(mA-grand)^2 + nB*(mB-grand)^2 + nC*(mC-grand)^2;
% jumlah kuadrat dalam grup (within / error)
SSW = sum((A-mA).^2) + sum((B-mB).^2) + sum((C-mC).^2);
SST = SSB + SSW;

dfB = k - 1;           % df antar grup  = 2
dfW = N - k;           % df dalam grup  = 27
MSB = SSB / dfB;
MSW = SSW / dfW;
F   = MSB / MSW;

fkrit = 3.35;          % F(2, 27) pada alpha = 0.05 dari tabel

fprintf('\n%-12s %8s %5s %8s %10s\n', 'Sumber', 'SS', 'df', 'MS', 'F');
fprintf('%-12s %8.4f %5d %8.4f %10.4f\n', 'Antar grup', SSB, dfB, MSB, F);
fprintf('%-12s %8.4f %5d %8.4f\n',        'Dalam grup', SSW, dfW, MSW);
fprintf('%-12s %8.4f %5d\n',              'Total',     SST, dfB+dfW);
fprintf('\nF = %.4f, F kritis (2, 27) = %.2f\n', F, fkrit);
if F > fkrit
    fprintf('Keputusan: tolak H0 - paling tidak satu varietas berbeda\n');
end

Output yang Dihasilkan:

text
Sumber             SS    df       MS          F
Antar grup    19.4927     2   9.7463   136.6308
Dalam grup     1.9260    27   0.0713
Total         21.4187    29

F = 136.6308, F kritis (2, 27) = 3.35
Keputusan: tolak H0 - paling tidak satu varietas berbeda

Mari kita bedah baris-baris kode di atas:

  1. Baris 12 (SSB = nA*(mA-grand)^2 + ...): setiap selisih mean grup terhadap grand mean diberi bobot ukuran grup — perbedaan mean pada grup besar lebih informatif.
  2. Baris 14 (SSW = sum((A-mA).^2) + ...): variasi di dalam grup dijumlahkan; komponen ini tidak peduli di mana mean grup berada, hanya seberapa menyebar datanya.
  3. Baris 19-20 (MSB = SSB/dfB; MSW = SSW/dfW): jumlah kuadrat dibagi df masing-masing supaya menjadi mean square yang sebanding — pembagi 2 dan 27 sesuai banyaknya grup dan pengamatan.
  4. Baris 21 (F = MSB / MSW): rasio 136.6 berarti variasi antar grup 137 kali variasi noise dalam grup — jauh melampaui nilai kritis 3.35.

contoh.m juga menghitung eta squared = SSB/SST = 0.9101: 91% variasi hasil panen dijelaskan oleh pilihan varietas, sisanya keragaman petak.

Versi MATLAB: anova1 dan multcompare #

Statistics Toolbox menyatukan seluruh perhitungan di atas dalam satu fungsi. Sintaks berikut diverifikasi dari dokumentasi resmi MathWorks:

matlab
% Statistics Toolbox - versi MATLAB
panen = [A; B; C]';                    % kolom = grup
[p, tbl, stats] = anova1(panen, {'A','B','C'}, 'off');
c = multcompare(stats);                % post-hoc Tukey-Kramer

Output p adalah p-value ANOVA, tbl tabel ANOVA lengkap dengan label kolom Columns/Rows, dan stats struct yang menjadi masukan multcompare. Argumen 'off' menekan jendela figure default sehingga cocok untuk skrip batch; bila dihilangkan, MATLAB menampilkan tabel ANOVA interaktif dan box plot per grup.

Post-Hoc: Pasangan Mana yang Berbeda #

Menolak H0 ANOVA hanya menyatakan “ada perbedaan”, tanpa menyebut pasangan mana. Uji post-hoc menjawab itu dengan mengendalikan family-wise error. Prosedur Tukey-Kramer pada multcompare(stats) membandingkan semua pasangan mean sekaligus; output-nya matriks c berisi estimasi selisih dan batas interval per pasangan, plus grafik interaktif yang menonjolkan pasangan signifikan. Jalur manual sederhana: evaluasi tiap pasangan dengan CI selisih mean seperti pada chapter Confidence Interval, tetapi ingat bahwa tiga CI 95% yang berpasangan tidak terkendali secara multiple comparisons — alasan tepat keberadaan koreksi Tukey.

Asumsi ANOVA #

Hasil F dapat dipercaya bila tiga asumsi terpenuhi. Pertama, residu tiap grup mengikuti distribusi kira-kira normal — untuk 10 data per grup cukup diperiksa lewat box plot atau uji normalitas. Kedua, variansi antar grup homogen (aturan praktis: variansi terbesar tidak melebihi dua kali terkecil). Ketiga, pengamatan independen — data berpasangan atau pengukuran berulang melanggar asumsi ini dan memerlukan desain repeated-measures. Bila normalitas gagal, Statistics Toolbox menyediakan kruskalwallis sebagai padanan nonparametrik yang menguji median lewat ranking.

Ringkasan #

One-way ANOVA membandingkan k grup lewat pembagian variasi: SSB mengukur keragaman mean grup, SSW mengukur noise di dalam grup, dan F = MSB/MSW dengan df (k-1, N-k) menilai apakah perbedaan antar grup realistis dibanding noise. Tabel ANOVA merangkum seluruh kuantitas itu dalam format standar laporan. F = 136.63 pada contoh jauh melampaui kritis 3.35, disertai eta squared 0.91 — efek yang sangat besar. Fungsi anova1 menggantikan seluruh perhitungan, multcompare menindaklanjuti dengan uji pasangan terkendali, dan kruskalwallis menjadi jalur nonparametrik saat asumsi normalitas gugur.