it-swarm.dev

Boxplots في matplotlib: علامات والقيم المتطرفة

لدي بعض الأسئلة حول boxplots في matplotlib:

السؤال أ . ماذا تفعل العلامات التي أبرزتها أدناه بـ Q1 و Q2 و Q3 تركيز؟ أعتقد Q1 هي الحد الأقصى و Q3 هي القيم المتطرفة ، ولكن ما هو Q2 ؟

 enter image description here

السؤال B كيف يحدد matplotlib القيم المتطرفة ؟ (أي كيف تعرف أنها ليست القيم الحقيقية max و min؟)

53
Amelio Vazquez-Reina

صورة تساوي ألف كلمة. لاحظ أن القيم المتطرفة (علامات + في المخطط الخاص بك) هي مجرد نقاط خارج من هامش [(Q1-1.5 IQR), (Q3+1.5 IQR)] الواسع أدناه.

 enter image description here

ومع ذلك ، فإن الصورة ليست سوى مثال لمجموعة البيانات الموزعة بشكل طبيعي. من المهم أن نفهم أن matplotlib لا لا تقدر التوزيع الطبيعي أولاً وتحسب الأرباع من معلمات التوزيع المقدرة كما هو موضح أعلاه.

بدلاً من ذلك ، يتم حساب الوسيط والرباعيات مباشرةً من البيانات. وبالتالي ، قد يبدو boxplot الخاص بك مختلفًا اعتمادًا على توزيع بياناتك وحجم العينة ، على سبيل المثال ، غير متماثل ومع قيم متطرفة أكثر أو أقل.

82
Amelio Vazquez-Reina

يمثل المربع الربعين الأول والثالث ، مع الخط الأحمر الوسيط (الربع الثاني). توفر وثائق الشعيرات الافتراضية بمعدل 1.5 IQR:

boxplot(x, notch=False, sym='+', vert=True, whis=1.5,
        positions=None, widths=None, patch_artist=False,
        bootstrap=None, usermedians=None, conf_intervals=None)

و

من هم: [الافتراضي 1.5]

يعرّف طول الشعيرات كدالة للنطاق الرباعي الداخلي. إنها تمتد إلى أقصى نقطة بيانات داخل نطاق بيانات (whis * (75٪ -25٪)).

إذا كنت مرتبكًا بشأن تمثيلات مؤامرة مربع مختلفة ، فحاول قراءة الوصف في wikipedia .

23
seth

بالإضافة إلى إجابة seth (نظرًا لأن الوثائق ليست دقيقة جدًا فيما يتعلق بهذا): يتم وضع Q1 (الشعيرات) بالقيمة القصوى أقل من 75٪ + 1.5 IQR

(الحد الأدنى للقيمة 25 ٪ - 1.5 IQR)

هذا هو الكود الذي يحسب موضع الشعيرات:

        # get high extreme
        iq = q3 - q1
        hi_val = q3 + whis * iq
        wisk_hi = np.compress(d <= hi_val, d)
        if len(wisk_hi) == 0 or np.max(wisk_hi) < q3:
            wisk_hi = q3
        else:
            wisk_hi = max(wisk_hi)

        # get low extreme
        lo_val = q1 - whis * iq
        wisk_lo = np.compress(d >= lo_val, d)
        if len(wisk_lo) == 0 or np.min(wisk_lo) > q1:
            wisk_lo = q1
        else:
            wisk_lo = min(wisk_lo)
13
Dirk

توضح الصورة أدناه الأجزاء المختلفة لـ boxplot.

enter image description here

الكمية 1/Q1: النسبة المئوية 25

المدى الرباعي (IQR): المئوية 25 إلى المئوية 75.

الوسيط (الكمية 2/Q2): النسبة المئوية الخمسون.

الكمية 3/Q3: النسبة المئوية 75.

أود أن أشير إلى أن الجزء الأزرق هم شعيرات boxplot.

تقارن الصورة أدناه الرسم التخطيطي للتوزيع العادي مقابل دالة كثافة الاحتمال. يجب أن يساعد في شرح "الحد الأدنى" ، "الحد الأقصى" ، والقيم المتطرفة.

enter image description here

"الحد الأدنى": (Q1-1.5 IQR)

"الحد الأقصى": (Q3 + 1.5 IQR)

كما قال zelusp ، 99.3 ٪ من البيانات الواردة في 2.698σ (الانحرافات المعيارية) للتوزيع الطبيعي. الدوائر الخضراء (القيم المتطرفة) في الصورة أدناه هي النسبة المتبقية البالغة 0.7٪ من البيانات. هنا هي اشتقاق لكيفية ظهور هذه الأرقام.

6
Michael James Kali Galarnyk

فقط في حالة أن هذا يمكن أن يفيد أي شخص آخر ، كنت بحاجة لوضع وسيلة إيضاح على أحد الرسوم البيانية الخاصة بمخطط الصندوق الخاص بي ، لذلك قمت بصنع هذا .png الصغير في Inkscape واعتقدت أنني أشاركه.

enter image description here

4
June Skeeter

فيما يلي رسم يوضح مكونات المربع من إجابة stats.stackexchange . لاحظ أن k = 1.5 إذا لم تقم بتوفير الكلمة الأساسية whis في Pandas.

enter image description here

وظيفة boxplot في Pandas هي غلاف لـ matplotlib.pyplot.boxplot. تشرح مستندات matplotlib مكونات الصناديق بالتفصيل:

السؤال أ:

يمتد المربع من القيم الرباعية إلى العليا للبيانات ، مع وجود خط في الوسط.

أنا. ه. ربع قيم بيانات الإدخال أسفل المربع وربع أعلى المربع.

السؤال ب:

whis: تعويم أو تسلسل أو سلسلة (افتراضي = 1.5)

كتعويم ، يحدد مدى وصول الشعيرات إلى ما بعد الربعين الأول والثالث. بمعنى آخر ، عندما يكون IQR هو النطاق الرباعي (Q3-Q1) ، فإن الشعير العلوي سوف يمتد إلى آخر مسرد أقل من Q3 + whis * IQR). وبالمثل ، سوف يمتد الطولي السفلي إلى المسند الأول أكبر من Q1 - whis * IQR. خارج الشعيرات ، تعتبر البيانات متطرفة ويتم رسمها كنقاط فردية.

يمنحك Matplotlib (و Pandas) أيضًا الكثير من الخيارات لتغيير هذا التعريف الافتراضي للشعيرات:

اضبط هذا على قيمة عالية بشكل غير معقول لإجبار الشعيرات على إظهار قيم min و max. بدلاً من ذلك ، اضبط هذا على تسلسل تصاعدي من النسبة المئوية (على سبيل المثال ، [5 ، 95]) لتعيين الشعيرات على نسب مئوية محددة من البيانات. وأخيرًا ، يمكن أن يكون whis عبارة عن "نطاق" السلسلة لإجبار الشعيرات على الحد الأدنى والحد الأقصى للبيانات.

1
Joooeey