DAI HOC QUOC GIA THANH PHO HO CHi MINH TRUGNG DAI HOC BACH KHOA KHOA KHOA HOC VA KI THUAT MAY TINH BAO CAO BAI TAP LGN MON XAC SUAT VA THONG KE MT2013 NHÓM MT11 - ĐỀ TÀI 05 Giảng viên
Trang 1DAI HOC QUOC GIA THANH PHO HO CHi MINH TRUGNG DAI HOC BACH KHOA KHOA KHOA HOC VA KI THUAT MAY TINH
BAO CAO BAI TAP LGN
MON XAC SUAT VA THONG KE (MT2013)
NHÓM MT11 - ĐỀ TÀI 05
Giảng viên hướng dẫn: Thể Nguyễn Kiều Dung
Sinh viên thực hiện: Nguyễn Thành Đạt - LOI 2111018
Hồ Trọng Nhân - LII 2111899
Đổ Văn Bâng - LII 2110813 Giản Đình Thái - L08 2112278 Nguyễn Hữu Thọ - L09 2114911 THANH PHO HO CHi MINH, THANG 4 NAM 2023
Trang 24 Khoa Khoa Hoc & Kỹ Thuật Máy Tính
Muc luc
1 Tiêu đề ảnh
2_ Danh sách thành viên và khối lượng công việc
3_ CƠ SỞ LÝ THUYẾT
3.1 Phân tích phương sai 2 nhân tố có lặp
4 HOAT DONG 2
41 Thực hiện
411 7 Đọc dữ lệu cv
41.2 Làm sạch dữ lệu cv
41.3 Làm rõ dữ lệu La
Trang 3
< Khoa Khoa Hoc & Kỹ Thuật Máy Tính
1 Tiêu đề ảnh
Tiêu đề ảnh
4.1.1 Kết qua sau khi đọc dữ liệu và xem 3 dòng đầu của tập dữ lệu 5
4.1.2 Kết quả kiểm tra dữ liệu trong rawlData c2 6
4.1.3 Kết quả xử lý đữ liệu (l) ee 7
4.1.4 Kết quả xử lý dit liu (2) 2 ee 8
4.1.5 D6 thi OccupancyRate cia BHMBCCMKTO01 theo thời gian 9
4.1.6 Đồ thị OccupancyRate cia tat ca bai dé xe trong ngay «6 10
4.1.7 D6 thi trang binh OccupancyRate cha cic bai d6 xe en 11
4.1.8 Đồ thị trung bình OeeupaneyRate theo ngày trong năm 12
4.1.9 Đồ thi trang binh OccupancyRate ng&y trong tUẦn cu cv 13
Trang 4
< Khoa Khoa Hoc & Kỹ Thuật Máy Tính
2_ Danh sách thành viên và khối lượng công việc
No | Họ và tên thành viên | Mã số sinh viên | Công việc | Phần trăm công việc
1 D6 Văn Bang 2110813 100%
2 Gian Dinh Thai 2112278 100%
3 Hồ Trọng Nhân 2111899 100%
4 Nguyễn Thành Đạt 2111018 100%
5 Nguyễn Hữu Thọ 2114911 100%
Trang 5
Khoa Khoa Học & Kỹ Thuật Máy Tính
3 CƠ SỞ LÝ THUYET
3.1 Phân tích phương sai 2 nhân tố có lặp
Phân tích nhằm đánh giá sự ảnh hưởng của 2 nhân tố (yếu tố ) A và B trên các giá trị quan
sát ø¿¿, mỗi mức ((œ¡, b;) đều có sự lặp lại r lần thí nghiệm và ta cần khảo sát thêm sự tương
tac (interaction term) x4; giữa 2 nhân tố A va B
e Mẫu điều tra:
Xiu
e Xử lý mẫu: Tính tổng hàng 7;„„ — » Xijk, tong cot Tejx = » Lijk
Xu Xa Xiai
x Xa: Xi„3
a : : : =D x14
XiIr Xi XImr
xy Xo Xam3
xn xa Xâu
x, Xe? Xamt
Xn Xea ›
e Các tổng bình phương cần tính: » đã k
ra bảng công thức:
» SOT eis » Ties từ đó suy
4 tị
Trang 6
4 Khoa Khoa Hoc & Kỹ Thuật Máy Tính
` , T
Sk „
SSA = mrŠ”(x„« — x }=-_——-——
mr — nữ
yr
SSB = nr }(x., -x)? = ; nr mr
VỆ VI} KH „,
SSE = SST - SSA - SSB - SSAB = xả -
aja
4 HOAT DONG 2
4.1 Thực hiện
4.1.1 Đọc dữ liệu
read_data <—function (){
rawData<-read csv ( paste0 (getwd (), "/dataset csv "))
cat ("duc lieu_gom_" ,ncol{rawData) ,"_thuoc tinh vac",
nrow(rawData) —1," thong tin" ,"\n") print (head (rawData ,3))
return (rawData)
Kết quả thu được:
du lieu gom 4 thuoc tinh va 35716 quan sat
SystemCodeNumber Capacity Occupancy LastUpdated
Hình 4.1.1: Kết quả sau khi doc dit liéu va xem 3 dong dau của tập dữ liệu
4.1.2 Làm sạch dữ liệu
clean_datba <— function(rawData){
before_ clean<=nrow(rawData)
parkingData<—rawData
if (any(is.na(parkingData))) {
Trang 7
< Khoa Khoa Hoc & Kỹ Thuật Máy Tính
parkingData<na omit (data)
}
parkingData <— parkingData|parkingData$Occupancy >= 0, |
parkingData <— parkingData|parkingData$Occupancy <=
parkingData$Capacity, | parkingData <— parkingData|parkingData$Capacity >= 0, |
parkingData <— parkingData|!duplicated({parkingData), |
fault rows=before clean — nrow( parkingData)
cat( "5o hang du lieu bi loi :",
fault rows,",chiem ",fault rows/before_ cleanx100,
return(parkingData)
"Anh" )
Kết quả thu được:
so hang du lieu bi loi : 601 ,chiem 1.682672 % Hinh 4.1.2: Két qua kiém tra dit liéu trong rawData
Nhận xét: Ta nhận thấy không có quan sát nào bị khuyết nhưng c6 quan sAt c6 Occupancy
âm, lớn hơn Capacity hoặc quan sát bị lặp Ta lựa chọn xóa các quan sát này và lưu vào
parkingData
4.1.3 Làm rõ dữ liệu
Tạo thêm một số giá trị quan sát:
visual_datal <=function(parkingData){
parkingData8OccupancyRate<—
parkingData$Occupancy / parkingData$Capacity*100 parkingData$LastUpdated <— as.POSIXct( parkingData$LastUpdated ,
format = "AY-Yn-Ad_ YH: AZM %S " ) parkingData$Date <— format ( parkingData$LastUpdated ,
format = "⁄4W- mm 4d") parkingData$Time <— format(parkingData8LastUpdated,
format = "“H:%M%S") parkingData$Date <— as Date(parkingData#Date)
parkingData$Weekday <— weekdays{ parkingData$Date ,
abbreviate = TRUE) print (head (parkingData ,3))
return(parkingData)
Ta tạo thêm các cột OccupaneyRate, tách riêng ngày và giờ, thêm cột ngày trong tuần
(Week) để đễ quan sát cũng như sử dụng trong các mô hình Kết quả như sau
Trang 8
< Khoa Khoa Hoc & Kỹ Thuật Máy Tính
SystemcodeNumber Capacity Occupancy LastUpdated OccupancyRate
1 BHMBCCMKT01 577 61 2016-10-04 07:59:42 10 57192
2 BHMBCCMKT01 577 64 2016-10-04 08:25:42 11.09185
3 BHMBCCMKTO1 577 80 2016-10-04 08:59:42 13 86482
Date Time weekday
1 2016-10-04 07:59:42 Tue
2 2016-10-04 08:25:42 Tue
3 2016-10-04 08:59:42 Tue
Hình 4.1.3: Kết quả xử lý dữ liệu (1) Thống kê mõ tả: Thực hiện tính các giá trị thống kê mô tả cho các biến apaecitu, Oceupane, Occupancy Rate Xuất kết quả dưới dạng bảng:
num_stats <— function(x) {
stats <— c(mean = mean(x),
sd = sd(x), min = min(x),
Ql = quantile{x, probs = 0.25), median = median(x),
Q3 = quantile(x, probs = 0.75), max = max(x))
return( stats)
}
my summary <— function(df) {
num cols <— sapply(df, is numeric)
stats df < data.frame(t(sapply(df[num_cols], num_stats)))
Kết quả thu duge:
mean sd min Q1.25 median Q3.75 max Capacity 140792 118301 220.00 577.00 862.00 200900 4675.00 Occupancy 645.35 660.53 0.00 210.00 450.00 79900 4327.00 OccupancyRate 48.98 26.68 0.00 25.61 46.94 71.19 100.00
Thống kê thời gian địa điểm: Số lượng bãi đỗ xe thu thập, số quan sát mỗi bãi xe và thời
gian thu thập:
visual data2 <— function(đdf)
nums_sysbem <— length(unique( df8SystemCodeNumber )) min date <— format(min(df8LastUpdated), "2X-#m⁄d_⁄4H:⁄M %8") max date <— format (max(df§LastUpdated), "%Y-#4n %1 %4H:%M%S") cat( "du_lieu ,duoc_,ghi nhan ,tai_.", nums system,
"bai do xe \n")
cat( "du lieu ,duoc_,ghi_nhan_tu”, min date,
"den", max date, "\n") print (table ( parkingData$SystemCodeNumber) )
Trang 9
Khoa Khoa Học & Kỹ Thuật Máy Tính
Kết quả thu thập được:
du Tieu duoc ghỉ nhan tai 30 bai do xe
du lieu duoc ghi nhan tu 2016-10-04 07:46:28 den 2016-12-19 16:30: 35
BHMBCCMKT01 BHMBCCPST01 BHMBCCSNHO1
BHMBRCBRGOL BHMBRCBRGO2 BHMBRCBRGO3
BHMEURBRDO1 BHMEURBRD02 BHMMBMMBXO1
BHMNCPLDH01 BHMNCPNHS01 BHMNCPNSTOL
BHMNCPRANOL Broad Street Bull Ring
NIA North NIA South others-CCCPS105a
Others-CCCPS133 Others-CCCPS135a Others-cccPs202
Oothers-CCCPS98 Shopping
1307 1307
Hình 4.1.4: Kết quả xử lý dữ liệu (2)
BHMBCCTHLO1
1067 BHMBRTARCO1
88 BHMNCPHSTO1
1301 BHMNCPPL S01
1253 NIA Car Parks
1199 Others-CCCPS119a
1307 others-cCCCPS8
1307
Thống kê số dữ liệu cho từng ngày trong tuần của bãi đỗ xe
parkingData_counts <— with(parkingData ,
table (SystemCodeNumber, We print (head( parkingData_counts ,10)) ekday ))
Kết quả thu được có dạng:
Fri Mon Sat Sun Thu Tue Wed BHMBCCMKTOIL 177 198 180 178 180 197 197 BHMBCCPSTOI 177 198 178 178 180 179 179 BHMBCCSNHOI 177 178 180 178 180 189 196 BHMBCCTHLO1 145 171 138 138 140 175 160 BHMBRCBRGO1 149 169 129 138 158 174 176 BHMBRCBRGO2 157 180 148 146 162 178 179 BHMBRCBRGO3 159 180 162 160 162 178 179 BHMBRTARC01 18 0 18 18 0 17 17 BHMEURBRDOL 177 198 180 178 179 197 197 BHMEURBRDO2 177 198 180 142 179 197 197
Các đồ thị
Vẽ đồ thị eeupaneyRRate của một bãi đỗ xe theo thời gian trong ngày:
Trang 10
< Khoa Khoa Hoc & Kỹ Thuật Máy Tính
plot_one <— function(parkingData, sys_code) {
parkingData_subset <— subset (parkingData,
SystemCodeNumber == sys_code) parkingData_subset$Time < as.POSIXct(parkingData_subset$Time,
format = "YH:%M%S") plot_ syscode<—ggplot(parkingData_ subset,
aes(x = Time, y = OccupancyRate)) + geom_point() +
labs(title = paste("Occupancy _Rate_of",
sys code, "Car Park Over_Time") ,
x = "Time", y = "Occupancy Rate (%)") + scale _x datetime(date_ labels = "ZH:%M", date_breaks = "1 lhour")+
theme_bw()
print (plot_syscode)
}
plot_one(parkingData , unique( parkingData$SystemCodeNumber ) [1] }
Kết quả thu được:
Occupancy Rate of BHMBCCMKT01 Car Park Over Time
» e
*
75 ° “ › $ :
œ -° -ả ? $ % °° +4
8 a £ uc, Sf 4
tn: §
°
08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:
Time
Hình 4.1.5: Đồ thị ÓeeupaneyRate của BHMIDBCCMKTOI theo thời gian
Vẽ đồ thị eeupaneyRRate của tất cả bãi đỗ xe theo thời gian trong ngày:
Trang 11
> 4 Khoa Khoa Hoc & Kỹ Thuật Máy Tính
plot_all < function(data) {
data$Time <— as POSIXct(data$Time,
plot_all_syscode<-ggplot (data,
format = "YH:%M:%S" )
= SystemCodeNumber )) +
aes(x = Time, y = OccupancyRate, color
geom_point() +
labs(title = "Occupancy Rate of Car Parks Over_Time" ,
x = "Time", y = "Occupancy _ Rate (9%
scale _x datetime(date labels = "%4H:%M",
theme_bw()
print (plot_all_syscode)
oy") +
}
date breaks = "1_hour") +
Kết quả thu duge:
Occupancy Rate of Car Parks Over Time
100*
SystemCodeNumber
® BHMBCCMKTO1
s BHMBCCPSTO1
© BHMBCCSNHO1
® BHMBCCTHLO1
s BHMBRCBRGO1
© BHMBRCBRGO2
© BHMBRCBRGO3
s BHMBRTARCO1
s BHMEURBRDO1
® BHMEURBRDO2
s BHMMBMMBX01
® BHMNCPHSTO1
® BHMNCPLDHO1
© BHMNCPNHSO1
® BHMNCPNSTO1
751
50+
257 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 18:00 17:00
Time
BHMNCPPL S01 BHMNCPRAN01 Broad Street Bull Ring NIA Car Parks NIA North NIA South Others-CCCPS105a Others-CCCPS119a Others-CCCPS133 Others-CCCPS135a Others-CCCPS202 Others-CCCPS8 Cthers-CCCPS98 Shopping
Hình 4.1.6: Đồ thị OccupancyRate cha tat ca bai dé xe trong ngay
Vẽ đồ thị trung bình Occupancy Rate cha các bãi đỗ xe:
plot_mean_rate<function ( parkingData) {
Trang 12
> 4 Khoa Khoa Hoc & Kỹ Thuật Máy Tính
# Tình trung bình occupancy rate theo moi car park
parkingData_mean <— aggregate( parkingData$OccupancyRate ,
by = list (SystemCodeNumber = parkingData$SystemCodeNumber ) FUN = mean)
# Ve bieu do cot voi gia tri trung binhk occupancy rate
plot_mean <— ggplot (parkingData_mean,
aes(x = SystemCodeNumber, y = x)) + geom_col( fill = "steelblue") +
labs(title = "Average Occupancy Rate by Car Park" ,
x = "CarJPark", y = "Mean Occupancy Rate") + theme_bw() +
coord flip ()
print (plot_mean a
Kết quả thu duge:
Average Occupancy Rate by Car Park
Shopping>
Others-CCCPS98 >
Others-CCCPS8 ~ Others-CCCPS202 >
Others-CCCPS135a+
Others-CCCPS1337 Others-CCCPS119a-
NIA South>
NIA North>
NIA Car Parks~
Bull Ring~
Broad Street*
BHMNCPRANO1 =
BHMNCPNST01~
BHMNCPNHS01~
BHMNCPHST01~
BHMMBMMBX01 = BHMEURBRDO2 >
BHMBRTARCO1 = BHMBRCBRGO3-~
BHMBRCBRGO2- BHMBCCTHLO1 = BHMBCCSNHO1 - BHMBCCPST01 ~ BHMBCCMKT01 =
Mean Occupancy Rate
Hình 4.1.7: Đồ thị trung bình OeeupaneyRate của các bãi đỗ xe
Vẽ đồ thị trung bình OccupancyRate theo ngay trong nim:
Trang 13
< Khoa Khoa Hoc & Kỹ Thuật Máy Tính
plot_avg_occ_by_date<function(parkingData){
avg occ by dabe <— aggregate(OccupancyRate ~ Date,
data = parkingData, FUN = mean)
my plot<—ggplot(avg occ by date,
aes(x = Date, y = OccupancyRate)) + geom line() +
getitle("Average Occupancy by date")+
labs(x = "date", y = "Average Occupancy Rate")
print (my_plot)
}
Kết quả thu duge:
Average Occupancy by date
60-
® 50-
t
œ
oC
c
&
5
Q
3
Ò
Đ40-
_
®
<
30-
date
Hình 4.1.8: Đồ thị trung bình OeeupaneyRate theo ngày trong năm
Vẽ đồ thị trung bình OccupancyRate theo ngay trong nim:
plot avg occ by weekday <— function(parkingData) {
# Create a factor variable of the weekdays in the correct order
Trang 14
> 4 Khoa Khoa Hoc & Kỹ Thuật Máy Tính
weekdays ordered <— factor (parkingData$Weekday ,
levels = c({"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"))
# Create the box plot
my_ plot < ggplot(parkingData,
aes(x = weekdays ordered, y = OccupancyRate)) + geom_boxplot( fill = "steelblue", color = "black") +
getitle ("Average occupancy by weekday") +
xlab ("Weekday") +
ylab("Average_occupancy")
print (my_plot)
Kết quả thu duge:
Average occupancy by weekday
Weekday
Hinh 4.1.9: Dé thi trung binh OccupancyRate ngay trong tuan