ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINHĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC ỨNG DỤNG
BÁO CÁO BÀI TẬP LỚNMÔN HỌC: XÁC SUẤT THỐNG KÊ
ĐỀ TÀI: PHÂN TÍCH DỮ LIỆUKHOA: ĐIỆN - ĐIỆN TỬ
Giảng viên hướng dẫn: Nguyễn Bá ThiHọc kì: HK231 - Lớp: L07 - Nhóm: 07
Thành phố Hồ Chí Minh, ngày 11 tháng 11 năm 2023
Trang 22 Nguyền Hồng Phong 2212557 Thống kê suy
Trang 37 Nguồn dữ liệu và code tr.30
8 Tài liệu tham khảo tr.31
Trang 4PHẦN MỞ ĐẦU
Xác suất thống kê, một môn học đối với chúng em mà nói có thể là đã từng học qua sơ nhưng bây giờ thì nhiều kiến thức chúng em lần đầu được tiếp xúc Nhưng với sự hỗ trợ của thầy thì những kiến thức ấy đã trở nên dễ tiếp thu hơn Môn học không chỉ giúp chúng em có kiến thức cơ bản về khoa học ứng dụng ngoài cuộc sống, các phương pháp thống kê mà còn khơi gợi trong chúng em nhiều ý tưởng thực nghiệm.
Với đề tài phân tích dữ liệu của khoa Điện - Điện tử, chúng em đã có cơ hội để tìm hiểu sâu hơn về các phương pháp thống kê đã được thầy giảng dạy và mở rộng thêm nhiều phương pháp mới Qua đó, hình thành được nhiều ứng dụng để tăng hiệu suất, giảm chi phí, hạn chế những hiệu ứng bất lợi và tận dụng những hiệu ứng có lợi trong quản lý và điển hình hơn là thống kê.
Trang 5PHẦN NỘI DUNG 1 Tổng quan dữ liệu.
Đề tài của khoa Điện - Điện tử được mô tả đó là một bảng dữ liệu chứa bao gồm các thông tin về một cửa hàng bán đồ điện tử Đây là một cửa hàng có tổng cộng ba nhà kho và những hàng hóa được vận chuyển tới khách hàng từ đây Dưới đây là một số thông tin khái quát dữ liệu.
1.1 Ngữ cảnh của dữ liệu:
Mô tả dữ liệu : tập dữ liệu được mô tả liên quan đến giao dịch bán lẻ của một cửa hàng điện tử, có chứa các thông tin sản phẩn, khách hàng, giá cả, thời gian giao dịch,…
Mục tiêu thu thập dữ liệu : phân tích xu hướng mua sắm, dự đoán doanh số bán hàng, xây dựng mô hình dự đoán hoặc làm sạch dữ liệu
Các loại dữ liệu xuất hiện trong dữ liệu như:
+ Dữ liệu giao dịch: order_id, order_price, order_total, delivery_charges + Dữ liệu sản phẩm : shopping_cart
+ Dữ liệu khách hàng : customer_id + Dữ liệu thời gian : date; season
+ Dữ kiệu địa điểm : customer_lat, customer_long
1.2 Các giá trị quan trắc.
Trong mua bán, giá trị quan trắc là các thông tin, số liệu và dữ liệu được thu thập và sử dụng để đo lường, đánh giá và theo dõi các hoạt động liên quan đến việc mua và bán hàng hóa hoặc dịch vụ.
Trong bảng dữ liệu có 8 giá trị quan trắc, bao gồm: order_id (mã đơn hàng); customer_id (mã khách hàng ); order_price ( giá đặt hàng ); delivery_charges ( phí vận chuyển); coupon_discount ( mã giảm giá ); order_total ( tổng đơn đặt hàng ) ;
nearest_warehouse ( tên kho gần nơi khách hàng nhất ); is_happy_cusomer (đánh giá của khách hàng).
1.3 Các loại biến.
Biến định tính:
+ order_id: ID đặt hàng duy nhất, giá trị định danh cho mỗi đơn hàng
+ customer_id: ID khách hàng duy nhất, giá trị định danh cho mỗi khách hàng + nearest_warehouse: tên kho hàng gần nhà khách hàng nhất
Trang 6+ Date: ngày đặt hàng theo dạng YYYY-MM-DD + Season: mùa trong năm khi đơn hàng được đặt
Biến danh sách:
+ Shopping_cart: danh sách tên sản phẩm và số lượng đặt hàng
Biến định lượng:
+ Order_price: giá của đơn hàng khi chưa áp dụng chiết khấu hoặc vận chuyển + Delivery_charges: phí vận chuyển đơn hàng
+ Customer_lat: vĩ độ của vị trí khách hàng + Customer_long: kinh độ của vị trí khách hàng
+ Coupon_discount: tỷ lệ chiết khấu giảm giá cho đơn hàng
+ Order_total: tổng giá trị đơn hàng sau khi áp dụng chiết khấu và phí giao
Phương pháp thống kê tả (descriptive statistics) là một phương pháp trong khoa học thống kê được sử dụng để mô tả và tóm tắt các dữ liệu một cách đơn giản và dễ hiểu Phương pháp này giúp chúng ta hiểu thông tin cơ bản về các biến trong dữ liệu mà không cần đưa ra các phán đoán hay suy luận về mối quan hệ giữa các biến Các
phương pháp thống kê tả thường bao gồm các đại lượng thống kê như giá trị trung bình, phương sai, độ lệch chuẩn, phân vị, tỉ lệ phần trăm, đồ thị và biểu đồ Các đại
lượng này giúp chúng ta hiểu về trung tâm, phân tán và hình dạng của dữ liệu.
Trang 72.2 Phân tích phương sai ANOVA: Anova là một mở rộng của phương pháp kiểm định t cho các mẫu độc lập khi so sánh trung bình của các nhóm gồm các quan
sát độc lập Anova có thể so sánh nhiều hơn hai nhóm.
Ký hiệu I là số nhóm ( nghiệm thức ) mà ta cần so sánh, μ1, … , μ2 lần lượt là kì vọng của các quần thể 1, , I( tức là trung bình của tất cả các quan sát có thể có khi các nghiệm thức 1,…, I (được sử dụng) Ta kiểm định các giá thiết sau:
H0: μ1=μ2=…=μI với H1 : có ít nhất hai giá trị μ1 và μk khác nhau.
Giả sử các mẫu có kích thước khác nhau và bằng j Ký hiệu Xijvà xij lần lượt là biến ngẫu nhiên và giá trị quan sát được thứ j từ quần thể thứ i.
Nhóm 1: X11X12 X1 j
Nhóm 2: X21X22 X2 j
Nhóm I: Xi 1Xi 2 Xij
Để áp dụng tốt phương pháp phân tích phương sai, ta cần các giả thiết thỏa: Các quần thể có phân phối chuẩn với cùng phương sai σ2; nghĩa là Xijcó phân phối chuẩn
Trang 8Hàm hồi quy tuyến tính đơn là một phương trình toán học được sử dụng để mô hình hóa mối quan hệ giữa biến phụ thuộc và biến độc lập Phương trình hàm hồi quy
ε : sai số ngẫu nhiên.
Các giả định của mô hình bao gồm:
Tính tuyến tính: Mối quan hệ tuyến tính giữa X và Y Các sai số ngẫu nhiên độc lập với nhau
Các sai số ngẫu nhiên có phân phối chuẩn N (0, σ2 ).
2.4 Xử lý các khoảng cách trong dữ liệu.
Ở trong dữ liệu dirty_data và missing_data, trong quá trình xử lý, nhóm đã tìm ra được công thức để tính toán lại khoảng cách gần nhất và xác định lại kho gần nhất trong dữ liệu bằng công thức Haversine.
Haversine Formula là công thức tính khoảng cách địa lý giữa 2 điểm trên bề mặt một hình cầu, chẳng hạn như Trái Đất Bằng cách sử dụng hai giá trị kinh độ và vĩ độ khác nhau của hai điểm khác nhau trên Trái Đất với công thức Haversine để tính khoảng cách vòng tròn lớn ( khoảng cách ngắn nhất giữa hai điểm trên về mặt hình
Trang 9lat1 , long1 là vĩ độ và kinh độ điểm đầu tiên lat2 , long2 là vĩ độ và kinh độ điểm thứ hai
∆lat = lat2 – lat1
∆long = long2 – long1
R là bán kính của Trái Đất atan2 là hàm arctangent.
d là khoảng cách giữa hai điểm.
2.5 Xử lý các khoảng trống trong missing_data.
Có 3 cách để xử lý:
- Thay mean(thay giá trị trung bình) - Thay median(thay giá trị trung vị) - Imputation
Vậy Imputation được sử dụng làm sao?
Giả định : Dữ liệu bị khuyết ở dạng MAR ( Missing at random) Ta tiến hành xử lý dữ liệu theo từng bước:
1 Lặp imputation từ 5-20 lần cho 1 dữ liệu
2 Dựa vào dữ liệu và các tham số đã lặp, lấy trung bình các tham số
3 Từ đó suy ra mức độ bất định của giá trị, xem xét phương sai giá trị đã lắp vào
Mô tả Imputation : tạo ra nhiều dữ liệu từ 1 dữ liệu gốc bằng cách lấy mẫu ngẫu nhiên có hoàn lại, mỗi lần tạo ra 1 dữ liệu nó sẽ ước tính tham số của 1 mô hình và đưa vào mẫu gốc rồi lấy mẫu ngẫu nhiên ra tiếp tục Sau khi có các mẫu, lấy số trung bình
Trang 10Đầu tiên, chúng ta cần đưa dữ liệu dirty_data.csv được download về để nhập dữ liệu vào RStudio Sau đó, ta kiểm tra sơ lược về số dòng và cột của dữ liệu và các tên Sau khi quan sát bảng dữ liệu được đưa vào, nhóm nhận thấy có nhiều vấn đề về định dạng chữ, số, ngày tháng Và cách xác định mùa theo ngày tháng cũng bị sai lệch.
Trang 11Hình 1: Bảng dữ liệu bị sai lệch những cột liên quan đến dữ liệu ngày và chữ.
Để xử lý dữ liệu liên quan đến ngày tháng trước, ta gọi 2 thư viện liên quan đến
dữ liệu ngày tháng đó là lubridate và dplyr Sau đó ta sử dụng lệnh table để kiểm tra
tần số của cột dữ liệu season chỉ ra được số các mùa được viết bằng định dạng khác nhau.
Như vậy, ta thấy được các mùa trong cột dữ liệu season đang có sự tách biệt nhau bởi các định dạng khác nhau, điều này có thể làm nhiễu dữ liệu trong quá trình tính toán, vì thế ta chỉnh lại định dạng như sau:
Trong đó, parse_date_time dùng để định dạng lại ngày tháng chuẩn, sau đó ta sử dụng mutate để tạo một cột date và season mới trong fix_dirty Và khi đó, ta xét điều kiện dựa vào định dạng theo 2 dòng mutate ở trên đó là %m/%d/%Y, nếu thánglà 3, 4, 5 thì là “Autumn (mùa thu)”, tháng 6, 7, 8 là “Winter (mùa đông)”, tháng 9, 10, 11 là “Spring (mùa xuân)”, còn lại nếu không thuộc các điều kiện trên thì hàm sẽ
Trang 12đưa ra đó là “Summer (mùa hè)” Ta sử dụng lệnh table lại để xem các dữ liệu ngày
tháng đã được sửa lại hay không.
Vậy là ta đã sửa xong định dạng về mùa và đã làm sạch dữ liệu này, tiếp theo ta
sử dụng lệnh tolower để sửa lại định dạng chữ trong cột shopping_cart.
Dữ liệu quan trọng tiếp theo ta cần kiểm tra đó chính là dữ liệu liên quan đến chi phí trong cửa hàng này.
Chi phí và sai lệch giữa tính toán và dữ liệu được tính theo công thức như sau:
chiphi=Tienmua hang∗(100−ma giam gia)/100+ phivan chuyensailech=¿chi phi−chi phi dulieu∨¿
Thực hiện các dòng tính toán xong, ta sử dụng lệnh print(sai_lech) để kiểm tra
xem sự sai lệch trong dữ liệu được thể hiện như sau:
Hình 2: Dữ liệu sai lệch giữa tính toán và dữ liệu
Ta tính toán lại toàn bộ dữ liệu liên quan đến chi phí, tiền mua hàng, mã giảm giá và phí vận chuyển.
Trang 13
Khi tính toán xong, ta tính lại tổng chi phí theo công thức và tìm độ sai lệch giữa dữ liệu đã được tính toán lại.
Trong quá trình xử lý dữ liệu dirty_data, nhóm đã thấy thêm dữ liệu bị nhập sai
đó là nearest_warehouse và distance_to_nearest_warehouse Và để xác định được
dữ liệu 2 cột trên, nhóm đã tìm ra một công thức tính khoảng cách khi có tọa độ trong mặt cầu đó là công thức Haversine.
Để tính toán theo công thức Haversine, ta cần tạo một data.frame có chứa tọa độ của ba nhà kho đó là Nickolson, Bakers và Thompson Và ta đưa dữ liệu
customer_lat và customer_lon của khách hàng để tính toán theo công thức Haversine Ngoài ra, ta còn phải biết bán kính Trái Đất là 6371(km) và phải chuyển đổi từ độ sang radian để thuận lợi trong việc tính toán.
Ta lần lượt tính khoảng cách từ địa chỉ khách hàng đến từng kho đôi một và đưa
dữ liệu vào Bang_khoang_cach để thuận tiện trong việc xác định khoảng cách gần
nhất và kho gần nhất Trong quá trình thực hiện hàm Haversine được định nghĩa trong R, ta cần phải đưa lat và lon của từng warehouse sau đó ta đổi từ độ sang radian và tính ∆lat và ∆lon rồi mới đưa vào công thức Haversine để tính toán khoảng cách
Trang 14Hình 3 Tính toán khoảng cách đến kho Nickolson.
Hình 4 Tính toán khoảng cách đến kho Bakers.
Hình 5 Tính toán khoảng cách đến kho Thompson.
Trang 15Sau khi đã xác định được khoảng cách của từng kho tương ứng tới địa chỉ, ta
cần dựa vào Bang_khoang_cach và xác định lại các kho gần nhất Ngay sau đó, ta so
sánh dữ liệu kho gần nhất khi đã sử dụng công thức Haversine và so sánh dữ liệu ban đầu, ta sẽ thấy được số kho xác định sai và khoảng cách giữa các kho xác định sai đến kho gần nhất khi được áp dụng Haversine.
Theo như kết quả ở trên, lệnh is_same dùng để so sánh dữ liệu kho gần nhất,
nếu hai dữ liệu giống nhau, thì sẽ được coi là đúng kho và ngược lại Và số kho đúng trong dữ liệu đó là 444 và có 56 kho đã bị xác định sai
3.2 Xử lý Missing_data.
Đầu tiên, chúng ta cần đưa dữ liệu missing_data.csv được download về để nhập dữ liệu vào RStudio Sau đó, ta kiểm tra sơ lược về số dòng và cột của dữ liệu và các
Tiếp theo, để có cái nhìn trực quan hơn về dữ liệu, ta gọi 2 thư viện visdat và naniar Ta cho các dữ liệu bị mất thành “NA”, sau đó dùng lệnh từ 2 thư viện trên để
vẽ biểu đồ thể hiện cho dữ liệu bị mất.
_
Trang 16Qua kết quả trên, ta thấy có 80 ô dữ liệu bị khuyết và số ô có dữ liệu là 7920 ô Được thể hiện rõ hơn qua biểu đồ sau:
Biểu đồ 1 Biểu đồ thể hiện dữ liệu bị khuyết.
Đầu tiên, ta xử lý vấn đề liên quan đến chi phí, giống với dirty_data, ta sẽ thiết lập hàm để tính chi phí như sau:
Ở đây, rowrise() là tính toán dữ liệu theo từng hàng để tiện trong việc xét các hàng ở trong dữ liệu missing nhằm để tính toán, ifelse() ở trong lệnh này có nghĩa là nếu giá trị trong cột order_price hoặc order_total là giá trị NA thì lệnh sẽ thực hiện phép toán phía sau điều kiện, coalesce() là hàm để trả về giá trị đầu tiên nếu nó không phải là NA, nếu là NA thì trả về số 0 Và nếu cột order_price hoặc order_total mà khác NA thì sẽ bằng chính nó và tiếp tục tính toán hàng tiếp theo.
Tiếp ngay sau, ta sẽ sử dụng phương pháp Imputation để thực hiện điền khuyết
các dữ liệu như customer_lat, customer_long, is_happy_customer.
Sau đó, ta tiếp tục sử dụng công thức Haversine để tính toán khoảng cách từ nhà kho đến địa điểm của khách hàng tương tự giống như tính ở bên trên dirty_data
Trang 17Đưa dữ liệu vị trí của các nhà kho và lấy dữ liệu từ cột customer_lat và
customer_long của khách hàng để tính toán Ta cần phải đổi đơn vị độ sang radian và cho bán kính của Trái Đất là 6371 (km) Thực hiện các tính toán như sau:
Hình 6 Tính toán khoảng cách đến kho Nickolson.
Trang 18Hình 7 Tính toán khoảng cách đến kho Bakers.
Hình 8 Tính toán khoảng cách đến kho Thompson.
Sau khi thực hiện các hàm Haversine xong, ta so sánh các giá trị khoảng cách gần nhất theo hàng và điền khuyết vào bảng dữ liệu ban đầu.
Trang 19
Ở bảng dữ liệu missing_data, cột mùa cũng đang bị khuyết vì thế ta sẽ sử dụng thư viện lubridate và dplyr để xác định mùa theo định dạng có sẵn trong dữ liệu.
Sau khi đã làm sạch và điền khuyết dữ liệu, ta thực hiện thống kê mô tả bằng lệnh summary() để có cái nhìn tổng quát hơn về 2 bảng dữ liệu Lệnh summary() sẽ xuất ra màn hình những giá trị như min (giá trị nhỏ nhất), mean (trung bình), median (trung vị), Q1 ( khoảng tứ phân vị thứ 1), Q3 (khoảng tứ phân vị thứ 3), max (giá trị lớn nhất)
Trang 20
Hình 9 Tổng quan dữ liệu của fix_dirty.
Hình 10 Tổng quan dữ liệu của fix_missing.
Sau khi sử dụng lệnh summary(), ta nhận thấy ở fix_dirty có những giá trị bất thường (được khoanh đỏ) Vẽ đồ thị để thể hiện rõ những giá trị đó.
Trang 21
Biểu đồ 3 Biểu đồ phân phối tiền mua hàng có các điểm gây nhiễu.
Biểu đồ 4 Biểu đồ hộp thể hiện tiền mua hàng có các điểm gây nhiễu.
Nhìn bằng mắt thường, ta nhận ra các giá trị được khoanh đỏ có sự sai lệch rất lớn, vì vậy, nhóm đã đưa ra một giải pháp đó dựa vào box plot, ngoài những đường Whiskers, nhóm sẽ sử dụng công thức lấymedian ± 1.5× IQR để xác định giới hạn cho phép, những điểm ngoài giới hạn đó nhóm sẽ bỏ giá trị đó đi Sau khi bỏ các giá trị gây nhiễu, vẽ lại biểu đồ, ta thu được đồ thị phân phối tiền mua hàng như sau:
Biểu đồ 5 Biểu đồ phân phối tiền mua hàng đã loại các giá trị gây nhiễu.