Seluruh uji yang telah kita kumpulkan — z, t, χ², F — bekerja dengan satu syarat bersama: asumsi tentang bentuk distribusi. T-test dan ANOVA menuntut data menyebar kira-kira normal, dan klaim itu makin sulit dipertahankan ketika sampel kecil, data miring, atau nilainya memang hanya berupa peringkat. Keluarga uji nonparametrik menjawab situasi itu dengan menukar nilai mentah menjadi peringkat, sehingga bentuk distribusi tidak lagi menjadi syarat. Anggota pertama keluarga ini adalah Mann-Whitney U test, padanan berbasis peringkat untuk perbandingan dua sampel independen yang sebelumnya kita kerjakan dengan t-test pada chapter Z-Test dan T-Test.

Kapan Uji Parametrik Tidak Memadai #

Tiga situasi paling umum menjatuhkan asumsi normalitas. Pertama, ukuran sampel kecil: dengan empat atau lima observasi per kelompok, tidak ada alat yang cukup kuat untuk memeriksa bentuk distribusi, sehingga klaim normalitas berubah menjadi dugaan tanpa bukti. Kedua, skala data ordinal: peringkat kepuasan 1 sampai 5 hanya boleh diurutkan — chapter Skala Pengukuran di Section Pengumpulan dan Jenis Data menjelaskan bahwa mean pada skala ordinal tidak sah, sehingga t-test yang menguji mean ikut kehilangan pijakan. Ketiga, outlier: satu nilai ekstrem menggeser x̄ dan menggembungkan s, dua besaran yang menjadi inti statistik t.

Mann-Whitney U test memotong ketergantungan tersebut dengan hanya memakai urutan nilai. Karena bekerja pada peringkat, uji ini sah untuk skala ordinal ke atas, tidak mensyaratkan bentuk distribusi tertentu, dan nyaris tidak tersentuh outlier — peringkat terbesar tetap sama baik nilainya 91 maupun 191. Harganya juga perlu disebut jujur: peringkat membuang informasi jarak antar nilai, sehingga bila asumsi normalitas benar-benar terpenuhi, t-test tetap lebih peka.

Mekanik Peringkat: Gabungkan, Urutkan, Jumlahkan #

Seluruh perhitungan Mann-Whitney bertumpu pada satu langkah: menggabungkan kedua sampel menjadi satu daftar terurut. Prosedurnya:

  • Gabungkan seluruh nilai kedua kelompok menjadi n1 + n2 = N observasi.
  • Urutkan dari terkecil ke terbesar, lalu beri peringkat 1 sampai N.
  • Nilai yang sama (ties) menerima midrank — rata-rata dari peringkat yang mereka tempati bersama.
  • Jumlahkan peringkat tiap kelompok menjadi R1 dan R2.

Dua jumlah peringkat itu selalu memenuhi R1 + R2 = N(N+1)/2 — pemeriksaan murah yang sebaiknya dilakukan sebelum melangkah. Maknanya lugas: bila kedua populasi setara, nilai kedua kelompok berbaur dalam urutan sehingga R1 mendekati pangsa proporsionalnya n1(N+1)/2; bila satu kelompok cenderung lebih tinggi, peringkatnya menumpuk di ujung besar daftar dan R1 menjauh dari pangsa tersebut — kejauhan inilah yang diukur statistik U.

Statistik U Beserta Mean dan Standard Error-nya #

Statistik U menerjemahkan jumlah peringkat menjadi bilangan yang mudah dibaca: banyaknya pasangan lintas kelompok. Dari kedua jumlah peringkat, dua versi U dihitung:

text
U1 = n1·n2 + n1(n1+1)/2 - R1
U2 = n1·n2 + n2(n2+1)/2 - R2

U1 menghitung pasangan lintas kelompok dengan nilai kelompok pertama lebih kecil daripada kelompok kedua; U2 menghitung kebalikannya. Setiap pasangan dihitung tepat satu kali, sehingga U1 + U2 = n1·n2 selalu berlaku — pemeriksaan kedua yang murah. Nilai yang dibawa ke tabel eksak adalah U = min(U1, U2); U yang kecil berarti peringkat salah satu kelompok menumpuk jauh dari posisi seimbang.

Di bawah H0 “kedua populasi setara”, U menyebar simetris di sekitar mean dan standard error berikut:

text
μU = n1·n2 / 2

σU = √[ n1·n2·(N + 1) / 12 ]          N = n1 + n2

Untuk sampel yang cukup besar, U distandarisasi menjadi z lalu dibandingkan dengan distribusi normal — keluarga yang telah kita pakai sejak chapter Z-Test dan T-Test:

text
z = (|U - μU| - 0.5) / σU

Pengurangan 0.5 adalah koreksi kontinuitas: U hanya bisa mengambil bilangan bulat sementara normal kontinu, dan koreksi ini membuat aproksimasi lebih akurat (p dua arah = 2 × luas ekor normal di luar |z|). Untuk sampel kecil, aproksimasi normal kasar; distribusi eksak U diperoleh dengan menghitung seluruh C(N, n1) konfigurasi peringkat yang sama-sama mungkin, dan tabel kritisnya tercantum di hampir semua buku teks statistika.

Contoh Manual: Sembilan Nilai, Dua Kelompok #

Sembilan siswa mengikuti kelas remedial matematika: empat di sesi pagi, lima di sesi siang. Pertanyaannya: apakah kedua sesi berbeda hasilnya? Dengan n1 = 4 dan n2 = 5, asumsi normalitas tidak dapat diperiksa secara berarti — persis wilayah Mann-Whitney. Nilai ulangan mereka:

text
Kelas pagi  (n1 = 4) : 68, 75, 82, 90
Kelas siang (n2 = 5) : 65, 70, 72, 80, 88

Kedua sampel digabung dan diurutkan tanpa ada nilai kembar, sehingga peringkat 1 sampai 9 terbagi rapi:

Nilai656870727580828890
Kelassiangpagisiangsiangpagisiangpagisiangpagi
Peringkat123456789

Jumlah peringkatnya R1 = 2 + 5 + 7 + 9 = 23 dan R2 = 1 + 3 + 4 + 6 + 8 = 22, dengan 23 + 22 = 45 = 9·10/2 sesuai pemeriksaan. Statistik U dihitung dari kedua rumus:

text
U1 = 4·5 + 4·5/2 - 23 = 20 + 10 - 23 = 7
U2 = 4·5 + 5·6/2 - 22 = 20 + 15 - 22 = 13
U  = min(7, 13) = 7

Di bawah H0, μU = 10 dan σU = √(4·5·10/12) = √16.6667 ≈ 4.0825, sehingga z = (|7 − 10| − 0.5)/4.0825 = 0.6124 dan p aproksimasi normal dua arah 0.5403. Karena sampel ini kecil, nilai eksak lebih tepat: p = 0.5556. Batas kritis eksak untuk n1 = 4, n2 = 5 pada α = 0.05 dua arah adalah U ≤ 1, dan U = 7 masih jauh di atasnya. Keputusannya konsisten di kedua jalur: gagal menolak H0 — nilai sesi pagi dan sesi siang konsisten berasal dari populasi setara.

Kasus Nyata: Kelas A dan Kelas B di Uji Ulang #

Sekarang contoh dengan ukuran realistis: data kelas A dan kelas B pada chapter Z-Test dan T-Test — masing-masing 10 siswa dengan mean 82 dan 78. Uji t dua sampel di sana menghasilkan t = 1.4907 dengan df = 18 dan p = 0.1534 (gagal menolak). Data ini memuat enam pasangan nilai kembar (72, 76, 78, 82, 84, 88 masing-masing muncul dua kali), sehingga mekanik midrank ikut bekerja:

text
Nilai : 69   72   72   73   75   76   76   78   78   79
Kelas : B    B    B    A    B    A    A    B    B    A
Rank  : 1   2.5  2.5   4    5   6.5  6.5  8.5  8.5  10

Nilai : 81   82   82   84   84   85   87   88   88   91
Kelas : B    A    A    B    B    A    B    A    A    A
Rank  : 11  12.5 12.5 14.5 14.5  16   17  18.5 18.5  20

Jumlah peringkatnya R1 = 125 dan R2 = 85 (total 210 = 20·21/2), sehingga:

text
U1 = 10·10 + 10·11/2 - 125 = 100 + 55 - 125 = 30
U2 = 10·10 + 10·11/2 -  85 = 100 + 55 -  85 = 70

Di bawah H0, μU = 50. Karena ada ties, σU memakai bentuk terkoreksi yang memperhitungkan panjang tiap kelompok nilai sama (t):

text
σU = √[ (n1·n2/12) · (N + 1 - Σ(t³ - t)/(N·(N - 1))) ]

Enam kelompok ties dengan t = 2 memberi Σ(t³ − t) = 6 × 6 = 36, sehingga σU = √[(100/12) × (21 − 36/380)] = √174.2105 ≈ 13.1989. Statistik z menjadi (50 − 30 − 0.5)/13.1989 = 1.4774 dengan p dua arah 0.1396 (semua dibulatkan ke empat desimal). Karena 0.1396 ≥ 0.05, keputusannya gagal menolak H0 — sama dengan keputusan t-test.

Perbandingannya layak dibaca hati-hati. Dari 100 pasangan lintas kelas, 70 dimenangkan kelas A dan 30 dimenangkan kelas B — selisih yang tampak nyata tetapi belum cukup melampaui fluktuasi sampling. Penyebabnya sama dengan analisis chapter Z-Test dan T-Test: selisih konstan 4 poin lebih kecil daripada sebaran di dalam kelas (s = 6), sehingga banyak nilai kelas B tetap berada di atas nilai kelas A. Kedua jalur — mean untuk t-test, peringkat untuk Mann-Whitney — sampai pada keputusan yang sama, dan kesimpulan yang bertahan di keduanya adalah kesimpulan yang kokoh.

Menghitung dengan Python #

scipy.stats.mannwhitneyu menerima kedua sampel dan mengembalikan U beserta p-value-nya. Contoh kecil kita diuji eksak:

python
from scipy.stats import mannwhitneyu

pagi = [68, 75, 82, 90]       # n1 = 4
siang = [65, 70, 72, 80, 88]  # n2 = 5

hasil = mannwhitneyu(pagi, siang, alternative="two-sided", method="exact")
print(f"U = {hasil.statistic:.0f}, p = {hasil.pvalue:.4f}")

Output yang Dihasilkan:

text
U = 13, p = 0.5556

Keluaran scipy perlu dibaca dengan satu catatan konvensi: fungsi menghitung U dari R1 dengan rumus U = R1 − n1(n1+1)/2, yaitu U2 dalam penulisan kita (banyaknya pasangan dengan nilai kelompok pertama lebih besar). Angka 13 di atas adalah U2; p-value-nya identik karena kedua konvensi mengukur kejauhan yang sama dari μU = 10. Untuk data kelas A dan kelas B, jalur asymptotic berjalan otomatis:

python
from scipy.stats import mannwhitneyu, ttest_ind

kelas_a = [73, 76, 76, 79, 82, 82, 85, 88, 88, 91]
kelas_b = [69, 72, 72, 75, 78, 78, 81, 84, 84, 87]

hasil_u = mannwhitneyu(kelas_a, kelas_b, alternative="two-sided")
hasil_t = ttest_ind(kelas_a, kelas_b)
print(f"Mann-Whitney : U = {hasil_u.statistic:.0f}, p = {hasil_u.pvalue:.4f}")
print(f"t-test       : t = {hasil_t.statistic:.4f}, p = {hasil_t.pvalue:.4f}")

Output yang Dihasilkan:

text
Mann-Whitney : U = 70, p = 0.1396
t-test       : t = 1.4907, p = 0.1534

Blok kedua mengembalikan U = 70 — sekali lagi U2, padanan 30 milik U1 — dan p = 0.1396, persis perhitungan manual dengan koreksi ties serta kontinuitas di atas. Baris t-test mereproduksi angka yang dipublikasikan chapter Z-Test dan T-Test (t = 1.4907, p = 0.1534), sehingga perbandingan kedua uji berdiri di atas data yang identik.

Asumsi, Ties, dan Arah Pengujian #

Daftar asumsi Mann-Whitney lebih ringkas daripada t-test, tetapi tetap ada:

  • Observasi saling bebas — asumsi terpenting; tidak ada mekanik peringkat yang dapat menggantikannya. Randomisasi penugasan kelompok adalah jaminan utamanya.
  • Skala minimal ordinal — nilai harus bisa diurutkan; skala nominal tidak berlaku (wilayah itu milik chi-square pada chapter Chi-Square Test).
  • Bentuk distribusi sama bila kesimpulan ingin dibaca sebagai pergeseran median — tanpa syarat ini, kesimpulan yang aman adalah “kedua distribusi berbeda”, bukan “mediannya berbeda”.

Ties tidak menghalangi pengujian: midrank menjaga urutan tetap adil, σU dikoreksi mengecil sesuai rumus di atas, dan scipy menerapkan keduanya secara otomatis. Arah pengujian mengikuti H1 yang dirumuskan sebelum data: klaim dua arah memakai alternative="two-sided" (bawaan), sedangkan klaim satu arah seperti “sesi pagi lebih tinggi dari sesi siang” memakai "less" atau "greater" dengan p-value satu ekor — kerangka satu arah versus dua arah yang sama dengan chapter Significance Level.

Mann-Whitney menuntaskan dua sampel independen. Pertanyaan berikutnya kembali ke desain: bagaimana bila data datang berpasangan — nilai siswa yang sama diukur sebelum dan sesudah suatu program? Keterpasangan membuat perbandingan peringkat antar kelompok menjadi keliru, dan keluarga nonparametrik menyediakan padanan ranked dari paired t-test untuk kebutuhan itu: Wilcoxon signed-rank test, chapter berikutnya. Dokumentasi lengkap semua fungsi chapter ini tersedia di scipy.stats , dengan pendalaman konsep di NIST Engineering Statistics Handbook .