بسم الله الرحمن الرحيم

Factors

تاريخ النشر : Oct. 2, 2022

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


في R ، يتم تخزين البيانات الفئوية في عوامل. تعتبر العوامل مهمة جدًا في تحليل البيانات ، لذا ابدأ في تعلم كيفية إنشائها وتجميعها ومقارنتها الآن.

ما هو العامل ولماذا تستخدمه؟

في هذا الفصل ، تغوص في عالم العوامل الرائع.

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

من المهم أن يعرف R ما إذا كان يتعامل مع متغير مستمر أو متغير فئوي ، حيث أن النماذج الإحصائية التي ستطورها في المستقبل تعامل كلا النوعين بشكل مختلف. (سترى لاحقًا سبب حدوث ذلك.)

من الأمثلة الجيدة على المتغير الفئوي الجنس. في كثير من الحالات ، يمكنك قصر فئات الجنس على "ذكر" أو "أنثى".

# Assign to the variable theory what this chapter is about!

theory <- "factors"

ما هو العامل ولماذا تستخدمه؟ (2)

لإنشاء عوامل في R ، يمكنك استخدام الدالة f_actor (). أول شيء عليك القيام به هو إنشاء متجه يحتوي على جميع الملاحظات التي تنتمي إلى عدد محدود من الفئات. على سبيل المثال ، يحتوي sex_vector على جنس 5 أفراد مختلفين:

sex_vector <- c("Male","Female","Female","Male","Male")

من الواضح أن هناك فئتين ، أو في "مستويات عامل" من حيث R ، في العمل هنا: "ذكر" و "أنثى".

ستعمل الوظيفة "factor ()" على ترميز المتجه كعامل:

factor_sex_vector <- factor(sex_vector)

مثال

# Sex vector
sex_vector <- c("Male", "Female", "Female", "Male", "Male")

# Convert sex_vector to a factor
factor_sex_vector <- factor(sex_vector)

# Print out factor_sex_vector
factor_sex_vector

ما هو العامل ولماذا تستخدمه؟ (3)

هناك نوعان من المتغيرات الفئوية: متغير فئوي اسمي ومتغير فئوي ترتيبي.

المتغير الاسمي هو متغير فئوي بدون أمر ضمني. هذا يعني أنه من المستحيل أن نقول إن "أحدهما أكثر قيمة من الآخر". على سبيل المثال ، فكر في المتغير الفئوي animal_vector مع الفئات "الفيل" و "الزرافة" و "الحمار" و "الحصان". هنا ، من المستحيل أن نقول أن أحدهما يقف فوق الآخر أو تحته. (لاحظ أن البعض منكم قد يختلف ؛-)).

في المقابل ، فإن المتغيرات الترتيبية لها ترتيب طبيعي. ضع في اعتبارك على سبيل المثال متغير درجة الحرارة المتغير الفئوي مع الفئات: "منخفض" و "متوسط" و "مرتفع". من الواضح هنا أن "متوسط" يقف فوق "منخفض" ، و "مرتفع" فوق "متوسط".

Factor levels

مستويات العامل

عندما تحصل على مجموعة بيانات لأول مرة ، ستلاحظ غالبًا أنها تحتوي على عوامل بمستويات عوامل محددة. ومع ذلك ، قد ترغب في بعض الأحيان في تغيير أسماء هذه المستويات للتوضيح أو لأسباب أخرى. يسمح لك R بالقيام بذلك باستخدام الوظيفة levels():

levels(factor_vector) <- c("name1", "name2",...)

التوضيح الجيد هو البيانات الأولية التي يتم توفيرها لك من خلال الاستبيان. السؤال الشائع لكل استبيان هو جنس المستفتى. هنا ، من أجل التبسيط ، تم تسجيل فئتين فقط ، "M" و "F".

survey_vector <- c("M", "F", "F", "M", "M")

يمكن أن يكون تسجيل الجنس باستخدام الاختصارات "M" و "F" أمرًا مناسبًا إذا كنت تجمع البيانات باستخدام القلم والورق ، ولكنه قد يؤدي إلى حدوث ارتباك عند تحليل البيانات. عند هذه النقطة ، سترغب غالبًا في تغيير مستويات العامل إلى "Male" و "Female" بدلاً من "M" و "F" للتوضيح.

انتبه: الترتيب الذي تحدد به المستويات مهم. إذا قمت بكتابة المستويات (factor_survey_vector) ، فسترى أنه ينتج [1] "F" "M". إذا لم تحدد مستويات العامل عند إنشاء المتجه ، فسيقوم R تلقائيًا بتعيينها أبجديًا. لتعيين "F" بشكل صحيح إلى "Female" و "M" إلى "Male" ، يجب تعيين المستويات على c ("Female" ، "Male") ، بهذا الترتيب.

# Code to build factor_survey_vector
survey_vector <- c("M", "F", "F", "M", "M")
factor_survey_vector <- factor(survey_vector)

# Specify the levels of factor_survey_vector
levels(factor_survey_vector) <- c("Female","Male")

factor_survey_vector

Summarizing a factor

تلخيص عامل

بعد الانتهاء من هذه الدورة ، ستكون إحدى الوظائف المفضلة لديك في R هي summary() . سيعطيك هذا نظرة عامة سريعة على محتويات المتغير:

summary(my_var)

بالعودة إلى الاستبيان الخاص بنا ، قد ترغب في معرفة عدد مشاركات "Male" وعدد مشاركات "Female" في دراستك . تمنحك وظيفة summary () الإجابة على هذا السؤال.

# Build factor_survey_vector with clean levels
survey_vector <- c("M", "F", "F", "M", "M")
factor_survey_vector <- factor(survey_vector)
levels(factor_survey_vector) <- c("Female", "Male")
factor_survey_vector

# Generate summary for survey_vector
summary(survey_vector)

# Generate summary for factor_survey_vector
summary(factor_survey_vector)

Battle of the sexes

معركة بين الجنسين

قد تتساءل عما يحدث عندما تحاول مقارنة عناصر عامل. في factor_survey_vector لديك عامل بمستويين: "Male" و "Female". ولكن كيف تقدر R هذه بالنسبة لبعضها البعض؟

# Build factor_survey_vector with clean levels
survey_vector <- c("M", "F", "F", "M", "M")
factor_survey_vector <- factor(survey_vector)
levels(factor_survey_vector) <- c("Female", "Male")

# Male
male <- factor_survey_vector[1]

# Female
female <- factor_survey_vector[2]

# Battle of the sexes: Male 'larger' than female?
male > female

Ordered factors

العوامل المرتبة

نظرًا لأن "Male" و "Female" عبارة عن مستويات factors غير مرتبة (أو اسمية) ، فإن R تُرجع رسالة تحذير تخبرك أن عامل التشغيل أكبر من ليس له معنى. كما رأينا من قبل ، تعلق R قيمة مساوية لمستويات هذه العوامل.

لكن هذا ليس هو الحال دائمًا! في بعض الأحيان سوف تتعامل أيضًا مع factors التي لها ترتيب طبيعي بين فئاتها. إذا كانت هذه هي الحالة ، فعلينا التأكد من أننا نقوم بتمرير هذه المعلومات إلى R ...

لنفترض أنك تقود فريقًا بحثيًا مكونًا من خمسة محللي بيانات وأنك تريد تقييم أدائهم. للقيام بذلك ، يمكنك تتبع سرعتهم ، وتقييم كل محلل على أنه "slow" أو "medium" أو "fast" ، وحفظ النتائج في speed_vector.

# Create speed_vector
speed_vector <- c("medium","slow","slow","medium","fast")

Ordered factors (2)

يجب تحويل speed_vector إلى factor ترتيبي لأن فئاته لها ترتيب طبيعي. بشكل افتراضي ، يحول the function factor() ال speed_vector إلى factor غير مرتب. لإنشاء factor مرتب ، يجب عليك إضافة وسيطتين إضافيتين: ordered and levels

factor(some_vector,
       ordered = TRUE,
       levels = c("lev1", "lev2" ...))

من خلال تعيين الوسيطة ordered إلى TRUE في عامل الوظيفة () ، فإنك تشير إلى أن العامل مرتب. باستخدام levels ، فإنك تعطي قيم factor بالترتيب الصحيح.

# Create speed_vector
speed_vector <- c("medium", "slow", "slow", "medium", "fast")

# Convert speed_vector to ordered factor vector
factor_speed_vector <- factor(speed_vector,ordered=TRUE,levels=c("slow", "medium", "fast"))

# Print factor_speed_vector
factor_speed_vector
summary(factor_speed_vector)

Comparing ordered factors

بعد قضاء يوم سيء في العمل ، يدخل "محلل البيانات الثاني" مكتبك ويبدأ في الشكوى من أن "محلل البيانات رقم خمسة" يبطئ المشروع بأكمله. نظرًا لأنك تعلم أن "محلل البيانات رقم 2" يتمتع بسمعة كونه بطئ ، عليك أولاً التحقق مما إذا كان زعمه صحيحًا.

حقيقة أن factor_speed_vector مرتب الآن يمكننا من مقارنة العناصر المختلفة (محللو البيانات في هذه الحالة). يمكنك القيام بذلك ببساطة عن طريق استخدام عوامل المقارنة المعروفة.

# Create factor_speed_vector
speed_vector <- c("medium", "slow", "slow", "medium", "fast")
factor_speed_vector <- factor(speed_vector, ordered = TRUE, levels = c("slow", "medium", "fast"))

# Factor value for second data analyst
da2 <-factor_speed_vector[2]

# Factor value for fifth data analyst
da5 <-factor_speed_vector[5]

# Is data analyst 2 faster than data analyst 5?

da2 > da5

العودة إلي Introduction to R (تلخيصات من DATA CAMP)