เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การคำนวณออโตคอร์รีเลชัน

ออโตคอร์รีเลชัน (autocorrelation) หรือ lagged correlation ใช้ประเมินว่าอนุกรมเวลามีความสัมพันธ์กับค่าในอดีตของตัวเองหรือไม่ สำหรับอนุกรมเวลา x ที่มีความยาว n เราพิจารณาคู่การสังเกต n-1 คู่ที่ห่างกัน 1 หน่วยเวลา คู่แรกคือ (x[2],x[1]) และคู่ถัดไปคือ (x[3],x[2]) แต่ละคู่อยู่ในรูป (x[t],x[t-1]) โดย t คือดัชนีการสังเกต ซึ่งแปรจาก 2 ถึง n ออโตคอร์รีเลชัน lag-1 ของ x ประมาณได้จากค่าสหสัมพันธ์ตัวอย่างของคู่ (x[t], x[t-1]) เหล่านี้

โดยทั่วไปสามารถสร้างคู่การสังเกตเหล่านี้ด้วยตนเองได้ โดยสร้างเวกเตอร์สองตัวคือ x_t0 และ x_t1 แต่ละตัวมีความยาว n-1 โดยแต่ละแถวสอดคล้องกับคู่ (x[t], x[t-1]) จากนั้นใช้ฟังก์ชัน cor() เพื่อประมาณค่าออโตคอร์รีเลชัน lag-1

โชคดีที่คำสั่ง acf() มีทางลัดให้ การใช้ acf(..., lag.max = 1, plot = FALSE) กับอนุกรม x จะคำนวณออโตคอร์รีเลชัน lag-1 โดยอัตโนมัติ

สิ่งที่ควรทราบคือค่าประมาณทั้งสองแตกต่างกันเล็กน้อย เนื่องจากใช้การปรับสเกลต่างกันในการคำนวณค่าความแปรปรวนร่วมตัวอย่าง คือ 1/(n-1) และ 1/n แม้ว่าแบบหลังจะให้ค่าประมาณแบบเบี่ยงเบน แต่เป็นที่นิยมในการวิเคราะห์อนุกรมเวลา และค่าออโตคอร์รีเลชันที่ได้จะต่างกันเพียงตัวประกอบ (n-1)/n

ในแบบฝึกหัดนี้ จะได้ฝึกคำนวณออโตคอร์รีเลชัน lag-1 ทั้งแบบด้วยตนเองและแบบอัตโนมัติ โดยอนุกรมเวลา x และความยาว n (150) ถูกโหลดไว้แล้ว และอนุกรมดังกล่าวแสดงอยู่ในกราฟทางขวา

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์อนุกรมเวลาใน R

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้างเวกเตอร์สองตัวคือ x_t0 และ x_t1 แต่ละตัวมีความยาว n-1 โดยแต่ละแถวสอดคล้องกับคู่ (x[t], x[t-1])
  • ตรวจสอบว่า x_t0 และ x_t1 เป็นคู่ (x[t], x[t-1]) โดยใช้โค้ดที่เขียนไว้ให้แล้ว
  • ใช้ plot() เพื่อดู scatterplot ของ x_t0 และ x_t1
  • ใช้ cor() เพื่อดูค่าสหสัมพันธ์ระหว่าง x_t0 และ x_t1
  • ใช้ acf() กับ x เพื่อคำนวณออโตคอร์รีเลชัน lag-1 โดยอัตโนมัติ ตั้งค่าอาร์กิวเมนต์ lag.max เป็น 1 เพื่อให้ได้ช่วง lag เดียว และตั้งค่าอาร์กิวเมนต์ plot เป็น FALSE
  • ตรวจสอบว่าตัวประกอบความแตกต่างคือ (n-1)/n โดยใช้โค้ดที่เขียนไว้ให้แล้ว

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Define x_t0 as x[-1]
x_t0 <- 

# Define x_t1 as x[-n]
x_t1 <- 

# Confirm that x_t0 and x_t1 are (x[t], x[t-1]) pairs  
head(cbind(x_t0, x_t1))
  
# Plot x_t0 and x_t1
plot(___, ___)

# View the correlation between x_t0 and x_t1
cor(___, ___)

# Use acf with x
acf(___, lag.max = ___, plot = ___)

# Confirm that difference factor is (n-1)/n
cor(x_t1, x_t0) * (n-1)/n
แก้ไขและรันโค้ด