Bắt đầu ngayBắt đầu miễn phí

Tính tự tương quan

Tự tương quan hay tương quan trễ được dùng để đánh giá liệu một chuỗi thời gian có phụ thuộc vào quá khứ của chính nó hay không. Với một chuỗi thời gian x độ dài n, ta xét n-1 cặp quan sát cách nhau một đơn vị thời gian. Cặp đầu tiên là (x[2],x[1]), tiếp theo là (x[3],x[2]). Mỗi cặp có dạng (x[t],x[t-1]) với t là chỉ số quan sát, thay đổi từ 2 đến n trong trường hợp này. Tự tương quan trễ-1 của x có thể được ước lượng bằng hệ số tương quan mẫu của các cặp (x[t], x[t-1]) này.

Nói chung, bạn có thể tự tạo các cặp quan sát này. Trước tiên, tạo hai vector, x_t0x_t1, mỗi vector có độ dài n-1, sao cho các hàng tương ứng với các cặp (x[t], x[t-1]). Sau đó áp dụng hàm cor() để ước lượng tự tương quan trễ-1.

May mắn là lệnh acf() cung cấp cách làm nhanh. Áp dụng acf(..., lag.max = 1, plot = FALSE) cho chuỗi x sẽ tự động tính tự tương quan trễ-1.

Cuối cùng, lưu ý rằng hai ước lượng có khác biệt nhỏ do dùng cách chuẩn hóa hơi khác nhau khi tính hiệp phương sai mẫu: 1/(n-1) so với 1/n. Dù cách sau tạo ra ước lượng chệch, nó lại được ưa dùng trong phân tích chuỗi thời gian, và các ước lượng tự tương quan thu được chỉ khác nhau bởi một hệ số (n-1)/n.

Trong bài này, bạn sẽ thực hành cả cách tính thủ công và tự động cho tự tương quan trễ-1. Chuỗi thời gian x và độ dài n (150) đã được nạp sẵn. Chuỗi được hiển thị trong biểu đồ bên phải.

Bài tập này là một phần của khóa học

Phân tích chuỗi thời gian bằng R

Xem khóa học

Hướng dẫn bài tập

  • Tạo hai vector, x_t0x_t1, mỗi vector có độ dài n-1 sao cho các hàng tương ứng với các cặp (x[t], x[t-1]).
  • Xác nhận rằng x_t0x_t1 là các cặp (x[t], x[t-1]) bằng đoạn mã có sẵn.
  • Dùng plot() để xem biểu đồ phân tán của x_t0x_t1.
  • Dùng cor() để xem hệ số tương quan giữa x_t0x_t1.
  • Dùng acf() với x để tự động tính tự tương quan trễ-1. Đặt đối số lag.max1 để tạo một khoảng trễ và đặt đối số plotFALSE.
  • Xác nhận rằng hệ số chênh lệch là (n-1)/n bằng đoạn mã có sẵn.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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
Chỉnh sửa và Chạy Mã