Mann-Whitney U test pada chapter sebelumnya menangani dua sampel independen, tetapi tidak semua perbandingan berbentuk begitu. Chapter Z-Test dan T-Test telah memperkenalkan desain berpasangan: nilai siswa yang sama diukur sebelum dan sesudah sebuah program, atau dua kondisi diujikan pada individu yang sama — desain yang memotong variasi antarindividu dan membuat pengujian jauh lebih peka. Versi parametriknya, paired t-test, menuntut selisih berpasangan menyebar kira-kira normal; tuntutan itu sama rapuhnya ketika sampel kecil atau datanya hanya berupa peringkat. Wilcoxon signed-rank test adalah padanan nonparametriknya: uji yang bekerja pada peringkat nilai mutlak selisih, memberi tanda kembali, lalu menjumlahkannya menjadi statistik W.

Desain Berpasangan, Sekali Lagi #

Keterpasangan muncul dari tiga desain yang paling sering dijumpai. Pertama, pengukuran berulang pada individu yang sama — nilai sebelum dan sesudah program remedial, berat badan sebelum dan sesudah program latihan pada peserta yang sama. Kedua, pasangan yang dicocokkan (matched pairs) — dua kelompok yang disamakan satu per satu berdasarkan usia, nilai awal, atau karakter lain sehingga tiap pasangan layak dibandingkan langsung. Ketiga, satu unit diukur pada dua kondisi — waktu penyelesaian tugas oleh pekerja yang sama dengan dua antarmuka berbeda.

Pada ketiganya, objek analisis bukan kedua kolom nilai mentah, melainkan selisih tiap pasangan d = x_sesudah − x_sebelum. Paired t-test pada chapter Z-Test dan T-Test menguji mean selisih μd terhadap nol dengan asumsi selisih menyebar normal. Wilcoxon signed-rank test menguji target yang setara tanpa asumsi bentuk: cukup distribusi selisih simetris di sekitar nol di bawah H0. Syarat independensi berpindah tempatnya: antar pasangan harus saling bebas, sedangkan di dalam satu pasangan justru keterkaitan yang menjadi inti desainnya.

Dari Selisih ke Peringkat Bertanda #

Prosedur Wilcoxon bekerja pada selisih dalam lima langkah:

  • Hitung selisih d tiap pasangan dengan satu arah yang konsisten (misalnya sesudah − sebelum).
  • Buang pasangan dengan d = 0 — selisih nol tidak membawa arah, dan banyaknya pasangan efektif n berkurang.
  • Ranking nilai mutlak |d| dari terkecil ke terbesar; nilai mutlak yang sama menerima midrank.
  • Tempelkan kembali tanda d pada peringkatnya, menghasilkan peringkat bertanda.
  • Jumlahkan: W+ untuk peringkat positif, W− untuk nilai mutlak peringkat negatif.
text
W+ + W- = n(n+1)/2          [pemeriksaan cepat]

μW = n(n+1)/4               [mean W+ di bawah H0]

σW = √[ n(n+1)(2n+1)/24 ]   [standard error W+ di bawah H0]

Logika H0-nya satu kalimat: bila program tidak berpengaruh, setiap selisih sama mungkinnya positif maupun negatif, sehingga tanda peringkat bagaikan lemparan mata uang dan W+ menyebar di sekitar μW = n(n+1)/4. Bila program mendorong ke satu arah, peringkat besar menumpuk pada tanda itu dan W+ menjauh dari μW — ke arah nol bila efeknya menurun, ke arah n(n+1)/2 bila efeknya menaik. Untuk sampel besar, W+ distandarisasi menjadi z = (|W+ − μW| − 0.5)/σW dengan koreksi kontinuitas 0.5, lalu dibandingkan dengan distribusi normal. Untuk sampel kecil, p-value eksak dihitung dari 2^n konfigurasi tanda yang sama-sama mungkin — jalur yang lebih tepat dan yang akan kita pakai di contoh berikut.

Contoh Manual: Program Bimbingan Belajar #

Tujuh siswa mengikuti program bimbingan belajar selama delapan minggu. Nilai ulangan sebelum dan sesudah program dicatat; hipotesisnya H0: distribusi selisih simetris di sekitar nol (program tidak menggeser nilai), H1 dua arah, α = 0.05. Tidak ada selisih nol dan tidak ada dua selisih yang sama mutlaknya, sehingga ranking bersih:

SiswaSebelumSesudahdMutlakPeringkatRank bertanda
Budi6268+664+4
Siti7071+111+1
Dewi6575+10106+6
Andi7876−222−2
Rina5564+995+5
Fajar7284+12127+7
Lestari6873+553+3

Jumlah peringkatnya W+ = 4 + 1 + 6 + 5 + 7 + 3 = 26 dan W− = 2, dengan 26 + 2 = 28 = 7·8/2 sesuai pemeriksaan. Di bawah H0: μW = 14 dan σW = √(7·8·15/24) = √35 ≈ 5.9161, sehingga z = (26 − 14)/5.9161 = 2.0284 dan p aproksimasi normal dua arah ≈ 0.0425. Nilai eksak lebih tepat untuk n = 7: dari 128 konfigurasi tanda, hanya 6 yang sekonsisten ekstrem dengan data (W− ≤ 2 atau W+ ≤ 2), sehingga p = 6/128 = 0.046875 ≈ 0.0469.

Karena 0.0469 < 0.05, H0 ditolak — tetapi perhatikan betapa dekatnya angka ini ke ambang. Kesimpulan yang jujur berbunyi: terdapat bukti program menggeser nilai, dengan p exact 0.0469 yang nyaris menyentuh α; arah pergeseran dibaca dari data (W+ = 26 jauh melampaui W− = 2, berarti naik). Disiplin pelaporan dari chapter Interpretasi Hasil Pengujian berlaku penuh di sini: laporkan angka eksaknya, bukan sekadar kata “signifikan”.

Menghitung dengan Python #

Dua blok berikut memverifikasi contoh manual, lalu menjalankan uji lengkap. Blok pertama membangun ulang peringkat bertanda:

python
from scipy.stats import rankdata

sebelum = [62, 70, 65, 78, 55, 72, 68]
sesudah = [68, 71, 75, 76, 64, 84, 73]
d = [s2 - s1 for s1, s2 in zip(sebelum, sesudah)]

rank_abs = rankdata([abs(x) for x in d])
signed = [r if x > 0 else -r for x, r in zip(d, rank_abs)]
print("d            :", d)
print("rank bertanda:", " ".join(f"{v:+.0f}" for v in signed))
print(f"W+ = {sum(r for r in signed if r > 0):.0f}")
print(f"W- = {abs(sum(r for r in signed if r < 0)):.0f}")

Output yang Dihasilkan:

text
d            : [6, 1, 10, -2, 9, 12, 5]
rank bertanda: +4 +1 +6 -2 +5 +7 +3
W+ = 26
W- = 2

rankdata memberi peringkat pada nilai mutlak selisih; baris signed menempelkan kembali tanda d; dua baris terakhir menghitung W+ dan W− — semuanya cocok dengan tabel manual. Blok kedua menjalankan uji formal beserta kontrasnya dengan paired t-test:

python
from scipy.stats import wilcoxon, ttest_rel

sebelum = [62, 70, 65, 78, 55, 72, 68]
sesudah = [68, 71, 75, 76, 64, 84, 73]

hasil_w = wilcoxon(sesudah, sebelum)
hasil_t = ttest_rel(sesudah, sebelum)
print(f"Wilcoxon : W = {hasil_w.statistic:.0f}, p = {hasil_w.pvalue:.4f}")
print(f"paired t : t = {hasil_t.statistic:.4f}, p = {hasil_t.pvalue:.4f}")

Output yang Dihasilkan:

text
Wilcoxon : W = 2, p = 0.0469
paired t : t = 3.0905, p = 0.0214

Statistik yang dikembalikan scipy 1.14.1 untuk pengujian dua arah adalah nilai terkecil di antara W+ dan W− — di sini 2, bukan 26 — dengan alternative="two-sided", zero_method="wilcox", dan method="auto" sebagai bawaan; pada data ini auto memilih jalur eksak karena n ≤ 50 dan tidak ada selisih nol, menghasilkan p = 0.046875 yang dicetak sebagai 0.0469. Versi method="approx" akan memberi 0.0425 sekaligus peringatan bahwa sampel terlalu kecil untuk aproksimasi normal. Baris kedua menghitung paired t-test: t = 3.0905 dengan p = 0.0214 dari mean selisih d̄ = 5.8571 dan s_d = 5.0143.

Asumsi Simetri dan Posisi Sign Test #

Tiga asumsi menopang Wilcoxon signed-rank test. Pertama, keterpasangan terjaga sampai ke analisis — selisih hanya bermakna bila pasangannya benar; data yang kehilangan pasangan bukan lagi material uji ini. Kedua, antar pasangan saling bebas; di dalam pasangan, keterkaitan justru dimanfaatkan. Ketiga, distribusi selisih simetris di sekitar titik tengahnya — asumsi yang lebih ringan daripada normalitas, tetapi tetap asumsi: H0 yang diuji tepatnya adalah “selisih simetris di sekitar nol”.

Asumsi ketiga inilah titik rapuhnya. Selisih yang miring satu arah — misalnya waktu pemulihan yang sebagian besar singkat tetapi beberapa kasus sangat panjang — melanggar simetri, dan peringkat bertanda menjadi bias. Jalur keluarnya adalah sign test: uji yang hanya menghitung banyaknya selisih positif dan negatif, lalu menguji peluang positif 0.5 dengan kerangka binomial dari chapter Distribusi Binomial. Sign test membuang seluruh informasi besar selisih sehingga kepekaannya lebih rendah, tetapi hanya mensyaratkan data bisa bertanda — paling aman dipakai ketika simetri pun diragukan. Wilcoxon berdiri di tengah: lebih peka dari sign test, lebih tahan bentuk distribusi dari paired t-test.

Wilcoxon menuntaskan data berpasangan, dan pola keluarga nonparametrik kini tinggal menyisakan satu bentangan: tiga kelompok independen atau lebih. Mann-Whitney hanya mampu membandingkan dua kelompok, sedangkan menjalankannya berpasangan-pasangan justru membuka kembali masalah pengujian berganda yang dibedah chapter ANOVA. Padanan peringkat untuk ANOVA-lah yang menutup celah itu — Kruskal-Wallis test, chapter berikutnya. Dokumentasi resmi kedua fungsi chapter ini tersedia di scipy.stats , dengan pendalaman konsep di Penn State STAT 500 .