पायथन में कोलमोगोरोव-स्मिरनोव परीक्षण कैसे करें


कोलमोगोरोव-स्मिरनोव परीक्षण का उपयोग यह जांचने के लिए किया जाता है कि कोई नमूना एक निश्चित वितरण से आता है या नहीं।

पायथन में कोलमोगोरोव-स्मिरनोव परीक्षण करने के लिए, हम एक-नमूना परीक्षण के लिए scipy.stats.kstest() या दो-नमूना परीक्षण के लिए scipy.stats.ks_2samp() का उपयोग कर सकते हैं।

यह ट्यूटोरियल व्यवहार में प्रत्येक फ़ंक्शन का उपयोग कैसे करें इसका एक उदाहरण दिखाता है।

उदाहरण 1: कोलमोगोरोव-स्मिरनोव परीक्षण नमूना

मान लीजिए हमारे पास निम्नलिखित नमूना डेटा है:

 from numpy.random import seed
from numpy.random import fish

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 values that follows a Poisson distribution with mean=5
data = fish(5, 100)

निम्नलिखित कोड दिखाता है कि 100 डेटा मानों के इस नमूने पर कोलमोगोरोव-स्मिरनोव परीक्षण कैसे किया जाए ताकि यह निर्धारित किया जा सके कि वे सामान्य वितरण से आते हैं या नहीं:

 from scipy.stats import kstest

#perform Kolmogorov-Smirnov test
kstest(data, ' norm ')

KstestResult(statistic=0.9072498680518208, pvalue=1.0908062873170218e-103)

परिणाम से, हम देख सकते हैं कि परीक्षण आँकड़ा 0.9072 है और संबंधित पी-मान 1.0908e-103 है। चूँकि पी-मान 0.05 से कम है, हम शून्य परिकल्पना को अस्वीकार करते हैं। हमारे पास यह कहने के लिए पर्याप्त सबूत हैं कि नमूना डेटा सामान्य वितरण से नहीं आता है।

यह परिणाम भी आश्चर्यजनक नहीं होना चाहिए क्योंकि हमने पॉइसन() फ़ंक्शन का उपयोग करके नमूना डेटा तैयार किया है, जो पॉइसन वितरण का पालन करने वाले यादृच्छिक मान उत्पन्न करता है।

उदाहरण 2: दो-नमूना कोलमोगोरोव-स्मिरनोव परीक्षण

मान लीजिए कि हमारे पास निम्नलिखित दो नमूना डेटा सेट हैं:

 from numpy.random import seed
from numpy.random import randn
from numpy.random import lognormal

#set seed (eg make this example reproducible)
seed(0)

#generate two datasets
data1 = randn(100)
data2 = lognormal(3, 1, 100)

निम्नलिखित कोड दिखाता है कि इन दो नमूनों पर कोलमोगोरोव-स्मिरनोव परीक्षण कैसे किया जाए ताकि यह निर्धारित किया जा सके कि क्या वे एक ही वितरण से आते हैं:

 from scipy.stats import ks_2samp

#perform Kolmogorov-Smirnov test
ks_2samp(data1, data2)

KstestResult(statistic=0.99, pvalue=4.417521386399011e-57)

परिणाम से, हम देख सकते हैं कि परीक्षण आँकड़ा 0.99 है और संबंधित पी-मान 4.4175e-57 है। चूँकि पी-मान 0.05 से कम है, हम शून्य परिकल्पना को अस्वीकार करते हैं। हमारे पास यह कहने के लिए पर्याप्त सबूत हैं कि दो नमूना डेटासेट एक ही वितरण से नहीं हैं।

यह परिणाम भी आश्चर्यजनक नहीं होना चाहिए क्योंकि हमने मानक सामान्य वितरण का उपयोग करके पहले नमूने के लिए मान और लॉगनॉर्मल वितरण का उपयोग करके दूसरे नमूने के लिए मान उत्पन्न किए हैं।

अतिरिक्त संसाधन

पायथन में शापिरो-विल्क परीक्षण कैसे करें
पायथन में एंडरसन-डार्लिंग टेस्ट कैसे करें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *