Lewati ke konten utama

Uji Kruskal-Wallis: Membandingkan Banyak Kelompok Tanpa Normalitas

Panduan praktis untuk uji Kruskal-Wallis—apa itu, cara kerjanya, kapan menggunakannya alih-alih ANOVA, serta cara menjalankan dan menafsirkannya di Python dan R.
Diperbarui 4 Mei 2026  · 9 mnt baca

Membandingkan banyak kelompok itu mudah ketika data Anda berdistribusi normal. Masalahnya, sebagian besar data dunia nyata tidak demikian.

Jika ANOVA adalah uji bawaan Anda, Anda bisa sampai pada kesimpulan yang keliru, karena ANOVA mengasumsikan data Anda berdistribusi normal. Saat tidak demikian—pikirkan data yang miring atau sampel kecil—Anda memerlukan pendekatan lain.

Uji Kruskal-Wallis adalah pendekatan yang berbeda itu. Ini adalah alternatif nonparametrik untuk ANOVA, dan bekerja pada data bertingkat (rank) alih-alih nilai mentah, sehingga distribusi normal tidak menjadi syarat.

Dalam artikel ini, saya akan membahas konsepnya, matematika di baliknya, cara menjalankannya di Python dan R, serta cara menafsirkan hasilnya.

Apa Itu Uji Kruskal-Wallis?

Uji Kruskal-Wallis adalah metode nonparametrik untuk membandingkan tiga atau lebih kelompok independen. Uji ini mengonversi semua pengamatan menjadi peringkat dan membandingkan peringkat tersebut antarkelompok alih-alih bekerja dengan nilai mentah.

Anda bisa menganggapnya sebagai perluasan dari uji Mann-Whitney U, yang juga pernah saya bahas.

Mann-Whitney U melakukan perbandingan berbasis peringkat yang sama, tetapi hanya untuk dua kelompok. Uji Kruskal-Wallis menskalakannya menjadi tiga atau lebih, jadi ketika Anda memiliki banyak kelompok dan tidak bisa menggunakan ANOVA, inilah uji yang sebaiknya digunakan.

Karena bekerja pada peringkat, bukan nilai mentah, uji ini tidak mengasumsikan data Anda mengikuti distribusi tertentu. Itulah yang membuatnya berguna untuk data dunia nyata, karena data jarang mengikuti satu jenis distribusi secara sempurna.

Kapan Menggunakan Uji Kruskal-Wallis

Uji Kruskal-Wallis cocok saat Anda berhadapan dengan:

  • Tiga atau lebih kelompok independen yang ingin Anda bandingkan
  • Data ordinal atau kontinu seperti penilaian skala Likert atau data pengukuran
  • Distribusi tidak normal akibat data miring, pencilan, sampel kecil, atau hal apa pun yang tidak dapat ditangani ANOVA
  • Ukuran sampel kecil di mana normalitas sulit diverifikasi

Berikut contoh sederhana.

Bayangkan Anda ingin membandingkan nilai ujian di tiga kelas berbeda. Nilainya miring dan sampelnya kecil, jadi ANOVA bukan pilihan yang baik. Uji Kruskal-Wallis tidak memerlukan normalitas, sehingga cocok di sini. Uji ini akan memberi tahu Anda apakah setidaknya ada satu kelas yang nilainya berbeda dari yang lain tanpa membuat asumsi yang tidak didukung data Anda.

Uji Kruskal-Wallis vs. ANOVA

Keduanya membandingkan kelompok, tetapi dengan cara yang berbeda.

ANOVA membandingkan rata-rata kelompok dan mengasumsikan data Anda berdistribusi normal dengan varians yang kurang lebih sama. Ketika asumsi-asumsi itu benar, ANOVA adalah pilihan yang lebih baik—lebih kuat secara statistik dan hasilnya lebih mudah ditafsirkan.

Uji Kruskal-Wallis membandingkan distribusi kelompok menggunakan peringkat. Uji ini tidak peduli dengan normalitas atau kesamaan varians. Itu membuatnya lebih fleksibel, tetapi Anda kehilangan sebagian kekuatan statistik dalam prosesnya.

Berikut tabel perbandingan singkat:

ANOVA dibandingkan dengan uji Kruskal-Wallis

ANOVA dibandingkan dengan uji Kruskal-Wallis

Jika data Anda berdistribusi normal, gunakan ANOVA. Jika tidak—atau Anda tidak bisa memverifikasinya—gunakan Kruskal-Wallis.

Rumus Uji Kruskal-Wallis

Uji Kruskal-Wallis bermuara pada satu statistik uji, H. Berikut rumusnya:

Rumus Kruskal-Wallis

Rumus Kruskal-Wallis

Berikut penjelasan komponennya:

  • N - jumlah total pengamatan di semua kelompok

  • k - jumlah kelompok

  • n_i - jumlah pengamatan pada kelompok i

  • R_i - jumlah peringkat yang diberikan pada kelompok i

Rumus tersebut mengukur seberapa besar jumlah peringkat tiap kelompok menyimpang dari yang diharapkan jika semua kelompok identik. H yang besar berarti kelompok-kelompoknya berbeda, dan H yang kecil berarti perbedaannya tidak terlalu besar.

Setelah Anda memperoleh H, bandingkan dengan distribusi chi-square dengan derajat kebebasan k - 1 untuk mendapatkan p-value.

Cara Kerja Uji Kruskal-Wallis

Ada empat langkah untuk melakukan uji Kruskal-Wallis:

  1. Gabungkan semua kelompok: Ambil semua pengamatan dari setiap kelompok dan gabungkan menjadi satu dataset
  2. Beri peringkat semua pengamatan: Urutkan data gabungan dari yang terkecil ke terbesar dan berikan peringkat. Nilai terkecil mendapat peringkat 1, berikutnya peringkat 2, dan seterusnya. Jika dua nilai sama, keduanya berbagi rata-rata peringkat yang seharusnya mereka tempati.
  3. Hitung jumlah peringkat: Pisahkan peringkat kembali ke kelompok asalnya. Jumlahkan peringkat untuk tiap kelompok. Itulah jumlah peringkat Anda—R_i dalam rumus
  4. Hitung statistik uji: Masukkan jumlah peringkat ke rumus H. Jika kelompok serupa, jumlah peringkatnya akan saling berdekatan dan H akan kecil. Jika satu kelompok secara konsisten mendapat peringkat lebih tinggi atau lebih rendah, H akan semakin besar

Dan selesai!

Anda bisa melihat bahwa uji ini tidak memperhatikan nilai sebenarnya, melainkan hanya posisi relatifnya terhadap yang lain.

Uji Kruskal-Wallis di Python

Pustaka scipy di Python memiliki fungsi bawaan untuk uji Kruskal-Wallis, jadi Anda tidak perlu mengimplementasikan rumusnya secara manual. Mari melalui sebuah contoh.

Misalkan Anda membandingkan nilai ujian di tiga kelas. Begini cara menjalankan uji tersebut:

from scipy import stats

# Exam scores
class_a = [78, 85, 90, 72, 88]
class_b = [65, 70, 68, 74, 60]
class_c = [88, 92, 95, 85, 91]

# Run the test
statistic, p_value = stats.kruskal(class_a, class_b, class_c)

print(f"H statistic: {statistic:.4f}")
print(f"P-value: {p_value:.4f}")

Keluaran Python

Keluaran Python

Nilai p berada di bawah 0,05, yang berarti setidaknya ada satu kelas yang nilainya berbeda dari yang lain. Perlu diingat uji ini tidak memberi tahu Anda mana yang berbeda—Anda memerlukan uji post hoc untuk itu, yang akan saya bahas di bagian berikutnya.

Uji Kruskal-Wallis di R

Sama seperti Python, R memiliki fungsi bawaan untuk uji ini. Mari gunakan skenario nilai ujian yang sama.

# Exam scores
class_a <- c(78, 85, 90, 72, 88)
class_b <- c(65, 70, 68, 74, 60)
class_c <- c(88, 92, 95, 85, 91)

# Combine
scores <- c(class_a, class_b, class_c)
groups <- factor(rep(c("A", "B", "C"), each = 5))

# Run the test
kruskal.test(scores ~ groups)

Keluaran R

Keluaran R

Keluaran ini sama dengan yang saya dapatkan di Python—statistik H dan p-value yang sama. Dengan p < 0,05, Anda akan menolak hipotesis nol dan menyimpulkan bahwa setidaknya ada satu kelompok yang berbeda.

Cara Menafsirkan Hasil Kruskal-Wallis

Hipotesis nol uji Kruskal-Wallis menyatakan bahwa semua kelompok memiliki distribusi yang sama. Nilai p memberi tahu Anda apakah harus menolaknya. Berikut cara menafsirkannya:

  • p < 0,05: Setidaknya satu kelompok berbeda dari yang lain, jadi tolak hipotesis nol
  • p >= 0,05: Tidak ada bukti kuat bahwa kelompok-kelompok tersebut berbeda, jadi jangan tolak hipotesis nol

Ambang 0,05 adalah konvensi. Bergantung pada bidang Anda atau tingkat kepentingannya, Anda bisa menggunakan ambang yang lebih ketat seperti 0,01 atau yang lebih longgar seperti 0,10.

Perlu diingat uji ini tidak akan memberi tahu Anda kelompok mana yang berbeda. Hasil signifikan hanya berarti kelompok-kelompok tersebut tidak semuanya sama. Anda tahu ada sesuatu yang terjadi, tetapi tidak tahu di mana. Untuk mengetahui pasangan mana yang memicu perbedaan, Anda memerlukan uji post hoc.

Uji Post Hoc Setelah Kruskal-Wallis

Uji Kruskal-Wallis memberi tahu bahwa setidaknya ada satu kelompok yang berbeda, tetapi tidak menunjukkan kelompok mana yang sebenarnya berbeda. Jika Anda memiliki tiga kelompok dan p < 0,05, bisa jadi A vs B, A vs C, B vs C, atau kombinasi. Anda perlu melakukan uji post hoc untuk mendapatkan perbandingan berpasangan ini.

Uji Dunn adalah pilihan yang paling umum. Uji ini menjalankan perbandingan berpasangan antarseluruh kelompok dan menyesuaikan p-value untuk memperhitungkan banyak perbandingan—tanpa penyesuaian itu, Anda akan meningkatkan peluang positif palsu. Semakin banyak perbandingan yang dijalankan, semakin tinggi risiko menemukan hasil "signifikan" hanya karena kebetulan.

Uji Dunn di Python

Anda memerlukan pustaka scikit_posthocs untuk ini. Jika belum ada, instal dengan pip install scikit-posthocs.

Setelah itu, perhitungannya sederhana:

import scikit_posthocs as sp
import pandas as pd

# Same exam scores as before
class_a = [78, 85, 90, 72, 88]
class_b = [65, 70, 68, 74, 60]
class_c = [88, 92, 95, 85, 91]

# Combine
scores = class_a + class_b + class_c
groups = ["A"] * 5 + ["B"] * 5 + ["C"] * 5

df = pd.DataFrame({"score": scores, "group": groups})

# Run the test
result = sp.posthoc_dunn(df, val_col="score", group_col="group", p_adjust="bonferroni")
print(result)

Uji Dunn di Python

Uji Dunn di Python

Setiap sel menampilkan p-value yang telah disesuaikan untuk pasangan tersebut. Di sini, hanya B vs C (p = 0,004) yang melewati ambang 0,05, sehingga kedua kelompok itu berbeda. A vs B (p = 0,167) dan A vs C (p = 0,607) tidak, yang berarti kelas A tidak berbeda secara statistik dari kedua kelas lainnya.

Uji Dunn di R

Untuk memulai, instal pustakanya jika diperlukan dengan perintah install.packages("dunn.test"):

library(dunn.test)

# Same exam scores as before
class_a <- c(78, 85, 90, 72, 88)
class_b <- c(65, 70, 68, 74, 60)
class_c <- c(88, 92, 95, 85, 91)

scores <- c(class_a, class_b, class_c)
groups <- factor(rep(c("A", "B", "C"), each = 5))

# Run the test
dunn.test(scores, groups, method = "bonferroni")

Uji Dunn di R

Uji Dunn di R

Hasilnya sama dengan Python, sebagaimana yang diharapkan. Hanya B vs C yang signifikan, sementara A vs B dan A vs C tidak. Kelas B dan kelas C adalah yang berada di balik perbedaan yang terdeteksi oleh uji Kruskal-Wallis.

Asumsi Uji Kruskal-Wallis

Uji Kruskal-Wallis lebih fleksibel daripada ANOVA, tetapi tetap memiliki tiga asumsi yang perlu Anda periksa sebelum menjalankannya:

  • Sampel independen: Pengamatan pada satu kelompok tidak memengaruhi pengamatan pada kelompok lain. Jika data Anda berpasangan atau pengukuran berulang, uji ini tidak cocok
  • Data ordinal atau kontinu: Uji ini memerlukan data yang bisa diperingkat. Kategori nominal (seperti warna atau label) tidak dapat diperingkat, jadi tidak cocok di sini
  • Bentuk distribusi serupa: Jika Anda ingin menafsirkan hasil sebagai perbandingan median alih-alih hanya distribusi, kelompok-kelompoknya perlu memiliki bentuk yang kurang lebih sama. Jika bentuknya sangat berbeda, Anda masih bisa membandingkan distribusi, tetapi interpretasi median tidak berlaku

Jika Anda melanggar dua asumsi pertama, hasil uji tidak akan valid. Asumsi ketiga lebih lunak, karena memengaruhi cara Anda menafsirkan hasil, bukan apakah uji tersebut bisa dijalankan.

Kapan Anda Tidak Boleh Menggunakan Uji Kruskal-Wallis

Ada tiga kondisi di mana uji lain akan lebih cocok:

  • Data Anda berpasangan atau pengukuran berulang: Jika subjek yang sama muncul di beberapa kelompok, gunakan uji Friedman sebagai gantinya. Itu adalah padanan nonparametrik yang dirancang untuk sampel dependen. Menggunakan Kruskal-Wallis pada data berpasangan mengabaikan keterkaitan antar pengamatan dan dapat mengarah pada kesimpulan yang salah
  • Data Anda memenuhi asumsi ANOVA: Jika data Anda berdistribusi normal dengan varians yang kurang lebih sama, ANOVA adalah pilihan yang lebih baik. ANOVA lebih kuat secara statistik, yang berarti lebih baik dalam mendeteksi perbedaan nyata saat memang ada
  • Ukuran sampel Anda besar: Dengan sampel besar, metode parametrik cenderung bekerja dengan baik meski data tidak sepenuhnya normal. Teorema limit pusat berperan, dan ANOVA akan memberi hasil yang lebih andal daripada pendekatan berbasis peringkat. Jika Anda bekerja dengan ratusan atau ribuan pengamatan per kelompok, Kruskal-Wallis bukan uji untuk Anda

Kesimpulan

Uji Kruskal-Wallis membandingkan tiga atau lebih kelompok independen saat data Anda tidak mengikuti distribusi normal yang disyaratkan oleh uji seperti ANOVA. Hal ini dimungkinkan karena uji ini bekerja pada peringkat alih-alih nilai mentah.

Meski begitu, uji ini bukan pengganti ANOVA. Jika data Anda normal, ANOVA adalah uji yang lebih baik karena lebih kuat secara statistik. Di sisi lain, jika data Anda berpasangan, gunakan uji Friedman. Seperti biasa, uji yang tepat bergantung pada data Anda.

Ketika kondisinya tepat, uji Kruskal-Wallis adalah pilihan yang andal dan lugas. Anda tinggal menjalankannya, memeriksa p-value, dan menindaklanjuti dengan uji Dunn jika Anda perlu mengetahui kelompok mana yang berada di balik perbedaannya.

Pengetahuan statistik Anda agak berkarat? Ikuti kursus Pengantar Statistik kami dan kembali berada di jalur yang tepat dalam satu sore.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist yang berbasis di Kroasia. Penulis Tekno Teratas dengan lebih dari 700 artikel yang telah diterbitkan, menghasilkan lebih dari 10 juta tayangan. Penulis buku Machine Learning Automation with TPOT.

FAQ Uji Kruskal-Wallis

Untuk apa uji Kruskal-Wallis digunakan?

Uji Kruskal-Wallis digunakan untuk membandingkan tiga atau lebih kelompok independen ketika Anda tidak bisa mengasumsikan data Anda berdistribusi normal. Ini adalah alternatif nonparametrik untuk ANOVA yang bekerja pada data berperingkat alih-alih nilai mentah. Uji ini berguna saat distribusi miring atau data bersifat ordinal.

Apa arti hasil uji Kruskal-Wallis yang signifikan?

Hasil yang signifikan—biasanya p < 0,05—berarti setidaknya ada satu kelompok yang berbeda dari yang lain. Uji ini tidak memberi tahu kelompok mana yang berbeda, hanya bahwa mereka tidak semuanya sama. Untuk mengetahui pasangan mana yang memicu perbedaan, lanjutkan dengan uji post hoc seperti uji Dunn.

Apa saja asumsi uji Kruskal-Wallis?

Uji ini memerlukan sampel yang independen, artinya pengamatan pada satu kelompok tidak memengaruhi pengamatan pada kelompok lain. Data Anda harus bersifat ordinal atau kontinu—sesuatu yang bisa diperingkat. Jika Anda ingin menafsirkan hasil sebagai perbandingan median, kelompok-kelompoknya juga sebaiknya memiliki bentuk distribusi yang serupa.

Apa perbedaan antara uji Kruskal-Wallis dan uji Mann-Whitney U?

Uji Mann-Whitney U membandingkan dua kelompok independen, sedangkan uji Kruskal-Wallis memperluas pendekatan itu ke tiga atau lebih kelompok. Keduanya bekerja pada data berperingkat dan tidak mengasumsikan normalitas. Jika Anda hanya memiliki dua kelompok, Mann-Whitney U adalah pilihan yang tepat—Kruskal-Wallis adalah padanannya untuk banyak kelompok.

Kapan Anda harus menggunakan uji Dunn setelah Kruskal-Wallis?

Jalankan uji Dunn ketika hasil Kruskal-Wallis signifikan dan Anda perlu mengetahui pasangan kelompok spesifik mana yang berbeda. Uji ini melakukan perbandingan berpasangan antar semua kelompok dan menyesuaikan p-value untuk mengurangi peluang positif palsu. Di Python, scikit_posthocs.posthoc_dunn() menyediakannya, dan di R, paket dunn.test memberi fungsi yang sama.

Topik

Belajar dengan DataCamp

Kursus

Pengantar Statistika di R

4 Hr
128.6K
Kembangkan keterampilan statistik Anda dan pelajari cara mengumpulkan, menganalisis, serta menarik kesimpulan yang akurat dari data.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow