Cơ sở lý thuyết mô hình Garch
Mô hình GARCH (Generalized Autoregressive Conditional Heteroskedasticity) là một mô hình thống kê được phát triển bởi Robert F. Engle vào những năm 1980 để mô hình hóa sự biến đổi không đều của dữ liệu tài chính. Mô hình này được sử dụng rộng rãi trong lĩnh vực tài chính để phân tích và dự đoán rủi ro.
Mô hình GARCH kết hợp các thành phần autoregressive (AR) và moving average (MA) để mô hình hóa sự phụ thuộc của phương sai có điều kiện vào các giá trị đã qua xử lý cũng như các giá trị độ biến động trước đó. Một mô hình GARCH(p, q) có thể được biểu diễn như sau:
σ²(t) = ω + α₁ε²(t-1) + … + αₚε²(t-p) + β₁σ²(t-1) + … + β_qσ²(t-q)
Trong đó:
σ²(t) là phương sai có điều kiện của biến ngẫu nhiên tại thời điểm t. ε(t) là biến ngẫu nhiên có kỳ vọng bằng 0 và phương sai đẳng nhất. ω, α₁, …, αₚ, β₁, …, β_q là các tham số của mô hình. p là số lags cho thành phần autoregressive (AR) và q là số lags cho thành phần moving average (MA). Thường thì các tham số α và β trong mô hình GARCH có giá trị từ 0 đến 1 để đảm bảo tính chất dương và tích cực của phương sai. Trong trường hợp p = 0 và q = 0, mô hình GARCH trở thành mô hình ARCH.
Mô hình GARCH được ước lượng thông qua các phương pháp tối đa hóa hàm hợp lý hoặc phương pháp bình phương tối thiểu. Các giá trị ước lượng của các tham số được xác định để tối thiểu hóa sai số giữa dữ liệu quan sát và dữ liệu được dự đoán từ mô hình GARCH.
Mô hình GARCH được sử dụng rộng rãi trong các ứng dụng tài chính như dự báo giá trị tài sản, quản lý rủi ro tài chính, và đánh giá tác động của biến động thị trường lên các quyết định đầu tư và giao dịch.
Chuẩn bị dữ liệu
library(readxl)
library(rugarch)
## Loading required package: parallel
##
## Attaching package: 'rugarch'
## The following object is masked from 'package:stats':
##
## sigma
library(nortest)
library(kSamples)
## Loading required package: SuppDists
##
## Attaching package: 'kSamples'
## The following object is masked from 'package:nortest':
##
## ad.test
vni.data <- read_excel("d:/vni.xlsx")
# Chuyển đổi dữ liệu sang định dạng dữ liệu chuỗi thời gian
vni.ts <- ts(vni.data[, 2])
# Mô hình GARCH(1,1) với phân phối chuẩn
vni.garch11n.spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0)),
distribution.model = "norm")
vni.garch11n.fit <- ugarchfit(spec = vni.garch11n.spec, data = vni.ts)
# Xem kết quả ước lượng
show(vni.garch11n.fit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : sGARCH(1,1)
## Mean Model : ARFIMA(0,0,0)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 570.858790 0.921179 619.704419 0.00000
## omega 29.374346 5.141920 5.712720 0.00000
## alpha1 0.992720 0.057428 17.286461 0.00000
## beta1 0.000017 0.049928 0.000344 0.99973
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 570.858790 3.830972 149.011474 0.000000
## omega 29.374346 6.251627 4.698672 0.000003
## alpha1 0.992720 0.031442 31.572808 0.000000
## beta1 0.000017 0.031413 0.000546 0.999564
##
## LogLikelihood : -14904.6
##
## Information Criteria
## ------------------------------------
##
## Akaike 11.960
## Bayes 11.970
## Shibata 11.960
## Hannan-Quinn 11.964
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 2289 0
## Lag[2*(p+q)+(p+q)-1][2] 3396 0
## Lag[4*(p+q)+(p+q)-1][5] 6583 0
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 5.11 0.0237815
## Lag[2*(p+q)+(p+q)-1][5] 13.06 0.0014672
## Lag[4*(p+q)+(p+q)-1][9] 20.75 0.0001284
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.569 0.500 2.000 0.45065
## ARCH Lag[5] 1.908 1.440 1.667 0.49204
## ARCH Lag[7] 7.806 2.315 1.543 0.05793
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 7.5254
## Individual Statistics:
## mu 6.75554
## omega 0.03277
## alpha1 0.36129
## beta1 0.08549
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.07 1.24 1.6
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 1.7062 0.0881 *
## Negative Sign Bias 0.5444 0.5862
## Positive Sign Bias 1.4052 0.1601
## Joint Effect 3.6796 0.2982
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 10289 0
## 2 30 15629 0
## 3 40 18081 0
## 4 50 16350 0
##
##
## Elapsed time : 0.447077
# Mô hình GARCH(1,1) với phân phối Student's t
vni.garch11t.spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0)),
distribution.model = "std")
vni.garch11t.fit <- ugarchfit(spec = vni.garch11t.spec, data = vni.data$Price)
# Xem kết quả ước lượng
show(vni.garch11t.fit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : sGARCH(1,1)
## Mean Model : ARFIMA(0,0,0)
## Distribution : std
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 502.470607 0.652104 770.5380 0.000000
## omega 13.965701 3.207202 4.3545 0.000013
## alpha1 0.899151 0.057332 15.6832 0.000000
## beta1 0.099849 0.051515 1.9382 0.052594
## shape 99.999919 20.524612 4.8722 0.000001
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 502.470607 2.794155 179.8292 0.000000
## omega 13.965701 3.530532 3.9557 0.000076
## alpha1 0.899151 0.056956 15.7869 0.000000
## beta1 0.099849 0.057613 1.7331 0.083080
## shape 99.999919 1.117587 89.4784 0.000000
##
## LogLikelihood : -14823.62
##
## Information Criteria
## ------------------------------------
##
## Akaike 11.896
## Bayes 11.908
## Shibata 11.896
## Hannan-Quinn 11.900
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 2247 0
## Lag[2*(p+q)+(p+q)-1][2] 3320 0
## Lag[4*(p+q)+(p+q)-1][5] 6440 0
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 22.90 1.710e-06
## Lag[2*(p+q)+(p+q)-1][5] 29.34 4.864e-08
## Lag[4*(p+q)+(p+q)-1][9] 41.40 2.906e-10
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 1.549 0.500 2.000 0.2132579
## ARCH Lag[5] 6.800 1.440 1.667 0.0388511
## ARCH Lag[7] 17.904 2.315 1.543 0.0002173
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 713.6176
## Individual Statistics:
## mu 3.7015
## omega 0.4520
## alpha1 3.8637
## beta1 0.2289
## shape 614.3636
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.28 1.47 1.88
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 2.0645 0.03907 **
## Negative Sign Bias 1.9632 0.04973 **
## Positive Sign Bias 0.1701 0.86493
## Joint Effect 5.5578 0.13522
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 12645 0
## 2 30 18245 0
## 3 40 21816 0
## 4 50 19762 0
##
##
## Elapsed time : 0.4970551
# Mô hình GARCH(1,1) với phân phối Skewed Student's t
vni.garch11st.spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0)),
distribution.model = "sstd")
vni.garch11st.fit <- ugarchfit(spec = vni.garch11st.spec, data = vni.data$Price)
# Xem kết quả ước lượng
show(vni.garch11st.fit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : sGARCH(1,1)
## Mean Model : ARFIMA(0,0,0)
## Distribution : sstd
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 468.08289 2.183897 214.333754 0.00000
## omega 465.95295 42.925300 10.854972 0.00000
## alpha1 0.99900 0.040002 24.973485 0.00000
## beta1 0.00000 0.051105 0.000006 0.99999
## skew 0.20476 0.008921 22.953094 0.00000
## shape 4.84499 0.377066 12.849213 0.00000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 468.08289 13.585115 34.455572 0.0e+00
## omega 465.95295 119.283684 3.906259 9.4e-05
## alpha1 0.99900 0.039414 25.346264 0.0e+00
## beta1 0.00000 0.079433 0.000004 1.0e+00
## skew 0.20476 0.015388 13.306188 0.0e+00
## shape 4.84499 0.675674 7.170610 0.0e+00
##
## LogLikelihood : -13811.96
##
## Information Criteria
## ------------------------------------
##
## Akaike 11.085
## Bayes 11.099
## Shibata 11.085
## Hannan-Quinn 11.090
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 2416 0
## Lag[2*(p+q)+(p+q)-1][2] 3606 0
## Lag[4*(p+q)+(p+q)-1][5] 7115 0
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 1388 0
## Lag[2*(p+q)+(p+q)-1][5] 3753 0
## Lag[4*(p+q)+(p+q)-1][9] 5750 0
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 1171 0.500 2.000 0
## ARCH Lag[5] 2655 1.440 1.667 0
## ARCH Lag[7] 3786 2.315 1.543 0
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 404.6829
## Individual Statistics:
## mu 12.0887
## omega 0.2175
## alpha1 2.3314
## beta1 1.4853
## skew 3.0288
## shape 3.6751
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.49 1.68 2.12
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 22.31 1.129e-100 ***
## Negative Sign Bias 24.62 5.990e-120 ***
## Positive Sign Bias 21.68 1.244e-95 ***
## Joint Effect 1385.42 4.295e-300 ***
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 9402 0
## 2 30 10617 0
## 3 40 12893 0
## 4 50 11791 0
##
##
## Elapsed time : 1.050385
# Mô hình GARCH(1,1) với phân phối Generalized Error Distribution (GED)
vni.garch11g.spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0)),
distribution.model = "ged")
vni.garch11g.fit <- ugarchfit(spec = vni.garch11g.spec, data = vni.data$Price)
# Xem kết quả ước lượng
show(vni.garch11g.fit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : sGARCH(1,1)
## Mean Model : ARFIMA(0,0,0)
## Distribution : ged
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 551.029986 3.492795 157.7619 0.00000
## omega 230.805219 32.028269 7.2063 0.00000
## alpha1 0.382777 0.020489 18.6824 0.00000
## beta1 0.082023 0.050551 1.6226 0.10468
## shape 34.691628 3.774353 9.1914 0.00000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 551.029986 29.08905 18.94286 0.00000
## omega 230.805219 226.76336 1.01782 0.30876
## alpha1 0.382777 0.03470 11.03093 0.00000
## beta1 0.082023 0.14843 0.55261 0.58053
## shape 34.691628 25.12128 1.38097 0.16729
##
## LogLikelihood : -13847.09
##
## Information Criteria
## ------------------------------------
##
## Akaike 11.113
## Bayes 11.124
## Shibata 11.113
## Hannan-Quinn 11.117
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 2455 0
## Lag[2*(p+q)+(p+q)-1][2] 3673 0
## Lag[4*(p+q)+(p+q)-1][5] 7287 0
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 1653 0
## Lag[2*(p+q)+(p+q)-1][5] 4410 0
## Lag[4*(p+q)+(p+q)-1][9] 6867 0
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 1384 0.500 2.000 0
## ARCH Lag[5] 3140 1.440 1.667 0
## ARCH Lag[7] 4544 2.315 1.543 0
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 64.7055
## Individual Statistics:
## mu 48.9598
## omega 0.1206
## alpha1 0.4410
## beta1 0.3559
## shape 0.2170
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.28 1.47 1.88
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 2.175 2.970e-02 **
## Negative Sign Bias 21.719 6.323e-96 ***
## Positive Sign Bias 30.491 9.088e-174 ***
## Joint Effect 1405.365 2.018e-304 ***
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 6354 0
## 2 30 8788 0
## 3 40 9416 0
## 4 50 9479 0
##
##
## Elapsed time : 0.6475861
# Mô hình GARCH(1,1) với phân phối Skewed Generalized Error Distribution (SGED)
vni.garch11sg.spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0)),
distribution.model = "sged")
vni.garch11sg.fit <- ugarchfit(spec = vni.garch11sg.spec, data = vni.data$Price)
# Xem kết quả ước lượng
show(vni.garch11sg.fit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : sGARCH(1,1)
## Mean Model : ARFIMA(0,0,0)
## Distribution : sged
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 551.074451 3.579282 153.9623 0.00000
## omega 230.966276 34.842768 6.6288 0.00000
## alpha1 0.382748 0.021533 17.7746 0.00000
## beta1 0.081956 0.055060 1.4885 0.13662
## skew 0.998349 0.055377 18.0283 0.00000
## shape 34.681040 3.794146 9.1407 0.00000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 551.074451 30.489593 18.07418 0.00000
## omega 230.966276 249.850661 0.92442 0.35527
## alpha1 0.382748 0.036808 10.39849 0.00000
## beta1 0.081956 0.177570 0.46154 0.64441
## skew 0.998349 0.123060 8.11267 0.00000
## shape 34.681040 25.801468 1.34415 0.17890
##
## LogLikelihood : -13847.09
##
## Information Criteria
## ------------------------------------
##
## Akaike 11.114
## Bayes 11.128
## Shibata 11.114
## Hannan-Quinn 11.119
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 2455 0
## Lag[2*(p+q)+(p+q)-1][2] 3673 0
## Lag[4*(p+q)+(p+q)-1][5] 7287 0
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 1654 0
## Lag[2*(p+q)+(p+q)-1][5] 4414 0
## Lag[4*(p+q)+(p+q)-1][9] 6874 0
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 1386 0.500 2.000 0
## ARCH Lag[5] 3143 1.440 1.667 0
## ARCH Lag[7] 4549 2.315 1.543 0
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 65.8758
## Individual Statistics:
## mu 48.8388
## omega 0.1188
## alpha1 0.4401
## beta1 0.3545
## skew 0.2632
## shape 0.2150
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.49 1.68 2.12
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 2.121 3.404e-02 **
## Negative Sign Bias 21.691 1.073e-95 ***
## Positive Sign Bias 30.535 3.401e-174 ***
## Joint Effect 1406.995 8.940e-305 ***
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 6325 0
## 2 30 8804 0
## 3 40 9371 0
## 4 50 9499 0
##
##
## Elapsed time : 1.720258
vni.model.list <- list(
garch11n = vni.garch11n.fit,
garch11t = vni.garch11t.fit,
garch11st = vni.garch11st.fit,
garch11g = vni.garch11g.fit,
garch11sg = vni.garch11sg.fit
)
vni.info.mat <- sapply(vni.model.list, infocriteria)
rownames(vni.info.mat) <- rownames(infocriteria(vni.garch11n.fit))
vni.info.mat
## garch11n garch11t garch11st garch11g garch11sg
## Akaike 11.96037 11.89621 11.08541 11.11279 11.11359
## Bayes 11.96971 11.90788 11.09942 11.12447 11.12760
## Shibata 11.96036 11.89620 11.08540 11.11278 11.11358
## Hannan-Quinn 11.96376 11.90045 11.09050 11.11703 11.11868
Dựa trên giá trị thông tin tiêu chuẩn, mô hình garch11sg có giá trị Akaike thấp nhất (11.08541) và giá trị Hannan-Quinn thấp nhất (11.09050). Điều này cho thấy mô hình GARCH(1,1) với phân phối Skewed Student’s t này có khả năng phù hợp tốt với chuỗi dữ liệu VNI.
library(rugarch)
# Định nghĩa mô hình GARCH(1,1)
spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0)))
# Ước lượng mô hình GARCH(1,1)
fit <- ugarchfit(spec, data = vni.ts)
# Trích xuất chuỗi phần dư từ mô hình GARCH(1,1)
vni_resid <- residuals(vni.garch11st.fit)
# Chuẩn hóa chuỗi phần dư bằng cách chia cho độ lệch chuẩn
chuanhoavni <- vni_resid / sigma(vni.garch11st.fit)
library(goftest)
##
## Attaching package: 'goftest'
## The following object is masked from 'package:kSamples':
##
## ad.test
## The following objects are masked from 'package:nortest':
##
## ad.test, cvm.test
# Kiểm định Cramer-von Mises cho dữ liệu vni_resid_normalized với phân phối đều
cvm_test <- cvm.test(chuanhoavni, punif)
# Hiển thị kết quả
print(cvm_test)
##
## Cramer-von Mises test of goodness-of-fit
## Null hypothesis: uniform distribution
## Parameters assumed to be fixed
##
## data: chuanhoavni
## omega2 = 249.47, p-value < 2.2e-16
library(nortest)
# Kiểm định Anderson-Darling cho dữ liệu vni_resid_normalized với phân phối đều
ad_test <- ad.test(chuanhoavni, "punif")
# Hiển thị kết quả
print(ad_test)
##
## Anderson-Darling test of goodness-of-fit
## Null hypothesis: uniform distribution
## Parameters assumed to be fixed
##
## data: chuanhoavni
## An = Inf, p-value = 2.407e-07
# Kiểm định KS-test cho dữ liệu vni_resid_normalized với phân phối đều
ks_test_v <- ks.test(chuanhoavni, "punif")
# Hiển thị kết quả
print(ks_test_v)
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: chuanhoavni
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
# Hiển thị bộ dữ liệu dùng để kiểm định
library(readxl)
dulieu <- read_excel("d:/IndexData.xlsx")
dulieu
## # A tibble: 500 × 2
## Date Price
## <dttm> <dbl>
## 1 2023-07-07 00:00:00 1138.
## 2 2023-07-06 00:00:00 1126.
## 3 2023-07-05 00:00:00 1135.
## 4 2023-07-04 00:00:00 1132
## 5 2023-07-03 00:00:00 1126.
## 6 2023-06-30 00:00:00 1120.
## 7 2023-06-29 00:00:00 1125.
## 8 2023-06-28 00:00:00 1138.
## 9 2023-06-27 00:00:00 1134.
## 10 2023-06-26 00:00:00 1132.
## # ℹ 490 more rows
Kiểm định phân phối chuẩn Jarque-Bera (Jarque-Bera Normality Test) là một phương pháp thống kê được sử dụng để kiểm tra xem một tập dữ liệu có tuân theo phân phối chuẩn hay không. Phương pháp này dựa trên hai thống kê mô tả, đó là hệ số bất đối xứng (skewness) và hệ số nhọn (kurtosis), để đánh giá tính chuẩn của phân phối dữ liệu.
Kiểm định phân phối chuẩn Jarque-Bera kiểm tra xem giá trị hệ số bất đối xứng và hệ số nhọn của dữ liệu có phù hợp với phân phối chuẩn hay không. Nếu giá trị p-value của kiểm định nhỏ hơn một ngưỡng ý nghĩa (thường là 0.05), chúng ta có căn cứ để bác bỏ giả thuyết rằng dữ liệu không tuân theo phân phối chuẩn.
library(moments)
library(readxl)
vnindex <- read_excel("d:/IndexData.xlsx")
# Kiểm định phân phối chuẩn Jarque-Bera
vnindex <- jarque.test(vnindex$Price)
# Hiển thị kết quả kiểm định
vnindex
##
## Jarque-Bera Normality Test
##
## data: vnindex$Price
## JB = 40.075, p-value = 1.986e-09
## alternative hypothesis: greater
Từ kết quả chạy được ta thấy :
JB (Jarque-Bera statistic) = 40.075: Đây là giá trị của thống kê Jarque-Bera, một giá trị thống kê dùng để kiểm tra sự phân phối của dữ liệu. Giá trị Jarque-Bera được tính dựa trên sự khác biệt giữa các độ lệch chuẩn và độ nhọn chuẩn của phân phối dữ liệu so với phân phối chuẩn.
p-value = 1.986e-09: Đây là giá trị p-value, cho biết mức độ ý nghĩa thống kê của kết quả kiểm định. Trong trường hợp này, giá trị p-value rất nhỏ (gần bằng 0), vì vậy chúng ta có căn cứ để bác bỏ giả thuyết không phải phân phối chuẩn (giả thuyết không có sự khác biệt về phân phối giữa dữ liệu và phân phối chuẩn).
alternative hypothesis: greater: Đây là giả thuyết thay thế (alternative hypothesis) của kiểm định. Trong trường hợp này, giả thuyết thay thế là “greater” (lớn hơn), cho biết rằng chúng ta quan tâm đến việc xác định xem dữ liệu có phân phối lệch phải (phân phối có đuôi dài về bên phải) hay không.
Với kết quả này, ta có căn cứ để bác bỏ giả thuyết rằng dữ liệu vnindex$Price tuân theo phân phối chuẩn. Thay vào đó, dữ liệu có sự lệch phải hoặc không tuân theo phân phối chuẩn.
Kiểm định tính dừng Augmented Dickey-Fuller là một phương pháp thống kê được sử dụng để kiểm tra xem một chuỗi dữ liệu có tính dừng hay không. Tính dừng là tính chất mà một chuỗi dữ liệu không thay đổi theo thời gian và có thể được mô hình hóa bằng một quá trình ngẫu nhiên ổn định.
Phương pháp ADF mở rộng kiểm định Dickey-Fuller thông thường bằng cách bổ sung thêm các tham số tự phương sai và sai số cho mô hình autoregressive. Kiểm định Augmented Dickey-Fuller kiểm tra xem có một hệ số tự hồi quy (autoregressive coefficient) trong mô hình autoregressive có giá trị bằng 1 hay không. Nếu giá trị hệ số tự hồi quy bằng 1, đồng nghĩa với việc chuỗi dữ liệu không có tính dừng.
Kết quả của kiểm định Augmented Dickey-Fuller bao gồm giá trị tới hạn (test statistic), giá trị p-value và giả thuyết thay thế (alternative hypothesis).
# Gọi thư viện cần thiết
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(readxl)
# Đọc dữ liệu từ tệp Excel
data <- read_excel("d:/IndexData.xlsx")
# Kiểm định tính dừng ADF
adf <- adf.test(data$Price)
# Hiển thị kết quả kiểm định
adf
##
## Augmented Dickey-Fuller Test
##
## data: data$Price
## Dickey-Fuller = -1.9856, Lag order = 7, p-value = 0.5844
## alternative hypothesis: stationary
Từ kết quả ta thấy :
Với kết quả này, vì giá trị p-value lớn hơn mức ý nghĩa thông thường, chúng ta không có đủ bằng chứng để bác bỏ giả thuyết không có tính dừng. Tuy nhiên, không có đủ bằng chứng để xác nhận rằng dữ liệu có tính dừng.
Kiểm định tương quan chuỗi Ljung-Box (Ljung-Box test) là một phương pháp thống kê được sử dụng để kiểm tra tính độc lập tương quan trong chuỗi dữ liệu. Phương pháp này dựa trên việc kiểm tra giả thuyết rằng không có tương quan giữa các giá trị trong chuỗi dữ liệu.
Kiểm định Ljung-Box thực hiện kiểm tra xem các giá trị trong chuỗi dữ liệu có liên quan tới nhau hay không, dựa trên giả thuyết không có tương quan. Kỹ thuật này sử dụng một số lượng thời gian trễ (lag) để xác định mức độ tương quan.
# Đọc dữ liệu từ tệp Excel
data <- read_excel("d:/IndexData.xlsx")
# Kiểm định tương quan chuỗi bằng phương pháp Ljung-Box với độ trễ ( lag ) = 10.
lb <- Box.test(data$Price, lag = 10, type = "Ljung-Box")
# Hiển thị kết quả kiểm định
lb
##
## Box-Ljung test
##
## data: data$Price
## X-squared = 4804.8, df = 10, p-value < 2.2e-16
Từ kết quả trên ta có :
X-squared = 4804.8: Đây là giá trị thống kê X-squared của kiểm định. Giá trị này cho biết mức độ tương quan trong chuỗi dữ liệu. Trong trường hợp này, giá trị X-squared là 4804.8.
df = 10: Đây là số bậc tự do (degrees of freedom) của kiểm định. Nó cho biết số lượng thời gian trễ đã sử dụng trong kiểm định. Trong trường hợp này, có 10 bậc tự do được sử dụng.
p-value < 2.2e-16: Đây là giá trị p-value, cho biết mức độ ý nghĩa thống kê của kết quả kiểm định. Trong trường hợp này, giá trị p-value là rất nhỏ, gần bằng 0, được biểu diễn dưới dạng 2.2e-16. Điều này cho thấy rằng chúng ta có căn cứ đủ để bác bỏ giả thuyết không có sự tương quan (giả thuyết không có sự khác biệt về tương quan giữa các giá trị trong chuỗi dữ liệu).
Với kết quả này, vì giá trị p-value rất nhỏ, ta có căn cứ để bác bỏ giả thuyết không có sự tương quan. Điều này cho thấy rằng có sự tương quan đáng kể giữa các giá trị trong chuỗi dữ liệu.
Kiểm định hiệu ứng ARCH-LM (Autoregressive Conditional Heteroscedasticity Lagrange Multiplier test) là một phương pháp thống kê được sử dụng để kiểm tra sự tồn tại của hiệu ứng ARCH trong mô hình dữ liệu chuỗi thời gian.
Hiệu ứng ARCH xuất hiện khi phương sai của một chuỗi dữ liệu chuỗi thay đổi theo thời gian và phụ thuộc vào các giá trị trước đó của chuỗi. Điều này có nghĩa là sự biến đổi trong dữ liệu không đồng nhất qua thời gian và có tính chất “heteroscedasticity”.
Kiểm định hiệu ứng ARCH-LM thực hiện kiểm tra xem các giá trị trong chuỗi dữ liệu có biến đổi không đồng nhất qua thời gian hay không. Phương pháp này sử dụng một mô hình autoregressive để ước lượng và tách ra thành phần không đồng nhất, sau đó kiểm tra tính chất ngẫu nhiên của phần dư (residuals) để xác định sự tồn tại của hiệu ứng ARCH.
#Đọc dữ liệu từ file Excel
library(readxl)
data <- read_excel("d:/IndexData.xlsx", sheet = "VN Index Historical Data")
# Tạo mô hình ARCH
library(rugarch)
arch_spec <- ugarchspec(variance.model = list(model = "sGARCH"))
arch_model <- ugarchfit(spec = arch_spec, data = data$Price)
residuals <- residuals(arch_model)
# Tạo biến giả đầu vào
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
n <- length(residuals)
x <- 1:n
# Tạo mô hình tuyến tính
arch_lm_model <- lm(residuals^2 ~ x)
# Kiểm định hiệu ứng ARCH-LM
arch <- bptest(arch_lm_model)
# Hiển thị kết quả
arch
##
## studentized Breusch-Pagan test
##
## data: arch_lm_model
## BP = 2.3292, df = 1, p-value = 0.127
Từ kết quả trên ta có :
Ý nghĩa của kết quả:
Khi thực hiện kiểm định hiệu ứng ARCH: ARCH-LM,ta quan tâm đến giá trị p-value. Giá trị p-value là một số xác suất thể hiện khả năng xảy ra kết quả kiểm định như vậy hoặc càng “tệ” hơn, nếu giả thuyết không có hiệu ứng ARCH là chính xác.
Trong trường hợp này, giá trị p-value là 0.127. Nếu mức ý nghĩa được lựa chọn là 0.05 (thường được sử dụng), thì giá trị p-value là lớn hơn mức ý nghĩa này. Do đó, không có đủ bằng chứng để bác bỏ giả thuyết không có hiệu ứng ARCH.