أخذ العينات الطبقية في الباندا (مع أمثلة)
غالبًا ما يأخذ الباحثون عينات من السكان ويستخدمون البيانات من العينة لاستخلاص استنتاجات حول السكان ككل.
طريقة أخذ العينات شائعة الاستخدام هي أخذ العينات العشوائية الطبقية ، حيث يتم تقسيم السكان إلى مجموعات ويتم اختيار عدد معين من الأعضاء من كل مجموعة عشوائيًا لإدراجهم في العينة.
يشرح هذا البرنامج التعليمي طريقتين لإجراء أخذ العينات العشوائية الطبقية في بايثون.
مثال 1: أخذ العينات الطبقية باستخدام الأعداد
لنفترض أن لدينا DataFrame الباندا التالي الذي يحتوي على بيانات عن 8 لاعبي كرة سلة من فريقين مختلفين:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]}) #view DataFrame df team position assists rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A G 8 6 4 B F 5 6 5 B F 7 9 6 B C 6 6 7 B C 9 10
يوضح الكود التالي كيفية إجراء أخذ العينات العشوائية الطبقية عن طريق اختيار لاعبين عشوائيًا من كل فريق لإدراجهما في العينة:
df. groupby ('team', group_keys= False ). apply ( lambda x: x.sample (2)) team position assists rebounds 0 A G 5 11 3 A G 8 6 6 B C 6 6 5 B F 7 9
علماً أنه تم تضمين لاعبين اثنين من كل فريق في العينة الطبقية.
المثال 2: أخذ العينات الطبقية باستخدام النسب
لنفترض مرة أخرى أن لدينا DataFrame الباندا التالي الذي يحتوي على بيانات عن 8 لاعبي كرة سلة من فريقين مختلفين:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]}) #view DataFrame df team position assists rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A G 8 6 4 B F 5 6 5 B F 7 9 6 B C 6 6 7 B C 9 10
لاحظ أن 6 من اللاعبين الثمانية (75%) في DataFrame هم في الفريق A و2 من اللاعبين الثمانية (25%) في الفريق B.
يوضح الكود التالي كيفية إجراء أخذ العينات العشوائية الطبقية بحيث تتطابق نسبة اللاعبين في العينة من كل فريق مع نسبة اللاعبين من كل فريق في DataFrame الأكبر:
import numpy as np #define total sample size desired N = 4 #perform stratified random sampling df. groupby ('team', group_keys= False ). apply ( lambda x: x. sample (int(np. rint (N* len (x)/ len (df))))). sample (frac=1). reset_index (drop= True ) team position assists rebounds 0 B F 7 9 1 B G 8 6 2 B C 6 6 3 A G 7 8
لاحظ أن نسبة لاعبي الفريق “أ” في العينة الطبقية (25%) تتطابق مع نسبة لاعبي الفريق “أ” في DataFrame الأكبر.
وبالمثل، فإن نسبة لاعبي الفريق “ب” في العينة الطبقية (75%) تتطابق مع نسبة لاعبي الفريق “ب” في DataFrame الأكبر.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية اختيار أنواع العينات الأخرى باستخدام الباندا:
كيفية إجراء أخذ العينات العنقودية في الباندا
كيفية إجراء أخذ العينات بشكل منهجي بين حيوانات الباندا