मुख्य सामग्री पर जाएं

Kruskal-Wallis परीक्षण: सामान्यता के बिना एकाधिक समूहों की तुलना

Kruskal-Wallis परीक्षण के लिए एक व्यावहारिक मार्गदर्शिका—यह क्या है, कैसे काम करता है, कब ANOVA पर इसे चुनें, और Python व R में इसे कैसे चलाएँ और व्याख्या करें।
अद्यतन 4 मई 2026  · 9 मि॰ पढ़ना

कई समूहों की तुलना करना आसान होता है जब आपका डेटा सामान्य वितरण का पालन करता है। समस्या यह है कि अधिकांश वास्तविक दुनिया का डेटा ऐसा नहीं करता।

यदि ANOVA आपका डिफ़ॉल्ट परीक्षण है, तो आप गलत निष्कर्ष पर पहुँच सकते हैं, क्योंकि यह मानता है कि आपका डेटा सामान्य वितरण का अनुसरण करता है। जब ऐसा नहीं होता—जैसे विकृत (skewed) डेटा या छोटे नमूने—तो आपको अलग तरीका चाहिए।

Kruskal-Wallis परीक्षण वही अलग तरीका है। यह ANOVA का गैर-पैरामीट्रिक विकल्प है, और यह कच्चे मानों के बजाय रैंकों पर काम करता है, इसलिए सामान्य वितरण की आवश्यकता नहीं होती।

इस लेख में, मैं अवधारणा, इसके पीछे का गणित, Python और R में इसे कैसे चलाएँ, और परिणामों की व्याख्या कैसे करें—सब शामिल करूँगा।

Kruskal-Wallis परीक्षण क्या है?

Kruskal-Wallis परीक्षण तीन या अधिक स्वतंत्र समूहों की तुलना के लिए एक गैर-पैरामीट्रिक विधि है। यह सभी प्रेक्षणों को रैंकों में बदलता है और कच्चे मानों के बजाय समूहों के बीच उन रैंकों की तुलना करता है।

आप इसे Mann-Whitney U परीक्षण का विस्तार मान सकते हैं, जिसके बारे में मैंने पहले भी लिखा है।

Mann-Whitney U वही रैंक-आधारित तुलना करता है, पर केवल दो समूहों के लिए। Kruskal-Wallis परीक्षण इसे तीन या अधिक तक स्केल करता है, इसलिए जब आपके पास अनेक समूह हों और आप ANOVA का उपयोग न कर सकें, तो यही उपयोग करना चाहिए।

क्योंकि यह कच्चे मानों की बजाय रैंकों पर काम करता है, यह यह नहीं मानता कि आपका डेटा किसी विशेष वितरण का पालन करता है। यही बात इसे वास्तविक दुनिया के डेटा में उपयोगी बनाती है, क्योंकि डेटा शायद ही कभी किसी एक वितरण प्रकार का पूरी तरह पालन करता है।

Kruskal-Wallis परीक्षण कब उपयोग करें

Kruskal-Wallis परीक्षण इन स्थितियों में उपयुक्त है:

  • तीन या अधिक स्वतंत्र समूह जिनकी आप तुलना करना चाहते हैं
  • क्रमिक (ordinal) या सतत (continuous) डेटा जैसे Likert स्केल रेटिंग या माप संबंधी डेटा
  • गैर-सामान्य वितरण—जैसे विकृत डेटा, अपवाद मान (outliers), छोटे नमूने—या ऐसी कोई भी स्थिति जिसे ANOVA संभाल नहीं सकता
  • छोटे नमूना आकार जहाँ सामान्यता की पुष्टि करना कठिन हो

यहाँ एक सरल उदाहरण है।

मान लीजिए आप तीन अलग-अलग कक्षाओं के परीक्षाफल की तुलना करना चाहते हैं। स्कोर विकृत हैं और नमूने छोटे हैं, इसलिए ANOVA उपयुक्त नहीं। Kruskal-Wallis को सामान्यता की आवश्यकता नहीं, इसलिए यह यहाँ काम करता है। यह बताएगा कि क्या कम से कम एक कक्षा ने अन्य से अलग प्रदर्शन किया, बिना ऐसे मान्यताओं पर निर्भर हुए जिन्हें आपका डेटा समर्थन नहीं करता।

Kruskal-Wallis परीक्षण बनाम ANOVA

दोनों परीक्षण समूहों की तुलना करते हैं, लेकिन तरीके अलग हैं।

ANOVA समूहों के औसतों की तुलना करता है और मानता है कि आपका डेटा सामान्य वितरण में है तथा विचरण लगभग समान हैं। जब ये मान्यताएँ सही हों, तो यह बेहतर विकल्प है—अधिक सांख्यिकीय शक्ति के साथ और परिणामों की व्याख्या आसान होती है।

Kruskal-Wallis परीक्षण समूहों की वितरणों की रैंकों के माध्यम से तुलना करता है। इसे सामान्यता या समान विचरणों की परवाह नहीं। इससे यह अधिक लचीला हो जाता है, लेकिन बदले में कुछ सांख्यिकीय शक्ति कम हो जाती है।

यहाँ एक त्वरित तुलना तालिका है:

ANOVA की तुलना Kruskal-Wallis परीक्षण से

ANOVA की तुलना Kruskal-Wallis परीक्षण से

यदि आपका डेटा सामान्य रूप से वितरित है, तो ANOVA उपयोग करें। यदि नहीं—या आप इसकी पुष्टि नहीं कर सकते—तो Kruskal-Wallis का उपयोग करें।

Kruskal-Wallis परीक्षण का सूत्र

Kruskal-Wallis परीक्षण एक अकेले परीक्षण-सांख्यिकीय H पर आ जाता है। यहाँ सूत्र है:

Kruskal-Wallis का सूत्र

Kruskal-Wallis का सूत्र

घटकों की व्याख्या इस प्रकार है:

  • N - सभी समूहों में कुल प्रेक्षणों की संख्या

  • k - समूहों की संख्या

  • n_i - समूह i में प्रेक्षणों की संख्या

  • R_i - समूह i को दिए गए रैंकों का योग

यह सूत्र मापता है कि प्रत्येक समूह के रैंक-योग उस अपेक्षित मान से कितना विचलित होते हैं जो तब होता जब सभी समूह समान होते। बड़ा H दर्शाता है कि समूह भिन्न हैं, और छोटा H दर्शाता है कि वे अधिक भिन्न नहीं हैं।

एक बार जब आपके पास H हो, तो आप इसे k - 1 स्वतंत्रता डिग्री वाले ची-स्क्वेयर वितरण से तुलना करते हैं ताकि p-मूल्य प्राप्त हो सके।

Kruskal-Wallis परीक्षण कैसे काम करता है

Kruskal-Wallis परीक्षण करने के चार चरण हैं:

  1. सभी समूहों को मिलाएँ: हर समूह से सभी प्रेक्षण लें और उन्हें एकल डेटासेट में मिलाएँ
  2. सभी प्रेक्षणों को रैंक दें: संयुक्त डेटा को सबसे छोटे से सबसे बड़े तक छाँटें और रैंक असाइन करें। सबसे छोटे मान को रैंक 1, अगले को रैंक 2, और आगे इसी तरह। यदि दो मान समान हैं, तो वे उन रैंकों के औसत को साझा करते हैं जिन्हें वे ग्रहण करते
  3. रैंक-योग की गणना करें: रैंकों को उनके मूल समूहों में विभाजित करें। प्रत्येक समूह के लिए रैंकों को जोड़ें। यही आपके रैंक-योग हैं—सूत्र में R_i
  4. परीक्षण-सांख्यिकीय की गणना करें: रैंक-योगों को H के सूत्र में डालें। यदि समूह समान हैं, तो उनके रैंक-योग पास-पास होंगे और H छोटा होगा। यदि कोई समूह लगातार उच्च या निम्न रैंक पाता है, तो H बड़ा होता जाता है

और बस इतना ही!

आप देख सकते हैं कि यह परीक्षण वास्तविक मानों की परवाह नहीं करता, बल्कि इस बात की परवाह करता है कि वे बाकी सबके सापेक्ष कहाँ स्थित हैं।

Python में Kruskal-Wallis परीक्षण

Python की scipy लाइब्रेरी में Kruskal-Wallis परीक्षण के लिए एक बिल्ट-इन फंक्शन है, यानी आपको सूत्र स्वयं लागू करने की ज़रूरत नहीं। एक उदाहरण देखते हैं।

मान लें आप तीन कक्षाओं के परीक्षाफल की तुलना कर रहे हैं। परीक्षण ऐसे चलाएँगे:

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}")

Python आउटपुट

Python आउटपुट

p-मूल्य 0.05 से कम है, जिसका अर्थ है कि कम से कम एक कक्षा ने अन्य की तुलना में भिन्न स्कोर किया। ध्यान रखें कि यह परीक्षण यह नहीं बताता कि कौन-सा—इसके लिए आपको एक पोस्ट-हॉक परीक्षण की आवश्यकता होगी, जिसे मैं अगले खंड में कवर करूँगा।

R में Kruskal-Wallis परीक्षण

Python की तरह, R में भी इस परीक्षण के लिए बिल्ट-इन फंक्शन है। आइए वही परीक्षाफल परिदृश्य उपयोग करें।

# 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)

R आउटपुट

R आउटपुट

आउटपुट वही है जो मुझे Python में मिला—वही H सांख्यिकीय, वही p-मूल्य। p < 0.05 होने पर, आप शून्य परिकल्पना को अस्वीकार करेंगे और निष्कर्ष निकालेंगे कि कम से कम एक समूह अलग है।

Kruskal-Wallis के परिणामों की व्याख्या कैसे करें

Kruskal-Wallis परीक्षण की शून्य परिकल्पना है कि सभी समूहों का वितरण समान है। p-मूल्य बताता है कि इसे अस्वीकार करना है या नहीं। व्याख्या इस प्रकार करें:

  • p < 0.05: कम से कम एक समूह अन्य से भिन्न है, इसलिए शून्य परिकल्पना अस्वीकार करें
  • p >= 0.05: समूहों के भिन्न होने का प्रबल साक्ष्य नहीं है, इसलिए शून्य परिकल्पना अस्वीकार न करें

0.05 की सीमा एक परंपरा है। आपके क्षेत्र या विश्लेषण के निहितार्थों पर निर्भर करते हुए आप 0.01 जैसी सख्त या 0.10 जैसी ढीली सीमा उपयोग कर सकते हैं।

ध्यान रखें कि यह परीक्षण आपको नहीं बताएगा कि कौन-सा समूह अलग है। महत्वपूर्ण परिणाम केवल यह दर्शाता है कि सभी समूह समान नहीं हैं। आपको पता चलता है कि कुछ हो रहा है, पर कहाँ—यह नहीं। यह जानने के लिए कि कौन-से युग्म अंतर चला रहे हैं, आपको एक पोस्ट-हॉक परीक्षण की आवश्यकता है।

Kruskal-Wallis के बाद पोस्ट-हॉक परीक्षण

यह परीक्षण बताता है कि कम से कम एक समूह अलग है, पर कौन-सा समूह वास्तव में अलग है—यह नहीं। यदि आपके पास तीन समूह हैं और p < 0.05 है, तो A बनाम B, A बनाम C, B बनाम C—या इनका कोई संयोजन—हो सकता है। इन युग्मवार तुलनाओं के लिए आपको पोस्ट-हॉक परीक्षण करना होगा।

Dunn का परीक्षण सबसे सामान्य विकल्प है। यह सभी समूहों के बीच युग्मवार तुलना चलाता है और बहुविकल्पीय तुलनाओं के लिए p-मूल्यों को समायोजित करता है—बिना उस समायोजन के, एक झूठे सकारात्मक का मौका बढ़ जाएगा। जितनी अधिक तुलना करेंगे, केवल संयोग से “महत्वपूर्ण” परिणाम मिलने का जोखिम उतना ही अधिक होगा।

Python में Dunn का परीक्षण

इसके लिए आपको scikit_posthocs लाइब्रेरी चाहिए। यदि यह नहीं है, तो pip install scikit-posthocs से इंस्टॉल करें।

इसके बाद गणना सरल है:

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)

Python में Dunn का परीक्षण

Python में Dunn का परीक्षण

प्रत्येक सेल उस युग्म के लिए समायोजित p-मूल्य दिखाता है। यहाँ केवल B बनाम C (p = 0.004) 0.05 की सीमा पार करता है, इसलिए ये दो समूह अलग हैं। A बनाम B (p = 0.167) और A बनाम C (p = 0.607) नहीं—जिसका अर्थ है कि कक्षा A सांख्यिकीय रूप से अन्य दो कक्षाओं में से किसी से भिन्न नहीं है।

R में Dunn का परीक्षण

शुरू करने के लिए, यदि आवश्यक हो तो 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")

R में Dunn का परीक्षण

R में Dunn का परीक्षण

परिणाम Python से मेल खाते हैं, जैसा अपेक्षित है। केवल B बनाम C महत्वपूर्ण है, जबकि A बनाम B और A बनाम C नहीं। Kruskal-Wallis परीक्षण द्वारा पकड़े गए अंतर के पीछे कक्षा B और कक्षा C हैं।

Kruskal-Wallis परीक्षण की मान्यताएँ

Kruskal-Wallis परीक्षण ANOVA से अधिक लचीला है, पर इसे चलाने से पहले तीन मान्यताएँ जाँचनी होती हैं:

  • स्वतंत्र नमूने: एक समूह के प्रेक्षण दूसरे समूह के प्रेक्षणों को प्रभावित नहीं करते। यदि आपका डेटा पेयर्ड या दोहराए गए माप (repeated measures) है, तो यह परीक्षण सही नहीं
  • क्रमिक या सतत डेटा: परीक्षण को ऐसा डेटा चाहिए जिसे आप रैंक कर सकें। नाममात्र (nominal) श्रेणियाँ (जैसे रंग या लेबल) रैंक नहीं की जा सकतीं, इसलिए यहाँ काम नहीं करेंगी
  • वितरण आकृतियाँ समान हों: यदि आप परिणामों की व्याख्या केवल वितरणों की नहीं बल्कि मीडियन की तुलना के रूप में करना चाहते हैं, तो समूहों की आकृतियाँ लगभग समान होनी चाहिए। यदि आकृतियाँ बहुत भिन्न हैं, तो आप वितरणों की तुलना कर सकते हैं, पर मीडियन-आधारित व्याख्या मान्य नहीं रहती

यदि आप पहली दो मान्यताओं का उल्लंघन करते हैं, तो परीक्षण-परिणाम मान्य नहीं होंगे। तीसरी मान्यता अपेक्षाकृत नरम है—यह इस बात को प्रभावित करती है कि आप परिणामों की व्याख्या कैसे करते हैं, न कि यह कि आप परीक्षण चला सकते हैं या नहीं।

कब आपको Kruskal-Wallis परीक्षण का उपयोग नहीं करना चाहिए

तीन स्थितियाँ हैं जहाँ कोई दूसरा परीक्षण बेहतर होगा:

  • आपका डेटा पेयर्ड या दोहराए गए माप का है: यदि वही विषय अलग-अलग समूहों में आते हैं, तो Friedman परीक्षण उपयोग करें। यह निर्भर नमूनों के लिए डिज़ाइन किया गया गैर-पैरामीट्रिक समकक्ष है। पेयर्ड डेटा पर Kruskal-Wallis का उपयोग प्रेक्षणों के संबंध को अनदेखा करता है और गलत निष्कर्षों तक ले जा सकता है
  • आपका डेटा ANOVA की मान्यताओं को पूरा करता है: यदि आपका डेटा सामान्य वितरण में है और विचरण लगभग समान हैं, तो ANOVA बेहतर है। इसकी सांख्यिकीय शक्ति अधिक होती है, यानी यह वास्तविक अंतरों का पता लगाने में बेहतर है
  • आपके नमूना आकार बड़े हैं: बड़े नमूनों में, पैरामीट्रिक विधियाँ अक्सर तब भी अच्छा काम करती हैं जब डेटा पूरी तरह सामान्य न हो। सेंट्रल लिमिट थ्योरम काम करती है, और ANOVA रैंक-आधारित दृष्टिकोण से अधिक विश्वसनीय परिणाम देता है। यदि आप प्रति समूह सैकड़ों या हजारों प्रेक्षणों के साथ काम कर रहे हैं, तो Kruskal-Wallis आपके लिए उपयुक्त परीक्षण नहीं

निष्कर्ष

Kruskal-Wallis परीक्षण तीन या अधिक स्वतंत्र समूहों की तुलना करता है जब आपका डेटा ANOVA जैसे परीक्षणों द्वारा अपेक्षित सामान्य वितरण का पालन नहीं करता। यह इसलिए संभव है क्योंकि यह कच्चे मानों के बजाय रैंकों पर काम करता है।

यह कहा जाए, तो यह ANOVA का स्थानापन्न नहीं है। यदि आपका डेटा सामान्य है, तो ANOVA बेहतर परीक्षण है क्योंकि उसमें अधिक सांख्यिकीय शक्ति होती है। दूसरी ओर, यदि आपका डेटा पेयर्ड है, तो Friedman परीक्षण उपयोग करें। हमेशा की तरह, सही परीक्षण आपके डेटा पर निर्भर करता है।

जब स्थितियाँ अनुकूल हों, तो Kruskal-Wallis परीक्षण एक भरोसेमंद और सीधा विकल्प है। आपको इसे चलाना है, p-मूल्य जाँचना है, और यदि यह जानना हो कि अंतर के पीछे कौन-से समूह हैं, तो Dunn के परीक्षण से आगे बढ़ना है।

क्या आपके सांख्यिकी के ज्ञान पर थोड़ी धूल जम गई है? हमारा Introduction to Statistics कोर्स लें और एक ही दोपहर में ट्रैक पर लौटें।

Kruskal-Wallis परीक्षण: सामान्य प्रश्न

Kruskal-Wallis परीक्षण किसके लिए उपयोग होता है?

Kruskal-Wallis परीक्षण का उपयोग तीन या अधिक स्वतंत्र समूहों की तुलना करने के लिए किया जाता है जब आप यह नहीं मान सकते कि आपका डेटा सामान्य वितरण का अनुसरण करता है। यह ANOVA का गैर-पैरामीट्रिक विकल्प है जो कच्चे मानों के बजाय रैंक किए गए डेटा पर काम करता है। आप इसे तब उपयोगी पाएँगे जब वितरण विकृत हों या डेटा क्रमिक (ordinal) हो।

एक महत्वपूर्ण Kruskal-Wallis परिणाम का क्या अर्थ है?

एक महत्वपूर्ण परिणाम—आम तौर पर p < 0.05—का अर्थ है कि कम से कम एक समूह अन्य से भिन्न है। यह नहीं बताता कि कौन-से समूह अलग हैं, केवल इतना कि सभी समान नहीं हैं। यह जानने के लिए कि कौन-से युग्म अंतर के पीछे हैं, आपको Dunn जैसे पोस्ट-हॉक परीक्षण से आगे बढ़ना होगा।

Kruskal-Wallis परीक्षण की मान्यताएँ क्या हैं?

परीक्षण को स्वतंत्र नमूनों की आवश्यकता होती है, यानी एक समूह के प्रेक्षण दूसरे समूह के प्रेक्षणों को प्रभावित नहीं करते। आपका डेटा क्रमिक या सतत होना चाहिए—कुछ ऐसा जिसे आप रैंक कर सकें। यदि आप परिणामों की व्याख्या मीडियन की तुलना के रूप में करना चाहते हैं, तो समूहों की वितरण आकृतियाँ भी समान होनी चाहिए।

Kruskal-Wallis परीक्षण और Mann-Whitney U परीक्षण में क्या अंतर है?

Mann-Whitney U परीक्षण दो स्वतंत्र समूहों की तुलना करता है, जबकि Kruskal-Wallis परीक्षण उसी दृष्टिकोण को तीन या अधिक समूहों तक विस्तृत करता है। दोनों रैंक किए गए डेटा पर काम करते हैं और सामान्यता नहीं मानते। यदि आपके पास केवल दो समूह हैं, तो Mann-Whitney U सही विकल्प है—Kruskal-Wallis उसका बहु-समूह समकक्ष है।

Kruskal-Wallis के बाद Dunn का परीक्षण कब उपयोग करना चाहिए?

जब आपका Kruskal-Wallis परिणाम महत्वपूर्ण हो और आपको यह जानना हो कि कौन-से विशिष्ट समूह-युग्म भिन्न हैं, तब Dunn का परीक्षण चलाएँ। यह सभी समूहों के बीच युग्मवार तुलना करता है और झूठे सकारात्मकों की संभावना घटाने के लिए p-मूल्यों को समायोजित करता है। Python में, scikit_posthocs.posthoc_dunn() यह करता है, और R में dunn.test पैकेज समान कार्यक्षमता देता है।

विषय

DataCamp के साथ सीखें

course

Introduction to Statistics in R

4 घंटा
128.6K
Grow your statistical skills and learn how to collect, analyze, and draw accurate conclusions from data.
विस्तृत जानकारी देखेंRight Arrow
कोर्स शुरू करें
और देखेंRight Arrow