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_t0 và x_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
Hướng dẫn bài tập
- Tạo hai vector,
x_t0vàx_t1, mỗi vector có độ dàin-1sao 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_t0vàx_t1là 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ủax_t0vàx_t1. - Dùng
cor()để xem hệ số tương quan giữax_t0vàx_t1. - Dùng
acf()vớixđể tự động tính tự tương quan trễ-1. Đặt đối sốlag.maxlà1để tạo một khoảng trễ và đặt đối sốplotlàFALSE. - Xác nhận rằng hệ số chênh lệch là
(n-1)/nbằ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