# 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)
save(datalikert,file = "datalikert.rda")
attach(datalikert)
is.data.frame(datalikert)
head(datalikert)
dim(datalikert)
## Câu b
# MÃ HÓA BIẾN 1: VNINDEX SANG THANG ĐO ORDINAL SCALE
MHVNINDEX = VNINDEX
MHVNINDEX = replace(MHVNINDEX, VNINDEX <= 1700, "Thap")
MHVNINDEX = replace(MHVNINDEX, VNINDEX > 1700 & VNINDEX <= 1800, "Trung binh")
MHVNINDEX = replace(MHVNINDEX, VNINDEX > 1800, "Cao")
VNINDEXcode = data.frame(VNINDEX, MHVNINDEX)
# MÃ HÓA BIẾN 2: VN30 SANG THANG ĐO ORDINAL SCALE
MHVN30 = VN30
MHVN30 = replace(MHVN30, VN30 <= 1850, "Thap")
MHVN30 = replace(MHVN30, VN30 > 1850 & VN30 <= 1980, "Trung binh")
MHVN30 = replace(MHVN30, VN30 > 1980, "Cao")
VN30code = data.frame(VN30, MHVN30)
# MÃ HÓA BIẾN 3: HNX SANG THANG ĐO ORDINAL SCALE
MHHNX = HNX
MHHNX = replace(MHHNX, HNX <= 250, "Thap")
MHHNX = replace(MHHNX, HNX > 250 & HNX <= 275, "Trung binh")
MHHNX = replace(MHHNX, HNX > 275, "Cao")
HNXcode = data.frame(HNX, MHHNX)
##Câu c
library(psych)
describe(chiso_group)
chiso_group = data.frame(VNINDEX, VN30, HNX)
MHVNINDEX = cut(VNINDEX, breaks = 3, labels = c("Thap", "Trung binh", "Cao"))
MHVN30 = cut(VN30, breaks = 3, labels = c("Thap", "Trung binh", "Cao"))
MHHNX = cut(HNX, breaks = 3, labels = c("Thap", "Trung binh", "Cao"))
MHVNINDEX = cut(VNINDEX, breaks = 3, labels = c("Thap", "Trung binh", "Cao"))
table(MHVNINDEX)
table(MHVNINDEX) / length(MHVNINDEX)
table(MHVNINDEX, MHVN30)
### 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
# 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"))
VNINDEX.freq <- table(MHVN30)
barplot(VNINDEX.freq, xlab = "Nhóm chỉ số", ylab = "Số lượng", main = "Biểu đồ cột phân bố MHVN30", col = c("yellow", "pink", "brown"))
VNINDEX.freq <- table(MHHNX)
barplot(VNINDEX.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,MHVN30,MHHNX
plot(STT, 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, MHVN30, 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, MHHNX, type = "o", xlab = "Ngày giao dịch", ylab = "Giá trị MHHNX", pch = 19, col = "turquoise", main = "Biểu đồ đường biến động MHHNX0")
###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, 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(VNINDEX, VN30, HNX), max(VNINDEX, VN30, HNX)), main = "Biểu đồ đường biến động các chỉ số tài chính")
lines(STT, VN30, type = "o", pch = 18, col = "red", lty = 2)
lines(STT, HNX, type = "o", pch = 17, col = "green", lty = 3)
legend("topright", legend = c("VNINDEX", "VN30", "HNX"),col = c("blue", "red", "green"), lty = c(1, 2, 3), pch = c(19, 18, 17))
###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)
vars=cbind(VNINDEX,VN30,HNX)
pairs.panels(vars)
library(htmlwidgets)
library(stringi)
library(Hmisc)
result=rcorr(as.matrix(vars),type="pearson")
result$r
result$P
##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)
anova(mreg)
#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)
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.