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
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
Trang 2Danh sách thành viên
ST
Hoàn thành (%)
Chữ ký
2 Nguyền Hồng Phong 2212557 Thống kê suy
và kiến thức nền
100%
Trần Kim Phátphat.tran108isme@hcmut.edu.vn
SĐT: 0375285553
Trang 3MỤC LỤC PHẦN MỞ ĐẦU tr.1PHẦN NỘI DUNG tr.2
7 Nguồn dữ liệu và code tr.30
8 Tài liệu tham khảo tr.31
Trang 4Vớ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ộngthêm nhiều phương pháp mới Qua đó, hình thành được nhiều ứng dụng để tăng hiệusuấ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ợitrong quản lý và điển hình hơn là thống kê.
Trang 5Mụ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ậnchuyể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
+ 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 hàng
+ Distance_to_nearest_warehouse: khoảng cách từ vị trí của khách hàng đến kho hàng gần nhất
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 X ijvà x ij 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
Để kiểm định giả thiết H0: μ1= =μI
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 cầu)
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ẫunhiê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à đưavà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 các ước số
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 của cột.
Kết quả xuất ra sẽ là:
Sau đó, ta khái quát dữ liệu dirty_data ban đầu bằng lệnh summary()
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áng
là 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:
chi phi=Tienmua hang∗(100−ma giam gia)/100+ phivan chuyen
sai lech=¿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ừ độ sangradian để 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 tên của cột
Trang 16
Qua 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:
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.
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.
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ấtthườ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ấtlớn, vì vậy, nhóm đã đưa ra một giải pháp đó dựa vào box plot, ngoài những đườngWhiskers, nhóm sẽ sử dụng công thức lấymedian ± 1.5× IQR để xác định giới hạn chophé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.
Trang 22Biểu đồ 6 Biểu đồ hộp thể hiện tiền mua hàng đã loại các giá trị gây nhiễu.
_
Tương tự với order_total Ta vẽ các biểu đồ thể hiện trước khi lọc các giá trịgây nhiễu và sau khi lọc các giá trị gây nhiễu, đồng thời vẽ box plot
Biểu đồ 7 Biểu đồ phân phối chi phí cuối cùng.
Biểu đồ 8 Box Plot thể hiện chi phí cuối cùng.
_
Ngoài ra, nhóm còn sử dụng công thức Q1−1.5 × IQR và Q3+1.5 × IQR để xácđịnh giới hạn cho phép nhằm so sánh với công thức loại bỏ outlier dựa vào mediannhư ở trên Vẽ lại biểu đồ và box plot sau khi đã loại các yếu tố gây nhiễu
_
Trang 23Biểu đồ 9 Biểu đồ thể hiện phân phối chi phí cuối cùng đã loại các giá trị gây nhiễu.
Biểu đồ 10 Box Plot thể hiện chi phí cuối cùng đã loại các giá trị gây nhiễu
_
Quan sát summary(fix_missing) ta thấy được rằng, fix_missing không có điểm
ngoại lai hoặc có nhưng mà không đáng kể Vẽ biểu đồ thể hiện order_price và order_total của fix_missing.
Biểu đồ 11 và 12 Biểu đồ thể hiện phân phối tiền mua hàng và chi phí cuối cùng.
Biểu đồ 13 và 14 Box Plot thể hiện tiền mua hàng và chi phí cuối cùng.