# HỌ VA TEN: NGUYEN THI HA MY 
#LOP: 24NH1 
#MSSV:2454020014
#BÀI THI CUỐI KÌ 

## Nhập liệu
likert=file.choose()
datalikert = read.csv(likert, header = TRUE, sep = ";")
save(datalikert,file = "datalikert.rda")
attach(datalikert)
is.data.frame(datalikert)
## [1] TRUE
head(datalikert)
##         Ngày VNINDEX    VN30    HNX  X
## 1 15/09/2026 1811.15 1951.14 274.13  0
## 2 14/09/2026 1788.23 1928.57 271.94 NA
## 3 11/09/2026 1795.21 1936.69 272.68 NA
## 4 10/09/2026 1829.23 1976.82 278.37 NA
## 5 09/09/2026 1827.12 1967.64 279.48 NA
## 6 08/09/2026 1830.44 1968.52 281.11 NA
dim(datalikert)
## [1] 244   5
## Câu b
# MÃ HÓA BIẾN 1: VNINDEX SANG THANG ĐO ORDINAL SCALE
MHVNINDEX = datalikert$VNINDEX
MHVNINDEX = replace(MHVNINDEX, datalikert$VNINDEX <= 1700, "Thap")
MHVNINDEX = replace(MHVNINDEX, datalikert$VNINDEX > 1700 & datalikert$VNINDEX <= 1800, "Trung binh")
MHVNINDEX = replace(MHVNINDEX, datalikert$VNINDEX > 1800, "Cao")
VNINDEXcode = data.frame(datalikert$VNINDEX, MHVNINDEX)
# MÃ HÓA BIẾN 2: VN30 SANG THANG ĐO ORDINAL SCALE
MHVN30 = datalikert$VN30
MHVN30 = replace(MHVN30, datalikert$VN30 <= 1850, "Thap")
MHVN30 = replace(MHVN30, datalikert$VN30 > 1850 & datalikert$VN30 <= 1980, "Trung binh")
MHVN30 = replace(MHVN30, datalikert$VN30 > 1980, "Cao")
VN30code = data.frame(datalikert$VN30, MHVN30)
# MÃ HÓA BIẾN 3: HNX SANG THANG ĐO ORDINAL SCALE
MHHNX = datalikert$HNX
MHHNX = replace(MHHNX, datalikert$HNX <= 250, "Thap")
MHHNX = replace(MHHNX, datalikert$HNX > 250 & datalikert$HNX <= 275, "Trung binh")
MHHNX = replace(MHHNX, datalikert$HNX > 275, "Cao")
HNXcode = data.frame(datalikert$HNX, MHHNX)

##Câu c
library(psych)
attach(datalikert)
## The following objects are masked from datalikert (pos = 4):
## 
##     HNX, Ngày, VN30, VNINDEX, X
chiso_group = data.frame(datalikert$VNINDEX, datalikert$VN30, datalikert$HNX)
describe(chiso_group)
##                    vars   n    mean    sd  median trimmed    mad     min
## datalikert.VNINDEX    1 244 1768.29 85.32 1774.53 1769.07 114.89 1580.54
## datalikert.VN30       2 244 1949.00 75.04 1950.63 1950.42  86.60 1741.05
## datalikert.HNX        3 244  269.24 20.38  263.73  266.61  17.33  235.36
##                        max  range  skew kurtosis   se
## datalikert.VNINDEX 1927.94 347.40 -0.11    -1.13 5.46
## datalikert.VN30    2096.76 355.71 -0.20    -0.65 4.80
## datalikert.HNX      336.16 100.80  1.05     0.52 1.30
MHVNINDEX = cut(datalikert$VNINDEX, breaks = 3, labels = c("Thap", "Trung binh", "Cao"))
MHVN30 = cut(datalikert$VN30, breaks = 3, labels = c("Thap", "Trung binh", "Cao"))
MHHNX = cut(datalikert$HNX, breaks = 3, labels = c("Thap", "Trung binh", "Cao"))
table(MHVNINDEX)
## MHVNINDEX
##       Thap Trung binh        Cao 
##         67         88         89
table(MHVNINDEX) / length(MHVNINDEX)
## MHVNINDEX
##       Thap Trung binh        Cao 
##  0.2745902  0.3606557  0.3647541
table(MHVNINDEX, MHVN30)
##             MHVN30
## MHVNINDEX    Thap Trung binh Cao
##   Thap         30         37   0
##   Trung binh    3         67  18
##   Cao           0         13  76
table(MHVNINDEX)
## MHVNINDEX
##       Thap Trung binh        Cao 
##         67         88         89
table(MHVNINDEX) / length(MHVNINDEX)
## MHVNINDEX
##       Thap Trung binh        Cao 
##  0.2745902  0.3606557  0.3647541
table(MHVNINDEX, MHVN30)
##             MHVN30
## MHVNINDEX    Thap Trung binh Cao
##   Thap         30         37   0
##   Trung binh    3         67  18
##   Cao           0         13  76
### nhận xét câu c
#Cả 3 chỉ số tài chính (VNINDEX, VN30, HNX) đều có 244 quan sát, hoàn toàn không bị khuyết thiếu dữ liệu.
#Chỉ số VNINDEX có độ phân tán và biến động lớn nhất với phương sai 7278.87, độ lệch chuẩn sd = 85.32 và giá trị trung bình đạt 1768.29.
#Chỉ số VN30 có mức trung bình cao nhất đạt 1949.00 với phương sai 5631.73 ,sd = 75.04.
#Chỉ số HNX có giá trị trung bình thấp nhất đạt 269.24 với phương sai nhỏ nhất 415.39 ,sd = 20.38.

## Câu d
attach(datalikert)
## The following objects are masked from datalikert (pos = 3):
## 
##     HNX, Ngày, VN30, VNINDEX, X
## The following objects are masked from datalikert (pos = 5):
## 
##     HNX, Ngày, VN30, VNINDEX, X
# Biểu đồ tròn cho biến MHVNINDEX,MHVN30,MHHNX
pie(table(MHVNINDEX), col = c("red", "blue", "orange"), main = "Biểu đồ tròn tỷ lệ MHVNINDEX")

pie(table(MHVN30), col = c("yellow", "pink", "brown"), main = "Biểu đồ tròn tỷ lệ MHVN30")

pie(table(MHHNX), col = c("turquoise", "gray", "purple"), main = "Biểu đồ tròn tỷ lệ MHHNX")

# Biểu đồ cột cho biến MHVNINDEX,MHVN30,MHHNX
VNINDEX.freq <- table(MHVNINDEX)
barplot(VNINDEX.freq, xlab = "Nhóm chỉ số", ylab = "Số lượng", main = "Biểu đồ cột phân bố MHVNINDEX", col = c("red", "blue", "orange"))

VN30.freq <- table(MHVN30)
barplot(VN30.freq, xlab = "Nhóm chỉ số", ylab = "Số lượng", main = "Biểu đồ cột phân bố MHVN30", col = c("yellow", "pink", "brown"))

HNX.freq <- table(MHHNX)
barplot(HNX.freq, xlab = "Nhóm chỉ số", ylab = "Số lượng", main = "Biểu đồ cột phân bố MHHNX", col = c("turquoise", "gray", "purple"))

###nhận xét 
#MHVNINDEX: Phân bố khá đồng đều, tập trung chủ yếu ở hai nhóm Trung bình và Cao, thể hiện xu thế tích cực chung của thị trường.
#MHVN30: Phần lớn ở nhóm Trung bình và Cao, nhóm Thấp chiếm tỷ rất nhỏ, sự ổn định và sức mạnh của nhóm cổ phiếu vốn hóa lớn
#MHHNX: Phần lớn ở nhóm Thấp, cho thấy quy mô, biên độ và sức hút dòng tiền của sàn HNX thấp hơn đáng kể so với HOSE.
#Tạo biến số thứ tự STT cho ngày giao dịch
STT <- 1:nrow(datalikert)
# Vẽ đồ thị đường cho riêng VNINDEX,VN30,HNX
plot(STT, datalikert$VNINDEX, type = "o", xlab = "Ngày giao dịch", ylab = "Giá trị VNINDEX", pch = 19, col = "blue", main = "Biểu đồ đường biến động VNINDEX")

plot(STT, datalikert$VN30, type = "o", xlab = "Ngày giao dịch", ylab = "Giá trị MHVN30", pch = 19, col = "pink", main = "Biểu đồ đường biến động MHVN30")

plot(STT, datalikert$HNX, type = "o", xlab = "Ngày giao dịch", ylab = "Giá trị MHHNX", pch = 19, col = "turquoise", main = "Biểu đồ đường biến động MHHNX")

###Nhận xét 
#Biểu đồ VNINDEX: Thể hiện xu hướng biến động liên tục của giá trị chỉ số qua các ngày giao dịch với biên độ lớn.
#Biểu đồ MHVN30: Phản ánh trạng thái chuyển dịch của nhóm vốn hóa lớn, chủ yếu duy trì ổn định ở các mức trung bình và cao.
#Biểu đồ MHHNX: Cho thấy các mức phân loại theo thời gian, với phần lớn chuỗi quan sát tập trung ở vùng giá trị thấp.


#Vẽ đồ thị đường kết hợp nhiều chỉ số Ratio Scale trên cùng 1 đồ thị VNINDEX, VN30, HNX
plot(STT, datalikert$VNINDEX, type = "o", xlab = "Ngày giao dịch", ylab = "Giá trị các chỉ số", pch = 19, col = "blue", lty = 1, ylim = c(min(datalikert$VNINDEX, datalikert$VN30, datalikert$HNX), max(datalikert$VNINDEX, datalikert$VN30, datalikert$HNX)), main = "Biểu đồ đường biến động các chỉ số tài chính")
lines(STT, datalikert$VN30, type = "o", pch = 18, col = "red", lty = 2)
lines(STT, datalikert$HNX, type = "o", pch = 17, col = "green", lty = 3)

###Nhận xét 
#Biểu đồ đường kết hợp: Các chỉ số biến động đồng điệu qua thời gian;
#trong đó VN30 cao nhất, tiếp theo là VNINDEX , và HNX thấp nhất với biên độ hẹp.

###Câu e 
library(psych)
attach(datalikert)
## The following objects are masked from datalikert (pos = 3):
## 
##     HNX, Ngày, VN30, VNINDEX, X
## The following objects are masked from datalikert (pos = 4):
## 
##     HNX, Ngày, VN30, VNINDEX, X
## The following objects are masked from datalikert (pos = 6):
## 
##     HNX, Ngày, VN30, VNINDEX, X
vars = cbind(datalikert$VNINDEX, datalikert$VN30, datalikert$HNX)
pairs.panels(vars)

library(htmlwidgets)
library(stringi)
library(Hmisc)
## 
## Attaching package: 'Hmisc'
## The following object is masked from 'package:psych':
## 
##     describe
## The following objects are masked from 'package:base':
## 
##     format.pval, units
result=rcorr(as.matrix(vars),type="pearson")
result$r
##           [,1]       [,2]       [,3]
## [1,] 1.0000000 0.87908884 0.22989721
## [2,] 0.8790888 1.00000000 0.05884544
## [3,] 0.2298972 0.05884544 1.00000000
result$P
##              [,1]      [,2]         [,3]
## [1,]           NA 0.0000000 0.0002931339
## [2,] 0.0000000000        NA 0.3600507466
## [3,] 0.0002931339 0.3600507           NA
##Nhận xét: 
#Tương quan giữa VNINDEX và VN30: Hệ số tương quan r = 0,88 (p < 0,001$), cho thấy mối quan hệ tuyến tính đồng biến rất chặt chẽ giữa hai chỉ số này
#Tương quan giữa VNINDEX và HNX: Hệ số tương quan r = 0,23 (p = 0,00029 < 0,05), thể hiện mối quan hệ đồng biến ở mức độ yếu nhưng có ý nghĩa thống kê
#Tương quan giữa VN30 và HNX: Hệ số tương quan r = 0,06 với (p = 0,36 > 0,05), cho thấy không có ý nghĩa thống kê giữa hai chỉ số này.

###Câu f
mreg <- lm(VNINDEX ~ VN30 + HNX, data = datalikert)
summary(mreg)
## 
## Call:
## lm(formula = VNINDEX ~ VN30 + HNX, data = datalikert)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -86.234 -35.192   9.033  31.034  76.025 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -357.74234   69.23453  -5.167 4.99e-07 ***
## VN30           0.98745    0.03242  30.455  < 2e-16 ***
## HNX            0.74841    0.11939   6.269 1.67e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 37.86 on 241 degrees of freedom
## Multiple R-squared:  0.8047, Adjusted R-squared:  0.803 
## F-statistic: 496.3 on 2 and 241 DF,  p-value: < 2.2e-16
anova(mreg)
## Analysis of Variance Table
## 
## Response: VNINDEX
##            Df  Sum Sq Mean Sq F value    Pr(>F)    
## VN30        1 1366897 1366897 953.391 < 2.2e-16 ***
## HNX         1   56342   56342  39.298 1.666e-09 ***
## Residuals 241  345527    1434                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Phương trình hồi quy: VNINDEX = -357,74234 + 0,98745*VN30 + 0,74841*HNX + ei
#Kết quả hồi quy cho thấy mô hình có ý nghĩa thống kê tổng thể với giá trị F-statistic bằng 496,3 và mức ý nghĩa p < 2,2*10^-16
#Hệ số R^2 = 0,8047; cho thấy các biến độc lập VN30 và HNX giải thích khoảng 80,47% sự biến thiên của biến phụ thuộc VNINDEX, trong khi R^2 hiệu chỉnh đạt 0,803.  
#Xét riêng từng biến, VN30 có tác động cùng chiều đến VNINDEX với hệ số hồi quy 0,98745, điều này có nghĩa khi VN30 tăng 1 đơn vị thì VNINDEX tăng 0,98745 đơn vị
#và mối quan hệ này có ý nghĩa thống kê ở mức rất cao p < 2*12^-16.  
#Biến HNX cũng có tác động cùng chiều và có ý nghĩa thống kê ở mức rất cao, với hệ số 0,74841 ,p = 1,67*10^-9. 
#Nhìn chung, cả hai biến VN30 và HNX đều có mối quan hệ cùng chiều và có ý nghĩa thống kê rõ rệt với VNINDEX trong mô hình nghiên cứu.

###Câu g 
mreg <- lm(VNINDEX ~ VN30 + HNX, data = datalikert)
summary(mreg)
## 
## Call:
## lm(formula = VNINDEX ~ VN30 + HNX, data = datalikert)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -86.234 -35.192   9.033  31.034  76.025 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -357.74234   69.23453  -5.167 4.99e-07 ***
## VN30           0.98745    0.03242  30.455  < 2e-16 ***
## HNX            0.74841    0.11939   6.269 1.67e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 37.86 on 241 degrees of freedom
## Multiple R-squared:  0.8047, Adjusted R-squared:  0.803 
## F-statistic: 496.3 on 2 and 241 DF,  p-value: < 2.2e-16
op <- par(mfrow = c(2, 2))
plot(mreg)

par(op)
###nhận xét :
#Đồ thị bên trái dòng 1 vẽ phần dư ei và giá trị dự báo của VNINDEX
#Đồ thị này cho thấy các giá trị phần dư tập trung quanh đường y = 0,
#cho nên giả định về giá trị trung bình của ei = 0 là có thể chấp nhận được. 

#Đồ thị bên phải dòng 1 vẽ giá trị phần dư ei và giá trị kỳ vọng dựa vào phân phối chuẩn.
#Kết quả cho thấy các giá trị phần dư tập trung rất gần các giá trị trên đường chuẩn,
#Do đó, phần dư ei tuân thủ theo quy luật phân phối chuẩn. 

#Đồ thị bên trái dòng 2 vẽ căn bậc hai của sai số chuẩn phần dư và các giá trị VNINDEX.
#Đồ thị này cho thấy không có sự khác biệt lớn về phương sai phần dư chuẩn cho các giá trị củ VNINDEX,do đó phương sai sai số đồng nhất. 
#Đồ thị bên phải dòng 2  vẽ phần dư chuẩn hóa so với độ đòn bẩy,
#Cho thấy các điểm quan sát đều nằm trong giới hạn cho phép và không có điểm ngoại lai nào vượt quá khoảng cách Cook's distance gây ảnh hưởng nghiêm trọng đến mô hình.