วิธีการคำนวณค่าเฉลี่ยเคลื่อนที่ตามกลุ่มใน r


ในการวิเคราะห์อนุกรมเวลา ค่าเฉลี่ยเคลื่อนที่ แสดงถึงค่าเฉลี่ยของช่วงก่อนหน้าจำนวนหนึ่ง

คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อคำนวณค่าเฉลี่ยเคลื่อนที่ของกลุ่มใน R:

 library (dplyr)
library (zoo)

#calculate moving average by group
df %>%
  group_by(variable1)
  mutate(moving_avg = rollmean(variable2, k= 3 , fill=NA, align=' right '))

ตัวอย่างนี้คำนวณค่าเฉลี่ยเคลื่อนที่ 3 ช่วงของ ตัวแปร2 ซึ่งจัดกลุ่มตาม ตัวแปร1

รหัสนี้ใช้ฟังก์ชัน group_by() จากแพ็คเกจ dplyr และฟังก์ชัน rollmean() จากแพ็คเกจ สวนสัตว์

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ

ตัวอย่าง: คำนวณค่าเฉลี่ยเคลื่อนที่ตามกลุ่มในหน่วย R

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ที่แสดงยอดขายของผลิตภัณฑ์เป็นเวลาหลายวันติดต่อกันที่ร้านค้าสองแห่งที่แตกต่างกัน:

 #create data frame
df <- data. frame (store=rep(c(' A ', ' B '), each= 7 ),
                 sales=c(4, 4, 3, 5, 6, 5, 7, 4, 8, 7, 2, 5, 4, 6))

#view data frame
df

   blind sales
1 to 4
2 to 4
3 to 3
4 to 5
5 to 6
6 to 5
7 to 7
8 B 4
9 B 8
10 B 7
11 B 2
12 B 5
13 B 4
14 B 6

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อสร้างคอลัมน์ใหม่ที่เรียกว่า moving_avg3 ซึ่งแสดงมูลค่ายอดขายเฉลี่ยเคลื่อนที่ 3 วันสำหรับแต่ละร้านค้า:

 library (dplyr)
library (zoo)

#calculate 3-day moving average of sales, grouped by store
df %>%
  group_by(store) %>%
  mutate(moving_avg3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

# A tibble: 14 x 3
# Groups: store[2]
   store sales moving_avg3
           
 1 A 4 NA   
 2 A 4 NA   
 3 to 3 3.67
 4 to 5 4   
 5 to 6 4.67
 6 to 5 5.33
 7 to 7 6   
 8 B 4 NA   
 9 B 8 NA   
10 B 7 6.33
11 B 2 5.67
12 B 5 4.67
13 B 4 3.67
14 B 6 5

หมายเหตุ : ค่า k ในฟังก์ชัน rollmean() จะควบคุมจำนวนงวดก่อนหน้าที่ใช้ในการคำนวณค่าเฉลี่ยเคลื่อนที่

คอลัมน์ moving_avg3 แสดงมูลค่าการขายเฉลี่ยเคลื่อนที่สำหรับ 3 ช่วงก่อนหน้า

ตัวอย่างเช่น ยอดขายเฉลี่ยต่อเนื่องในช่วง 3 วันแรกสำหรับร้านค้า A จะถูกคำนวณดังนี้:

ค่าเฉลี่ยเคลื่อนที่ 3 วัน = (4 + 4 + 3) / 3 = 3.67

ค่าเฉลี่ยเคลื่อนที่ของยอดขายในช่วง 3 วันข้างหน้าสำหรับร้านค้า A มีการคำนวณดังนี้:

ค่าเฉลี่ยเคลื่อนที่ 3 วัน = (4 + 3 + 5) / 3 = 4

และอื่นๆ

โปรดทราบว่าค่าเฉลี่ยเคลื่อนที่สองค่าแรกสำหรับแต่ละร้านค้าคือ NA เนื่องจากมีช่วงเวลาก่อนหน้าไม่เพียงพอที่จะใช้สำหรับค่าเฉลี่ยเคลื่อนที่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:

วิธีพล็อตหลายคอลัมน์ใน R
วิธีเฉลี่ยคอลัมน์ใน R
วิธีคำนวณค่าเฉลี่ยต่อกลุ่มใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *