Môn học Xác suất & thống kê cung cấp kiến thức cơ bản về lý thuyết, giới thiệu một số hàm phân phối xác suất thông dụng, kiểm định giả thuyết, ước lượng khoảng tin cậy, v.v…Thông qua thố
Phần chung
Tập tin “diem_so.csv” chứa thông tin về điểm toán của học sinh trung học tại hai trường ở Bồ Đào Nha Dữ liệu bao gồm điểm số, nơi cư trú và các hoạt động xã hội khác Thông tin được thu thập từ báo cáo của trường và khảo sát sinh viên Dữ liệu gốc có thể được tìm thấy tại: [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/student+performance).
Các biến chính trong bộ dữ liệu:
• studytime: Thời gian tự học trên tuần (1 – ít hơn 2 giờ, 2 – từ 2 đến 5 giờ, 3 – từ 5 đến
10 giờ, or 4 – lớn hơn 10 giờ)
• failures: số lần không qua môn (1,2,3, hoặc 4 chỉ nhiều hơn hoặc bằng 4 lần)
• absences: số lần nghỉ học
• higher: Có muốn học cao hơn hay không (yes: có, no: không)
• age: Tuổi của học sinh
1 Đọc dữ liệu: Hãy dùng lệnh read.csv() để đọc tệp tin
2 Làm sạch dữ liệu (Data cleaning):
Trích xuất một tập dữ liệu con có tên là new_DF, chỉ bao gồm các biến chính mà chúng ta quan tâm, như đã nêu trong phần giới thiệu dữ liệu Từ đây trở đi, mọi yêu cầu xử lý sẽ dựa trên tập dữ liệu con new_DF này.
Kiểm tra dữ liệu bị khuyết trong tập tin bằng các hàm như is.na(), which() và apply() Nếu phát hiện dữ liệu khuyết, hãy đề xuất phương pháp thay thế phù hợp cho những giá trị này.
3 Làm rõ dữ liệu (Data visualization):
Đối với các biến liên tục, cần tính toán các giá trị thống kê mô tả như trung bình, trung vị, độ lệch chuẩn, giá trị lớn nhất và giá trị nhỏ nhất, và xuất kết quả dưới dạng bảng Sử dụng các hàm như mean(), median(), sd(), min(), max(), apply(), as.data.frame(), và rownames() để thực hiện Đối với các biến phân loại, hãy lập bảng thống kê số lượng cho từng chủng loại.
(c) Hãy dùng hàm hist() để vẽ đồ thị phân phối của biến G3
(d) Hãy dùng hàm boxplot() vẽ phân phối của biến G3 cho từng nhóm phân loại của biến studytime, failures, và biến higher
(e) Dùng lệnh pairs() vẽ các phân phối của biến G3 lần lượt theo các biến G1, G2, age và absences
4 Xây dựng các mô hình hồi quy tuyến tính (Fitting linear regression models):
Chúng ta muốn khám phá rằng có những nhân tố nào và tác động như thế nào đến điểm cuối khoá môn Toán của các em học sinh
Mô hình hồi quy tuyến tính được xây dựng với biến G3 là biến phụ thuộc, trong khi tất cả các biến còn lại đóng vai trò là biến độc lập Để thực hiện mô hình hồi quy tuyến tính bội, hãy sử dụng lệnh lm().
(b) Dựa vào kết quả của mô hình hồi quy tuyến tính trên, những biến nào bạn sẽ loại khỏi mô hình tương ứng với các mức tin cậy 5% và 1%?
(c) Xét 3 mô hình tuyến tính cùng bao gồm biến G3 là biến phụ thuộc nhưng:
• Mô hình M1 chứa tất cả các biến còn lại là biến độc lập
• Mô hình M2 là loại bỏ biến higher từ M1
• Mô hình M3 là loại bỏ biến failure từ M2
Hãy dùng lệnh anova() để đề xuất mô hình hồi quy hợp lý hơn
(d) Từ mô hình hồi quy hợp lý nhất từ câu (c) hãy suy luận sự tác động của các biến lên điểm thi cuối kì
Sử dụng mô hình hồi quy tối ưu từ câu (c), hãy áp dụng lệnh plot() để tạo đồ thị thể hiện sai số hồi quy và giá trị dự báo Đánh giá ý nghĩa của đồ thị và đưa ra nhận xét về kết quả.
Trong dữ liệu của bạn, hãy thêm một biến mới có tên là evaluate, biến này sẽ thể hiện tỷ lệ đạt (G3 >= 10) hoặc không đạt (G3 < 10) của sinh viên trong kỳ thi cuối Sau đó, hãy thống kê tỷ lệ đạt và không đạt bằng cách sử dụng hàm cbind().
Xét mô hình hồi quy hợp lý nhất đã chọn, lập bảng số liệu mới tên là new_X bao gồm tất cả các biến độc lập trong mô hình Sử dụng lệnh predict() để dự đoán giá trị cho biến G3 dựa vào new_X, và gọi kết quả dự đoán này là biến pred_G3.
Để khảo sát độ chính xác trong kết quả dự báo của biến G3, cần lập bảng so sánh giữa kết quả dự báo pred_G3 và kết quả thực tế của biến này, phân loại thành hai nhóm: Đạt và Không đạt.
Phần riêng
Làm sạch dữ liệu (Data cleaning)
Trích xuất một tập dữ liệu con có tên là new_DF, chỉ bao gồm các biến chính mà chúng ta quan tâm, như đã nêu trong phần giới thiệu dữ liệu Từ đây trở đi, mọi yêu cầu xử lý sẽ dựa trên tập dữ liệu con new_DF này.
Kiểm tra dữ liệu bị khuyết trong tập tin bằng các hàm như is.na(), which() và apply() Nếu phát hiện dữ liệu khuyết, hãy đề xuất các phương pháp thay thế phù hợp cho những giá trị này.
Làm rõ dữ liệu (Data visualization)
Đối với các biến liên tục, cần tính toán các giá trị thống kê mô tả như trung bình, trung vị, độ lệch chuẩn, giá trị lớn nhất và giá trị nhỏ nhất, và xuất kết quả dưới dạng bảng Sử dụng các hàm như mean(), median(), sd(), min(), max(), apply(), as.data.frame(), và rownames() để thực hiện Đối với các biến phân loại, hãy lập bảng thống kê số lượng cho từng chủng loại.
(c) Hãy dùng hàm hist() để vẽ đồ thị phân phối của biến G3
(d) Hãy dùng hàm boxplot() vẽ phân phối của biến G3 cho từng nhóm phân loại của biến studytime, failures, và biến higher
(e) Dùng lệnh pairs() vẽ các phân phối của biến G3 lần lượt theo các biến G1, G2, age và absences.
Xây dựng các mô hình hồi quy tuyến tính (Fitting linear regression models)
Chúng ta muốn khám phá rằng có những nhân tố nào và tác động như thế nào đến điểm cuối khoá môn Toán của các em học sinh
Mô hình hồi quy tuyến tính được xây dựng với biến G3 là biến phụ thuộc, trong khi tất cả các biến còn lại được coi là biến độc lập Để thực hiện mô hình hồi quy tuyến tính bội, hãy sử dụng lệnh lm().
(b) Dựa vào kết quả của mô hình hồi quy tuyến tính trên, những biến nào bạn sẽ loại khỏi mô hình tương ứng với các mức tin cậy 5% và 1%?
(c) Xét 3 mô hình tuyến tính cùng bao gồm biến G3 là biến phụ thuộc nhưng:
• Mô hình M1 chứa tất cả các biến còn lại là biến độc lập
• Mô hình M2 là loại bỏ biến higher từ M1
• Mô hình M3 là loại bỏ biến failure từ M2
Hãy dùng lệnh anova() để đề xuất mô hình hồi quy hợp lý hơn
(d) Từ mô hình hồi quy hợp lý nhất từ câu (c) hãy suy luận sự tác động của các biến lên điểm thi cuối kì
Sử dụng mô hình hồi quy tối ưu từ câu (c), hãy áp dụng lệnh plot() để tạo đồ thị thể hiện sai số hồi quy và giá trị dự báo Phân tích ý nghĩa của đồ thị và đưa ra nhận xét về kết quả thu được.
Dự báo (Predictions)
Trong dữ liệu của bạn, hãy thêm một biến mới có tên là evaluate, biến này sẽ thể hiện tỷ lệ đạt (G3 >= 10) hoặc không đạt (G3 < 10) của sinh viên trong kỳ thi cuối Sau đó, hãy thống kê tỷ lệ đạt và không đạt bằng cách sử dụng hàm cbind().
Xét mô hình hồi quy đã chọn, hãy tạo bảng số liệu mới tên là new_X bao gồm tất cả các biến độc lập trong mô hình Sử dụng lệnh predict() để dự đoán giá trị cho biến G3 dựa trên new_X, và gọi kết quả dự đoán này là biến pred_G3.
Để khảo sát độ chính xác trong kết quả dự báo của biến G3, cần lập bảng so sánh giữa kết quả dự báo pred_G3 và kết quả thực tế của biến G3, phân loại thành hai nhóm: Đạt và Không đạt.
Tập tin “PRSA_Data_Wanshouxigong_20130301-20170228.csv” chứa dữ liệu ô nhiễm không khí hàng giờ từ 12 địa điểm giám sát chất lượng không khí trên toàn quốc Dữ liệu này được thu thập từ Trung tâm Giám sát Môi trường Thành phố Bắc Kinh và được kết hợp với thông tin khí tượng từ các trạm thời tiết gần nhất của Cục Khí tượng Trung Quốc Thời gian thu thập dữ liệu kéo dài từ ngày 1 tháng 3 năm 2013 đến ngày 28 tháng 2 năm 2017, với các giá trị thiếu được ký hiệu là NA Dữ liệu gốc có thể được tìm thấy tại [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/student+performance).
Các biến chính trong bộ dữ liệu:
• PM2.5: nồng độ PM2.5 (àg/m 3 )
• PM10: Nồng độ PM10 (àg/m 3 )
• CO: Nồng độ CO (àg/m 3 )
• DEWP: nhiệt độ điểm sương ( o C)
Input: diem_so 0.05 nên ta kết luận rằng chấp nhận giả thiết H0
Vậy 2 mô hình M1 và M2 là bằng nhau
→ Phân tích phương sai cho hai mô hình tuyến tính m1, m3
Lí luận: Đặt giả thiết H0: hai mô hình bằng nhau Đặt giả thiết H1: hai mô hình khác nhau
Nhìn vào kết quả ta thấy : 0.03194 < 0.05 nên ta kết luận rằng bác bỏ giả thiết H0, chấp nhận giả thiết H1
Vậy hai mô hình M1 và M3 là khác nhau
Kết luận: Lựa chọn M2 do M2 có nhiều biến tin cậy và ít biến không tin cậy Từ mô hình hồi quy hợp lý nhất của câu c, có thể suy luận về sự tác động của các biến điểm thi cuối kỳ.
Với mức alpha 5%, các biến G1, G2, studytime4, failures1 và absences có ảnh hưởng đáng kể đến điểm thi cuối kỳ G3 Từ mô hình hồi quy tối ưu, sử dụng lệnh plot() để vẽ đồ thị thể hiện sai số hồi quy và giá trị dự báo, từ đó rút ra ý nghĩa và nhận xét về kết quả.
Mức độ dao dộng của sai số và giá trị dự báo quanh giá trị 0 Mô hình hồi quy tốt
5 Dự báo (Predictions) : a Trong dữ liệu của bạn, hãy tạo thêm biến đặt tên là evaluate, biến này biểu diễn tỷ lệđạt (G3 >= 10) hoặc không đạt (G3 < 10) của sinh viên trong điểm thi cuối kì Hãy thống kê tỷ lệ đạt/không đạt
Input: evaluate = prop.table(table(G3>))
→ Tính tỉ lệ đạt và lưu vào biến evaluate evaluate
→ Hiển thị kết quả của biến evaluate
Xét mô hình hồi quy đã chọn, hãy tạo bảng số liệu mới mang tên new_X, bao gồm tất cả các biến độc lập trong mô hình Sử dụng lệnh predict() để dự đoán giá trị của biến G3 dựa trên new_X, và gọi kết quả dự đoán này là biến pred_G3.
New_X = data.frame(G1,G2,studytime,failures,absences,age)
→ Tạo một dữ liệu mới bao gồm các biến độc lập như ở mô hình m2 và đặt tên dữ liệu đó là New_X
Để tính toán số liệu dự báo cho biến G3, cần dựa vào dữ liệu New_X và lưu kết quả vào biến pred_G3 Sau đó, biến pred_G3 sẽ được thêm vào dữ liệu New_X bằng cách sử dụng hàm attach(New_X).
→ Thông báo cho phần mềm biết từ đây trở về sau mọi phép tính đều được thực hiện trên dữ liệu New_X evaluate_2 = prop.table(table(pred_G3>))
Tính tỉ lệ dự báo và lưu vào biến evaluate_2 Khảo sát độ chính xác của kết quả dự báo bằng cách lập bảng so sánh giữa kết quả dự báo pred_G3 và kết quả thực tế của biến G3, phân loại thành Đạt và Không đạt.
Ket_qua = cbind(evaluate,evaluate_2)
→ Kết quả thống kê tỷ lệ đạt vào không đạt đối với biến dự báo là pred_G3 colnames(Ket_qua)=c("Quan sát","Dự báo")
→ Khai báo tên của cột Ket_qua rownames(Ket_qua)=c("Không đạt","Đạt")
→ Khai báo tên của hàng Ket_qua t(Ket_qua)
→ Xuất kết quả dự báo
Phần riêng 1 Đọc dữ liệu
Input: khong_khi = read.csv("C:/Users/Huy Tran/Desktop/khong_khi.csv",header=T) attach(khong_khi)
2 Làm sạch dữ liệu (Data cleaning): a Trích dữ liệu:
Để kiểm tra dữ liệu bị khuyết trong tập tin mới tạo từ các chỉ số PM2.5, PM10, O3, TEMP, PRES, DEWP, WSPM và wd, bạn có thể sử dụng hàm kiểm tra dữ liệu khuyết Nếu phát hiện có dữ liệu bị khuyết, hãy xem xét các phương pháp thay thế như sử dụng giá trị trung bình, giá trị trung vị hoặc phương pháp nội suy để lấp đầy các giá trị thiếu này.
Input: apply(is.na(new_DF), 2 , which) new_DF=na.omit(new_DF)
Để làm rõ dữ liệu, đối với các biến liên tục, cần tính toán các giá trị thống kê mô tả như trung bình, trung vị, độ lệch chuẩn, giá trị lớn nhất và giá trị nhỏ nhất, sau đó xuất kết quả dưới dạng bảng.
To analyze the dataset in `new_DF`, we calculate the mean, median, standard deviation, maximum, and minimum for the specified columns (1 to 7) using the `apply` function The results are then combined into a single data frame, `des`, which includes all the calculated statistics for easy reference.
Output: b Đối với các biến phân loại, hãy lập một bảng thống kê sốlượng cho từng chủng loại
Output: c Vẽ đồ thị biểu diễn cho biến PM2.5, PM10, O3
Output: d Dùng hàm boxplot() vẽ phân phối của biến PM2.5, PM10, O3 cho từng nhóm phân loại của biến wd
• Phân loại nhóm cho biến PM2.5
• Phân loại nhóm cho biến PM10
• Phân loại nhóm cho biến O3
Output: e Dùng lệnh pairs() vẽ các phân phối của lần lượt các biến PM2.5, PM10, O3 cho biến TEMP, PRES, DEWP, WSPM
Xây dựng mô hình hồi quy tuyến tính với biến phụ thuộc là PM2.5, PM10 và O3, trong khi các biến còn lại được coi là độc lập Sử dụng lệnh lm() để thực hiện mô hình hồi quy tuyến tính bội.
Input: wd = as.factor(wd) m1 = lm(PM2.5 ~ TEMP + PRES + DEWP + WSPM + wd) summary(m1)
Input: m2 = lm(PM10 ~ TEMP + PRES + DEWP + WSPM + wd) summary(m2)
Input: m3 = lm(O3 ~ TEMP + PRES + DEWP + WSPM + wd) summary(m3)
Output: b Dựa vào kết quả của mô hình tuyến tính trên, những biến nào bạn sẽ loại khỏi mô hình tương ứng với các mức tin cậy 5%?
So sánh Pr(>|t|) với mức α cần xét, khi đó các biến bị loại khỏi mô hình:
– Đối với biến PM2.5: wdESE, wdSE, wdSW
– Đối với biến PM10: WSPM, wdESE, wdSW
– Đối với biến O3: PRES, wdNW, wdW c Dùng lệnh plot() vẽđồ thị biểu thị sai số hồi quy và giá trị dựbáo Nêu ý nghĩa và nhận xét
Cả 3 mô hình đều dao dộng khá lớn ⇒ mô hình hồi quy chưa tốt
5 Dự báo (Predictions) : a Tạo biến evaluate của các biến PM2.5, PM10, O3
Input: evaluate_PM2.5 = prop.table(table(PM2.5>)) evaluate_PM10 = prop.table(table(PM10>0)) evaluate_O3 = prop.table(table(O3>V)) evaluate = cbind(evaluate_PM2.5, evaluate_PM10, evaluate_O3) evaluate
Hãy tạo một bảng dữ liệu mới có tên là new_X, bao gồm các biến TEMP, PRES, DEWP, WSPM, và wd Sau đó, sử dụng lệnh predict() để dự đoán giá trị cho các biến PM2.5, PM10 và O3 dựa trên new_X.
New_X = data.frame(TEMP, PRES, DEWP, WSPM, wd)
New_X$pred_PM2.5 = predict(m1,New_X)
New_X$pred_PM10 = predict(m2,New_X)
New_X$pred_O3 = predict(m3,New_X) attach(New_X) evaluate_PM2.5_2 = prop.table(table(pred_PM2.5>)) evaluate_PM10_2 = prop.table(table(pred_PM10G3>0)) evaluate_O3_2 = prop.table(table(pred_O3>V))