Chuyển đến nội dung chính

Tự tương quan trong R

Luyện tập tự tương quan trong R bằng cách sử dụng tài liệu từ khóa Introduction to Time Series Analysis của DataCamp.
Đã cập nhật 5 thg 10, 2026  · 6 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Nếu bạn muốn học khóa Introduction to Time Series Analysis in R của chúng tôi, đây là liên kết.

Tính tự tương quan

Tự tương quan hay tương quan có độ 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 nó hay không. Với một chuỗi thời gian x có độ 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]), và tiếp theo là (x[3],x[2]). Mỗi cặp đều có dạng (x[t],x[t-1]) với t là chỉ số quan sát, trong trường hợp này t biến thiên từ 2 đến n. Tự tương quan bậc 1 (lag-1) của x có thể được ước lượng là tương quan mẫu của các cặp (x[t], x[t-1]) này.

Nói chung, ta có thể tự tạo các cặp quan sát này. Đầu tiên, tạo hai vector, x_t0 và x_t1, mỗi vector có độ dài n-1, sao cho các dò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 bậc 1.

May mắn thay, lệnh acf() cung cấp một lối tắt. Áp dụng acf(..., lag.max = 1, plot = FALSE) cho một chuỗi x sẽ tự động tính tự tương quan bậc 1.

Cuối cùng, lưu ý rằng hai ước lượng có khác nhau một chút vì chúng dùng các cách chuẩn hóa hơi khác khi tính hiệp phương sai mẫu, 1/(n-1) so với 1/n. Dù cách sau cho ướ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 theo một hệ số (n-1)/n.

Trong bài tập 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 bậc 1. Chuỗi thời gian x và độ dài của nó n (150) đã được nạp sẵn. Chuỗi được hiển thị trong biểu đồ bên phải.

Hướng dẫn

  • Tạo hai vector, x_t0 và x_t1, mỗi vector có độ dài n-1 sao cho các dòng tương ứng với các cặp (x[t], x[t-1]).
  • Xác nhận rằng x_t0 và x_t1 là các cặp (x[t], x[t-1]) bằng đoạn mã viết sẵn.
  • Dùng plot() để xem biểu đồ phân tán của x_t0 và x_t1.
  • Dùng cor() để xem tương quan giữa x_t0 và x_t1.
  • Dùng acf() với x để tự động tính tự tương quan bậc 1. Đặt đối số lag.max là 1 để tạo một bậc trễ duy nhất và đặt đối số plot là FALSE.
  • Xác nhận rằng hệ số chênh lệch là (n-1)/n bằng đoạn mã viết sẵn.
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbiMgcGVj XG5zZXQuc2VlZCg5ODc2KVxueCA8LSBhcmltYS5zaW0obGlzdChhcj0wLjc1 KSxuPTE1MClcbm4gPC0gbGVuZ3RoKHgpIDsgblxudHMucGxvdCh4KSIsInNh bXBsZSI6IlxuIyBEZWZpbmUgeF90MCBhcyB4Wy0xXVxueF90MCA8LSBcblxu IyBEZWZpbmUgeF90MSBhcyB4Wy1uXVxueF90MSA8LSBcblxuIyBDb25maXJt IHRoYXQgeF90MCBhbmQgeF90MSBhcmUgKHhbdF0sIHhbdC0xXSkgcGFpcnMg IFxuaGVhZChjYmluZCh4X3QwLCB4X3QxKSlcbiAgXG4jIFBsb3QgeF90MCBh bmQgeF90MVxucGxvdChfX18sIF9fXylcblxuIyBWaWV3IHRoZSBjb3JyZWxh dGlvbiBiZXR3ZWVuIHhfdDAgYW5kIHhfdDFcbmNvcihfX18sIF9fXylcblxu IyBVc2UgYWNmIHdpdGggeFxuYWNmKF9fXywgbGFnLm1heCA9IF9fXywgcGxv dCA9IF9fXylcblxuIyBDb25maXJtIHRoYXQgZGlmZmVyZW5jZSBmYWN0b3Ig aXMgKG4tMSkvblxuY29yKHhfdDEsIHhfdDApICogKG4tMSkvbiIsInNvbHV0 aW9uIjoiXG4jIERlZmluZSB4X3QwIGFzIHhbLTFdXG54X3QwIDwtIHhbLTFd IFxuXG4jIERlZmluZSB4X3QxIGFzIHhbLW5dXG54X3QxIDwtIHhbLW5dXG5c biMgQ29uZmlybSB0aGF0IHhfdDAgYW5kIHhfdDEgYXJlICh4W3RdLCB4W3Qt MV0pIHBhaXJzICBcbmhlYWQoY2JpbmQoeF90MCwgeF90MSkpXG4gIFxuIyBQ bG90IHhfdDAgYW5kIHhfdDFcbnBsb3QoeF90MCwgeF90MSlcblxuIyBWaWV3 IHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHhfdDAgYW5kIHhfdDFcbmNvcih4 X3QwLCB4X3QxKVxuXG4jIFVzZSBhY2Ygd2l0aCB4XG5hY2YoeCwgbGFnLm1h eCA9IDEsIHBsb3QgPSBGQUxTRSlcblxuIyBDb25maXJtIHRoYXQgZGlmZmVy ZW5jZSBmYWN0b3IgaXMgKG4tMSkvbiBcbmNvcih4X3QxLCB4X3QwKSAqIChu LTEpL24iLCJzY3QiOiJcbnRlc3Rfb2JqZWN0KFwieF90MFwiKVxudGVzdF9v YmplY3QoXCJ4X3QxXCIpXG50ZXN0X2Z1bmN0aW9uKFwiaGVhZFwiKVxudGVz dF9mdW5jdGlvbihcInBsb3RcIiwgYXJncyA9IGMoXCJ4XCIsIFwieVwiKSlc bnRlc3RfZnVuY3Rpb24oXCJjb3JcIiwgYXJncyA9IGMoXCJ4XCIsIFwieVwi KSwgaW5kZXggPSAxKVxudGVzdF9mdW5jdGlvbihcImFjZlwiLCBhcmdzID0g YyhcInhcIiwgXCJsYWcubWF4XCIsIFwicGxvdFwiKSlcbnRlc3RfZnVuY3Rp b24oXCJjb3JcIiwgYXJncyA9IGMoXCJ4XCIsIFwieVwiKSwgaW5kZXggPSAy KVxudGVzdF9lcnJvcigpXG5cbnN1Y2Nlc3NfbXNnKFwiRXhjZWxsZW50IHdv cmshIEFzIHlvdSBjYW4gc2VlLCB0aGUgYGFjZigpYCBjb21tYW5kIGlzIGEg aGVscGZ1bCBzaG9ydGN1dCBmb3IgY2FsY3VsYXRpbmcgYXV0b2NvcnJlbGF0 aW9uLiBJbiB0aGUgbmV4dCBmZXcgZXhlcmNpc2VzLCB5b3UnbGwgZXhwbG9y ZSBhZGRpdGlvbmFsIGZlYXR1cmVzIG9mIHRoaXMgY29tbWFuZC5cIikiLCJo aW50IjoiXG5UaGUgYGBhY2YoKWBgIGNvbW1hbmQgaW4gdGhpcyBleGVyY2lz ZSBzaG91bGQgdGFrZSBhcmd1bWVudHMgZm9yIGBsb2cubWF4YCAoaW4gdGhp cyBjYXNlLCBgMWApIGFuZCBgcGxvdGAgKGluIHRoaXMgY2FzZSwgYEZBTFNF YCkuIElmIHlvdSdyZSBjb25mdXNlZCwgeW91IGNhbiBhY2Nlc3MgdGhlIGhl bHAgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjb21tYW5kIGJ5IHR5cGluZyBg YD9hY2ZgYCBpbnRvIHlvdXIgUiBjb25zb2xlLiJ9

Nếu điều đó đã rõ ràng, hãy tiếp tục sang bài tập tiếp theo! Nếu chưa, đây là một video tổng quan.

Video tổng quan về tự tương quan

Hàm tự tương quan

Tự tương quan có thể được ước lượng tại nhiều bậc trễ để đánh giá tốt hơn cách một chuỗi thời gian liên hệ với quá khứ của nó. Thông thường, chúng ta quan tâm nhất đến mối liên hệ với quá khứ gần nhất.

Hàm acf(..., lag.max = ..., plot = FALSE) sẽ ước lượng tất cả tự tương quan từ 0, 1, 2,..., đến giá trị được chỉ định bởi đối số lag.max. Trong bài tập trước, bạn đã tập trung vào tự tương quan bậc 1 bằng cách đặt đối số lag.max là 1.

Trong bài tập này, bạn sẽ khám phá thêm một số ứng dụng của lệnh acf(). Một lần nữa, chuỗi thời gian x đã được nạp sẵn cho bạn và được hiển thị trong biểu đồ bên phải.

Hướng dẫn

  • Dùng acf() để xem các tự tương quan của chuỗi x từ 0 đến 10. Đặt đối số lag.max là 10 và giữ đối số plot là FALSE.
  • Sao chép và dán ước lượng tự tương quan (ACF) tại bậc trễ 10.
  • Sao chép và dán ước lượng tự tương quan (ACF) tại bậc trễ 5.
eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6IlxuIyBwZWNc bnNldC5zZWVkKDk4NzYpXG54ID0gYXJpbWEuc2ltKGxpc3QoYXI9MC43NSks bj0xNTApXG50cy5wbG90KHgpXG4iLCJzYW1wbGUiOiJcbiMgR2VuZXJhdGUg QUNGIGVzdGltYXRlcyBmb3IgeCB1cCB0byBsYWctMTBcbmFjZihfX18sIGxh Zy5tYXggPSBfX18sIHBsb3QgPSBGQUxTRSlcblxuIyBUeXBlIHRoZSBBQ0Yg ZXN0aW1hdGUgYXQgbGFnLTEwIFxuXG5cbiMgVHlwZSB0aGUgQUNGIGVzdGlt YXRlIGF0IGxhZy01Iiwic29sdXRpb24iOiJcbiMgR2VuZXJhdGUgQUNGIGVz dGltYXRlcyBmb3IgeCB1cCB0byBsYWctMTBcbmFjZih4LCBsYWcubWF4ID0g MTAsIHBsb3QgPSBGQUxTRSlcblxuIyBUeXBlIHRoZSBBQ0YgZXN0aW1hdGUg YXQgbGFnLTEwIFxuMC4xMDBcblxuIyBUeXBlIHRoZSBBQ0YgZXN0aW1hdGUg YXQgbGFnLTVcbjAuMTk4Iiwic2N0IjoiXG4jIHNjdCBjb2RlXG50ZXN0X2Z1 bmN0aW9uKFwiYWNmXCIsIGFyZ3M9YyhcInhcIiwgXCJsYWcubWF4XCIsIFwi cGxvdFwiKSlcbnRlc3Rfc3R1ZGVudF90eXBlZChcIjAuMTAwXCIpXG50ZXN0 X3N0dWRlbnRfdHlwZWQoXCIwLjE5OFwiKVxudGVzdF9lcnJvcigpXG5cbnN1 Y2Nlc3NfbXNnKFwiR3JlYXQgam9iISBTaW5jZSBhdXRvY29ycmVsYXRpb25z IG1heSB2YXJ5IGJ5IGxhZywgd2Ugb2Z0ZW4gY29uc2lkZXIgYXV0b2NvcnJl bGF0aW9ucyBhcyBhIGZ1bmN0aW9uIG9mIHRoZSB0aW1lIGxhZy4gVGFraW5n IHRoaXMgdmlldywgd2UgaGF2ZSBub3cgZXN0aW1hdGVkIHRoZSBhdXRvY29y cmVsYXRpb24gZnVuY3Rpb24gKEFDRikgb2YgYHhgIGZyb20gbGFncyAwIHRv IDEwLlwiKSIsImhpbnQiOiJcblRoZSBgYGFjZigpYGAgY29tbWFuZCBpbiB0 aGlzIGV4ZXJjaXNlIHNob3VsZCB0YWtlIGFyZ3VtZW50cyBmb3IgYGxvZy5t YXhgIChpbiB0aGlzIGNhc2UsIGAxMGApIGFuZCBgcGxvdGAgKGluIHRoaXMg Y2FzZSwgYEZBTFNFYCkuIEJlIHN1cmUgdG8gY2xvc2VseSBleGFtaW5lIHRo ZSBvdXRwdXQgb2YgdGhpcyBjb21tYW5kLiBJZiB5b3UncmUgY29uZnVzZWQs IHlvdSBjYW4gYWNjZXNzIHRoZSBoZWxwIGRvY3VtZW50YXRpb24gZm9yIHRo aXMgY29tbWFuZCBieSB0eXBpbmcgYGA/YWNmYGAgaW50byB5b3VyIFIgY29u c29sZS4ifQ==

Trực quan hóa hàm tự tương quan

Ước lượng hàm tự tương quan (ACF) tại nhiều bậc trễ cho phép chúng ta đánh giá cách một chuỗi thời gian x liên hệ với quá khứ của nó. Các ước lượng dạng số rất quan trọng cho tính toán chi tiết, nhưng việc trực quan hóa ACF như một hàm của độ trễ cũng hữu ích.

Thực tế, lệnh acf() mặc định tạo ra một hình vẽ. Nó cũng đưa ra giá trị mặc định cho lag.max, số bậc trễ tối đa sẽ được hiển thị.

Ba chuỗi thời gian x, y, và z đã được nạp vào môi trường R của bạn và được vẽ ở bên phải. Chuỗi thời gian x thể hiện tính bền vững mạnh, nghĩa là giá trị hiện tại tương đối gần với các giá trị ngay trước đó. Chuỗi thời gian y thể hiện mẫu chu kỳ với chu kỳ khoảng bốn quan sát, nghĩa là giá trị hiện tại tương đối gần với quan sát trước đó bốn bước. Chuỗi thời gian z không biểu lộ mẫu rõ ràng nào.

Trong bài tập này, bạn sẽ vẽ hàm tự tương quan ước lượng cho mỗi chuỗi thời gian. Trong các biểu đồ do acf() tạo ra, bậc trễ của mỗi ước lượng tự tương quan được đánh dấu trên trục ngang và mỗi ước lượng tự tương quan được biểu diễn bởi chiều cao của các cột dọc. Nhớ rằng ACF tại bậc trễ 0 luôn bằng 1.

Cuối cùng, mỗi hình ACF bao gồm một cặp đường gạch ngang màu xanh dương, thể hiện khoảng tin cậy 95% theo từng bậc trễ quanh giá trị 0. Chúng được dùng để xác định ý nghĩa thống kê của một ước lượng tự tương quan tại một bậc trễ nhất định so với giá trị rỗng là 0, tức là không có tự tương quan tại bậc đó.

Hướng dẫn

Sử dụng ba lần gọi hàm acf() để hiển thị ACF ước lượng của từng chuỗi thời gian (x, y và z) của bạn. Không cần chỉ định thêm đối số nào trong các lần gọi acf().

eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbiMgcGVj XG5zZXQuc2VlZCg0MzY2KVxucGFyKG1mY29sPWMoMywxKSlcbnggPSBhcmlt YS5zaW0obGlzdChhcj0wLjc1KSxuPTE1MClcbnRzLnBsb3QoeCwgbWFpbiA9 IFwiVEhSRUUgVElNRSBTRVJJRVNcIilcbnkgPSBhcmltYS5zaW0obGlzdChh cj1jKDAsMCwwLDAuODgpKSxuPTE1MClcbnRzLnBsb3QoeSlcbnogPSBhcmlt YS5zaW0obGlzdChvcmRlcj1jKDAsMCwwKSksbj0xNTApXG50cy5wbG90KHop Iiwic2FtcGxlIjoiXG4jIFZpZXcgdGhlIEFDRiBvZiB4XG5hY2YoX19fKVxu XG4jIFZpZXcgdGhlIEFDRiBvZiB5XG5cblxuIyBWaWV3IHRoZSBBQ0Ygb2Yg eiIsInNvbHV0aW9uIjoiXG4jIFZpZXcgdGhlIEFDRiBvZiB4XG5hY2YoeClc blxuIyBWaWV3IHRoZSBBQ0Ygb2YgeVxuYWNmKHkpXG5cbiMgVmlldyB0aGUg QUNGIG9mIHpcbmFjZih6KSIsInNjdCI6IlxudGVzdF9mdW5jdGlvbihcImFj ZlwiLCBpbmRleCA9IDEpXG50ZXN0X2Z1bmN0aW9uKFwiYWNmXCIsIGluZGV4 ID0gMilcbnRlc3RfZnVuY3Rpb24oXCJhY2ZcIiwgaW5kZXggPSAzKVxudGVz dF9lcnJvcigpXG5cbnN1Y2Nlc3NfbXNnKFwiR3JlYXQgam9iISBQbG90dGlu ZyB0aGUgZXN0aW1hdGVkIEFDRiBvZiBgeGAgc2hvd3MgbGFyZ2UgcG9zaXRp dmUgY29ycmVsYXRpb25zIGZvciBzZXZlcmFsIGxhZ3Mgd2hpY2ggcXVpY2ts eSBkZWNheSB0b3dhcmRzIHplcm8uIFBsb3R0aW5nIHRoZSBlc3RpbWF0ZWQg QUNGIG9mIGB5YCBzaG93cyBsYXJnZSBwb3NpdGl2ZSBjb3JyZWxhdGlvbnMg YXQgbGFncyB3aGljaCBhcmUgbXVsdGlwbGVzIG9mIGZvdXIsIGFsdGhvdWdo IHRoZXNlIGFsc28gZGVjYXkgdG93YXJkcyB6ZXJvIGFzIHRoZSBsYWcgbXVs dGlwbGUgaW5jcmVhc2VzLiBGaW5hbGx5LCB0aGUgZXN0aW1hdGVkIEFDRiBv ZiBgemAgaXMgbmVhciB6ZXJvIGF0IGFsbCBsYWdzLiBJdCBhcHBlYXJzIHRo ZSBzZXJpZXMgYHpgIGlzIG5vdCBsaW5lYXJseSByZWxhdGVkIHRvIGl0cyBw YXN0LCBhdCBsZWFzdCB0aHJvdWdoIGxhZyAyMC5cIikiLCJoaW50IjoiXG5X aGVyZWFzIHlvdSBwcmV2aW91c2x5IHNwZWNpZmllZCB0aGUgYGxhZy5tYXhg IGFuZCBgcGxvdGAgYXJndW1lbnRzIGluIHlvdXIgY2FsbHMgdG8gYGBhY2Yo KWBgLCBuZWl0aGVyIHRoZXNlIGFyZ3VtZW50cyBhcmUgc3RyaWN0bHkgbmVj ZXNzYXJ5IHdoZW4gdXNpbmcgdGhlIGBgYWNmKClgYCBjb21tYW5kLiBgYGFj ZigpYGAgd2lsbCBjaG9vc2UgYSBgbGFnLm1heGAgdmFsdWUgZm9yIHlvdSBi eSBkZWZhdWx0IGFuZCB3aWxsIHNldCB0aGUgYHBsb3RgIGFyZ3VtZW50IHRv IGBUUlVFYC4gSWYgeW91J3JlIGNvbmZ1c2VkLCB5b3UgY2FuIGFjY2VzcyB0 aGUgaGVscCBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNvbW1hbmQgYnkgdHlw aW5nIGBgP2FjZmBgIGludG8geW91ciBSIGNvbnNvbGUuIn0=


Nếu bạn muốn học thêm từ khóa học này, đây là liên kết.

Xem thêm Time Series Analysis using R: Tutorial.

Chủ đề
R
Khoa học Dữ liệu

Khóa học R

Khóa học

Nhập môn Ngôn ngữ lập trình R

4 giờ
3.1M
Nắm vững kiến thức cơ bản về phân tích dữ liệu trong R, gồm vectors, lists và data frames; luyện tập R với các data set thực tế.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm