كيفية إجراء اختبار kolmogorov-smirnov في بايثون
يستخدم اختبار كولموجوروف-سميرنوف لاختبار ما إذا كانت العينة تأتي من توزيع معين أم لا.
لإجراء اختبار Kolmogorov-Smirnov في بايثون، يمكننا استخدام 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)
يوضح الكود التالي كيفية إجراء اختبار Kolmogorov-Smirnov على هذه العينة المكونة من 100 قيمة بيانات لتحديد ما إذا كانت تأتي من التوزيع الطبيعي:
from scipy.stats import kstest #perform Kolmogorov-Smirnov test kstest(data, ' norm ') KstestResult(statistic=0.9072498680518208, pvalue=1.0908062873170218e-103)
من النتيجة، يمكننا أن نرى أن إحصائيات الاختبار هي 0.9072 والقيمة p المقابلة هي 1.0908e-103 . وبما أن القيمة p أقل من 0.05، فإننا نرفض فرضية العدم. لدينا ما يكفي من الأدلة لنقول أن بيانات العينة لا تأتي من التوزيع الطبيعي.
لا ينبغي أن تكون هذه النتيجة مفاجئة أيضًا لأننا أنشأنا بيانات العينة باستخدام وظيفة Poisson() ، والتي تولد قيمًا عشوائية تتبع توزيع Poisson .
مثال 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)
يوضح الكود التالي كيفية إجراء اختبار Kolmogorov-Smirnov على هاتين العينتين لتحديد ما إذا كانا ينتميان إلى نفس التوزيع:
from scipy.stats import ks_2samp #perform Kolmogorov-Smirnov test ks_2samp(data1, data2) KstestResult(statistic=0.99, pvalue=4.417521386399011e-57)
من النتيجة، يمكننا أن نرى أن إحصائيات الاختبار هي 0.99 والقيمة p المقابلة هي 4.4175e-57 . وبما أن القيمة p أقل من 0.05، فإننا نرفض فرضية العدم. لدينا ما يكفي من الأدلة لنقول أن مجموعتي البيانات العينتين ليستا من نفس التوزيع.
لا ينبغي أن تكون هذه النتيجة مفاجئة أيضًا لأننا أنشأنا قيمًا للعينة الأولى باستخدام التوزيع الطبيعي القياسي وقيمًا للعينة الثانية باستخدام التوزيع اللوغاريتمي الطبيعي.
مصادر إضافية
كيفية إجراء اختبار شابيرو ويلك في بايثون
كيفية إجراء اختبار أندرسون-دارلنج في بايثون