Thị trường chứng khoán Việt Nam những năm gần đây đã có những bước tiến ngoạn mục, thu hút đông đảo nhà đầu tư tham gia. Tuy nhiên, bên cạnh tiềm năng phát triển to lớn, thị trường cũng tiềm ẩn nhiều rủi ro do biến động liên tục. Để đưa ra quyết định đầu tư sáng suốt và hiệu quả, nhà đầu tư cần có những công cụ phân tích chuyên sâu, và ma trận tương quan là một trong những lựa chọn hàng đầu.
Bài tiểu luận này sẽ sử dụng dữ liệu thị trường chứng khoán Việt Nam từ 01/01/2018 đến 29/12/2023 để tính toán và phân tích ma trận tương quan giữa các chỉ số giá chính: VNI và FTMIB. Qua đó, nghiên cứu sẽ cung cấp cái nhìn tổng quan về mức độ liên quan giữa các chỉ số, giúp nhà đầu tư đánh giá rủi ro và xây dựng chiến lược đầu tư phù hợp.
library(PerformanceAnalytics)
## Warning: package 'PerformanceAnalytics' was built under R version 4.3.3
## Loading required package: xts
## Warning: package 'xts' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
##
## legend
library(readxl)
library(PerformanceAnalytics)
library(xlsx)
## Warning: package 'xlsx' was built under R version 4.3.3
data <- read.xlsx("D:/MHNN/MHNN1.xlsx",6)
lgvni<- diff(log(data$VNI), lag = 1)
lgftmib<- diff(log(data$FTMIB), lag = 1)
mhnn <- data.frame(VNI= lgvni, FTMIB= lgftmib)
# Tạo thống kê mô tả
library(psych)
## Warning: package 'psych' was built under R version 4.3.3
summary <- summary(mhnn)
detailed <- describe(mhnn)
print(summary)
## VNI FTMIB
## Min. :-6.908e-02 Min. :-0.1854115
## 1st Qu.:-4.788e-03 1st Qu.:-0.0059895
## Median : 1.138e-03 Median : 0.0010782
## Mean : 8.628e-05 Mean : 0.0002245
## 3rd Qu.: 6.831e-03 3rd Qu.: 0.0072671
## Max. : 4.860e-02 Max. : 0.0854946
print(detailed)
## vars n mean sd median trimmed mad min max range skew kurtosis
## VNI 1 1465 0 0.01 0 0 0.01 -0.07 0.05 0.12 -0.97 3.74
## FTMIB 2 1465 0 0.01 0 0 0.01 -0.19 0.09 0.27 -2.02 24.52
## se
## VNI 0
## FTMIB 0
plot.ts(mhnn$VNI)
plot.ts(mhnn$FTMIB)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
ggplot(data.frame(price = mhnn$VNI), aes(sample = price)) +
geom_qq() +
geom_qq_line()
ggplot(data.frame(price = mhnn$FTMIB), aes(sample = price)) +
geom_qq() +
geom_qq_line()
Sự biến động của thị trường chứng khoán là điều không thể tránh khỏi, và nó ảnh hưởng trực tiếp đến lợi nhuận của nhà đầu tư. Biến động này có thể xuất phát từ nhiều yếu tố, bao gồm tình hình kinh tế vĩ mô, chính sách tiền tệ, tâm lý nhà đầu tư, v.v. Việc nắm bắt mối liên hệ giữa các cổ phiếu và thị trường chung là vô cùng quan trọng để nhà đầu tư có thể đưa ra quyết định đầu tư sáng suốt.
Ma trận tương quan là công cụ toán học hiệu quả giúp đo lường mức độ liên quan giữa các biến (trong trường hợp này là giá của các chỉ số chứng khoán). Ma trận này thể hiện mức độ đồng biến hoặc nghịch biến giữa các cặp biến, giúp ta có thể đưa ra các nhận định chính xác như:
Đánh giá mức độ rủi ro của danh mục đầu tư: Khi các cổ phiếu trong danh mục đầu tư có mức độ tương quan cao, rủi ro của danh mục đầu tư cũng sẽ cao hơn. Ngược lại, nếu các cổ phiếu có mức độ tương quan thấp, rủi ro danh mục đầu tư sẽ được giảm thiểu.
Lựa chọn chiến lược đầu tư: Ma trận tương quan giúp nhà đầu tư xác định các cổ phiếu có xu hướng biến động trái chiều nhau. Việc đầu tư vào các cổ phiếu này có thể giúp bù đắp cho nhau khi thị trường biến động, từ đó giảm thiểu rủi ro và tăng hiệu quả đầu tư.
Phân tích thị trường: Ma trận tương quan cung cấp thông tin về xu hướng chung của thị trường, giúp nhà đầu tư đưa ra dự báo về biến động thị trường trong tương lai.
Phân tích mối quan hệ: Ma trận tương quan giúp nhận biết các mối quan hệ giữa các biến. Các biến có hệ số tương quan cao có thể liên quan đến nhau và có thể cần được xem xét đồng thời trong các phân tích hoặc mô hình dự báo.
Lựa chọn biến: Nếu hai biến có hệ số tương quan rất cao, có thể cần phải xem xét việc giữ lại một trong hai biến đó để tránh vấn đề đa cộng tuyến trong các mô hình hồi quy. Dự báo và mô hình: Hiểu biết về mối tương quan giữa các biến có thể cải thiện việc xây dựng mô hình dự báo và hiểu biết về cấu trúc dữ liệu.
Dùng lệnh res() để hiển thị hệ số tương quan giữa các cặp biến. Sau đó dùng round() để làm tròn đến chữ số thập phân thứ 2. Ta thu được kết quả như bảng sau:
res <- cor(mhnn)
round(res, 2)
## VNI FTMIB
## VNI 1.00 0.17
## FTMIB 0.17 1.00
và cụ thể hơn ta có thể nhận thấy thông qua biểu đồ tương quan. Trong đó các ô màu biểu thị giá trị của các hệ số tương quan giữa các biến
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.3.3
## corrplot 0.92 loaded
res <- cor(mhnn)
rounded_res <- round(res, 2)
round(res, 2)
## VNI FTMIB
## VNI 1.00 0.17
## FTMIB 0.17 1.00
corrplot(rounded_res, method = "color")
library(corrplot)
corrplot(res, type = "upper", order = "hclust",
tl.col = "black", tl.srt = 45)
Biểu đồ tương quan được tạo ra bởi hàm chart.Correlation từ thư viện PerformanceAnalytics trong R. Biểu đồ này hiển thị mối quan hệ giữa các biến số trong tập dữ liệu và cụ thể:
Đường chéo chính (Diagonal)
Histogram: Trên đường chéo chính của ma trận biểu đồ, các histogram của từng biến được hiển thị. Các biểu đồ này cung cấp thông tin về phân phối của mỗi biến.
Ví dụ:
Các hệ số tương quan (Off-diagonal)
Hệ số tương quan: Các ô trên đường chéo chính chứa các hệ số tương quan giữa các cặp biến. Hệ số tương quan đo lường mức độ và hướng của mối quan hệ tuyến tính giữa hai biến. Giá trị dao động từ -1 đến 1: + 1: Tương quan dương hoàn hảo (khi một biến tăng, biến kia cũng tăng). + -1: Tương quan âm hoàn hảo (khi một biến tăng, biến kia giảm). + 0: Không có mối tương quan tuyến tính.
Ví dụ:
Các ký hiệu sao
Mức độ ý nghĩa thống kê: Các ký hiệu sao (***) xuất hiện bên cạnh các hệ số tương quan cho biết mức độ ý nghĩa thống kê của các hệ số này. Trong nhiều trường hợp, các sao này biểu thị mức độ tin cậy với các ngưỡng phổ biến như:
Một sao () cho biết mức độ ý nghĩa thống kê 0.05 (5%). Hai sao () cho biết mức độ ý nghĩa thống kê 0.01 (1%). Ba sao () cho biết mức độ ý nghĩa thống kê 0.001 (0.1%).
chart.Correlation(mhnn, histogram=TRUE, pch=19)
## Warning in par(usr): argument 1 does not name a graphical parameter
library(ggplot2)
library(ggcorrplot)
## Warning: package 'ggcorrplot' was built under R version 4.3.3
df <- dplyr::select_if(mhnn, is.numeric)
r <- cor(df, use="complete.obs")
ggcorrplot(r)
library(tseries)
## Warning: package 'tseries' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
mhnn <- data.frame(VNI= lgvni, FTMIB= lgftmib)
Kiểm định Jarque-Bera là một phương pháp thống kê được sử dụng để kiểm tra xem một mẫu dữ liệu có tuân theo phân phối chuẩn hay không. Nó dựa trên việc kiểm tra các đặc trưng thống kê của mẫu dữ liệu, như độ lệch và độ nhọn, để nhận xét về tính chuẩn của phân phối. Giả thiết H0 là có phân phối chuẩn.
# kiểm định cho chỉ VNI
Var1 <- mhnn$VNI
# Kiểm định phân phối chuẩn cho VNI
result1 <- jarque.bera.test(Var1)
print(result1)
##
## Jarque Bera Test
##
## data: Var1
## X-squared = 1091.6, df = 2, p-value < 2.2e-16
không pp chuẩn Kết quả cho thấy giá trị X-squared= 1091.6 tương ứng với giá trị của chi-squared và p_value= 0.0000000022 nhỏ hơn mức ý nghĩa 5%. Do dó ta bác bỏ giải thuyết H0. Dữ liệu đang dử dụng không tuân theo phân phối chuẩn.
# kiểm định cho chỉ FTMIB
Var2 <- mhnn$FTMIB
# Kiểm định phân phối chuẩn cho FTMIB
result2 <- jarque.bera.test(Var2)
print(result2)
##
## Jarque Bera Test
##
## data: Var2
## X-squared = 37810, df = 2, p-value < 2.2e-16
không pp chuẩn Kết quả cho thấy giá trị X-squared= 37810 tương ứng với giá trị của chi-squared và p_value= 0.0000000022 nhỏ hơn mức ý nghĩa 5%. Do dó ta bác bỏ giải thuyết H0. Dữ liệu đang dử dụng không tuân theo phân phối chuẩn.
Phép thử nghiệm ADF là một phương pháp thống kê dùng để kiểm tra xem một chuỗi dữ liệu có tính dừng (stationary) hay không. Một chuỗi dữ liệu được coi là dừng nếu các đặc trưng thống kê như trung bình, phương sai và hiệu ứng mùa vụ của nó không thay đổi theo thời gian.
Kiểm định này cho ta biết chuỗi thời gian có tính dừng không. Đặt giả thuyết: H0 là chuỗi thời gian không có tính dừng H1 là chuỗi thời gian co tính dừng
adf.test(Var1)
## Warning in adf.test(Var1): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: Var1
## Dickey-Fuller = -11.372, Lag order = 11, p-value = 0.01
## alternative hypothesis: stationary
Kết quả thu được sau khi kiểm định
Giá trị Dickey-Fuller là -11.372: đây là giá trị thống kê kiểm định được tính toán từ dữ liệu. Lag order = 11: đây là số lượng lags (độ trễ) được sử dụng trong phép kiểm định.
Giả thuyết H0 là chuỗi dữ liệu không dừng (non-stationary), còn giả thuyết H1 (giả thuyết thay thế) là chuỗi dữ liệu dừng (stationary). Với p-value = 0.01< 0.05(mức ý nghĩa thường dùng), ta bác bỏ giải thuyết H0.
adf.test(Var2)
## Warning in adf.test(Var2): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: Var2
## Dickey-Fuller = -10.763, Lag order = 11, p-value = 0.01
## alternative hypothesis: stationary
Kết quả thu được sau khi kiểm định
Giá trị Dickey-Fuller là -10.763: đây là giá trị thống kê kiểm định được tính toán từ dữ liệu. Lag order = 11: đây là số lượng lags (độ trễ) được sử dụng trong phép kiểm định.
Giả thuyết H0 là chuỗi dữ liệu không dừng (non-stationary), còn giả thuyết H1 (giả thuyết thay thế) là chuỗi dữ liệu dừng (stationary). Với p-value = 0.01< 0.05(mức ý nghĩa thường dùng), ta bác bỏ giải thuyết H0.
Kiểm định Ljung-Box được sử dụng để kiểm tra tính tương quan tự do của một chuỗi thời gian và xác định xem chuỗi có phụ thuộc tương quan không gian hay không. Đặt giả thiết: H0 là không có tương quan chuỗi Ljung-Box. H1 là có tương quan chuỗi Ljung_Box
library(stats)
result3 <- Box.test(Var1, lag = 10, type = "Ljung-Box")
print(result3)
##
## Box-Ljung test
##
## data: Var1
## X-squared = 15.892, df = 10, p-value = 0.1028
Kết quả kiểm định Box-Ljung cho thấy: với p-value là 0.1028, lớn hơn mức 0.05, chấp nhận giả thuyết H0. Điều này cho thấy có bằng chứng về không có sự tự tương quan đáng kể trong dữ liệu chuỗi thời gian tại các độ trễ đã được kiểm tra.
library(stats)
result4 <- Box.test(Var2, lag = 10, type = "Ljung-Box")
print(result4)
##
## Box-Ljung test
##
## data: Var2
## X-squared = 55.845, df = 10, p-value = 2.195e-08
Kết quả kiểm định Box-Ljung cho thấy: với p-value là 0.00000002195, nhỏ hơn mức 0.05, bác bỏ giả thuyết H0. Điều này cho thấy có bằng chứng về có sự tự tương quan đáng kể trong dữ liệu chuỗi thời gian tại các độ trễ đã được kiểm tra.
VNI
library(forecast)
## Warning: package 'forecast' was built under R version 4.3.3
modeld <- auto.arima(mhnn$VNI)
modeld
## Series: mhnn$VNI
## ARIMA(1,0,1) with zero mean
##
## Coefficients:
## ar1 ma1
## 0.6900 -0.6395
## s.e. 0.1715 0.1828
##
## sigma^2 = 0.0001705: log likelihood = 4277.83
## AIC=-8549.66 AICc=-8549.65 BIC=-8533.8
FTMIB
modeld1 <- auto.arima(mhnn$FTMIB)
modeld1
## Series: mhnn$FTMIB
## ARIMA(3,0,3) with zero mean
##
## Coefficients:
## ar1 ar2 ar3 ma1 ma2 ma3
## -0.8130 0.4344 0.5370 0.7598 -0.3754 -0.4100
## s.e. 0.1297 0.1764 0.1152 0.1386 0.1810 0.1227
##
## sigma^2 = 0.0002014: log likelihood = 4157.83
## AIC=-8301.67 AICc=-8301.59 BIC=-8264.64
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.3.3
library(fGarch)
## Warning: package 'fGarch' was built under R version 4.3.3
## NOTE: Packages 'fBasics', 'timeDate', and 'timeSeries' are no longer
## attached to the search() path when 'fGarch' is attached.
##
## If needed attach them yourself in your R script by e.g.,
## require("timeSeries")
##
## Attaching package: 'fGarch'
## The following objects are masked from 'package:PerformanceAnalytics':
##
## ES, VaR
library(rugarch)
## Warning: package 'rugarch' was built under R version 4.3.3
## Loading required package: parallel
##
## Attaching package: 'rugarch'
## The following object is masked from 'package:stats':
##
## sigma
library(readxl)
VNI
# Kiểm định hiệu ứng ARCH - LM cho chỉ số chứng khoán
arch_spec <- ugarchspec(variance.model = list(model = "sGARCH"))
arch_VNI <- ugarchfit(spec = arch_spec, data = mhnn$VNI)
residuals <- residuals(arch_VNI)
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
aTSA::arch.test(arima(mhnn$VNI,order = c(1,0,1)))
## ARCH heteroscedasticity test for residuals
## alternative: heteroscedastic
##
## Portmanteau-Q test:
## order PQ p.value
## [1,] 4 191 0
## [2,] 8 293 0
## [3,] 12 371 0
## [4,] 16 399 0
## [5,] 20 416 0
## [6,] 24 418 0
## Lagrange-Multiplier test:
## order LM p.value
## [1,] 4 1056 0
## [2,] 8 466 0
## [3,] 12 296 0
## [4,] 16 218 0
## [5,] 20 168 0
## [6,] 24 134 0
VNI CÓ HIỆU ỨNG ARCH
# Kiểm định hiệu ứng ARCH - LM cho chỉ số chứng khoán
arch_spec <- ugarchspec(variance.model = list(model = "sGARCH"))
arch_FTMIB <- ugarchfit(spec = arch_spec, data = mhnn$FTMIB)
residuals1 <- residuals(arch_FTMIB)
n <- length(residuals1)
x <- 1:n
# Tạo mô hình tuyến tính
arch_lm_model1 <- lm(residuals1^2 ~ x)
# Kiểm định hiệu ứng ARCH-LM
aTSA::arch.test(arima(mhnn$FTMIB,order = c(3,0,3)))
## ARCH heteroscedasticity test for residuals
## alternative: heteroscedastic
##
## Portmanteau-Q test:
## order PQ p.value
## [1,] 4 212 0
## [2,] 8 246 0
## [3,] 12 267 0
## [4,] 16 280 0
## [5,] 20 281 0
## [6,] 24 290 0
## Lagrange-Multiplier test:
## order LM p.value
## [1,] 4 1735 0
## [2,] 8 803 0
## [3,] 12 464 0
## [4,] 16 333 0
## [5,] 20 263 0
## [6,] 24 211 0
FTMIB CÓ HIỆU ỨNG ARCH
library(rugarch)
VNIts<- ts(mhnn$VNI)
head(VNIts)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] 0.009892958 0.013903513 -0.006986842 0.010071073 0.010367423
## [6] 0.004392599
library(rugarch)
FTMIBts<- ts(mhnn$FTMIB)
head(FTMIBts)
## Time Series:
## Start = 1
## End = 6
## Frequency = 1
## [1] 0.002715448 0.027359441 0.011050944 0.003657259 0.006948236 0.006604533
library(lmtest)
VNIspec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1,1)), mean.model = list(armaOrder = c(1,1), include.mean =TRUE), distribution.model = 'norm')
print(VNIspec)
##
## *---------------------------------*
## * GARCH Model Spec *
## *---------------------------------*
##
## Conditional Variance Dynamics
## ------------------------------------
## GARCH Model : gjrGARCH(1,1)
## Variance Targeting : FALSE
##
## Conditional Mean Dynamics
## ------------------------------------
## Mean Model : ARFIMA(1,0,1)
## Include Mean : TRUE
## GARCH-in-Mean : FALSE
##
## Conditional Distribution
## ------------------------------------
## Distribution : norm
## Includes Skew : FALSE
## Includes Shape : FALSE
## Includes Lambda : FALSE
library(lmtest)
FTMIBspec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1,1)), mean.model = list(armaOrder = c(3,3), include.mean =TRUE), distribution.model = 'norm')
print(FTMIBspec)
##
## *---------------------------------*
## * GARCH Model Spec *
## *---------------------------------*
##
## Conditional Variance Dynamics
## ------------------------------------
## GARCH Model : gjrGARCH(1,1)
## Variance Targeting : FALSE
##
## Conditional Mean Dynamics
## ------------------------------------
## Mean Model : ARFIMA(3,0,3)
## Include Mean : TRUE
## GARCH-in-Mean : FALSE
##
## Conditional Distribution
## ------------------------------------
## Distribution : norm
## Includes Skew : FALSE
## Includes Shape : FALSE
## Includes Lambda : FALSE
VNIfit <- ugarchfit(spec = VNIspec, VNIts)
print(VNIfit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(1,0,1)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000060 0.000359 0.16772 0.866803
## ar1 0.650968 0.157540 4.13207 0.000036
## ma1 -0.555141 0.168603 -3.29260 0.000993
## omega 0.000011 0.000000 108.44185 0.000000
## alpha1 0.013990 0.007932 1.76375 0.077773
## beta1 0.819688 0.011617 70.55656 0.000000
## gamma1 0.183315 0.032314 5.67288 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000060 0.000365 0.16491 0.869014
## ar1 0.650968 0.176393 3.69043 0.000224
## ma1 -0.555141 0.179881 -3.08615 0.002028
## omega 0.000011 0.000000 59.81026 0.000000
## alpha1 0.013990 0.011714 1.19430 0.232361
## beta1 0.819688 0.020467 40.05001 0.000000
## gamma1 0.183315 0.049910 3.67291 0.000240
##
## LogLikelihood : 4446.034
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.0601
## Bayes -6.0348
## Shibata -6.0602
## Hannan-Quinn -6.0507
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.1643 0.6852
## Lag[2*(p+q)+(p+q)-1][5] 1.1070 1.0000
## Lag[4*(p+q)+(p+q)-1][9] 1.8660 0.9895
## d.o.f=2
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.4318 0.5111
## Lag[2*(p+q)+(p+q)-1][5] 0.8838 0.8854
## Lag[4*(p+q)+(p+q)-1][9] 1.3854 0.9644
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.5050 0.500 2.000 0.4773
## ARCH Lag[5] 0.5525 1.440 1.667 0.8680
## ARCH Lag[7] 0.6254 2.315 1.543 0.9657
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 30.3919
## Individual Statistics:
## mu 0.20516
## ar1 0.13150
## ma1 0.12657
## omega 7.64101
## alpha1 0.14678
## beta1 0.08016
## gamma1 0.06531
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.69 1.9 2.35
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 1.9389 0.05270 *
## Negative Sign Bias 0.7542 0.45085
## Positive Sign Bias 1.1126 0.26606
## Joint Effect 10.7653 0.01307 **
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 108.4 1.575e-14
## 2 30 142.2 7.164e-17
## 3 40 148.1 1.261e-14
## 4 50 166.3 1.114e-14
##
##
## Elapsed time : 0.367245
Nhìn chung, kết quả cho thấy mô hình GARCH có thể phù hợp với dữ liệu, nhưng việc lựa chọn số nhóm (groups) tối ưu cần được xem xét kỹ lưỡng. Bạn có thể thử nghiệm với các số lượng nhóm khác nhau để tìm ra kết quả tối ưu nhất.
FTMIBfit <- ugarchfit(spec = FTMIBspec, FTMIBts)
print(FTMIBfit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(3,0,3)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000167 0.000346 0.4835 0.628743
## ar1 -0.783391 0.169740 -4.6153 0.000004
## ar2 0.526052 0.188374 2.7926 0.005229
## ar3 0.583051 0.145860 3.9973 0.000064
## ma1 0.769654 0.182202 4.2242 0.000024
## ma2 -0.476091 0.198448 -2.3991 0.016436
## ma3 -0.499492 0.158335 -3.1547 0.001607
## omega 0.000010 0.000000 40.2693 0.000000
## alpha1 0.009625 0.008822 1.0910 0.275294
## beta1 0.804544 0.015255 52.7396 0.000000
## gamma1 0.267888 0.040561 6.6045 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000167 0.000365 0.45871 0.646440
## ar1 -0.783391 0.181691 -4.31167 0.000016
## ar2 0.526052 0.145079 3.62596 0.000288
## ar3 0.583051 0.129371 4.50682 0.000007
## ma1 0.769654 0.195978 3.92724 0.000086
## ma2 -0.476091 0.154357 -3.08435 0.002040
## ma3 -0.499492 0.143100 -3.49050 0.000482
## omega 0.000010 0.000000 22.12887 0.000000
## alpha1 0.009625 0.010539 0.91328 0.361095
## beta1 0.804544 0.022011 36.55215 0.000000
## gamma1 0.267888 0.065855 4.06784 0.000047
##
## LogLikelihood : 4409.877
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.0053
## Bayes -5.9656
## Shibata -6.0054
## Hannan-Quinn -5.9905
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.0906 0.7634
## Lag[2*(p+q)+(p+q)-1][17] 2.6414 1.0000
## Lag[4*(p+q)+(p+q)-1][29] 7.1136 0.9996
## d.o.f=6
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.03966 0.8421
## Lag[2*(p+q)+(p+q)-1][5] 1.97804 0.6236
## Lag[4*(p+q)+(p+q)-1][9] 3.20152 0.7253
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.09278 0.500 2.000 0.7607
## ARCH Lag[5] 0.99634 1.440 1.667 0.7340
## ARCH Lag[7] 1.79631 2.315 1.543 0.7603
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 16.0803
## Individual Statistics:
## mu 0.03748
## ar1 0.21252
## ar2 0.08252
## ar3 0.05107
## ma1 0.19187
## ma2 0.05963
## ma3 0.06267
## omega 6.57666
## alpha1 0.20680
## beta1 0.14708
## gamma1 0.11397
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.49 2.75 3.27
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 3.4642 0.0005472 ***
## Negative Sign Bias 1.4221 0.1552152
## Positive Sign Bias 0.9747 0.3298635
## Joint Effect 13.0219 0.0045895 ***
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 70.00 9.186e-08
## 2 30 80.56 9.579e-07
## 3 40 94.34 1.742e-06
## 4 50 107.32 3.036e-06
##
##
## Elapsed time : 0.6064229
VNIst.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE), distribution.model = "std")
VNIst1<- ugarchfit(VNIst.spec,VNIts)
print(VNIst1)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(1,0,1)
## Distribution : std
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001056 0.000265 3.9825 0.000068
## ar1 0.665811 0.232920 2.8585 0.004256
## ma1 -0.609440 0.247145 -2.4659 0.013666
## omega 0.000014 0.000001 15.0561 0.000000
## alpha1 0.022527 0.010909 2.0650 0.038925
## beta1 0.753926 0.024086 31.3016 0.000000
## gamma1 0.289611 0.055559 5.2126 0.000000
## shape 3.726180 0.322200 11.5648 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001056 0.000271 3.8991 0.000097
## ar1 0.665811 0.270513 2.4613 0.013844
## ma1 -0.609440 0.284423 -2.1427 0.032135
## omega 0.000014 0.000001 9.4759 0.000000
## alpha1 0.022527 0.021683 1.0389 0.298838
## beta1 0.753926 0.025361 29.7272 0.000000
## gamma1 0.289611 0.055724 5.1972 0.000000
## shape 3.726180 0.319129 11.6761 0.000000
##
## LogLikelihood : 4551.772
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.2031
## Bayes -6.1742
## Shibata -6.2032
## Hannan-Quinn -6.1923
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.7379 0.3903
## Lag[2*(p+q)+(p+q)-1][5] 1.2983 0.9997
## Lag[4*(p+q)+(p+q)-1][9] 2.1396 0.9779
## d.o.f=2
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 1.367 0.2423
## Lag[2*(p+q)+(p+q)-1][5] 2.112 0.5921
## Lag[4*(p+q)+(p+q)-1][9] 2.820 0.7883
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 1.094 0.500 2.000 0.2955
## ARCH Lag[5] 1.294 1.440 1.667 0.6481
## ARCH Lag[7] 1.385 2.315 1.543 0.8442
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 33.3127
## Individual Statistics:
## mu 0.2236
## ar1 0.2224
## ma1 0.2037
## omega 5.8459
## alpha1 0.2628
## beta1 0.2264
## gamma1 0.1709
## shape 0.2046
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.89 2.11 2.59
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 1.668 0.09554 *
## Negative Sign Bias 1.641 0.10092
## Positive Sign Bias 1.320 0.18719
## Joint Effect 9.499 0.02334 **
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 41.44 0.0021056
## 2 30 58.41 0.0009709
## 3 40 69.55 0.0018760
## 4 50 85.89 0.0008803
##
##
## Elapsed time : 0.738292
Điều này cho thấy mô hình GARCH phù hợp tốt với dữ liệu được quan sát vì sự khác biệt giữa tần số được quan sát và tần số dự kiến trong mỗi nhóm không có ý nghĩa thống kê. Kết quả Kiểm tra mức độ phù hợp của Pearson đã điều chỉnh chứng minh mô hình GARCH là một lựa chọn thích hợp để lập mô hình động lực phương sai có điều kiện trong tập dữ liệu này.
FTMIBst.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(3, 3), include.mean = TRUE), distribution.model = "std")
FTMIBst1<- ugarchfit(FTMIBst.spec,FTMIBts)
print(FTMIBst1)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(3,0,3)
## Distribution : std
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000785 0.000258 3.037777 0.002383
## ar1 -0.803101 0.204947 -3.918574 0.000089
## ar2 0.524863 0.256772 2.044079 0.040946
## ar3 0.643837 0.140974 4.567079 0.000005
## ma1 0.764800 0.215344 3.551530 0.000383
## ma2 -0.530984 0.256577 -2.069496 0.038500
## ma3 -0.597359 0.144278 -4.140349 0.000035
## omega 0.000007 0.000001 12.800405 0.000000
## alpha1 0.000000 0.010433 0.000007 0.999995
## beta1 0.859926 0.017925 47.972852 0.000000
## gamma1 0.191725 0.035887 5.342479 0.000000
## shape 4.761620 0.584678 8.144010 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000785 0.000258 3.039980 0.002366
## ar1 -0.803101 0.165237 -4.860306 0.000001
## ar2 0.524863 0.059062 8.886629 0.000000
## ar3 0.643837 0.065185 9.877057 0.000000
## ma1 0.764800 0.180657 4.233428 0.000023
## ma2 -0.530984 0.067464 -7.870578 0.000000
## ma3 -0.597359 0.080068 -7.460622 0.000000
## omega 0.000007 0.000001 8.791863 0.000000
## alpha1 0.000000 0.011218 0.000006 0.999995
## beta1 0.859926 0.018125 47.444345 0.000000
## gamma1 0.191725 0.041979 4.567208 0.000005
## shape 4.761620 0.546727 8.709321 0.000000
##
## LogLikelihood : 4464.202
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.0781
## Bayes -6.0348
## Shibata -6.0782
## Hannan-Quinn -6.0619
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.967 0.3254
## Lag[2*(p+q)+(p+q)-1][17] 4.337 1.0000
## Lag[4*(p+q)+(p+q)-1][29] 9.433 0.9850
## d.o.f=6
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.1396 0.7087
## Lag[2*(p+q)+(p+q)-1][5] 1.8499 0.6543
## Lag[4*(p+q)+(p+q)-1][9] 2.7558 0.7985
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 1.009 0.500 2.000 0.3152
## ARCH Lag[5] 1.656 1.440 1.667 0.5523
## ARCH Lag[7] 2.082 2.315 1.543 0.6999
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 12.0321
## Individual Statistics:
## mu 0.02173
## ar1 0.11400
## ar2 0.08360
## ar3 0.05728
## ma1 0.08676
## ma2 0.05340
## ma3 0.05065
## omega 2.89697
## alpha1 0.05521
## beta1 0.05940
## gamma1 0.03553
## shape 0.05962
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.69 2.96 3.51
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 4.014 0.0000626 ***
## Negative Sign Bias 1.006 0.3146228
## Positive Sign Bias 1.486 0.1376159
## Joint Effect 17.730 0.0004999 ***
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 28.61 0.07236
## 2 30 37.31 0.13836
## 3 40 40.06 0.42274
## 4 50 61.72 0.10485
##
##
## Elapsed time : 0.735548
# Phân phối Student đối xứng (sstd)
VNIst1.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE), distribution.model = "sstd")
VNIst2<- ugarchfit(VNIst1.spec,VNIts)
print(VNIst2)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(1,0,1)
## Distribution : sstd
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000194 0.000423 0.45713 0.647580
## ar1 0.939799 0.054148 17.35601 0.000000
## ma1 -0.912787 0.067970 -13.42928 0.000000
## omega 0.000011 0.000000 30.57022 0.000000
## alpha1 0.025505 0.012719 2.00520 0.044942
## beta1 0.797505 0.019417 41.07183 0.000000
## gamma1 0.232235 0.049625 4.67983 0.000003
## skew 0.813552 0.030098 27.02974 0.000000
## shape 4.105845 0.404246 10.15680 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000194 0.000543 0.35647 0.721490
## ar1 0.939799 0.083930 11.19741 0.000000
## ma1 -0.912787 0.105579 -8.64558 0.000000
## omega 0.000011 0.000001 19.75206 0.000000
## alpha1 0.025505 0.014547 1.75327 0.079556
## beta1 0.797505 0.017850 44.67833 0.000000
## gamma1 0.232235 0.056657 4.09896 0.000042
## skew 0.813552 0.031374 25.93080 0.000000
## shape 4.105845 0.357150 11.49614 0.000000
##
## LogLikelihood : 4567.318
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.2230
## Bayes -6.1905
## Shibata -6.2230
## Hannan-Quinn -6.2108
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 3.751 0.05279
## Lag[2*(p+q)+(p+q)-1][5] 4.178 0.04169
## Lag[4*(p+q)+(p+q)-1][9] 5.187 0.41220
## d.o.f=2
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.9968 0.3181
## Lag[2*(p+q)+(p+q)-1][5] 1.7481 0.6790
## Lag[4*(p+q)+(p+q)-1][9] 2.5263 0.8338
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 1.097 0.500 2.000 0.2949
## ARCH Lag[5] 1.308 1.440 1.667 0.6442
## ARCH Lag[7] 1.395 2.315 1.543 0.8421
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 48.7829
## Individual Statistics:
## mu 0.1614
## ar1 0.1768
## ma1 0.1924
## omega 10.3764
## alpha1 0.2033
## beta1 0.1827
## gamma1 0.1152
## skew 0.1100
## shape 0.1402
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.1 2.32 2.82
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 2.6295 0.008641 ***
## Negative Sign Bias 1.8155 0.069649 *
## Positive Sign Bias 0.8899 0.373645
## Joint Effect 13.5922 0.003516 ***
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 31.97 0.03150
## 2 30 47.31 0.01732
## 3 40 56.94 0.03170
## 4 50 72.58 0.01596
##
##
## Elapsed time : 1.058992
# Phân phối Student đối xứng (sstd)
FTMIBst1.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(3, 3), include.mean = TRUE), distribution.model = "sstd")
FTMIBst2<- ugarchfit(FTMIBst1.spec,FTMIBts)
print(FTMIBst2)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(3,0,3)
## Distribution : sstd
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000275 0.000049 5.6439 0
## ar1 -0.675147 0.011192 -60.3244 0
## ar2 0.820780 0.004130 198.7148 0
## ar3 0.818348 0.013156 62.2033 0
## ma1 0.634800 0.000815 779.0813 0
## ma2 -0.842434 0.000339 -2488.2476 0
## ma3 -0.782586 0.000256 -3059.0182 0
## omega 0.000008 0.000001 7.2952 0
## alpha1 0.000000 0.007972 0.0000 1
## beta1 0.849108 0.008813 96.3505 0
## gamma1 0.200226 0.019954 10.0343 0
## skew 0.835886 0.030973 26.9880 0
## shape 5.242775 0.263663 19.8844 0
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000275 0.000074 3.7112 0.000206
## ar1 -0.675147 0.017120 -39.4367 0.000000
## ar2 0.820780 0.010840 75.7168 0.000000
## ar3 0.818348 0.013712 59.6791 0.000000
## ma1 0.634800 0.001547 410.2818 0.000000
## ma2 -0.842434 0.000447 -1883.5194 0.000000
## ma3 -0.782586 0.000088 -8900.0330 0.000000
## omega 0.000008 0.000002 4.0234 0.000057
## alpha1 0.000000 0.015637 0.0000 1.000000
## beta1 0.849108 0.032901 25.8080 0.000000
## gamma1 0.200226 0.049976 4.0064 0.000062
## skew 0.835886 0.029583 28.2552 0.000000
## shape 5.242775 1.063997 4.9274 0.000001
##
## LogLikelihood : 4478.448
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.0962
## Bayes -6.0492
## Shibata -6.0963
## Hannan-Quinn -6.0787
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 1.094 0.2956
## Lag[2*(p+q)+(p+q)-1][17] 6.596 1.0000
## Lag[4*(p+q)+(p+q)-1][29] 11.151 0.9194
## d.o.f=6
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.02771 0.8678
## Lag[2*(p+q)+(p+q)-1][5] 1.71737 0.6865
## Lag[4*(p+q)+(p+q)-1][9] 2.74636 0.8000
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.6499 0.500 2.000 0.4201
## ARCH Lag[5] 1.3428 1.440 1.667 0.6346
## ARCH Lag[7] 1.9352 2.315 1.543 0.7310
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 21.2905
## Individual Statistics:
## mu 0.17587
## ar1 0.08472
## ar2 0.15295
## ar3 0.07572
## ma1 0.16367
## ma2 0.20155
## ma3 0.18665
## omega 4.80763
## alpha1 0.12320
## beta1 0.06895
## gamma1 0.06199
## skew 0.12107
## shape 0.08797
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.89 3.15 3.69
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 3.2332 0.001252 ***
## Negative Sign Bias 0.8360 0.403317
## Positive Sign Bias 0.8673 0.385917
## Joint Effect 12.3433 0.006295 ***
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 11.79 0.8943
## 2 30 19.38 0.9113
## 3 40 24.56 0.9655
## 4 50 31.48 0.9756
##
##
## Elapsed time : 1.282947
# Phân phối Generalized Error Distribution(ged)
VNIged.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE), distribution.model = "ged")
VNIged1 <- ugarchfit(VNIged.spec,VNIts)
print(VNIged1)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(1,0,1)
## Distribution : ged
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001156 0.000143 8.0611 0.000000
## ar1 0.906702 0.017275 52.4867 0.000000
## ma1 -0.884210 0.018865 -46.8705 0.000000
## omega 0.000012 0.000000 35.0913 0.000000
## alpha1 0.025587 0.013036 1.9628 0.049670
## beta1 0.782216 0.019757 39.5921 0.000000
## gamma1 0.207709 0.045309 4.5842 0.000005
## shape 1.055461 0.046220 22.8358 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.001156 0.000082 14.0828 0.000000
## ar1 0.906702 0.007772 116.6628 0.000000
## ma1 -0.884210 0.007324 -120.7359 0.000000
## omega 0.000012 0.000000 27.4474 0.000000
## alpha1 0.025587 0.014628 1.7492 0.080257
## beta1 0.782216 0.020390 38.3627 0.000000
## gamma1 0.207709 0.047610 4.3627 0.000013
## shape 1.055461 0.047734 22.1112 0.000000
##
## LogLikelihood : 4545.629
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.1947
## Bayes -6.1658
## Shibata -6.1948
## Hannan-Quinn -6.1839
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 3.382 0.06591
## Lag[2*(p+q)+(p+q)-1][5] 3.780 0.11328
## Lag[4*(p+q)+(p+q)-1][9] 4.797 0.50040
## d.o.f=2
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.838 0.3600
## Lag[2*(p+q)+(p+q)-1][5] 1.416 0.7606
## Lag[4*(p+q)+(p+q)-1][9] 2.040 0.9002
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.8718 0.500 2.000 0.3505
## ARCH Lag[5] 1.0145 1.440 1.667 0.7286
## ARCH Lag[7] 1.0713 2.315 1.543 0.9017
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 40.9765
## Individual Statistics:
## mu 0.2084
## ar1 0.2075
## ma1 0.2311
## omega 11.5347
## alpha1 0.2227
## beta1 0.1474
## gamma1 0.1350
## shape 0.1252
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.89 2.11 2.59
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 1.851 0.06433 *
## Negative Sign Bias 1.285 0.19882
## Positive Sign Bias 1.127 0.25984
## Joint Effect 9.474 0.02361 **
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 54.71 2.571e-05
## 2 30 73.68 9.350e-06
## 3 40 87.85 1.253e-05
## 4 50 109.64 1.550e-06
##
##
## Elapsed time : 0.9748042
# Phân phối Generalized Error Distribution(ged)
FTMIBged.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(3, 3), include.mean = TRUE), distribution.model = "ged")
FTMIBged1 <- ugarchfit(FTMIBged.spec,FTMIBts)
print(FTMIBged1)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(3,0,3)
## Distribution : ged
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000822 0.000202 4.074669 0.000046
## ar1 -0.789765 0.024301 -32.499716 0.000000
## ar2 0.595567 0.041529 14.341059 0.000000
## ar3 0.684212 0.114290 5.986623 0.000000
## ma1 0.756024 0.035562 21.259103 0.000000
## ma2 -0.589791 0.047165 -12.504737 0.000000
## ma3 -0.629559 0.116243 -5.415873 0.000000
## omega 0.000008 0.000000 18.403834 0.000000
## alpha1 0.000210 0.009328 0.022534 0.982022
## beta1 0.840044 0.017491 48.026167 0.000000
## gamma1 0.211678 0.037820 5.597042 0.000000
## shape 1.231880 0.058072 21.213125 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000822 0.000185 4.439221 0.000009
## ar1 -0.789765 0.043206 -18.279027 0.000000
## ar2 0.595567 0.088495 6.729936 0.000000
## ar3 0.684212 0.263924 2.592461 0.009529
## ma1 0.756024 0.070076 10.788589 0.000000
## ma2 -0.589791 0.103368 -5.705749 0.000000
## ma3 -0.629559 0.267447 -2.353960 0.018575
## omega 0.000008 0.000001 12.575060 0.000000
## alpha1 0.000210 0.008619 0.024389 0.980543
## beta1 0.840044 0.019984 42.036145 0.000000
## gamma1 0.211678 0.048883 4.330289 0.000015
## shape 1.231880 0.068155 18.074659 0.000000
##
## LogLikelihood : 4459.375
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.0715
## Bayes -6.0282
## Shibata -6.0716
## Hannan-Quinn -6.0553
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.714 0.3981
## Lag[2*(p+q)+(p+q)-1][17] 3.710 1.0000
## Lag[4*(p+q)+(p+q)-1][29] 8.714 0.9941
## d.o.f=6
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.05184 0.8199
## Lag[2*(p+q)+(p+q)-1][5] 1.59380 0.7168
## Lag[4*(p+q)+(p+q)-1][9] 2.46417 0.8430
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.6135 0.500 2.000 0.4335
## ARCH Lag[5] 1.3018 1.440 1.667 0.6459
## ARCH Lag[7] 1.7423 2.315 1.543 0.7716
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 15.5361
## Individual Statistics:
## mu 0.04306
## ar1 0.11806
## ar2 0.04845
## ar3 0.03073
## ma1 0.07800
## ma2 0.02518
## ma3 0.04297
## omega 4.94668
## alpha1 0.11963
## beta1 0.09416
## gamma1 0.06245
## shape 0.12654
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.69 2.96 3.51
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 4.050 5.388e-05 ***
## Negative Sign Bias 1.192 2.334e-01
## Positive Sign Bias 1.572 1.163e-01
## Joint Effect 17.502 5.571e-04 ***
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 38.52 0.00509
## 2 30 39.24 0.09717
## 3 40 54.04 0.05515
## 4 50 56.60 0.21237
##
##
## Elapsed time : 1.219241
# Phân phối Generalized Error Distribution đối xứng ("sged")
VNIged.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE), distribution.model = "sged")
VNIged2 <- ugarchfit(VNIged.spec,VNIts)
print(VNIged2)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(1,0,1)
## Distribution : sged
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu -0.000052 0.000105 -0.49408 0.621248
## ar1 0.936633 0.015019 62.36383 0.000000
## ma1 -0.912296 0.017758 -51.37416 0.000000
## omega 0.000011 0.000000 32.73581 0.000000
## alpha1 0.026475 0.010212 2.59258 0.009526
## beta1 0.796136 0.015930 49.97601 0.000000
## gamma1 0.199979 0.036192 5.52557 0.000000
## skew 0.857825 0.021142 40.57507 0.000000
## shape 1.118055 0.050894 21.96813 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu -0.000052 0.000034 -1.5194 0.128654
## ar1 0.936633 0.007032 133.2026 0.000000
## ma1 -0.912296 0.007969 -114.4801 0.000000
## omega 0.000011 0.000000 28.7813 0.000000
## alpha1 0.026475 0.009663 2.7398 0.006148
## beta1 0.796136 0.014568 54.6480 0.000000
## gamma1 0.199979 0.031938 6.2614 0.000000
## skew 0.857825 0.021039 40.7728 0.000000
## shape 1.118055 0.053271 20.9881 0.000000
##
## LogLikelihood : 4562.396
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.2162
## Bayes -6.1837
## Shibata -6.2163
## Hannan-Quinn -6.2041
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 4.117 0.042454
## Lag[2*(p+q)+(p+q)-1][5] 4.667 0.009904
## Lag[4*(p+q)+(p+q)-1][9] 5.594 0.328564
## d.o.f=2
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.9071 0.3409
## Lag[2*(p+q)+(p+q)-1][5] 1.5409 0.7298
## Lag[4*(p+q)+(p+q)-1][9] 2.2284 0.8760
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.9435 0.500 2.000 0.3314
## ARCH Lag[5] 1.1052 1.440 1.667 0.7020
## ARCH Lag[7] 1.1692 2.315 1.543 0.8846
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 44.9132
## Individual Statistics:
## mu 0.13500
## ar1 0.18690
## ma1 0.22814
## omega 12.32771
## alpha1 0.21920
## beta1 0.15744
## gamma1 0.13076
## skew 0.05715
## shape 0.09250
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.1 2.32 2.82
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 2.8882 0.003932 ***
## Negative Sign Bias 1.7843 0.074588 *
## Positive Sign Bias 0.7224 0.470176
## Joint Effect 14.9088 0.001896 ***
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 37.89 0.006121
## 2 30 53.37 0.003821
## 3 40 56.72 0.033094
## 4 50 76.81 0.006764
##
##
## Elapsed time : 1.615032
# Phân phối Generalized Error Distribution đối xứng ("sged")
FTMIBged.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(3, 3), include.mean = TRUE), distribution.model = "sged")
FTMIBged2 <- ugarchfit(FTMIBged.spec,FTMIBts)
print(FTMIBged2)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(3,0,3)
## Distribution : sged
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000139 0.000209 0.664691 0.50625
## ar1 -0.772552 0.090203 -8.564635 0.00000
## ar2 0.584920 0.028148 20.779980 0.00000
## ar3 0.681751 0.023861 28.572082 0.00000
## ma1 0.737612 0.098230 7.509054 0.00000
## ma2 -0.576842 0.029769 -19.377361 0.00000
## ma3 -0.622407 0.024854 -25.042181 0.00000
## omega 0.000006 0.000001 9.637010 0.00000
## alpha1 0.000000 0.007794 0.000023 0.99998
## beta1 0.864953 0.014199 60.915294 0.00000
## gamma1 0.192765 0.032772 5.882060 0.00000
## skew 0.856431 0.027248 31.430490 0.00000
## shape 1.274873 0.060043 21.232749 0.00000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000139 0.000148 0.938469 0.34800
## ar1 -0.772552 0.113645 -6.797929 0.00000
## ar2 0.584920 0.014497 40.348572 0.00000
## ar3 0.681751 0.015792 43.171762 0.00000
## ma1 0.737612 0.123449 5.975019 0.00000
## ma2 -0.576842 0.020739 -27.814646 0.00000
## ma3 -0.622407 0.012002 -51.856894 0.00000
## omega 0.000006 0.000001 8.166647 0.00000
## alpha1 0.000000 0.007044 0.000025 0.99998
## beta1 0.864953 0.014972 57.771724 0.00000
## gamma1 0.192765 0.037196 5.182452 0.00000
## skew 0.856431 0.029872 28.669603 0.00000
## shape 1.274873 0.060740 20.989099 0.00000
##
## LogLikelihood : 4471.293
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.0864
## Bayes -6.0395
## Shibata -6.0866
## Hannan-Quinn -6.0689
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.9092 0.3403
## Lag[2*(p+q)+(p+q)-1][17] 3.7009 1.0000
## Lag[4*(p+q)+(p+q)-1][29] 8.4238 0.9962
## d.o.f=6
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.1026 0.7488
## Lag[2*(p+q)+(p+q)-1][5] 1.7975 0.6670
## Lag[4*(p+q)+(p+q)-1][9] 2.8519 0.7832
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.7073 0.500 2.000 0.4003
## ARCH Lag[5] 1.4305 1.440 1.667 0.6108
## ARCH Lag[7] 2.0358 2.315 1.543 0.7097
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 10.63
## Individual Statistics:
## mu 0.04000
## ar1 0.05491
## ar2 0.02667
## ar3 0.03923
## ma1 0.04199
## ma2 0.01858
## ma3 0.04230
## omega 2.74101
## alpha1 0.05519
## beta1 0.06565
## gamma1 0.04144
## skew 0.13780
## shape 0.03677
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.89 3.15 3.69
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 3.612 0.0003147 ***
## Negative Sign Bias 0.996 0.3194054
## Positive Sign Bias 1.068 0.2859018
## Joint Effect 14.818 0.0019793 ***
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 19.03 0.4551
## 2 30 23.68 0.7448
## 3 40 33.95 0.6993
## 4 50 42.75 0.7232
##
##
## Elapsed time : 1.849441
# Tạo danh sách bao gồm các phân phối và ước lượng của VNI
VNI_list <- list(
garchn= VNIfit,
garcht= VNIst1,
garchst = VNIst2,
garchg = VNIged1,
garchsg = VNIged2
)
# Tính toán các thông tin
VNI_info_mat <- sapply(VNI_list, infocriteria)
rownames(VNI_info_mat) <- rownames(infocriteria(VNIfit))
print(VNI_info_mat)
## garchn garcht garchst garchg garchsg
## Akaike -6.060115 -6.203102 -6.222960 -6.194715 -6.216241
## Bayes -6.034840 -6.174216 -6.190464 -6.165830 -6.183745
## Shibata -6.060160 -6.203161 -6.223035 -6.194774 -6.216316
## Hannan-Quinn -6.050688 -6.192328 -6.210840 -6.183941 -6.204121
# Tạo danh sách bao gồm các phân phối và ước lượng của FTMIB
FTMIB_list <- list(
garchn= FTMIBfit,
garcht= FTMIBst1,
garchst = FTMIBst2,
garchg = FTMIBged1,
garchsg = FTMIBged2
)
# Tính toán các thông tin
FTMIB_info_mat <- sapply(FTMIB_list, infocriteria)
rownames(FTMIB_info_mat) <- rownames(infocriteria(FTMIBfit))
print(FTMIB_info_mat)
## garchn garcht garchst garchg garchsg
## Akaike -6.005293 -6.078091 -6.096175 -6.071502 -6.086407
## Bayes -5.965576 -6.034764 -6.049236 -6.028174 -6.039468
## Shibata -6.005405 -6.078224 -6.096330 -6.071634 -6.086563
## Hannan-Quinn -5.990480 -6.061931 -6.078668 -6.055341 -6.068900
VNI.res <- residuals(VNIst2)/sigma(VNIst2)
fitdist(distribution = "sstd", VNI.res, control = list())
## $pars
## mu sigma skew shape
## -0.001253601 1.004744166 0.812967567 4.065814912
##
## $convergence
## [1] 0
##
## $values
## [1] 2131.483 1938.793 1938.793
##
## $lagrange
## [1] 0
##
## $hessian
## [,1] [,2] [,3] [,4]
## [1,] 2241.51717 546.8934 -745.11901 25.32153
## [2,] 546.89339 1906.6291 254.65484 139.42412
## [3,] -745.11901 254.6548 1359.46978 34.20208
## [4,] 25.32153 139.4241 34.20208 15.11503
##
## $ineqx0
## NULL
##
## $nfuneval
## [1] 102
##
## $outer.iter
## [1] 2
##
## $elapsed
## Time difference of 0.08497 secs
##
## $vscale
## [1] 1 1 1 1 1
FTMIB.res <- residuals(FTMIBst2)/sigma(FTMIBst2)
fitdist(distribution = "sstd", FTMIB.res, control = list())
## $pars
## mu sigma skew shape
## -0.02369694 1.00394114 0.82499952 5.27872845
##
## $convergence
## [1] 0
##
## $values
## [1] 2166.011 2003.463 2003.463
##
## $lagrange
## [1] 0
##
## $hessian
## [,1] [,2] [,3] [,4]
## [1,] 1838.74949 482.78239 -468.680949 10.629723
## [2,] 482.78239 1875.91146 130.429406 54.288084
## [3,] -468.68095 130.42941 1282.006075 4.157882
## [4,] 10.62972 54.28808 4.157882 3.555558
##
## $ineqx0
## NULL
##
## $nfuneval
## [1] 115
##
## $outer.iter
## [1] 2
##
## $elapsed
## Time difference of 0.10219 secs
##
## $vscale
## [1] 1 1 1 1 1
s = pdist("sstd",VNI.res, mu = -0.001253601, sigma = 1.004744166, skew = 0.812967567, shape = 4.065814912 )
head(s,10)
## [1] 0.8178124 0.9137602 0.1928740 0.8455235 0.8614565 0.6237356 0.8598205
## [8] 0.4863047 0.9385351 0.3530719
s1 = pdist("sstd",FTMIB.res, mu = -0.02369694, sigma = 1.00394114, skew = 0.82499952, shape = 5.27872845 )
head(s1,10)
## [1] 0.5544621 0.9816308 0.8133523 0.6277376 0.6805947 0.7752502 0.6890950
## [8] 0.7393540 0.6749065 0.3845884
library("copula")
## Warning: package 'copula' was built under R version 4.3.3
library("scatterplot3d")
#Chuyển đôi dữ liệu phân phối đều
u <- pobs(s)
head(u,10)
## [1] 0.8090041 0.9147340 0.1841746 0.8369714 0.8567531 0.6371078 0.8533424
## [8] 0.4931787 0.9386085 0.3431105
k <- pobs(s1)
head(k,10)
## [1] 0.5654843 0.9802183 0.8117326 0.6296044 0.6787176 0.7742156 0.6848568
## [8] 0.7360164 0.6712142 0.3888131
Kiểm định cho biến VNI
# Kiểm định Anderson_Darling
library(nortest)
ad.test(u)
##
## Anderson-Darling normality test
##
## data: u
## A = 16.255, p-value < 2.2e-16
# Kiểm định Cramer-von Mises
cvm.test(u)
## Warning in cvm.test(u): p-value is smaller than 7.37e-10, cannot be computed
## more accurately
##
## Cramer-von Mises normality test
##
## data: u
## W = 2.2282, p-value = 7.37e-10
# Kiểm định Kolmogorov-Smirnov
ks.test(u, y = "punif")
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: u
## D = 0.00068213, p-value = 1
## alternative hypothesis: two-sided
Kiểm định cho biến FTMIB
# Kiểm định Anderson_Darling
library(nortest)
ad.test(k)
##
## Anderson-Darling normality test
##
## data: k
## A = 16.255, p-value < 2.2e-16
# Kiểm định Cramer-von Mises
cvm.test(k)
## Warning in cvm.test(k): p-value is smaller than 7.37e-10, cannot be computed
## more accurately
##
## Cramer-von Mises normality test
##
## data: k
## W = 2.2282, p-value = 7.37e-10
# Kiểm định Kolmogorov-Smirnov
ks.test(k, y = "punif")
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: k
## D = 0.00068213, p-value = 1
## alternative hypothesis: two-sided
library(VineCopula)
## Warning: package 'VineCopula' was built under R version 4.3.3
##
## Attaching package: 'VineCopula'
## The following object is masked from 'package:copula':
##
## pobs
BiCopSelect(u,k, familyset= c(1:10), selectioncrit="AIC",indeptest = FALSE, level = 0.05)
## Bivariate copula: Survival Gumbel (par = 1.09, tau = 0.08)
gumbel.cop <- gumbelCopula(param = 1.09, dim = 2)
plot(mhnn, xlab = "u", ylab = "k", main = "Đồ thị phân tán của copula Gumbel")
persp(gumbel.cop, dCopula, xlab = "u", ylab = "k", zlab = "Mật độ",
main = "Đồ thị mật độ của copula Gumbel")
gumbel.cop1 <- gumbelCopula(param = 1.09, dim = 2)
set.seed(123)
data12 <- rCopula(1465, gumbel.cop1)
# Vẽ biểu đồ 3D
scatterplot3d(data12[,1], data12[,2], pch = 16, color = "blue",
type = "h", highlight.3d = TRUE,
xlab = "U1", ylab = "U2", zlab = "Probability")
## Warning in scatterplot3d(data12[, 1], data12[, 2], pch = 16, color = "blue", :
## color is ignored when highlight.3d = TRUE
plot(data12[, 1], data12[, 2], pch = 16, col = "blue",
main = "Scatter Plot of Gumbel Copula Data",
xlab = "U1", ylab = "U2")
library(ggplot2)
# Tạo dữ liệu giả định
set.seed(123)
data <- data.frame(u = u, k = k)
# Vẽ đồ thị phân tán
ggplot(data, aes(x = u, y = k)) +
geom_point(size = 1, alpha = 0.5) +
labs(x = "U", y = "K", title = "Đồ thị phân tán của U và K") +
theme_classic()
# Cài đặt và tải thư viện plot3D
library(plot3D)
## Warning: package 'plot3D' was built under R version 4.3.3
library(copula)
# Thiết lập Joe copula với tham số par = 1.09
theta <- 1.09
gumbel_cop <- gumbelCopula(param = theta)
# Kiểm tra Kendall's tau của Joe copula
tau <- tau(gumbel_cop)
print(tau)
## [1] 0.08256881
e <- cbind(u,k)
fit <- fitCopula(gumbelCopula(), data = e, method = "ml")
# Maximum Likelihood Estimation (MLE)
theta <- coef(fit)
print(theta)
## alpha
## 1.064523
# Load necessary libraries
library(copula)
library(MASS)
library(scatterplot3d)
# Define the parameter for the Gumbel copula
theta <- 1.09
# Create the Joe copula object
gumbel_copula <- gumbelCopula(param = theta)
# Perform Kernel Density Estimation
kde2d_result <- kde2d(e[,1], e[,2], n = 50)
# Convert kde2d result to a format suitable for scatterplot3d
x <- kde2d_result$x
y <- kde2d_result$y
z <- kde2d_result$z
# Create a grid of points for scatterplot3d
grid <- expand.grid(x = x, y = y)
# Flatten z for scatterplot3d
z_flat <- as.vector(z)
# Plot the density using scatterplot3d
scatterplot3d(grid$x, grid$y, z_flat, type = "h", angle = 30,
main = "Density Plot of Gumbel Copula",
xlab = "Rainfall Depth",
ylab = "Shot Duration",
zlab = "Bivariate Distribution",
pch = 20, color = "turquoise")
# Load necessary libraries
library(copula)
library(MASS)
# Define the parameter for the Joe copula
theta <- 1.09
# Create the Joe copula object
gumbel_copula <- gumbelCopula(param = theta)
# Perform Kernel Density Estimation
kde2d_result <- kde2d(e[,1], e[,2], n = 1000)
# Extract the results
x <- kde2d_result$x
y <- kde2d_result$y
z <- kde2d_result$z
# Plot the PDF using persp
persp(x, y, z, phi = 30, theta = 50, col = "lightblue",
xlab = "Discharge", ylab = "Duration", zlab = "Density",
main = "PDF of Joe Copula")
# Plot the contour plot
contour(x, y, z, xlab = "Discharge", ylab = "Duration",
main = "Contour Plot of Gumbel Copula")
# Tạo thêm dữ liệu từ Gumbel copula
set.seed(654)
e <- rCopula(1465, gumbel_cop)
x <- qnorm(e[,1])
y <- qnorm(e[,2])
# Vẽ biểu đồ hộp và râu
boxplot(x, y,
col = c("lightblue", "lightgreen"),
names = c("VNI", "FTMIB"),
main = "Box Plot")
library(knitr)
library(copula)
library(ggplot2)
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.3
##
## Attaching package: 'plotly'
## The following object is masked from 'package:MASS':
##
## select
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.3.3
library(VC2copula)
## Warning: package 'VC2copula' was built under R version 4.3.3
##
## Attaching package: 'VC2copula'
## The following objects are masked from 'package:VineCopula':
##
## BB1Copula, BB6Copula, BB7Copula, BB8Copula, copulaFromFamilyIndex,
## joeBiCopula, r270BB1Copula, r270BB6Copula, r270BB7Copula,
## r270BB8Copula, r270ClaytonCopula, r270GumbelCopula,
## r270JoeBiCopula, r270TawnT1Copula, r270TawnT2Copula, r90BB1Copula,
## r90BB6Copula, r90BB7Copula, r90BB8Copula, r90ClaytonCopula,
## r90GumbelCopula, r90JoeBiCopula, r90TawnT1Copula, r90TawnT2Copula,
## surBB1Copula, surBB6Copula, surBB7Copula, surBB8Copula,
## surClaytonCopula, surGumbelCopula, surJoeBiCopula, surTawnT1Copula,
## surTawnT2Copula, tawnT1Copula, tawnT2Copula, vineCopula
library(VineCopula)
library(gridGraphics)
## Warning: package 'gridGraphics' was built under R version 4.3.3
## Loading required package: grid
library(png)
library(rugarch)
#Tạo hàm vẽ biểu đồ
scatter_plot <- function(random_data, cl) {
ggplot(data.frame(e), aes(e[,1], e[,2])) +
geom_point(alpha = 0.5, col = cl) +
theme_minimal() +
labs(x = "u", y = "v")
} #for scatter
persp_plot <- function(copula_obj, file_name, cl) {
png(file_name)
persp(copula_obj, dCopula,
xlab = 'u', ylab = 'k', col = cl, ltheta = 180,
ticktype = "detailed", cex.axis = 0.8)
dev.off()
rasterGrob(readPNG(file_name),interpolate = TRUE)
}# for pdf
#Mô phỏng copula gumbel với p=1.09
cop_gum <- gumbelCopula(param = 1.09, dim = 2)
#Mô phỏng 1465 quan sát ngẫu nhiên dựa trên copula có sẵn
random_gum <- rCopula(copula = cop_gum,n = 1465)
#Vẽ biểu đồ
library(grid)
png('gums.png')
scatter_plot(random_gum,'skyblue')
dev.off()
## png
## 2
gums <- rasterGrob(readPNG('gums.png'), interpolate = TRUE)
library(ggplot2)
ggplot(data.frame(u,k), aes(u, k)) +
geom_point(color = "skyblue", alpha = 0.5) +
theme_minimal()
library(gridExtra)
# Vẽ biểu đồ mật độ phân tán
png('gums.png')
gums <- scatter_plot(random_gum, 'skyblue')
dev.off()
## png
## 2
# Vẽ biểu đồ PDF
gump <- persp_plot(cop_gum, 'gump.png', 'skyblue')
# Tạo chú thích
legend <- legendGrob(
labels = c("Gumbel"), pch = 15,
gp = gpar(col = c('skyblue'), fill = c('skyblue'))
)
# Vẽ cả hai biểu đồ cùng với chú thích trên cùng một hình
grid.arrange(gums, gump, legend, ncol = 2,
layout_matrix = rbind(c(1, 4), c(1, 3)),
widths = c(2, 1),
top = textGrob("Biểu đồ mật độ phân tán và PDF của Copula Gumbel",
gp = gpar(fontsize = 13, font = 2)))
#Tạo hàm vẽ biểu đồ
scatter_plot1 <- function(random_data, cl) {
ggplot(data.frame(random_data), aes(random_data[,1], random_data[,2])) +
geom_point(alpha = 0.5, col = cl) +
theme_minimal() +
labs(x = "u", y = "v")
} #for scatter
persp_plot1 <- function(copula_obj, file_name, cl) {
png(file_name)
persp(copula_obj, dCopula,
xlab = 'u', ylab = 'v', col = cl, ltheta = 120,
ticktype = "detailed", cex.axis = 0.8)
dev.off()
rasterGrob(readPNG(file_name),interpolate = TRUE)
}# for pdf
#Mô phỏng copula gumbel với p=5
cop_gum1 <- gumbelCopula(param = 5, dim = 2)
#Mô phỏng 6000 quan sát ngẫu nhiên dựa trên copula có sẵn
random_gum1 <- rCopula(copula = cop_gum1,n = 6000)
png('gums.png')
scatter_plot1(random_gum1,'#CC6699')
dev.off()
## png
## 2
gums1 <- rasterGrob(readPNG('gums.png'), interpolate = TRUE)
library(gridExtra)
# Vẽ biểu đồ mật độ phân tán
png('gums.png')
gums1 <- scatter_plot1(random_gum1, '#CC6699')
dev.off()
## png
## 2
# Vẽ biểu đồ PDF
gump1 <- persp_plot1(cop_gum1, 'gump.png', '#CC6699')
# Tạo chú thích
legend1 <- legendGrob(
labels = c("Gumbel"), pch = 15,
gp = gpar(col = c('#CC6699'), fill = c('#CC6699'))
)
# Vẽ cả hai biểu đồ cùng với chú thích trên cùng một hình
grid.arrange(gums1, gump1, legend1, ncol = 2,
layout_matrix = rbind(c(1, 2), c(1, 3)),
widths = c(2, 1),
top = textGrob("Biểu đồ mật độ phân tán và PDF của Copula Gumbel",
gp = gpar(fontsize = 15, font = 2)))