ĐẠI HỌC QUỐC GIA TP. HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC - ỨNG DỤNG
BÀI TẬP LỚN MÔN HỌC
XÁC SUẤT THƠNG KÊ
ĐỀ TÀI 1
LỚP: L06 NHĨM: 1, HK211
GVHD: PGS.TS. NGUYỄN ĐÌNH HUY
SVTH: Nguyễn Minh Thiện
TP. HỒ CHÍ MINH, NĂM 2021
I. Hoạt động 1: .......................................................................................................2
1. Giới thiệu dữ liệu ............................................................................................2
2. Câu hỏi: ...........................................................................................................2
II. Hoạt động 2 ....................................................................................................22
1. Giới thiệu dữ liệu ..........................................................................................22
2. Câu hỏi ..........................................................................................................23
3. Tổng kết. .......................................................................................................36
III. TÀI LIỆU THAM KHẢO ...........................................................................37
1
I. Hoạt động 1:
1. Giới thiệu dữ liệu
Bài tập 1: Tập tin “gia_nha.csv” chứa thông tin về giá bán ra thị trường (đơn vị
đô la) của 21613 ngôi nhà ở quận King nước Mỹ trong khoảng thời gian từ tháng
5/2014 đến 5/2015. Bên cạnh giá nhà, dữ liệu còn bao gồm các thuộc tính mơ tả đặc
tính ngơi nhà. Truy cập: />Chi tiết về bộ dữ liệu như sau:
- Tổng số nhà: 21613
- Tổng số biến: 21
- Các biến chính trong bộ dữ liệu:
price: Giá nhà được bán ra.
floors: Số tầng cảu ngôi nhà được phân loại từ 1 - 3.5.
condition: Điều kiện kiến trúc của ngôi nhà từ 1 - 5, 1: rất tệ, 5: rất tốt.
view: Đánh giá cảnh quan xung quanh nhà từ thấp đến cao: 0 - 4.
sqft_above: Diện tích ngơi nhà.
sqft_living: Diện tích khn viên nhà.
sqft_basement: Diện tích tầng hầm.
2. Câu hỏi:
2.1. Đọc dữ liệu (Import data)
Input:
Hình 1. Code và đính kèm chú thích của Import data
2
Output:
Hình 2. File data được tạo sau khi chạy code
2.2. Làm sạch dữ liệu (Data cleaning)
[a]. Tạo một dữ liệu con đặt tên “new_DF”, chỉ bao gồm các biến cần quan
tâm là: price, floors, condition, view, sqft_above, sqft_living, sqft_basement.
Input:
Hình 3. Code tạo dữ liệu con từ dữ liệu gốc
Output:
Hình 4. Enviroment sau khi chạy code
3
Hình 5. Dữ liệu con new_DF
[b]. Kiểm tra các dữ liệu bị khuyết trong tập tin.
Input:
Hình 6. Code kiểm tra dữ liệu khuyết theo dòng
4
Output:
Hình 7. Console kết quả kiểm tra dữ liệu khuyết theo dịng
Input:
Hình 8. Code thống kê số lượng giá trị khuyết theo biến
Output:
Hình 9. Console số lượng giá trị khuyết theo biến
Nhận xét: Dựa vào kết quả trên, các dữ liệu bị khuyết đều thuộc biến price. Và
số dữ liệu bị khuyết là 20 << 21613 (tổng quan sát), do đó ta chọn phương pháp xố đi
các quan sát của biến price tại các giá trị bị khuyết.
Input:
Hình 10. Code xoá các quan sát của biến bị thiếu
5
2.3. Làm rõ dữ liệu (Data visualization):
[a]. Chuyển đối các biến price, sqft_above, sqft_living, sqft_basement thành
sqrt(price), sqrt(sqft_above), sqrt(sqft_living), sqrt(sqft_basement). Từ đây, mọi tính
tốn trên biến hiểu theo dạng sqrt.
Input:
Hình 11. Code chuyển giá trị số sang sqrt
Output:
Hình 12. new_DF sau khi chuyển đổi các giá trị dạng số sang sqrt
[b]. Tính trung bình, trung vị, độ lệch chuẩn, giá trị lớn nhất, giá trị nhỏ nhất
của các biến liên tục price, sqft_above, sqft_living, sqft_basement và lưu vào biến có
tên là mean, median, sd, max, min.
6
Input:
Hình 13. Code tạo vector mới từ trung bình, trung vị, độ lệch chuẩn, giá trị lớn
nhất, giá trị nhỏ nhất của sqrt new_DF
Output:
Hình 14. Các vector mới được tạo từ các phép tốn mới từ trung bình, trung vị,
độ lệch chuẩn, giá trị lớn nhất, giá trị nhỏ nhất của sqrt new_DF
[c]. Tạo bảng thể hiện các giá trị thống kê mô tả cho các sqrt của biến liên
tục, lưu vào biến banggiatri.
Input:
Hình 15. Code tạo bảng giá trị từ các giá trị thống kê
7
Output:
Hình 16. Bảng giá trị được tạo từ code
[d]. Đố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. Tạo bảng thống kê số lượng cho biến floors, condition và view.
Input:
Hình 17. Code tạo bảng thống kê
Output:
Hình 18. Console tạo bảng thống kê
[e]. Dùng hàm hist() để vẽ đồ thị phân phối của biến price.
Input:
Hình 19. Code đồ thị phân bố của biến price
8
Output:
Hình 20. Đồ thị phân bố của biến price
[f].
Dùng hàm boxplot() vẽ phân phối của biến price cho từng nhóm phân
loại của biến floors, condition và biến view.
Input:
Hình 21. Code vẽ biểu đồ price theo floors, condition và view
Output:
9
Hình 22. Biểu đồ price theo floors
Hình 23. Biểu đồ price theo condition
10
Hình 24. . Biểu đồ price theo view
Nhận xét: Dựa vào các biểu đồ Boxplot ta nhận thấy sự chênh lệch giữa max và
min tuy khơng lớn, có khá nhiều ngoại lai của biến price theo floors, condition và
view.
[g]. Dùng lệnh pairs() vẽ các phân phối của biến price lần lượt theo các biến,
sqft_above, sqft_living, sqft_basement
Input:
Hình 25. Code phân phối của biến price lần lượt theo các biến, sqft_above,
sqft_living, sqft_basement
Output:
11
Hình 26. Phân phối của biến price lần lượt theo sqft_above, sqft_living,
sqft_basemen
2.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 giá nhà ở quận King.
[a]. Xét mơ hình hồi quy tuyến tính bao gồm biến price là một biến phụ
thuộc, và tất cả các biến còn lại đều là biến độc lập. Dùng lệnh lm() để thực thi mơ
hình hồi quy tuyến tính bội. Lưu ý với biến condition và floors nên xét theo dạng
factor
Xét mơ hình:
sqft_above: biến liên tục;
sqft_living: biến liên tục;
12
sqft_basement: biến liên tục;
floors: biến phân loại;
condition: biến phân loại.
view: biến phân loại.
Input:
Hình 27. Code mơ hình hồi quy tuyến tính bội và thống kê kết quả
Output:
Hình 28. Console mơ hình hồi quy tuyến tính bội
13
[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 mức tin cậy 5%?
Đặt giả thiết:
H: Các hệ số hồi quy khơng có ý nghĩa thống kê.
̅ : Các hệ số hồi quy có ý nghĩa thống kê.
Nhận xét: Dựa vào kết quả của mơ hình hồi quy, ta nhận thấy Pr(>|t|) của tất cả
các hệ số tương ứng các biến liên tục đều xuất hiện <2,2.e-16 , bé hơn nhiều so với
mức tin cậy 5%, nên ta sẽ bác bỏ giả thiết H, chấp nhận giả thiết ̅ , có nghĩa là tất cả
các hệ số ứng với các biến liên tục đều có ý nghĩa thống kê. Vậy ta sẽ không loại bỏ
biến liên tục nào ra khỏi mơ hình. Tuy nhiên có giá trị của biến rời rạc condition có độ
tin cậy khơng cao. Ta sẽ kiểm tra trong trường hợp loại bỏ biến condition.
14
[c]. Xét 2 mơ hình tuyến tính cùng bao gồm biến price 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 condition từ mơ hình M1.
Dùng lệnhh anova() để đề xuất mơ hình hồi quy hợp lý hơn.
Input:
Hình 29. Code xây dụng và thống kê mơ hình M2
Output:
Hình 30. Console Mơ hình hồi quy tuyến tính bội M2
15
Input:
Hình 31. Code phân tích phương sai cho 2 mơ hình M1 và M2
Output:
Hình 32. Console phân tích phương sai cho 2 mơ hình M1 và M2
Đặt giả thiết:
H: M2 không hợp lý hơn M1
̅ : M2 hợp lý hơn M1
Nhận xét: Vì kết quả thu được trong bảng Anova cho 2 mơ hình M1 và M2 là
Pr(>F) <2,2.e-16 nhỏ hơn 0.05 nên ta bác bỏ H, chấp nhận ̅ .
[d]. Chọn mơ hình hợp lý hơn từ câu [c] hãy suy luận sự tác động của các
biến lên giá nhà.
Input:
Hình 33. Code nhận xét tác động đến giá nhà
Output:
16
Hình 34. Console nhận xét tác động đến giá nhà
Theo kết quả của Console ta thấy được mơ hình M2 mô tả được 55,6% tác động
của các biến đến giá nhà.
Trong đó lần lượ các biến chiếm:
as.factor(floors): 4,654892 %
as.factor(view): 7,89105%
sqft_above:
16,709051 %
sqft_living :
21,437105 %
sqft_basement:
4,903531 %
17
[e]. Từ mơ hình hồi quy mà bạn chọn ở câu [c] hãy dùng lệnh plot() để vẽ đồ
thị biểu thị sai số hồi quy (residuals) và giá trị dự báo (fitted values). Nêu ý nghĩa và
nhận xét đồ thị.
Vẽ đồ thị biểu thị sai số hồi quy (residuals) và giá trị dự báo (fitted values). Lưu
ý về chọn đồ thị: Residuals vs Fitted (,which = 1); Normal Q-Q (,which = 2); ScaleLocation (,which = 3);…
Input:
Hình 35. Code vẽ đồ thị
Output:
Hình 36. Đồ thị biểu thị sai số hồi quy (residuals) và giá trị dự báo (fitted values)
Nhận xét: Đồ thị trên vẽ các giá trị dự báo và các giá trị thặng dư (sai số) tương
ứng. Dựa vào đồ thị ta thấy, đường thẳng màu đó trên đồ thị là đường thẳng nằm
18
ngang, tức là mối quan hệ giữa các biến dự báo X và biến phụ thuộc Y được xem như
là tuyến tính, thoả mãn giả định tuyến tính của dữ liệu. Ngoài ra các giá trị thặng dư
(sai số) phân tán tương đối đều xung quanh đường thẳng y = 0 (ngoài trừ một số giá trị
là ngoại lai), chứng tỏ phương sai của các sai số là hằng số.
2.5. Dự báo (Predictions):
[a]. Từ mơ hình M1, dùng lệnh predict() để dự báo giá nhà tại 2 thuộc tính
như sau:
x1: sqft_above = mean(sqft_above), sqft_living = mean(sqft_living),
sqft_basement = mean(sqft_basement), floor = 2, condition = 3, view = 2.
x2: sqft_above = max(sqft_above), sqft_living = max(sqft_living),
sqft_basement = max(sqft_basement), floor = 2, condition = 3, view = 2.
Input:
Hình 37. Code tạo thuộc tính X1
Hình 38. Code tạo thuộc tính X2
Output:
Hình 39, Bảng thuộc tính X1 và X2
Input:
19
Hình 40. Code dự báo giá nhà tại thuộc tính X1 và X2
Output:
Hình 41. Dự báo giá nhà tại thuộc tính X1
Hình 42. Dự báo giá nhà tại thuộc tính X2
Input:
Hình 43. Code tạo bảng so sánh khoảng tin cậy cho 2 giá trị dự báo
Output:
Hình 44. Bảng pred sau khi đổi tên dòng
20
Hình 45. Bảng pred sau khi tạo cột range
Nhận xét:
Với bảng trên, ta có thể hiểu giá trị dự báo từ X1 và X2 lần lượt là:
Với khoảng tin cậy 95%, ta thấy được độ dài khoảng tin cậy giá trị dự báo của
X1 < X2 nên ta có thể kết luận với tập dữ liệu từ X1, ta có thể thu được một giá trị dự
báo chính xác hơn so với X2.
21
II. Hoạt động 2
1. Giới thiệu dữ liệu
1.1. Lý do chọn bộ dữ liệu.
Đối với sinh viên khoa Kỹ thuật Giao thông chúng em, lưu lượng giao thông là
một vấn đề liên quan mật thiết với chuyên ngành của mình. Nắm bắt được lưu lượng
giao thơng, chúng ta có thể kiểm sốt ơ nhiễm mơi trường, xây dựng cơ sở hạ tầng phù
hợp... Có rất nhiều nhân tố có thể ảnh hưởng đến lưu lượng giao thơng, một trong số
đó là thời tiết.
Ta quan tâm đến các yếu tố thời tiết có ảnh hưởng đến lưu lượng giao thơng qua
từng thời điểm trong ngày hay không, và các yếu tố thời tiết khác nhau có gây ra ảnh
hưởng khác nhau đến lưu lượng giao thông trong ngày hay không. Qua bài tập này có
thể đưa ra kết luận để trả lời các câu hỏi trên.
Tập tin “luu_luong.csv” chứa thông tin về lưu lượng giao thông hàng giờ trên Xa
lộ liên tiểu bang 94 hướng về phía Tây nằm giữa thành phố Mineapolis và St.Paul
(Mỹ) của trạm giám sát giao thông tự động Minneapolis 301 trong khoảng thời gian từ
năm 2012 đến năm 2018. Bên cạnh lưu lượng giao thông, dữ liệu cịn bao gồm các
thuộc tính có thể tác động đến lưu lượng. Dữ liệu gốc được cung cấp tại:
/>1.2. Chi tiết về bộ dữ liệu
- Số quan sát: 48204
- Số biến: 9
holiday: ngày lễ Quốc gia Hoa Kỳ cộng với ngày lễ khu vực, bang
Minnesota
temp: nhiệt độ ở độ K
rain/1h: mm lượng mưa xảy ra trong 1 giờ
snow/1h: mm tuyết đã xảy ra trong 1 giờ
clouds_all: số phần trăm đám mây che phủ
weather_main: thời tiết chính
22
weather_description: mô tả thời tiết cụ thể
date_time: giờ địa phương
traffic_volume: lưu lượng giao thông hướng Tây
2. Câu hỏi
2.1. Đọc dữ liệu (Import data):
Input:
Hình 46. Code và đính kèm chú thích của Import data
Output:
Hình 47. File data được tạo sau khi chạy code
2.2. Làm sạch dữ liệu (Data cleaning):
23
[a]. Tạo một data.frame mới, đặt tên traffic, chỉ bao gồm các biến cần quan
tâm: temp, holiday, weather_main, rain_1h, clouds_all, traffic_volume
Input:
Hình 48. Code liệt kê tên biến để chọn và tạo data frame
Output:
Hình 49. Console liệt kê thứ tự các biến trong data
Hình 50. Data frame mới được tạo
[b]. Kiểm tra các dữ liệu bị khuyết trong tập tin.
24