วิธีการคำนวณความสัมพันธ์แบบเลื่อนใน r


ความสัมพันธ์แบบโรลลิ่ง คือความสัมพันธ์ระหว่างอนุกรมเวลาสองชุดบนหน้าต่างบานเลื่อน ข้อดีประการหนึ่งของความสัมพันธ์ประเภทนี้คือ คุณสามารถเห็นภาพความสัมพันธ์ระหว่างอนุกรมเวลาสองอนุกรมในช่วงเวลาหนึ่งได้

บทช่วยสอนนี้จะอธิบายวิธีคำนวณความสัมพันธ์แบบกลิ้งใน R

วิธีการคำนวณความสัมพันธ์แบบกลิ้งใน R

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ที่แสดงจำนวนผลิตภัณฑ์ทั้งหมดที่ขายสำหรับผลิตภัณฑ์สองชนิดที่แตกต่างกัน ( x และ y ) ในช่วงระยะเวลา 15 เดือน:

 #create data
data <- data.frame(month=1:15,
                   x=c(13, 15, 16, 15, 17, 20, 22, 24, 25, 26, 23, 24, 23, 22, 20),
                   y=c(22, 24, 23, 27, 26, 26, 27, 30, 33, 32, 27, 25, 28, 26, 28))

#view first six rows
head(data)

  month xy
1 1 13 22
2 2 15 24
3 3 16 23
4 4 15 27
5 5 17 26
6 6 20 26

ในการคำนวณความสัมพันธ์แบบกลิ้งใน R เราสามารถใช้ ฟังก์ชัน rollapply() จากแพ็คเกจ สวนสัตว์

ฟังก์ชันนี้ใช้ไวยากรณ์ต่อไปนี้:

rollapply (ข้อมูล, ความกว้าง, ความสนุก, by.column=TRUE)

ทอง:

  • data: ชื่อของกรอบข้อมูล
  • width: จำนวนเต็มระบุความกว้างของหน้าต่างสำหรับการเลื่อนความสัมพันธ์
  • FUN: ฟังก์ชั่นที่จะใช้
  • by.column: ระบุว่าจะใช้ฟังก์ชันกับแต่ละคอลัมน์แยกกันหรือไม่ นี่เป็น TRUE ตามค่าเริ่มต้น แต่ในการคำนวณความสัมพันธ์แบบต่อเนื่อง เราจำเป็นต้องระบุว่าเป็น FALSE

ต่อไปนี้เป็นวิธีใช้ฟังก์ชันนี้เพื่อคำนวณความสัมพันธ์ต่อเนื่องของยอดขายในช่วง 3 เดือนระหว่างผลิตภัณฑ์ x และผลิตภัณฑ์ y :

 #calculate 3-month rolling correlation between sales for x and y
rollapply(data, width=3, function (x) cor(x[,2],x[,3]), by.column= FALSE )

 [1] 0.6546537 -0.6933752 -0.2401922 -0.8029551 0.8029551 0.9607689
 [7] 0.9819805 0.6546537 0.8824975 0.8170572 -0.9449112 -0.3273268
[13] -0.1889822

ฟังก์ชันนี้จะส่งคืนความสัมพันธ์ระหว่างยอดขายของผลิตภัณฑ์สองรายการในช่วง 3 เดือนที่ผ่านมา ตัวอย่างเช่น:

  • ความสัมพันธ์ของยอดขายในเดือนที่ 1-3 เท่ากับ 0.6546537
  • ความสัมพันธ์ของยอดขายในเดือนที่ 2-4 อยู่ที่ -0.6933752
  • ความสัมพันธ์ของยอดขายในเดือนที่ 3-5 อยู่ที่ -0.2401922

และอื่นๆ

เราสามารถปรับสูตรนี้ได้อย่างง่ายดายเพื่อคำนวณความสัมพันธ์แบบกลิ้งในช่วงเวลาอื่น ตัวอย่างเช่น รหัสต่อไปนี้แสดงวิธีคำนวณความสัมพันธ์ต่อเนื่องของยอดขายในช่วง 6 เดือนระหว่างผลิตภัณฑ์ทั้งสอง:

 #calculate 6-month rolling correlation between sales for x and y
rollapply(data, width=6, function (x) cor(x[,2],x[,3]), by.column= FALSE )

 [1] 0.5587415 0.4858553 0.6931033 0.7564756 0.8959291 0.9067715 0.7155418
 [8] 0.7173740 0.7684468 0.4541476

ฟังก์ชันนี้จะส่งคืนความสัมพันธ์ระหว่างยอดขายผลิตภัณฑ์ทั้งสองรายการในช่วง 6 เดือนที่ผ่านมา ตัวอย่างเช่น:

  • ความสัมพันธ์ของยอดขายในเดือนที่ 1-6 เท่ากับ 0.5587415
  • ความสัมพันธ์ของยอดขายในเดือนที่ 2-7 เท่ากับ 0.4858553
  • ความสัมพันธ์ของยอดขายในเดือนที่ 3-8 เท่ากับ 0.6931033

และอื่นๆ

ความคิดเห็น

โปรดคำนึงถึงประเด็นต่อไปนี้เมื่อใช้ฟังก์ชัน rollapply():

  • ความ กว้าง (เช่น หน้าต่างแบบเลื่อนลง) จะต้องเท่ากับหรือมากกว่า 3 เพื่อคำนวณความสัมพันธ์
  • ในสูตรด้านบน เราใช้ cor(x[,2],x[3]) เนื่องจากทั้งสองคอลัมน์ที่เราต้องการคำนวณความสัมพันธ์ระหว่างอยู่ในตำแหน่งที่ 2 และ 3 ปรับตัวเลขเหล่านี้หากคอลัมน์ที่คุณสนใจอยู่ในตำแหน่งที่แตกต่างกัน

ที่เกี่ยวข้อง: วิธีการคำนวณความสัมพันธ์แบบโรลลิ่งใน Excel

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

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