DAI HOC QUOC GIA THANH PHO HO CHI MINH TRUONG 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 ne Trưởng Đại Học Bách Khoa Tp.Hồ Chí Minh @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 Phương pháp giải quyết vấn đề 2 3.1 Giới thiệu về ngôn ngữ Ro.2 Co s& ly thuyết giải quyết bài toán. Q Q Q Q Q HQ HQ 2v 2 2 4 Mô tả dữ liệu 2 5 Bài giải 3 Tài liệu 62 Đề 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 1/62 s Trưởng Đại Học Bách Khoa Tp.Hồ Chí Minh @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 Phương pháp giải quyết vấn đề 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. 4_ Mô tả dữ liệu Đính kèm đề bài tập Ion 1a files “201_CO1007.xlsx” trong đó chứa thông tin về kết quả trả lời các câu hỏi ky thi giữa kỳ và cuối kỳ gìữn có các sheets: 1. Sheet CDR: chứa thông tin các chuẩn đầi ra môn học, mỗi câu hỏi trong đề thi có I chuẩn tương ứng. Đề 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 2/62 s Trưởng Đại Học Bách Khoa Tp.Hồ Chí Minh €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. 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) > so_luong_sv [1] 163 > Hinh 1: Code R va két qua bai i Đề bài tập lớn môn Céu tic Roi rac cho KHMT (CO1007) - Niên khóa 20202021 Trang 3/62 s Trưởng Đại Học Bách Khoa Tp.Hồ Chí Minh €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 kỳ và cuối kỳ Bài giải: Câu ii.1,2: # create dataframe bang diem STT so_Tuong_sv bang diem <- data.frame(STT = C(1:STT #ii. so h so_cau_hoi_GK <- ncol(GK_sheet [4:28] ) so_cau_hoi_ck ncol (GkK_sheet [4:41]) #GK #so cau dung Cua tung sv bang_diem$dung_Gk[158:163] = 0 bang_diem$dung_Gk [1:157] rowSums (Filter (is.numeric,Gk_sheet[4:28]),na.rm = TRUE bang_diem$sai 0 bang_diem$sai_Gk[1:157] so_cau_hoi_Gk rowSums (Filter (is. numeric,GkK_sheet[4:28]),na.rm TRUE) #CK #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) bang_diem Hình 2: Code R cau ii.1,2 Đề 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 4/62 & Trưởng Đại Học Bách Khoa Tp.Hồ Chí Minh xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính STT dung GK sai_GK dung_CK sai_CK 1 1 12 i 2 15 3 3 10 4 4 10 5 5 20 6 6 20 7 7 7 8 8 13 9 9 12 10 10 12 11 11 7 12 12 18 13 13 16 14 14 22 15 15 14 16 16 7 17 7 12 18 18 11 19 19 16 20 20 7 21 21 13 22 22 15 23 23 15 24 24 13 25 25 16 26 26 11 27 27 10 Hình 3: Kết quả câu ii.12 Đề bài tập lớn môn Cấu trúc Rời rạc cho KHMT (CO1007) - Niên khóa 2020-2021 Trang 5⁄62 ê Trưởng Đại Học Bách Khoa Tp.Hồ Chí Minh xẰ CC Khoa Khoa Học & Kỹ Thuật Máy Tính Câu ii.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 TRUE) > max _dung_CK <- max(cau_dung_ck) > max_dung_CK [1] 121 Hình 4: Code R và kết quẩ câu ii3 Đề 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 6/62 ê Trưởng Đại Học Bách Khoa Tp.Hồ Chí Minh > = Khoa Khoa Hoc & Ky Thuật Máy Tính Cau 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] } 1f (GK sheet§MADE[i] == 2013){ dung_Gk$dung[3] <- dung _@K$dung[3] + bang _diemš§dung_GK[†] dung_Gk$sai[3] <- dung GK$sai[3] + bang diem$sai_GK[] ¥ if (Gk_sheet$mADE[i] == 2014){ 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§dungCK[ ] 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 & Trưởng Dai Học Bách Khoa Tp.