library(readxl)
library(mixtools)
## Warning: package 'mixtools' was built under R version 4.3.1
## mixtools package, version 2.0.0, Released 2022-12-04
## This package is based upon work supported by the National Science Foundation under Grant No. SES-0518772 and the Chan Zuckerberg Initiative: Essential Open Source Software for Science (Grant No. 2020-255193).
library(sn)
## Warning: package 'sn' was built under R version 4.3.1
## Loading required package: stats4
##
## Attaching package: 'sn'
## The following object is masked from 'package:stats':
##
## sd
library(rlang)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.1
VNM <- read_excel("C:/Users/pc/Downloads/VNM.xlsx")
View(VNM)
summary(VNM)
## Ngày P KL
## Min. :2021-01-04 00:00:00.00 Min. : 61260 Length:620
## 1st Qu.:2021-08-18 18:00:00.00 1st Qu.: 72260 Class :character
## Median :2022-04-04 12:00:00.00 Median : 77456 Mode :character
## Mean :2022-04-03 10:43:21.28 Mean : 78637
## 3rd Qu.:2022-11-14 06:00:00.00 3rd Qu.: 82496
## Max. :2023-06-30 00:00:00.00 Max. :108707
## G D ROE
## Min. :-0.0697000 Min. :1000 Min. :5.520
## 1st Qu.:-0.0088250 1st Qu.:1100 1st Qu.:5.610
## Median :-0.0013000 Median :1400 Median :6.300
## Mean :-0.0004471 Mean :1345 Mean :6.614
## 3rd Qu.: 0.0066000 3rd Qu.:1500 3rd Qu.:7.620
## Max. : 0.0697000 Max. :1500 Max. :8.570
#Xây dựng mô hình
Cổ phiếu Vinamilk từ 4/1/2021 đến 30/6/2023 với cổ tức được trả 6 tháng/lần.
Chiết khấu dòng tiền(FV) = Cổ tức bằng tiền / Giá thị trường của cổ phiếu
\(FV= \beta_0 + \beta_1 D + \beta_2P+ \beta_3G+\beta_4ROE\)
Kiểm định Shapiro-Wilk Test
shapiro.test(VNM$D)
##
## Shapiro-Wilk normality test
##
## data: VNM$D
## W = 0.70152, p-value < 2.2e-16
Với p-value< 5% -> Biến D không tuân theo phân phối chuẩn
Kiểm định phân phối mũ
ks.test(VNM$D, y = 'pexp')
## Warning in ks.test.default(VNM$D, y = "pexp"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: VNM$D
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Với p-value < 5% -> Biến D không tuân theo phân phối mũ
Kiểm định phân phối đều
ks.test(VNM$D, y = 'punif')
## Warning in ks.test.default(VNM$D, y = "punif"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: VNM$D
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Với p-value < 5% -> Biến D không tuân theo phân phối đều
Kiểm định phân phối loga chuẩn
ks.test(VNM$D, y = 'plnorm')
## Warning in ks.test.default(VNM$D, y = "plnorm"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: VNM$D
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Với p-value < 5% -> Biến D không tuân theo phân phối loga chuẩn
Thông qua các kiểm định Shapiro-Wilk Test và Kolmogorov - Smirnov, biến D vẫn chưa xác định được phân phối cụ thể nên tác giả mô phỏng biến D theo Random Walk:
W <- function(N, x0, mu, variance) {
z<-cumsum(rnorm(n=N, mean=0,
sd=sqrt(variance)))
t<-1:N
x<-x0+t*mu+z
return(x)
}
# mu is the drift
set.seed(20)
N <- 40
x0 <- VNM$D[1]
mu <- 0
variance <- var(VNM$D)
D <- W(N, x0, mu, variance)
plot(D, main="Random Walk",ylab="D", typ='l', col="red")
Sau khi mô phỏng biến D, ta kiểm định phân phối D thông qua kiểm định Shapiro-Wilk:
shapiro.test(D)
##
## Shapiro-Wilk normality test
##
## data: D
## W = 0.9524, p-value = 0.09171
P-value> 5%. vậy biến D tuân theo phân phối chuẩn.
Kiểm định Shapiro-Wilk Test
shapiro.test(VNM$P)
##
## Shapiro-Wilk normality test
##
## data: VNM$P
## W = 0.93212, p-value = 3.71e-16
Với p-value< 5% -> Biến P không tuân theo phân phối chuẩn
Kiểm định phân phối mũ
ks.test(VNM$P, y = 'pexp')
## Warning in ks.test.default(VNM$P, y = "pexp"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: VNM$P
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Với p-value < 5% -> Biến P không tuân theo phân phối mũ
Kiểm định phân phối đều
ks.test(VNM$P, y = 'punif')
## Warning in ks.test.default(VNM$P, y = "punif"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: VNM$P
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Với p-value < 5% -> Biến P không tuân theo phân phối đều
Kiểm định phân phối loga chuẩn
ks.test(VNM$P, y = 'plnorm')
## Warning in ks.test.default(VNM$P, y = "plnorm"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: VNM$P
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Với p-value < 5% -> Biến P không tuân theo phân phối loga chuẩn
Thông qua các kiểm định Shapiro-Wilk Test và Kolmogorov - Smirnov, biến P vẫn chưa xác định được phân phối cụ thể nên tác giả mô phỏng biến P theo Random Walk:
W <- function(N, x0, mu, variance) {
z<-cumsum(rnorm(n=N, mean=0,
sd=sqrt(variance)))
t<-1:N
x<-x0+t*mu+z
return(x)
}
# mu is the drift
set.seed(20)
N <- 40
x0 <- VNM$P[1]
mu <- 0
variance <- var(VNM$P)
P <- W(N, x0, mu, variance)
plot(P, main="Random Walk",ylab="P", typ='l', col="red")
Sau khi mô phỏng biến D, ta kiểm định phân phối D thông qua kiểm định Shapiro-Wilk:
shapiro.test(P)
##
## Shapiro-Wilk normality test
##
## data: P
## W = 0.9524, p-value = 0.09171
P-value> 5%. vậy biến D tuân theo phân phối chuẩn.