2_ Mục tiêu của bài toán Khai phá dữ liệu tử các bài thi giữa kỳ, cuối kỳ có ý nghĩa quan trọng trong việc đánh giá chất lượng của sinh viên.. Những kết quả mà các em tìm ra sẽ là bước
Trang 1TRUONG DAI HOC BACH KHOA KHOA KHOA HOC & KY THUAT MAY TINH
BK TP.HCM
CAU TRUC ROI RAC CHO KHMT (CO1007)
Ưng dụng thống kê khảo sát kết quả của kiểm tra môn Cấu trúc rởi rac
GVHD: Huỳnh Tường Nguyên Nguyễn Ngọc Lễ
SV thực hiện: Phan Hải Hà (Nhóm trưởng) — 2011134
Huỳnh Lâm Minh Đức - 2010228
Đoàn Tiến Thông — 1915352 Phan Thị Quỳnh Như -2011780
Nguyễn Thanh Trúc - 2010747
Thai Tang Huy — 2013329
Tp Hồ Chí Minh, Tháng 05/2021
Trang 2Trưởng Đại Học Bách Khoa Tp.Hồ Chí Minh
ne
@3 = Khoa Khoa Học & Kỹ Thuật Máy Tính
Mục lục
1 Đề tài bài tập lớn môn Cấu trúc rởi rạc 2
2 Mục tiêu của bài toán 2
3.2 Co s& ly thuyết giải quyết bài toán Q Q Q Q Q HQ HQ 2v 2 2
Trang 3@3 = Khoa Khoa Học & Kỹ Thuật Máy Tính
I ˆ Đề tài bài tập lớn môn Cấu tric roi rac
Sơ lược về đề tài: Dùng các kiến thức đã được học từ đầi học kì để giải các câu ¡, ii, Hi, v, và các câu
hỏi nhỏ 1, 4, 5 của câu v theo cách giải truyề thống và bổ trợ bởi ngôn ngữ R
2_ Mục tiêu của bài toán
Khai phá dữ liệu tử các bài thi giữa kỳ, cuối kỳ có ý nghĩa quan trọng trong việc đánh giá chất lượng
của sinh viên Ngoài ra, những đánh giá kết quả thi cử của từng sinh viên, hay từng câu hỏi sẽ góp phần xác định những điểm mạnh, điển yếu của sinh viên để giáo viên có phương pháp phù hợp trong việc cải thiện kỹ năng của sinh viên
Trong bài tập lớn này, các sinh viên sẽ bắt đầi với các bài toán thống kê đơn giản từ những dữ liệu
được cung cấp Qua đó, các em sẽ tìm ra những con số thú vị, có ý nghĩa đối với các dữ liệu thực tế
trong quá khứ của hệ thống chấm bài online Những kết quả mà các em tìm ra sẽ là bước khởi đầi cho
việc khai phá nguồn dữ liệu của hệ thống sau này, nhằm đạt tới mục tiêu nâng cao kỹ năng lập trình,
kỹ năng giải quyết vấn đề cho người học cũng như hướng tới mục tiêu cao hơn khi tích hợp với các hệ thống quản lý và cải thiện chất lượng dạy và học
3.1 Giới thiệu vềngôn ngữ R
Ta cần phải phân tích dữ liệu để cung cấp các thông tin xác thực, trực quan, mô tả cụ thể, dễ hiểu
vấn đề đang phân tích để phục vụ nghiên cứu khoa học Đặc biệt trong các vấn đề kinh tê-xã hội
và khi nghiên cứu số lớn chúng ta cần phải quan tâm đến các công cụ kỹ thuật về phân tích số liệu
và biểu đồ Phân tích số liệu và biểu đồ thưởng được tiến hành bằng các phầì mền thông dụng
như SAS, SPSS, Stata, Statistica, và S-Plus Đây là những phầi mền được các công tỉ phầi mền
phát triển và giới thiệu trên thị trưởng khoảng ba thập niên qua, và đã được các trương đại học, các trung tâm nghiên cứu và công tỉ kĩ nghệ trên toàn thếgiới sửdụng cho giảng dạy và nghiên cứu
Nhưng vì chi phi để sửdụng các phầìi mền này tuơng đổi đất tiền (có khi lên đến hàng trăm ngàn
đô-la mỗi năm) Do đó, các nhà nghiên cứu thống kê trên thế giới đã hợp tác với nhau để phát triển một phầi mền mới, với chủ trương mã nguồn mở, sao cho tất cảcác thành viên trong ngành
thống kê học và toán học trên thế giới có thể sử dụng một cách thống nhất và hoàn toàn miễn phí Năm 1996, trong một bài báo quan trọng về tính toán thống kê, hai nhà thống kê học Ross lhaka
va Robert Gentleman [lúc đó] thuộc Trường đại học Auckland, New Zealand phát hoạ một ngôn ngữmới cho phân tích thống kê mà họ đặt tên là R Nói một cách ngắn gọn, R là một phầìi mềần sử
dụng cho phân tích thống kê và vẽ biểu đồ Thật ra, về bản chất, R là ngôn ngữ máy tính đa năng,
có thể sửdụng cho nhii mục tiêu khác nhau, từ tính toán đơn giản, toán học giải trí (recreational
mathematics), tính toán ma trận (matrix), đến các phân tích thống kê phức tạp Vì là một ngôn
ngữ, cho nên ngươi ta có thể sử dụng R để phát triển thành các phầạì mền chuyên môn cho một
vấn đề tính toán cá biệt
32 Cơ sở lý thuyết giải quyết bài toán
Vận dụng các kiến thức đã được học trong chương trình môn Cấu trúc rời rạc (COI0ƠØ7) với các
kiến thức về các dạng biểu đồ phổ, biểu đồ tần xuất và các cách lập trình ngôn ngữ R để xử lí số
liệu là điểm của các sinh viên tử bảng dữ liệu
Trang 4€TNG khoa Khoa Học & Kỹ Thuật Máy Tính
2 Sheet GK,CK: thể hiện cho giữa kỳ, cuối kỳ
e { A, B, C, D}: Cac cau trả lời của sinh viên tương ứng cho các câu hỏi + {0, 1}: Kết quả đúng sai tương ứng cho mỗi câu hỏi Nó được dẫn ra từ đáp án được cung cấp trong sheet
3 Sheet GK_0,CK_0 cung cấp thông tin vềlờởi giải, chuẩn đầi ra, chương liên quan cho mỗi câu
hỏi trong từng mã dé thi
5 Bài giải
¡Xác định số lượng sinh viên trong tập mẫu
Số lượng sinh viên trong tập mẫu là max chi dài cột No giữa hai sheet GK và CK
> #i so luong sinh vien trong tap mau
> #GK
> GK_so_luong_Sv <- length(GK_sheet$No)
> #CK
> CK_so_luong_Sv <- length(CK_sheet$No)
> #50 luong sinh vien
> so_luong_sv <- max(GK_so_luong_SV, CK_so_luong_Sv)
Trang 5€TNG khoa Khoa Học & Kỹ Thuật Máy Tính
i.Nhóm câu hỏi liên quan đến số câu của các sinh viên
1) Tính tổng các câu đúng của mỗi sinh viên trong tập mẫu
2) Tính tổng các câu sai của mỗi sinh viên trong tập mẫu
3) Xác định số câu đúng nhiềi nhất và thấp nhất trong tập mẫu
4) Vẽ biểu đồ phổ cho tổng số các câu đúng của sinh viên ứng với từng mã đề lần lượt trong tập mẫu giữa kỳ và cuối kỳ
5) Vẽ biểu đồ phổ cho tổng số các câu sai của sinh viên ứng với từng mã đề lần lượt trong tập mẫu giữa
#so cau dung cua tung sv
bang_d†em$dung_CK [1 :163 ] rowSums (Filter (is numeric,CK_sheet[4:41]),na.rm TRUE
#so Cau cua tung sv
bang_diem$sai_ck[1:163] <- so_cau_hoi_cK - rowSums (Filter (is numeric,cK_sheet[4:41]),na.rm TRUE)
Trang 6xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Trang 7xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Câu ii.3:
> #11.3
> cau_dung_GK <- colSums(GK_sheet[4:28], na.rm = TRUE)
> max_dung_GK <- max (cau_dung_GKk)
> max_dung_GK
[1] 131
> cau_dung_CK <- colSums(CK_sheet[4:41], na.rm
> max _dung_CK <- max(cau_dung_ck)
Trang 8> = Khoa Khoa Hoc & Ky Thuật Máy Tính
Cau ii.4,5:
#ii.4 dung_GK <- data.frame(STT = c(1:4)) dung_GK$ma_de = c("GK2011", 'GK2012°, 'GK2013', 'GK2014') dung_Gk$dung <- c(0, 0, 0, 0)
dung GK$sai <- c(0, 0, 0, 0) for (i in c(1:GkK_so_luong_sv)) {
if (GK sheet$MADE[i] == 2011){
dung _€K§'dung[1] <- dung _GK$dung[1] + bang_diem§dung_GK[ ỉ ] dung_GK$sai[1] <- dung_GK$sai[1] + bang _diem§sai_GKƒ] ] }
if (GkK_sheet$mMADE[i] == 2012){
dung_Gk$dung[2] <- dung_Gk$dung[2] + bang_diem$dung_ck[i]
dung_Gk$sai[2] <- dung_Gk$sai[2] + bang_diem$sai_ck[i]
dung_Gk$dung[4] <- dung_Gk$dung[4] + bang_diem$dung_ck[i]
dung_Gk$sai[4] <- dung_Gk$sai[4] + bang_diem$sai_ck[i]
} dung_Gk dung_CK <- data.frame(ma de = c(‘CK2011", ‘CK2012', 'CK2013", 'CK2014')) dung_CK$dung <- c(0, 0, 0, 0)
dung_CKŠ$sai <- c(0, 0, 0, 0) for (i in c(1:CK so luong SV)) {
if (is.na(CK_sheet[i, 42])) {}
else if (CK sheet[i, 42] == 2011){
dung_ck$dung[1] <- dung_ck$dung[i] + bang_diemSdung_ck[i]
dung_CK$sai[1] <- dung_CK$sai[1] + bang_diem$sai_ck[i]
} else if (CK sheet[i, 42] == 2012){
dung_ck$dung[2] <- dung_CK$dung[2] + bang_diem§dung_CK[i ] dung CKf$sai[2] <- dung CK$sai[2] + bang diem§sai_CK[i ]
}
else if (CK_sheet[i, 42] == 2013){
dung_CK§dung[3] <- dung_ck$dung[3] + bang_diem$dung_ck[i]
dung_ck$sai[3] <- dung_ck$sai[3] + bang_diem$sai_ck[i]
else if (CK_sheet[i, 42] == 2014){
dung_ck$dung[4] <- dung CK$dung[4] + bang diem§dung CK[ ] dung_ck$sai[4] <- dung CK$sai[4] + bang diem§sai_CK[† ] dunn ce
Đề bài tập lớn môn Céu tic Roi rac cho KHMT (CO1007) - Niên khóa 20202021 Trang 7/62
Trang 9a Khoa Khoa
dung_ck Vibrary(ggplot2 ggplot(data = dung_ck, ggplot (data - dung_ck,
Kết quả:
Cau ii.4:
Học & Kỹ Thuật Máy Tính
aes aes
Hinh 5: Code R câu ii.4+5
"so cau dung")
"So cau dung”)
Đề bài tập lớn môn Cấu trúc Rởi rạc cho KHMT (COI007) - Niên khóa 20202021 Trang 8/62
Trang 10xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Câu 1.5:
Giua bi tc0- xo-
3 gen
Đề bài tập lớn môn Céu tic Roi rac cho KHMT (CO1007) - Niên khóa 20202021 Trang 9/62
Trang 11@3 = Khoa Khoa Học & Kỹ Thuật Máy Tính
Ii.Nhóm câu hỏi liên quan đến điển của các sinh viên
a Điểm được tính bằng cách lấy tổng số câu đúng chia cho tổng số câu ứng với mỗi kỳ thi, r lấy kết
quả nhân 10 và làm tròn đến 2 số thập phân
c Điểm tổng kết tính bằng cách lấy tổng 40% điểm giữa kỳ và 60% điểm cuối kỳ
1) Tính trung vị mẫu, cực đại mẫu, cực tiểu mẫu giữa kỳ và mẫu cuối kỳ
2) Đếm các sinh viên mà điểm của mỗi sinh viên trong tập mẫu giữa kỳ và mẫu cuối kỳ lớn hơn hoặc
5) Đếm các sinh viên mà điểm của mỗi sinh viên trong tập mẫu nhỏ hơn 5
6) Vẽ biểu đồ phổ điểm của sinh viên trong tập mẫu giữa kỳ và mẫu cuối kỳ
7) Xác định danh sách sinh viên gần số thứ tự (No), mã nhóm và tổ có điểm số lớn nhất trong tập mẫu giữa kỳ và mẫu cuối kỳ
8) Xác định danh sách sinh viên gồm số thứ tự (No), mã nhóm và tổ có điểm số nhỏ nhất trong tập mẫu giữa kỳ và mẫu cuối kỳ
`Ð _ Xác định điểm số trung bình của của các sinh viên trong mẫu trong tập mẫu giữa kỳ và mẫu cuối kỳ 10) Xác định số lượng sinh viên có điểm số trung bình
11) Hãy đo mức độ phân tán của điểm số (xung quanh giá trị trung bình) của mẫu giữa kỳ và mẫu cuối
kỳ
= =
12) Tính độ méo lệch (skewness), và độ nhọn (kurtosis) của dữ liệu trong mẫu giữa kỳ và mẫu cuối kỳ
13) Tính tứ phan vj (quartile) thi nhất (Q¡) và thứ ba (Qs;) của giữa kỳ và mẫu cuối kỳ
14) Xác định số lượng sinh viên có điểm số nằm trong 2 mức điểm cao nhất trong tập mẫu giữa kỳ và
Trang 124 Khoa Khoa Học & Kỹ Thuật Máy Tính
Phương sai ( Variance/Dispersion, còn gọi là Tán số) của biến ngẫu nhiên X được định nghĩa bằng trung bình của bình phương sai lệch giữa biến ngẫu nhiên với kỳ vọng toán của nó
Kí hiệu bởi D(X) hay V(X)
Công thức tính{ D(X) = E[X-E(X)]? hay D(X) = E(X?) - [E(X)]
-_ Nếu X là BNN rời rạc thì:
D(X) = }Jx-E(Xƒp, = 3 xjp, -[E(XJƑ
- NéuXla BNN liên tục thì:
[ CTI + cT2 +0 ) —
Phương sai càng nhỏ thì giá trị của X càng tập trung gần E(X)
s Trong kỹ thuật, phương sai thường đặc trưng cho mức độ phân tán của kích thước các chỉ tiết gia công hay sai số của thiết bị Phương sai cho biết sự ổn định của thiết bị Trong nông nghiệp, phương sai đặc trưng cho mức độ đồng đều của vật nuôi hay cây trồng Trong quản lý và kinh doanh, nó đặc trưng cho mức độ rủi ro của các quyết định
Đề bài tập lớn môn Cấu trúc Rởi rạc cho KHMT (COI007) - Niên khóa 20202021 Trang 11/62
Trang 134W Khoa Khoa Học & Kỹ Thuật Máy Tính
II.3.4 Trung vị: Trung vị ( median) của biến ngẫu nhiên X, kí hiệu med(X), là một giá trị thực mà:
-Tứ phân vị thứ nhất được tính bằng công thức Q1 = 25 * (n+l) / 100
-Tứ phân vị thứ nhì là giá trị trung vị Q2 = (n+l)/2
-Tứ phân vị thứ ba được tính bằng công thức Q3 = 75 * (n+l) / 100
Giá trị trung vị chia mẫu dữ liệu đã sắp thứ tự thành 2 tập có
số phần tử bằng nhau Trung vị của tập dữ liệu nhỏ hơn là Q, (gọi là tứ phân vị dưới) và trung vị của tập dữ liệu lớn hơn là Q; ( gọi là tứ phân vị trên) Q, được lấy bằng giá trị trung vị
Độ trải giữa IQR=Rạ= Q; - Q;
Đề bài tập lớn môn Cấu trúc Rởi rạc cho KHMT (COI007) - Niên khóa 20202021 Trang 12/62
Trang 14@3 = Khoa Khoa Học & Kỹ Thuật Máy Tính
Độ lệch
Khái niệm
Độ lệch trong tiêng Anh la Skewness
Nếu phân hôi hinh chuông bị dịch chuyển sang trái hoặc sang phải, nó được cho là bị lệch Độ lệch được coi là một đại diện cho mức độ khac biệt cua một phân phối nhất định so với phân phối chuân Một phân phối chuân có độ lệch bằng 0, trong khi phân phổi phân phối xác suất loga chuẩn sẽ co lệch
vê phia bên phải
Công thức tính độ lệch chuẩn
SKI = (Gia trị trung bình - yêu vi)/ Độ lệch chuân
SK2 = (Gia trị trung bình - trung vi)/ Độ lệch chuân
Trong đó :
SKI là độ lệch đầai tiên của Pearson, hay độ lệch yếu vị Pearson
SK2 là độ lêch thứ hai của Pearson, hay độ lệch trung vị Pearson
Độ nhọn
Khái niệm
Độ nhọn trong tiêng Anh la Kurtosis
Giống như độ lệch, độ nhon là một biện pháp thống kê được sử dụng để mô tả cac phân phối Trong khi
độ lệch phân biệt các giá trị cực trí ở một đuôi so với đuôi kia, thì độ nhọn đo lương cac giá trị cực trí ở một trong hai đuôi
Đề bài tập lớn môn Cấu trúc Rởi rạc cho KHMT (COI007) - Niên khóa 20202021 Trang 13/62
Trang 15xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Bài giải:
1Ii.a,b:
#GK bang_diem$diem_Gk[158:163] = 0 bang_diem$diem_Gk[1:157] <- round(bang_diem$dung_Gk[1:157]/25*10, digits = 2)
#CK bang_diem$diem_ck[1:163] <- round(bang_diem$dung_ck[1:163]/so_cau_hoi_ck"10, digits = 2)
#b
#diem tong ket diem_tong_ket <- bang_diem$diem_Gk"40/100 + bang_diemSdiem_ck*60/100 bang_diem$diem_tong_ket <- round(diem_tong_ket, digits = 2) bang_diem
Trang 16> = Khoa Khoa Hoc & Ky Thuật Máy Tính
itil, 2, 3, 4, 5, 9, 11
Két qua:
#b
#diem tong ket
diem_tong_ket <- bang_diem$diem_Gk*40/100 + bang_diem$diem_ck*60/100 bang_diem$diem_tong_ket <- round(diem_tong_ket, digits = 2) bang_diem
#b.1 trung vi, cuc dai, cuc tieu, diem trung binh, do lech chuan, phuong sai
#GK trung_vi_Gk <- median(bang_diem$diem_Gk, na.rm = TRUE) cuc_dai_Gk <- max(bang_diem$diem_GK, na.rm = TRUE) cuc_tieu_GK <- min(bang_diem$diem_Gk, na.rm = TRUE) TB_GK <- mean(bang_diemSdiem_Gk, na.rm = TRUE) do_lech_chuan_Gk <- sd(bang_diem$diem_Gk, na.rm = TRUE) phuong_sai_Gk <- var (bang_diem$diem_GK, na.rm = TRUE)
#CK trung_vỉ_CK <- median(bang_diem$diem_CK, na.rm = TRUE) cuc_dai_ck <- max(bang_diem$diem_CK, na.rm = TRUE) cuc_tieu_CK <- min(bang_diemSdiem_cK, na.rm = TRUE) TB_CK <- mean(bang_diemSdiem_cK, na.rm = TRUE) do_lech_chuan_ck <- sd(bang_diem$diem_ck, na.rm = TRUE) phuong_sai_ck <- var (bang_diemSdiem_cK, na.rm = TRUE)
#b.2, 3, 4, 5
#GK_dem so sv co diem >= 9.0, 7.0, 5.0, < 5.0 Gk_from_9.0 <- length(which(bang_diem$diem_ck >=
Gk_from_5.0 <- length(which(bang_diem$diem_ck >=
GkK_less_5.0 <- length(which(bang_diem$diem_Gk < 5.0
0, !is.na(bang_diem$diem_ck))) 0, !is.na(bang_diem$diem_Gk)))
0, !is.na(bang_diem$diem_ck)))
» !is.na(bang_diem$diem_Gk)))
#CK_dem so sv co diem >= 9.0, 7.0, 5.0, < 5.0 CK_from_9.0 <- length(which(bang_diem$diem_cK >= 9.0, !is.na(bang_diem$diem_ck))) CK_from_7.0 <- Tength(which(bang_diem$diem_CK >= 7.0, !is.na(bang_diem$diem_ck))) CK_from_5.0 <- Tength(which(bang_diem$diem_CK > 0, !is.na(bang_diem$diem_ck))) CK_Tess_5.0 <- length(which(bang_diem$diem_ck < 5.0, !is.na(bang_diem$diem_ck)))
Hình 9: Code R câu iii.1234,5
#b.9, 10, 11
#lap bang thong ke
type <- c("GK", "CK")
trung_vi_mau <- c(trung_vi_Gk, trung_vi_ck)
cuc_dai_mau <- c(cuc_dai_GK, cuc_dai_ck)
cuc_tieu_mau <- c(cuc_tieu_GK, cuc_tieu_ck)
do_lech chuan <- c(do_]ech chuan 6K, do_lech_chuan_ck)
phuong sai <- c(phuong_sai_Gk, phuong_sai_ck)
diem trung binh <- cC(TB_GK, TB_CK)
5o_5v_tu_9.0 <- c(GK_fron_9.0, CK_from_9.0)
SO sSV tu_?.0 <- C(G6K from 7.0, CK_from_7.0)
.0 <- C(GK from_5.0, CK_from_5.0)
So_sv_duoi_5.0 <- c(GK_less_5.0, CK_Tess_5.0)
thong _ke <- data.frame(type, trung_vi_mau, cuc_dai_mau, cuc_tieu_mau, do_lech_chuan, phuong_sai, diem_trung_binh, so_sv_tu_9.0, so_sv_tu_7.0, view(thong_ke)
Hình 10: Code R cau iii.9-11
Đề bài tập lớn môn Céu tic Roi rac cho KHMT (CO1007) - Niên khóa 20202021 Trang 15/62
Trang 17xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
cục tieu mau do_lech_chuan phuong sai diem_trung_binh sosvtu90 sosv tu 7.0 so_sv_tu 5.0 so_sv_duoi 5.0
4 GK 5.60 8.80 9 1.702008 2.896833 SATASAT 9 24 109 s4
2 Kk c3 9.21 9 2.329741 5.427694 5.889571 1 59 122 41
Hình 11: Kết quả các câu ii.1, 2, 3, 4, 5, 9, 11 Câu Hi.6:
ob phe sisw 2in) wisn
phadten © dars tram (ated
} ipRe_4ian§za_zv_CK[191 = pho_d* em
int yen") inh yien")
pho dien
QpÏot(Cdata - pho-đie', aesíx - điem, y - so
ggpÌatCeara = pho_die, sez'x ~ điem, y = 4 GK/) + geonbar(stat CKI) + gion_bar¿zvat = = "pha deen sinh "ho dien sinh
Hình 12: Code R câu Ii.6
Trang 18xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Đề bài tập lớn môn Cấu trúc Rởi rạc cho KHMT (COI007) - Niên khóa 20202021 Trang 17/62
Trang 194 Khoa Khoa Học & Kỹ Thuật Máy Tính
danh_sach_sinh_vien_nho_nhat_GK <- subset (danh_sach_s inh_vien_, diem == max(diem_GK)) == min(diem_GK[1:157]))
#danh sach sinh vien cao nhat CK danhsach3 <- CK_sheet[1:163 cGy ? 3]
danh_sach_sinh_vien_CK <- serge (đanhsach3, danhsach4 ,by="No", al1=IRUE) danh_sach_sinh_vien_cao_nhat_CK <- subset (danh_sach_sinh_vien_CK,diem_CK== max(diem_CK))
Hinh 15: Code R cau iii.7+8
Đề bài tập lớn môn Céu tic Roi rac cho KHMT (CO1007) - Niên khóa 20202021 Trang 18/62
Trang 20xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Trang 21xĂNO Khoa Khoa Học & Kỹ Thuật Máy Tinh
Câu Ii.10:
> #111.10
> so_sy_dat_TB_GK <- length((which(bang_diemSdiem_Gk >= 5 & bang_diem$diem_GK <= 6)))
> so_sv_dat_TB_GK [1] 50
> so_sv_dat_TB_CK <- length((which(bang_diem$diem_CK >= 5 & bang_diem$diem_CK <= 6)))
> so_sv_dat_TB_CK [1] 24
Hình 17: Code R + kết quả câu iii.10
Đề bài tập lớn môn Cấu trúc Rởi rạc cho KHMT (COI007) - Niên khóa 20202021 Trang 20/62
Trang 22xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Câu Ii.12:
> #iii 12
> diem_Gk <- bang_diem$diem_ck
> skewness_GK <- sum((diem_GK-mean(diem_GK))A3)/(CClength(diem_GK) -1)*sd(diem_GK)A3)
> kurtosis_GK <- sum((diem_Gk-mean(diem_Gk))%4)/(CC] ength (diem_GK)-1) *sd(diem_Gk)4)
> skewness_GK [1] -1.109033
> kurtosis_GK [1] 4.99777
>
diem_CK <- bang_diem$§diem_CK skewness_CK <- sum((diem_CK-mean(diem_CK))A3)/CClength(diem_Ck)-1)*sd(diem_Ck)A3) kurtosis_CK <- sum((diem_CK-mean(diem_CK))44)/((]ength (diem_CK) -1) *sd(diem_Ck)44) skewness_CK
[1] -1.185825
> kurtosis_CK [1] 3.992907
Trang 23> = Khoa Khoa Hoc & Ky Thuật Máy Tính
Câu iii.13:
#11113
#phanviGk order (bang_diem$diem_Gk[1:157]) bang_diem$diem_Gk [1:157] [or der (bang_di em$diem_GK [1 :157 ]) )
pr int (quanti 1e(bang_ di em$ di em_GK[ 1 :157 ] ,0 25)
pr int(quant1e(bang_ di em$Sdi em_GK[ 1 : 157 ] ,0 5)
pr int (quant †1e(bang_ đi em$ di em_GK[ 1 : 1 57 } ,0 75)
#phanvick
order (bang_diemSdiem_ck) bang_diemSdiem_ck [order (bang_diem$diem_ck) ] print (quanti le(bang_diem$diem_ck,0.25)) print (quanti le(bang_diemSdiem_ck,0.5)) print (quanti le(bang_diemSdiem_cx,6.75)) pv123gk=quantile(bang_diemSdiem_Gk[1:157]) [2:4]
Trang 24& Trưởng Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
if(diem_cK[1] != diem_ck[2]){
cao3=1 cao4 <- length(which(diem_CK == diem_CK[2])) cao_1_2_CK <- cao3 + cao4
diem_GK <- sort(danh_sach_sinh_vien_Gk$diem_GK, decreasing = TRUE) if(diem_GkK[1] == diem_Gk[2]){
for(i in 2:163){
if(diem_GK[i] != diem GK[i + 1]){
caol <- length(which(diem_GK == diem_GK[1])) cao2 <- length(which(diem_GK == diem _GK[1+1]))
}
1f(diem_GK[1] != diem GK[2]){
caol=1 cao2 <- length(which(diem_GkK == diem_GK[2]))
>
#so_sv_co_diem_nam_trong_2_muc_diem_cao_nhat_CK diem _CK <- sort(danh_sach_sinh_vien_CK$diem_CK,decreasing = TRUE) if(diem_cK[1] == diem _CK[2]){
Trang 25xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Cau iii.15:
#111.15 ye do thi so sv co dien nap trong 2 muc diem (a0 that
hai_muc_czo_nhat <- data frame(rank = 1:2)
hai_nuc_(a_nhat{dien GŒ <- (dien cao 1, điếi ran 2)
hai 1c ca nlatjsg sự ( <- cíca03, can)
hai_muc_cao_nhatSdiemck <- c(diemcao_3, diencao_4)
ggplot(data = hai_nuc_cao_nhat, aes(x = dien Œ, y = so sv_Q)) + geonbar(stat = “identity") + labs(title = "Giua ki", x = "đie”, y = "so sinh vien")
ggplot(data = hai tuc cao fhat, aes(x = dien CK, y = so sự (K)) + di bar(stat = "1ửentity') + labs(title = "Cuoi ki", x= "dies", y = "so sinh vien")
Hình 22: Code R câu iii.1Š
Giua ki 20-
Trang 26xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Trang 27&
Câu Ii.16:
Cho k=3
x*
Trưởng Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
#111.16 xac dinh so sv co diem cao thu k voi k cho diem_GK <- sort(bang_diem$diem_GK,decreasing = TRUE) min_rank_GK = 1
Trang 288K Khoa Khoa Hoc & Ky Thuật Máy Tính
#GK
k = scan() for (i in 1:162){
if (k > min_rank_Gk) { so_sv_diem_cao_thu_k_GK = 0 break
if (k > min_rank_ck) { so_sv_diem_cao_thu_k_CK = 0 , break
Trang 29xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
s0_sv_k diem cao_@$@_so_svícœnt1] <- ]ength(nhich(đïen & = đien @[ï]))
s0_5v.k dien cao iđien GK[cœnt1] <- dien @Íï]
so_sv_k_dien_cao_ CKICK s0_sv[count’] < length (which (dien_ck == dien_Ck[i]))
s0_sự_k đỉerL can ( oo < dienCk[i]
count = countl +
if (count! == k){
so_sv_k_dien_cao_Ck§CK_so_sv[countl] <- length(which(diemck = dienck[i+1]))
so_sv_k đïem_cao_(Kidien (K[count1] <- dien (K[i-1]
Trang 30xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Giua ki
Trang 31xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính
Cuoi ki