Pengujian Permutasi

Pengujian berbasis pengacakan label tanpa rumus distribusi.

Daftar isi

Distribusi teoretis seperti distribusi t tidaklah wajib untuk menguji hipotesis, karena distribusi nol dapat dibangun langsung dari data dengan pengacakan. Topik ini membahas uji permutasi (permutation test), yaitu pengujian yang menilai keanehan data teramati dengan mengacak label kelompok berkali-kali dan menghitung seberapa sering selisih acak menyamai atau melampaui data asli. Data metode belajar A dan metode B dipakai lagi, dan hasilnya dibandingkan dengan uji t formal sehingga kesamaan kedua pendekatan terlihat langsung pada p-value yang dihasilkan.

Ide mengacak label#

Apabila H0H_0 benar, label metode A dan label metode B hanyalah penanda, sehingga nilai-nilainya boleh dipertukarkan antarkelompok tanpa mengubah dunia yang direpresentasikan data. Prinsip ini dikenal sebagai kebebasan tukar (exchangeability), yaitu asumsi bahwa semua susunan label sama mungkinnya terjadi ketika H0H_0 benar. Mengacak label dan menghitung ulang selisih rata-rata berarti menarik satu nilai baru dari distribusi nol tanpa satu rumus distribusi pun. Ulangan berkali-kali menghasilkan distribusi nol empiris yang dibangun penuh dari data itu sendiri, sehingga asumsi tentang bentuk sebaran populasi tidak diperlukan.

Algoritma pengujian#

Uji permutasi berjalan dengan lima langkah yang berurutan, dan seluruhnya hanya memerlukan operasi dasar pada data.

  1. Gabungkan seluruh nilai dari kedua kelompok menjadi satu himpunan.
  2. Acak label A dan label B pada nilai gabungan itu dengan ukuran kelompok yang tetap.
  3. Hitung selisih rata-rata antarkelompok pada susunan acak tersebut.
  4. Ulangi pengacakan sebanyak 10.000 kali untuk memperoleh distribusi nol empiris.
  5. Hitung p-value sebagai proporsi susunan acak yang nilai mutlak selisihnya sekurang-kurangnya seekstrem data asli.

Diagram berikut merangkum alur lima langkah itu dari penggabungan hingga proporsi akhir.

Gabungkan nilaikedua kelompokAcak labelantar kelompokHitung selisihrata-rataUlangi sebanyak10.000 kaliHitung proporsiyang ekstrem12345
Alur lima langkah uji permutasi

Setiap kotak pada diagram adalah pekerjaan komputer yang murah, sehingga 10.000 kali pengulangan selesai dalam hitungan detik. Seluruh kerumitan distribusi teoretis digantikan oleh satu operasi, yaitu pengacakan label yang dilakukan dengan benar.

Implementasi vektor di NumPy#

NumPy menyediakan pengacakan per baris melalui metode permuted, sehingga 10.000 permutasi dijalankan sekaligus tanpa perulangan Python yang panjang. Nilai gabungan disalin menjadi matriks 10.000 baris, setiap baris diacak utuh, lalu selisih rata-rata dihitung secara vektor antara 25 kolom pertama dan 25 kolom terakhir. Program berikut menjalankan seluruh uji permutasi dan mengakhirinya dengan uji t dua sampel bebas sebagai pembanding formal.

python uji-permutasi.py
import numpy as np
from scipy import stats

# Data teramati: nilai ujian metode belajar A dan B (25 peserta per kelompok)
rng = np.random.default_rng(42)
nilai_a = np.round(rng.normal(72, 8, size=25))
nilai_b = np.round(rng.normal(72, 8, size=25))
d_obs = nilai_b.mean() - nilai_a.mean()

# Uji permutasi: gabungkan, acak label, hitung selisih rata-rata, ulangi 10.000 kali
gabungan = np.concatenate([nilai_a, nilai_b])
rng_perm = np.random.default_rng(43)
permutasi = rng_perm.permuted(np.tile(gabungan, (10000, 1)), axis=1)
d_perm = permutasi[:, :25].mean(axis=1) - permutasi[:, 25:].mean(axis=1)
p_permutasi = np.mean(np.abs(d_perm) >= abs(d_obs))

# Uji t dua sampel bebas sebagai pembanding formal
t_stat, p_t = stats.ttest_ind(nilai_b, nilai_a)

print(f"Selisih teramati           : {d_obs:.4f}")
print(f"p-value uji permutasi      : {p_permutasi:.4f}")
print(f"p-value uji t              : {p_t:.4f}")
print(f"Jumlah |d_perm| >= |d_obs| : {int(np.sum(np.abs(d_perm) >= abs(d_obs)))} dari 10000")
text Keluaran
Selisih teramati           : 1.8800
p-value uji permutasi      : 0.2951
p-value uji t              : 0.2847
Jumlah |d_perm| >= |d_obs| : 2951 dari 10000

p-value permutasi adalah 0.2951, sedangkan uji t melaporkan 0.2847, dan keduanya menyimpulkan hal yang sama pada data ini. Dari 10.000 susunan acak, 2.951 susunan menghasilkan selisih sekurang-kurangnya seekstrem 1.88 poin, sehingga data asli tampak biasa di dunia H0H_0. Kedekatan kedua p-value menunjukkan bahwa pendekatan rumus dan pendekatan pengacakan bertemu pada kasus yang asumsinya terpenuhi.

Perbandingan dengan uji t#

Uji t menghitung p-value dari rumus distribusi t yang menuntut syarat tertentu pada sebaran populasi, sedangkan uji permutasi mengganti rumus itu dengan pengacakan langsung atas data. Hasil keduanya nyaris sama pada contoh ini karena datanya cukup tertib, tetapi jalan yang ditempuh berbeda sama sekali. Perhitungan permutasi dirangkum oleh rumus berikut, dengan d∗d^{*} sebagai selisih rata-rata pada satu susunan acak dan BB sebagai banyaknya susunan.

p=#{∣d∗∣≥∣dobs∣}B p = \frac{\#\left\{ |d^{*}| \geq |d_{\text{obs}}| \right\}}{B}

Keunggulan praktis uji permutasi adalah kebebasan memilih statistik uji, karena selisih rata-rata dapat diganti median, proporsi, atau statistik apa pun tanpa mencari rumus distribusinya. Kegunaan itu terasa pada sampel kecil, sebaran yang menceng, atau statistik tidak lazim yang tidak punya uji baku. Biayanya berupa komputasi yang lebih banyak, meskipun pada ukuran data yang umum biaya itu jauh lebih murah daripada ketidakpastian asumsi.

Kesalahan umum#

Kesalahan pertama adalah memakai jumlah permutasi yang terlalu kecil, misalnya 100 susunan, sehingga p-value kasar dan berubah-ubah karena kebetulan, dan perbaikannya adalah memakai sekitar 10.000 susunan yang biayanya masih murah. Kesalahan kedua adalah mengacak setiap nilai secara bebas alih-alih mengacak label pada nilai gabungan, karena susunan nilai tidak boleh berubah dan yang dipertukarkan hanya label kelompoknya. Kesalahan ketiga adalah menerapkan permutasi label pada data berpasangan, misalnya skor sebelum dan sesudah, padahal desain itu memerlukan pengacakan tanda selisih pada setiap pasangan. Ketiganya berakar pada satu prinsip, yaitu pengacakan harus meniru cara data dihasilkan ketika H0H_0 benar.

Ringkasan#

  • Uji permutasi membangun distribusi nol dari data itu sendiri dengan mengacak label berkali-kali, tanpa rumus distribusi.
  • p-value permutasi adalah proporsi susunan acak yang selisihnya seekstrem data asli, dan contoh ini menghasilkan 0.2951 dibandingkan 0.2847 pada uji t.
  • Asumsi khasnya adalah kebebasan tukar antarlabel ketika H0H_0 benar, dan data berpasangan menuntut pengacakan yang berbeda.
  • Statistik uji bebas dipilih karena yang diacak adalah label, sehingga statistik yang tidak punya uji baku tetap dapat diuji.

Referensi#