Skip to main content

One post tagged with "Statistics"

View All Tags

Kiểm định Tính Dừng của Chuỗi Thời Gian với ADF Test

· 3 min read

🔍 Giới thiệu

Trong phân tích chuỗi thời gian, việc kiểm tra tính dừng (stationarity) rất quan trọng. Nếu dữ liệu không dừng, nó có thể dẫn đến kết quả sai lệch khi dự báo. Augmented Dickey-Fuller (ADF) Test giúp xác định xem dữ liệu có đơn vị gốc (unit root) hay không.


📌 Dữ liệu mẫu

Chúng ta sử dụng tập dữ liệu sau:

DatetimeCloseHighLowOpenVolume
2025-03-072665026800263502650012984900
2025-03-102645026750264002670011003400
2025-03-112645026450261002630012961400
2025-03-12263002670026200265008814301
2025-03-132610026450261002635013510500

📝 Code

import pandas as pd
from statsmodels.tsa.stattools import adfuller

# Tạo DataFrame từ dữ liệu mẫu
data = pd.DataFrame({
'Datetime': pd.to_datetime([
"2025-03-07", "2025-03-10", "2025-03-11", "2025-03-12", "2025-03-13"
]),
'Close': [26650, 26450, 26450, 26300, 26100],
'High': [26800, 26750, 26450, 26700, 26450],
'Low': [26350, 26400, 26100, 26200, 26100],
'Open': [26500, 26700, 26300, 26500, 26350],
'Volume': [12984900, 11003400, 12961400, 8814301, 13510500]
})

# Đặt 'Datetime' làm chỉ mục
data.set_index('Datetime', inplace=True)

# Kiểm định ADF
result = adfuller(data['Close'])

# In kết quả
print('ADF Statistic: {:.6f}'.format(result[0]))
print('p-value: {:.6f}'.format(result[1]))
print('Critical Values:')
for key, value in result[4].items():
print(f'\t{key}: {value:.3f}')

# Đưa ra kết luận
if result[1] > 0.05:
print("Chuỗi có đơn vị gốc (không ổn định), cần phải differencing.")
else:
print("Chuỗi ổn định, không cần biến đổi.")

🎯 Kết quả & Giải thích Sau khi chạy kiểm định ADF, chúng ta sẽ nhận được:

ADF Statistic: Giá trị thống kê kiểm định p-value: Nếu p-value > 0.05, chuỗi không ổn định (cần biến đổi). Ngược lại, nếu p-value ≤ 0.05, chuỗi ổn định. Critical Values: Các giá trị tới hạn tại mức ý nghĩa 1%, 5%, 10%. Nếu chuỗi không ổn định, ta có thể dùng data['Close'].diff().dropna() để tạo sai phân (differencing) giúp chuỗi trở nên ổn định.

📌 Ứng dụng thực tế ✅ Kiểm tra tính dừng trước khi xây dựng mô hình ARIMA, GARCH. ✅ Tránh lỗi khi sử dụng dữ liệu không ổn định trong phân tích chuỗi thời gian. ✅ Xác định xem có cần biến đổi dữ liệu trước khi dự báo không.