كيفية حساب المتوسط المتحرك بالـ r (مع مثال)


في تحليل السلاسل الزمنية، يمثل المتوسط المتحرك متوسط قيمة عدد من الفترات السابقة.

أسهل طريقة لحساب المتوسط المتداول في R هي استخدام الدالة rollmean() من الحزمة حديقة الحيوان :

 library (dplyr)
library (zoo)

#calculate 3-day rolling average
df %>%
  mutate(rolling_avg = rollmean(values, k= 3 , fill=NA, align=' right '))

يحسب هذا المثال بالتحديد متوسطًا متحركًا لمدة 3 أيام للعمود المسمى القيم .

يوضح المثال التالي كيفية استخدام هذه الوظيفة عمليًا.

مثال: حساب المتوسط المتحرك في R

لنفترض أن لدينا إطار البيانات التالي في R الذي يوضح مبيعات المنتج لمدة 10 أيام متتالية:

 #create data frame
df <- data. frame (day=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19))

#view data frame
df

   day sales
1 1 25
2 2 20
3 3 14
4 4 16
5 5 27
6 6 20
7 7 12
8 8 15
9 9 14
10 10 19

يمكننا استخدام بناء الجملة التالي لإنشاء عمود جديد يسمى avg_sales3 يعرض قيمة مبيعات المتوسط المتحرك للأيام الثلاثة السابقة في كل صف من إطار البيانات:

 library (dplyr)
library (zoo)

#calculate 3-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

   day sales avg_sales3
1 1 25 NA
2 2 20 NA
3 3 14 19.66667
4 4 16 16.66667
5 5 27 19.00000
6 6 20 21.00000
7 7 12 19.66667
8 8 15 15.66667
9 9 14 13.66667
10 10 19 16.00000

ملاحظة : تتحكم قيمة k في الدالة rollmean() في عدد الفترات السابقة المستخدمة لحساب المتوسط المتحرك.

يعرض عمود avg_sales3 متوسط قيمة المبيعات المتحركة للفترات الثلاث السابقة.

على سبيل المثال، يتم حساب القيمة الأولى 19.66667 على النحو التالي:

المتوسط المتحرك لمدة 3 أيام = (25 + 20 + 14) / 3 = 19.66667

يمكنك أيضًا حساب متوسطات متحركة متعددة مرة واحدة باستخدام وظائف rollmean() المتعددة داخل وظيفة mutate() .

على سبيل المثال، يوضح الكود التالي كيفية حساب المتوسط المتحرك للمبيعات لمدة 3 أيام و4 أيام:

 library (dplyr)
library (zoo)

#calculate 3-day and 4-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '),
         avg_sales4 = rollmean(sales, k= 4 , fill=NA, align=' right '))

   day sales avg_sales3 avg_sales4
1 1 25 NA NA
2 2 20 NA NA
3 3 14 19.66667 NA
4 4 16 16.66667 18.75
5 5 27 19.00000 19.25
6 6 20 21.00000 19.25
7 7 12 19.66667 18.75
8 8 15 15.66667 18.50
9 9 14 13.66667 15.25
10 10 19 16.00000 15.00

يعرض العمودان avg_sales3 و avg_sales4 المتوسط المتحرك للمبيعات لمدة 3 أيام و4 أيام، على التوالي.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:

كيفية رسم أعمدة متعددة في R
كيفية حساب المتوسط على الأعمدة في R
كيفية حساب المتوسط لكل مجموعة في R

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *