e Tính toán hệ số tương quan giữa các biến độc lập 5.. Thống kê suy diễn: 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 sự hài lòng của khách hàng a Xét mô
Trang 2(c) Kiểm tra các dữ liệu bị khuyết trong tập tin Nếu có dữ liệu bị khuyết, hãy đề xuất phương pháp thay thế cho những dữ liệu bị khuyết này Hãy in bảng thống kê
tỷ lệ giá trị khuyết đối với từng biến (nếu có)
(c) Hãy dùng hàm hist () để vẽ đồ thị tần số
(d) Hãy dùng hàm boxplot () vẽ phân phối
(e) Tính toán hệ số tương quan giữa các biến độc lập
5 Thống kê suy diễn:
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 sự hài lòng của khách hàng
(a) Xét mô hình hồi quy tuyến tính bao gồm biến is_happy_customer 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 trên tệp missing_data Hãy dùng lệnh lm() để thực thi mô hình hồi quy tuyến tính bội
(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%?
(c) Xét 2 mô hình tuyến tính cùng bao gồm biến is_happy_customer 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 không có ý nghĩa thống kê từ mô hình M1
6 Thảo luận và mở rộng
Hãy dùng lệnhh anova() để đề xuất mô hình hồi quy hợp lý hơn
Chọn mô hình hợp lý hơn và hãy suy luận sự tác động của các biến lên sự hài lòng của khách hàng Cuối cùng, từ mô hình hồi quy mà bạn chọn 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ị
Trang 3https://www.kaggle.com/datasets/muhammadshahrayar/transactional-retail-dataset-of-Các biến dữ liệu chính:
+ nearest_warehouse: Chuỗi biểu thị tên kho gần khách hàng nhất + order_price: Giá đặt hàng
+ delivery_charges: Phí giao hàng + customer_lat: Vị trí vĩ độ của khách hàng + customer_long: Vị trí kinh độ của khách hàng + coupon_discount: Phần trăm chiết khấu + order_total: Tổng đơn hàng
+ is_expedited_delivery: Mong muốn giao hàng nhanh của khách hàng
0: không muốn
1 muốn + distance_to_nearest_warehouse: Khoảng cách giữa vị trí của khách hàng và kho hàng gần nhất
+ is_happy_customer: Sự hài lòng của khách hàng
0: không hài lòng
1: hài lòng
Trang 42 Cơ sở lý thuyết
2.1 Các lệnh R sử dụng trong bài:
read.csv(): Đọc file csv vào R-Studio
which(): Tìm kiếm các thông số thoả mãn từ dữ liệu cho trước
is.na(): Kiểm tra dữ liệu đó có mang giá trị N/A (not available) hay không
median(): Tính trung vị của biến
mean(): Tính trung bình của biến
max(): Tìm giá trị lớn nhất của biến
min(): Tìm giá trị nhỏ nhất của biến
sd(): Tính độ lệch chuẩn của biến
hist(): Vẽ biểu đồ tần số của biến
boxplot(): Vẽ biểu đồ hộp của biến
pairs(): Vẽ biểu đồ cho nhiều biến
view(): Xuất ra màn hình giá trị
Và một số lệnh khác
2.2 Một số định nghĩa cơ bản có trong bài:
2.2.1 Hồi quy tuyến tính: là phương pháp thống kê để thiết lập mối quan hệ giữa một
biến phụ thuộc và một nhóm tập hợp các biến độc lập Để dự đoán giá trị biến phụ thuộc (Y) dựa trên giá trị của biến độc lập (X)
2.2.2 Mô hình hồi quy tuyến tính bội
Mô hình hồi quy tuyến tính bội có dạng tổng quát như sau:
Y = β1 + β2X2 + β3X3 + … + βkXk + u Trong đó: Y: biến phụ thuộc
Xi: biến độc lập
β1: hệ số tự do (hệ số chặn)
βi: hệ số hồi quy riêng βi đo lường tác động riêng phần của biến Xi lên Y với điều kiện các biến số khác trong mô hình không đổi
Trang 52.2.3 Ước lượng
Ta đặt: yi ký hiệu giá trị thực của biến y tại quan sát i
ŷi ký hiệu giá trị của hàm hồi quy mẫu
ei ký hiệu phần dư yi – ŷi
Do đó cực tiểu hóa Σ(yi – ŷi)2 sẽ tương đương với cực tiểu Σei2 từ đó tìm ra β̂0, β̂1,…, β̂k
Ta có:
Σei2 = Σ(yi – (β̂1 + β̂2x2,i + β̂3x3,i + β̂4x4,i + … + β̂kxk,i))2
Chúng ta có thiết lập các điều kiện bậc nhất cho phép tính tối thiểu này như sau:
2.2.4 Ước lượng khoảng tin cậy đối với các hệ số hồi quy
Mục đích của phân tích hồi quy không phải chỉ suy đoán về β1, β2,…, βk mà còn phải kiểm tra bản chất sự phụ thuộc Do vậy cần phải biết phân bố xác suất của β1, β2,…, βk Các phân bố này phụ thuộc vào phân bố của các ui
Với các giả thiết OLS, ui có phân phối N (0, σ2) Các hệ số ước lượng tuân theo phân phối chuẩn:
β̂j ~ N(βj, Se(β̂j)) β̂j -βj
Se(β̂j) ~ T(n − k)
Trang 6Ước lượng phương sai sai số dựa vào các phần dư bình phương tối thiểu Trong đó k là
số hệ số có trong phương trình hồi quy đa biến:
2.2.5 Kiểm định giả thiết đối với βj
Kiểm định ý nghĩa thống kê của các hệ số hồi quy có ý nghĩa hay không: kiểm định rằng biến giải thích có thực sự ảnh hưởng đến biến phụ thuộc hay không Nói cách khác là
hệ số hồi quy có ý nghĩa thống kê hay không
Có thể đưa ra giả thiết nào đó đối với βj, chẳng hạn βj = βj* Nếu giả thiết này đúng thì:
2.2.6 Phương pháp ma trận giải bài toán hồi quy tuyến tính bội
Chúng ta thấy rằng trong hồi quy đa biến, nếu chúng ta sử dụng cách thức thay thế dần
đề tìm tham số hồi quy sẽ rất phức tạp và mất rất nhiều thời gian, đặc biệt đối với những
mô hình có nhiều biến giải thích Một cách đơn giản hơn để giải quyết đó là sử dụng phương pháp ma trận
Giả sử chúng ta có hàm hồi quy tổng thể (PRF):
y = β1 + β2x2 + β3x3 + β4x4 + … + βkxk + u Chúng ta viết cho từng quan sát như sau:
Trang 7X là ma trận cấp n x k
β là ma trận cấp k x 1
U là ma trận cấp n x 1 Với x1 được biểu diễn là:
x1 = [
11
⋮1]
Hàm hồi qui mẫu được viết như sau:
ŷi= β̂1+ β̂2x2i + β̂3x3i+…+β̂kxki
yi= β̂1+ β̂2x2i + β̂3x3i+…+β̂kxki + eiHay: Y = Xβ̂ + e
Khi đó các ước lượng OLS tìm được bằng cách:
Σei2= Σ (yi(β̂1+ β̂2x2i+ β̂3x3i+…+ β̂kxki))2 ⇒ min e’e = Σei2= (Y - Xβ̂)’(Y - Xβ̂)= Y’Y - β̂′X’Y – Y’Xβ̂ + β̂′X’Xβ̂ = Y’Y - 2β̂′X’Y + X’Xβ̂2
∂(e′e)
∂β̂ = -2X’Y + 2X’Xβ̂ ⇒ X’Y = X’Xβ̂ ⇒ β̂ = (X’X)-1X’Y
2.2.7 Phân tích phương sai một nhân tố (Anova)
Lý thuyết phân tích phương sai 1 yếu tố
Phép phân tích phương sai là so sánh trung bình của 2 hay nhiều nhóm dựa trên các giá trị trung bình của các mẫu quan sát từ các nhóm này, và thông qua kiểm định giả
thiết để kết luận về sự bằng nhau của các trung bình tổng thể này
Phương pháp phân tích phương sai 1 yếu tố
Phép phân tích phương sai được dùng trong các trắc nghiệm để so sánh các giá trị trung bình của hai hay nhiều mẫu được lấy từ các phân số Đây có thể được xem như phần
mở rộng các trắc nghiệm t hay z (so sánh hai giá trị trung bình)
Trang 8 Mục đích của sự phân tích phương sai 1 yếu tố:
Đánh giá sự ảnh hưởng của một yếu tố (nhân tạo hay tự nhiên) nào đó trên các giá trị quan sát, Yi(i=0,1,2,…k)
Bảng ANOVA:
Giả thiết:
H0: 12 k “Các giá trị trung bình bằng nhau”
H1: i j “Ít nhất có hai giá trị trung bình khác nhau”
Giá trị thống kê: F =
MSE MSF
Biện luận: Nếu F < Fα (k - 1; N - k) → Chấp nhận giả thiết H0
3 Tiền xử lý dữ liệu 3.1 Đọc dữ liệu
Input:
dulieu= read.csv("C:/Users/Documents/dirty_data.csv",header=TRUE) dulieumiss = read.csv("C:/Users/Documents/missing_data.csv",header=TRUE)
Giải thích: đọc dữ liệu, lưu dữ liệu của tệp dirty_data.csv với tên là data và đọc dữ liệu, lưu
dữ liệu của tệp missing_data.csv với tên là datamiss
Trang 9Output:
3.2 Tổng 2 dữ liệu:
Input:
dulieu_total= rbind(dulieu,dulieumiss) head(dulieu_total)
Giải thích: gộp file dữ liệu dirty_data.csv và missing_data.csv thành 1 file và lưu với tên
là dulieu_total
Trang 11Output:
Tính lại khoảng cách của kho hàng gần nhất (distance_to_nearest_warehouse) trong
file dữ liệu dulieu_total bằng dữ liệu kinh độ và vĩ độ của các kho hàng trong file ware houses.csv
Công thức tính khoảng cách Haversine:
Tính lại khoảng cách từ khách hàng đến kho hàng gần nhất bằng Excel như sau:
Trang 12Kết quả tính toán lại khoảng cách từ khách hàng đến kho hàng gần nhất
3.4 Trích xuất dữ liệu:
Input:
dulieu_cut=dulieu_total[c(4,6,7,8,9,10,11,13,14,16)]
head(dulieu_cut) Giải thích: Trích xuất một số biến quan trọng để tính toán
Trang 13Output:
3.5 Kiểm tra dữ liệu:
Input:
apply(is.na(dulieu_cut),2,which) apply(is.na(dulieu_cut),2,sum)
Giải thích: Kiểm tra và xuất ra các giá trị bị khuyết của các biến trong tập dulieu_cut
Trang 14thongke = function(x) {av = mean(x)
med = median(x)
sd = sd(x) min = min(x) max = max(x) c(MEAN = av, SD = sd, MED = med, MIN = min, MAX = max)}
a = thongke(dulieu_cut$order_price)
b = thongke(dulieu_cut$delivery_charges)
c = thongke(dulieu_cut$coupon_discount) d= thongke(dulieu_cut$distance_to_nearest_warehouse)
e = thongke(dulieu_cut$order_total) dinhluong = data.frame(a,b,c,d,e)
c("order_price","delivery_charges","coupon_discount","distance_to_nearest_warehouse",
"order_total") View(dinhluong)
Giải thích: Tính toán các giá trị thống kê mô tả cho các biến order_price, delivery_charges,
, coupon_discount, order_total, distance_to_nearest
Output:
3.7 Tạo bảng thống kê cho các biến số liệu
Input:
table(dulieu_cut$nearest_warehouse) table(dulieu_cut$coupon_discount) table(dulieu_cut$is_expedited_delivery) table(dulieu_cut$is_happy_customer)
Giải thích: Tạo bảng thống kê cho các biến số lượng: nearest_warehouse, coupon_discount,
is_expedited_delivery, is_happy_customer
Trang 15Output:
3.8 Vẽ biểu đồ Histogram cho các biến:
Input:
hist(dulieu_cut$order_price,col = "blue") hist(dulieu_cut$delivery_charges,col = "red") hist(dulieu_cut$coupon_discount,col = "green") hist(dulieu_cut$distance_to_nearest_warehouse, col = "red")
Giải thích: Vẽ đồ thị tần số cho các biến: order_price, delivery_charges, order_total ,
coupon_discount, distance_to_nearest_warehouse
Output:
Trang 173.9 Vẽ biểu đồ boxplot:
Input:
boxplot(dulieu_cut$is_happy_customer~ nearest_warehouse,data = dulieu_cut,col =
"blue")
Trang 18boxplot(dulieu_cut$is_happy_customer~ coupon_discount,data = dulieu_cut, col =
"green")
Giải thích: Vẽ biểu đồ phân phối thể hiện các điểm tứ phân vị cho các biến độc lập:
nearest_warehouse, coupon_discount theo biến phụ thuộc is_happy_customer
Output:
Trang 193.10 Tính toán các hộ số tương quan giữa các biến:
Input:
dulieu_cut1=dulieu[c(6,7,10,11,14)]
dulieu_cut1= cor(dulieu_cut1) corrplot(dulieu_cut1, type = "upper", method= "number",col = "darkblue") Giải thích: Tính toán các hệ số tương quan cho các biến độc lập: order_price, delivery_charges, coupon_discount, order_total, distance_to_nearest_warehouse
Output:
Nhận xét:
Hệ số tương quan r là hệ số thể hiện mức độ liên quan giữa các biến
Nếu R>0 thì là tương quan thuận, nghĩa là biến này tăng thì tương ứng biến kia cũng sẽ tăng
- Nếu R<0 thì là tương quan nghịch, nghĩa là biến này tăng thì tương ứng biến kia sẽ giảm
- Bên cạnh đó, về mặt giá trị, hệ số r có giá trị từ -1 đến +1 cụ thể:
+ r = 0: không tương quan;
+ |r| ≤ 0.3: tương quan yếu;
+ 0.3 < r ≤ 0.7: tương quan trung bình;
+ |r| ≥ 0.7: tương quan mạnh
Trang 205 Thống kê suy diễn
a, Xét mô hình hồi quy tuyến tính bao gồm biến is_happy_customer 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 trên tệp missing_data Hãy dùng lệnh lm() để thực thi mô hình hồi quy tuyến tính bội
a1 Xóa bỏ các giá trị khuyết trong tệp dulieumiss Input:
dulieumiss <- na.omit(dulieumiss) a2 Xây dựng mô hình hồi quy tuyển tính đa biến m1 m1=lm(is_happy_customer ~ order_price + delivery_charges +coupon_discount + distance_to_nearest_warehouse + is_expedited_delivery, data = dulieumiss)
H0: Các hệ số hồi quy không có ý nghĩa thống kê
H1: Các hệ số hồi quy có ý nghĩa thống kê
Nhận xét:
Từ kết quả phân tích hồi quy tuyến tính đa biến , chúng ta nhận thấy rằng các biến order_price, coupon_discount, order_total có giá trị Pr lớn hơn 5% nên điều kiện bác bỏ
H0 sẽ không thỏa mãn và chúng ta vẫn phải chấp nhận H0 Do đó, tất cả các biến này không
có ý nghĩa thống kê sẽ cần được loại trừ khỏi mô hình hồi quy tuyến đa biến Trái lại, thì các biền delivery_charges, distance_to_nearest_warehouse và biến is_expedited_delivery
có giá trị Pr nhỏ hơn 5% (cụ thể là 2e -16 và 3.25e - 05) nên điều kiện bác bỏ H0 sẽ thỏa
Trang 21mãn tức là chúng ta chấp nhận H1 nghĩa là 3 biến delivery_charges, distance_to_nearest_warehouse và is_expedited_delivery sẽ có ý nghĩa thống kế với mức
ý nghĩa 5% và chúng ta cần giữ lại trong mô hình hồi quy
c, Xét 2 mô hình tuyến tính cùng bao gồm biến is_happy_customer 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 một số biến từ mô hình M1
6 Thảo luận và mở rộng
Hãy dùng lệnhh anova() để đề xuất mô hình hồi quy hợp lý hơn
Chọn mô hình hợp lý hơn và hãy suy luận sự tác động của các biến lên sự hài lòng của khách hàng Cuối cùng, từ mô hình hồi quy mà bạn chọn hãy dùng lệnh plot() để vẽ đồ thị
Trang 22biể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ị
a1 Phân tích anova Input:
anova(m1,m2)
Giải thích: phân tích phương sai cho hai mô hình tuyến tính m1 và m2
Ta đặt giả thiết:
H0: Hai mô hình m1 và m2 hiệu quả như nhau
H1: Hai mô hình m1 và m2 hiệu quả khác nhau
Output:
Nhận xét:
Nhìn vào kết quả phân tích ANOVA của hai mô hình m1 và m2, giá trị Pr(>F) là 0.3402
Ở mức ý nghĩa 5%, khi Pr(>F) > 5%, chúng ta có thể kết luận rằng không có sự khác biệt đáng kể về hiệu quả giữa hai mô hình Để chọn mô hình hồi quy tốt hơn, chúng ta có thể xem xét hệ số R2 hiệu chỉnh R2 hiệu chỉnh của mô hình 1 là 0.3324, lớn hơn so với mô hình 2 có R2 hiệu chỉnh là 0.3319 Do đó, mặc dù mô hình m1 có những biến không đem lại ý nghĩa thống kê, nhưng nhìn chung chúng ta vẫn thấy rằng m1 hồi quy vẫn thể hiện hiệu quả tốt hơn m2
a2 Vẽ đồ thị hồi quy Input:
Plot(fitted(m1),resid(m1)) plot(m1,which=1)
mô hình m1
Output:
Trang 23Nhận xét: Đồ thị trên biểu diễn các giá trị dự báo và các giá trị trị sai số tương ứng Dựa
vào đồ thị, ta thấy rằng đường thẳng màu đó trên đồ thị là đường thẳng nằm ngang và có một phần là đường cong Điều này cho thấy 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à gần tuyến tính chứ chưa hoàn toàn tuyến tính Ngoài ra, các giá trị trị 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ố
TÀI LIỆU THAM KHẢO
[1] Douglas C Montgomery, George C Runger Hoboken Applied Statistics and Probability for Engineers NJ: Wiley, (2007)
Trang 24[2] Peter Dalgaard Introductory Statistics with R Springer, (2008)
[3] Phân tích số liệu và biểu đồ bằng, Truy cập từ: https://cran.r- project.org/doc/contrib/Intro_to_R_Vietnamese.pdf
[4] Giới thiệu phân tích phương sai (ANOVA), Truy cập từ
https://www.youtube.com/watch?v=I19vEdaM1eY&list=LL&index=6&t=2s
[5] Giáo trình xác suất thống kê – Nguyễn Đình Huy [6] Multiple regression, Truy cập từ: https://rstudio-pubs- static.s3.amazonaws.com/233905_8c9601100a364df0a9972f955ab1dc14.html
https://www.youtube.com/watch?v=L15RellDWvk&t=6s