การคำนวณออโตคอร์รีเลชัน
ออโตคอร์รีเลชัน (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