Một chuỗi thời gian được cho là “dừng” nếu nó không có xu hướng, thể hiện phương sai không đổi theo thời gian và có cấu trúc tự tương quan không đổi theo thời gian.
Một cách để kiểm tra xem một chuỗi thời gian có dừng hay không là thực hiện kiểm định Dickey-Fuller tăng cường, sử dụng các giả thuyết không và giả thuyết thay thế sau:
H0: Chuỗi thời gian là không cố định. Nói cách khác, nó có một số cấu trúc phụ thuộc vào thời gian và không có phương sai liên tục theo thời gian.
HA: Chuỗi thời gian là cố định.
Nếu giá trị p từ thử nghiệm nhỏ hơn một mức ý nghĩa nào đó (ví dụ: α = 0,05), thì chúng ta có thể bác bỏ giả thuyết không và kết luận rằng chuỗi thời gian là cố định.
Chúng ta có dữ liệu giá bitcoin theo thời gian từ 12/06/2023 đến 12/01/2023
Trước khi thực hiện kiểm tra Dickey-Fuller tăng cường trên dữ liệu, chúng ta có thể tạo một sơ đồ nhanh để trực quan hóa dữ liệu:
plot.ts(Bitcoin)
Chúng ta có thể thấy rằng sự thay đổi trong giá bitcoin có độ lớn gần như không đổi theo thời gian từ ban đầu đến giá trị thời gian là 20 (hình bên trái) có thể được mô tả bằng cách sử dụng một mô hình cộng (additive model), sau mốc thời gian đó các dao động ngẫu nhiên trong chuỗi có chiều hướng giảm theo thời gian.
Để thực hiện kiểm tra Dickey-Fuller tăng cường, chúng ta có thể sử dụng hàm adf.test() từ thư viện tseries.
# Chuyển đổi dữ liệu Bitcoin thành số
Bitcoin_num <- as.numeric(unlist(Bitcoin))
## Warning: NAs introduced by coercion
# Loại bỏ giá trị NA trong Bitcoin_num
Bitcoin_num <- na.omit(Bitcoin_num)
# Hiển thị giá trị số
Bitcoin_num
## [1] 30742 30623 30415 30166 30288 30364 29913 30512 30768 31151 30617 30568
## [13] 30472 30445 30078 30689 30267 30456 30533 30679 29890 29996 28307 26845
## [25] 26339 26515 26341 25591 25129 25929 25906
## attr(,"na.action")
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30 31
## attr(,"class")
## [1] "omit"
# Thực hiện bài kiểm tra Dicky-Fuller tăng cường
adf.test(Bitcoin_num, alternative = c("stationary","explosive"), k = trunc((length(Bitcoin_num) - 1)^1/3))
## Warning in adf.test(Bitcoin_num, alternative = c("stationary", "explosive"), :
## p-value greater than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: Bitcoin_num
## Dickey-Fuller = 0.29248, Lag order = 10, p-value = 0.99
## alternative hypothesis: stationary
Đây là cách diễn giải các giá trị quan trọng nhất trong đầu ra:
Thống kê kiểm tra: 0.29248
Giá trị P: 0,99
Vì giá trị p không nhỏ hơn 0,05 nên chúng ta không bác bỏ giả thuyết khống.
Điều này có nghĩa là chuỗi giá Bitcoin theo thời gian không cố định. Nói cách khác, nó có một số cấu trúc phụ thuộc vào thời gian và không có phương sai liên tục theo thời gian.
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
You can also embed plots, for example:
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.