Professional Documents
Culture Documents
Pham-Mai-Huyen 2013342 L19 Nhom-11
Pham-Mai-Huyen 2013342 L19 Nhom-11
MSSV: 2013342
Lớp: L19
Khoa: Cơ Khí
1
b. Đố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
(Hàm gợi ý: table()).
c. Hãy dùng hàm hist() để vẽ đồ thị phân phối của biến G3.
d. Hãy dùng hàm boxplot() vẽ phân phối của biến G3 cho từng nhóm phân loại của biến
studytime, failures, và biến higher.
e. Dùng lệnh pairs() vẽ các phân phối của biến G3 lần lượt theo các biến G2, G1, age, và
absences.
4. Xây dựng 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 điểm cuối khóa
môn Toán của các em học sinh:
a. Xét mô hình hồi quy tuyến tính bao gồm biến G3 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. 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% và 1%?
c. Xét 3 mô hình tuyến tính cùng bao gồm biến G3 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 higher từ mô hình M1.
• Mô hình M3 là loại bỏ biến failures từ mô hình M2.
Hãy dùng lệnh anova() để đề xuất mô hình hồi quy hợp lý hơn.
d. Từ mô mình hồi quy hợp lý nhất từ câu c hãy suy luận sự tác động của các biến lên
điểm thi cuối kì.
e. Từ mô hình hồi quy hợp lý nhất từ 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ị.
5. Dự báo (Predictions):
a. Trong dữ liệu của bạn, hãy tạo thêm biến đặt tên là evaluate, biến này biểu diễn tỷ lệ
đạt (G3>=10) hoặc không đạt (G3<10) của sinh viên trong điểm thi cuối kì. Hãy thống kê
tỷ lệt đạt/không đạt (Hàm gợi ý: cbind()).
b. Xét mô hình hồi quy hợp lý nhất mà bạn đã chọn trong câu 4(c). Hãy lập một bảng số
liệu mới đặt tên là new_X bao gồm toàn bộ các biến độc lập trong mô hình này, và dùng
lệnh predict() để đưa ra số liệu dự báo cho biến G3 phụ thuộc vào new_X. Gọi kết quả
dự báo này là biến pred_G3.
2
c. Khảo sát độ chính xác trong kết quả dự báo của câu trên bằng cách lập một bảng so
sánh kết quả dự báo pred_G3 với kết quả thực tế của biến G3.
THỰC HIỆN BẰNG R STUDIO
1. Đọc dữ liệu:
Dùng lệnh read.csv để đọc tệp tin diem_so:
setwd('D:/XSTK')
2. Làm sạch dữ liệu:
library(readr)
a. Trích ra dữ liệu con, đặt tên data.frame new_DF bao gồm các biến chính:
library(psych)
attach(diem_so)
library(mice)
new_DF=data.frame(G1,G2,G3,studytime,failures,absences,higher,age)
library(relaimpo)
detach(diem_so)
diem_so<-read.csv("diem_so.csv",header=T)
names(new_DF)
head(diem_so, 3)
head(new_DF)
3
b. Kiểm tra các dữ liệu bị khuyết trong tệp tin:
colSums(is.na(new_DF))
Nhận xét: Dựa trên kết quả, ta thấy biến G2 có 5 NA, chiếm tỷ lệ < 10% so với bộ dữ liệu,
nên ta sẽ xử lý NA bằng cách xóa các quan sát bị khuyết của G2.
apply(is.na(new_DF),2,which)
3.apply(new_DF,
Làm rõ dữ liệu:
2, function(x)sum(is.na(x))/length(x))
new_DF = na.omit(new_DF)
4
a. Các biến liên tục trong dữ liệu là: G1, G2, G3, age
Tính các giá trị thống kê mô tả của các biến liên tục trong dữ liệu:
Dùng
G1<- hàm data.frame để xuất kết quả dưới dạng bảng thống kê:
new_DF$G1
G2<-
new_DF$G2
G3<-
new_DF$G3
studytime<-new_DF$studytime
failures<-new_DF$failures
absences<-new_DF$absences
higher<-new_DF$higher
age<-new_DF$age
new_DF2=data.frame(G1,G2,G3,absences,ag
e) DESCRIBE=describe(new_DF2)
DESCRIBE
attach(DESCRIBE)
5
b. Dùng hàm table để lập bảng thống kê số lượng cho failures, studytime, higher:
table(studytim
e)
table(failures)
6
c. Dùng hàm hist để vẽ đồ thị phân phối của biến G3:
hist(G3,col = "green")
Nhận xét: Đây là biểu đồ phân bố tần số cho biến G3. Dựa trên biểu đồ ta nhận thấy:
Mức điểm có số lượng sinh viên nhiều nhất là: 8 - 10 điểm.
Mức điểm có số lương sinh viên ít nhất là: 2 - 4 điểm.
Ngoài ra, có 38 sinh viên có điểm tổng kết là từ 0 - 2 điểm. Điều này có thể là nguyên nhân
ảnh hưởng đến mô hình hồi quy ta xây dựng.
d. Dùng hàm boxplot để vẽ phân phối của biến G3 lần lượt theo từng phân loại của
các biến failures, studytime, higher:
boxplot(G3~higher) boxplot(G3~studytime)
7
boxplot(G3~failures)
Nhận xét:
Đối với nhóm sinh viên không muốn học cao hơn:
Điểm cuối khoá cao nhất khoảng 13 điểm.
Điểm cuối khoá thấp nhất là 0 điểm.
Có 50% học sinh có điểm cuối khoá khoảng dưới 8 điểm.
Có 75% học sinh có điểm cuối khoá khoảng dưới 10 điểm.
Đối với nhóm sinh viên muốn học cao hơn:
Điểm cuối khoá cao nhất khoảng 20 điểm.
Điểm cuối khoá thấp nhất là 0 điểm.
Có 50% học sinh có điểm cuối khoá khoảng dưới 9 điểm.
Có 75% học sinh có điểm cuối khoá khoảng dưới 14 điểm.
a. Dùng hàm pairs để vẽ biểu đồ thể hiện phân phối của biến G3 lần lượt theo các
biến G1, G2, age:
8
Nhận xét:
Đối với nhóm sinh viên có thời gian tự học trong tuần thuộc nhóm 1 (ít hơn 2 giờ):
Điểm cuối khoá cao nhất khoảng 19 điểm.
Điểm cuối khoá thấp nhất là 0 điểm.
Có 25% học sinh có điểm cuối khoá khoảng dưới 8 điểm.
Có 50% học sinh có điểm cuối khoá khoảng dưới 10 điểm.
Có 75% học sinh có điểm cuối khoá khoảng dưới 13 điểm.
Đối với nhóm sinh viên có thời gian tự học trong tuần thuộc nhóm 2 (từ 2 đến 5 giờ):
Điểm cuối khoá cao nhất khoảng 19 điểm.
Điểm cuối khoá thấp nhất là 0 điểm.
Có 25% học sinh có điểm cuối khoá khoảng dưới 8 điểm.
Có 50% học sinh có điểm cuối khoá khoảng dưới 12 điểm.
Có 75% học sinh có điểm cuối khoá khoảng dưới 13 điểm.
Đối với nhóm sinh viên có thời gian tự học trong tuần thuộc nhóm 3 (từ 5 đến 10 giờ):
Điểm cuối khoá cao nhất khoảng 19 điểm.
9
Điểm cuối khoá thấp nhất là 0 điểm.
Có 25% học sinh có điểm cuối khoá khoảng dưới 10 điểm.
Có 50% học sinh có điểm cuối khoá khoảng dưới 12 điểm.
Có 75% học sinh có điểm cuối khoá khoảng dưới 15 điểm.
Đối với nhóm sinh viên có thời gian tự học trong tuần thuộc nhóm 4 (lớn hơn 10 giờ):
Điểm cuối khoá cao nhất khoảng 20 điểm.
Điểm cuối khoá thấp nhất là 0 điểm.
Có 25% học sinh có điểm cuối khoá khoảng dưới 9 điểm.
Có 50% học sinh có điểm cuối khoá khoảng dưới 12 điểm.
Có 75% học sinh có điểm cuối khoá khoảng dưới 15 điểm.
Nhận xét:
Đối với nhóm sinh viên có số lần không qua môn thuộc nhóm 1 (0 lần):
Điểm cuối khoá cao nhất khoảng 20 điểm.
Điểm cuối khoá thấp nhất là 0 điểm.
10
Có 25% học sinh có điểm cuối khoá khoảng dưới 9 điểm.
Có 50% học sinh có điểm cuối khoá khoảng dưới 12 điểm.
Có 75% học sinh có điểm cuối khoá khoảng dưới 14 điểm.
Đối với nhóm sinh viên có số lần không qua môn thuộc nhóm 2 (1 lần):
Điểm cuối khoá cao nhất khoảng 17 điểm.
Điểm cuối khoá thấp nhất là 0 điểm.
Có 25% học sinh có điểm cuối khoá khoảng dưới 7 điểm.
Có 50% học sinh có điểm cuối khoá khoảng dưới 9 điểm.
Có 75% học sinh có điểm cuối khoá khoảng dưới 12 điểm.
Đối với nhóm sinh viên có số lần không qua môn thuộc nhóm 3 (2 lần):
Điểm cuối khoá cao nhất khoảng 15 điểm.
Điểm cuối khoá thấp nhất là 0 điểm.
Có 50% học sinh có điểm cuối khoá khoảng dưới 8 điểm.
Có 75% học sinh có điểm cuối khoá khoảng dưới 9 điểm.
Đối với nhóm sinh viên có số lần không qua môn thuộc nhóm 4 (≥ 3 lần):
Điểm cuối khoá cao nhất khoảng 10 điểm.
Điểm cuối khoá thấp nhất là 0 điểm.
Có 50% học sinh có điểm cuối khoá khoảng dưới 7 điểm.
Có 75% học sinh có điểm cuối khoá khoảng dưới 9 điểm.
e. Dùng hàm pairs để vẽ biểu đồ thể hiện phân phối của biến G3 lần lượt theo các biến
G1, G2, age:
11
pairs(G3~G
1)
pairs(G3~G
2)
12
13
Nhận xét: Từ các đồ thị phân tán, ta có thể nhận xét rằng các biến G1 và G2 có mối quan
hệ tuyến tính với biến G3 (nói rõ hơn là quan hệ đồng biến) trong khi biến age không có
mối quan hệ với biến G3.
4) XÂY DỰNG MÔ HÌNH HỒI QUY TUYẾN TÍNH:
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 điểm
cuối khoá môn Toán của các em học sinh.
a. Ta sẽ xây dựng các mô hình hồi quy bội bao gồm:
Biến phụ thuộc: G3.
Biến dư báo (biến độc lập): G1, G2, failures, studytime, higher, absences, age.
Trong đó failures, studytime, higher là các biến phân loại, nên ta sẽ chuyển sang
dạng factor:
M1=lm(G3~G1+G2+age+absences+as.factor(higher)+as.factor(failures)+as.factor(studyt
ime))
summary(M1)
14
b. Dựa vào kết quả của mô hình hồi quy tuyến tính trên, ta đặt giả thiết:
Giả thiết H: Các hệ số hồi quy ứng với các biến không có ý nghĩa
thống kê Giả thiết 𝐇̅ Các hệ số hồi quy ứng với các biến có ý nghĩa
thống kê
Vì Pr ứng với các biến studytime2, studytime3, failure 2, failure 3, higher, age đều lớn
hơn mức ý nhĩa α=0,05 và α=0,01 nên ta chấp nhận giả thuyết H. Do đó các hệ số ứng
với các biến trên không có ý nghĩa thống kê, ta sẽ loại bỏ các biến này ra khỏi mô hình.
Các hệ số ứng với các biến còn lại đều có Pr bé hơn mức ý nghĩa α=0,05 và α=0,01, nên
ta sẽ bác bỏ H, chấp nhận 𝐇̅ , tức hệ số hồi quy ứng với các biến này có ý nghĩa thống kê.
Do đó, ta không cần loại bỏ những biến này ra khỏi mô hình.
Xét 3 mô hình tuyến tính cùng bao gồm biến G3 là biến phụ thuộc nhưng:
• Mô hình 1 chứa tất cả các biến còn lại là biến độc lập.
• Mô hình 2 là loại bỏ biến higher từ mô hình 1.
• Mô hình 3 là loại bỏ biến failure từ mô hình 2.
15
Ta xây dựng mô hình 2:
16
M2=lm(G3~G1+G2+age+absences+as.factor(failures)+as.factor(studytime))
summary(M2)
5
Ta xây dựng mô hình 3:
M3=lm(G3~G1+G2+age+absences+as.factor(studytime))
summary(M3)
17
Sử dụng lệnh anova để so sánh mô hình 1 và 2:
anova(M1,M2)
Nhận xét:
Giả thiết H: Hai mô hình 1, 2 hiệu quả như nhau
18
anova(M2,M3)
Nhận xét:
Giả thiết H: Hai mô hình 2, 3 hiệu quả như nhau
plot(M2)
20
Nhận xét: Đường màu đỏ gần như là đường thẳng, có thể nói thỏa mãn giả định tuyến
tính giữa G3 và các biến độc lập. Các sai số hồi quy phân tán đều quanh đường thẳng Y =
0, cho thấy phương sai của các sai số là hằng số. Có nhiều ngoại lai của sai số hồi quy (vì
trong mô hình, biến G3 có nhiều số liệu giá trị 0. Đây là nguyên nhân ảnh hưởng đến mô
hình hồi quy chưa thực sự tốt. Ta cần xử lí trước khi xây dựng mô hình để mô hình tốt
hơn.
Các giả định của mô hình hồi quy cần kiểm tra:
Tính tuyến tính của dữ liệu: mối quan hệ giữa biến dự báo X và biến phụ thuộc Y
được giả sử là tuyến tính.
Sai số có phân phối chuẩn.
Phương sai của các sai số là hằng số.
Các sai số thì độc lập với nhau.
Các sai số có trung bình bằng 0.
Ngoài ra, ta có thể vẽ thêm các biểu đồ để kiểm tra các giả định:
21
22
Nhận xét:
Đồ thị 1: Như trên.
23
Đồ thị 2: Đồ thị kiểm tra giả định về phân phối chuẩn của các sai số. Nếu các điểm thặng
dư nằm trên cùng một đường thẳng thì điều kiện về phân phối chuẩn được thoả. Ta nhận
thấy các giá trị thặng dư tập trung theo đường thẳng, ở khoảng đầu và cuối có có vài giá
trị lệch ra khỏi đường thẳng. Tuy nhiên không đáng kể, ta xem như giả định phân phối
chuẩn của các sai số vẫn đáp ứng.
Đồ thị 3: vẽ căn bậc hai của các giá trị thặng dư được chuẩn hoá bởi các giá trị dự báo,
được dung để kiểm tra giả định thứ 3 (phương sai của các sai số là hằng số - tương tự đồ
thị 1). Nếu đường màu đỏ trên đồ thị là đường thẳng nằm ngang và các giá trị thặng dư
phân tán đều quanh đường thẳng này thì giả định 3 được thoả. Nếu như đường màu đỏ có
độ dốc (hoặc cong) hoặc các điểm thẳng dư phân tán không đều xung quanh đường thẳng
này, thì giả định thứ 3 bị vi phạm.
Dựa trên đồ thị ta thấy đường màu đỏ trên đồ thị là đường thẳng hơi nghiêng và các giá
trị thặng dư phân tán đều quanh đường thẳng. Mặc dù đồ thị cho ta thấy rằng giả định
tính đồng nhất về phương sai cũng hơi bị vi phạm. Tuy nhiên, ta cũng thấy vi phạm này
tương đối nhỏ và có thể chấp nhận được.
Đồ thị 4: Cho phép xác định được những ảnh hưởng cao, nếu chúng có hiện diện trong
dữ liệu. Những điểm ảnh hưởng cao này có thể là các điểm outliers, là những điểm gây
nhiễu gây ảnh hưởng nhiều nhất trong việc phân tích. Nếu như ta thấy đường màu đỏ đứt
nét (Cook’s distance) và có một số điểm vượt qua đường khoảng cách này, nghĩa là các
điểm đó có ảnh hưởng cao. Nếu như không có điểm nào vượt qua nó, nghĩa là không có
điểm nào thực sự có ảnh hưởng cao.
Dựa vào đồ thị, ta nhận thấy quan trắc thứ 141, 147, 277 có thể là những điểm có ảnh
hưởng cao trong bộ dữ liệu. Tuy nhiên các điểm chưa vượt qua đường khoảng cách
Cook, do vậy các điểm này chưa thực sự là các điểm có ảnh hưởng cao trong bộ dữ liệu.
Do đó ta không cần phải loại bỏ chúng khi phân tích.
5) DỰ BÁO:
a. Dùng lệnh prop.table và table để thống kê tỷ lệ đạt/ không đạt của sinh viên trong
điểm thi cuối kỳ dựa trên số liệu quan sát:
evaluate=prop.table(table(new_DF$G3>=10))
Nhận xét:
evaluate
24
Tỷ lệ đạt của sinh viên trong điểm thi cuối kì : 67,3259%
Tỷ lệ không đạt của sinh viên trong điểm thi cuối kì : 32,5641%.
b. Lập một bảng số liệu mới đặt tên là new_X bao gồm toàn bộ các biến độc lập trong mô
hình.
c.attach(new_DF)
Lập bảng so sánh kết quả dự báo pred_G3 với kết quả thực tế của biến G3.
new_X=data.frame(G1,G2,age,absences,as.factor(higher),as.factor(failures),as.factor(stu
evaluate1=prop.table(table(new_X$pred_G3>=10))
Nhận
dytime))xét:
evaluate1
new_X$pred_G3=predict(M2,new_X)
Tỷ lệ đạt của sinh viên trong điểm thi cuối kì : 52,82051%
detach(new_DF)
head(new_X)
Tỷ lệ không đạt của sinh viên trong điểm thi cuối kì : 47,17949%
sosanh=data.frame(cbind(evaluate,evaluate1))
colnames(sosanh)=c("quan sat","Du bao")
rownames(sosanh)=c("Khong dat","Dat")
t(sosanh)
25
Nhận xét: Dựa trên kết quả, ta có thể nhận xét tỷ lệ đạt/không đạt ở quan sát và dự báo,
có sự chệnh lệch đáng kể. Có thể giải thích là do mô hình hồi quy ta xây dựng chưa thực
sự tốt, ví lý do có nhiều ngoại lại ảnh hưởng đến kết quả ta dự báo. Ta cần xử lí trước khi
xây dựng mô hình để mô hình tốt hơn.
B. BÀI TẬP 4
Tập tin flights.rda cung cấp thông tin về 162049 chuyến bây đã khời hanh từ hai sân bay
lớn của vung Tây bắc Thái Bình Dương của Mỹ, SEA ở Seattle và PDX ở Portland trong
năm 2014. Dữ liệu cung cấp bới Văn phòng Thống kê Vận tải, Mỹ
(https://www.translats.bts.gov/). Dữ liệu này được dùng để phân tích các nguyên nhân ra
sự khời hành trễ hoặc hoan các chuyến bay. Chi tiết về bộ dữ liệu như sau:
Tổng chuyến bay được thống kê: 162049.
Tổng số biến 16.
Mô tả các biến chinh:
1. year, month, day: ngày khởi hành của mỗi chuyến bay.
2. carrier: tên của hãng hàng không, được mã hóa bằng 2 chữ cái in hoa. Ví
dụ: UA = United Air Lines, AA = American Airlines, DL = Delta Airlines,
v.v.
3. origin và dest: tên sân bay đi và đến. Đối với sân bay đi, ta chỉ có hai giá trị
SEA (Seattle) và PDX (Portland).
4. dep_time và arr_time: thời gian cất cánh và hạ cánh (theo lịch dự kiến)
5. dep_delay và arr_delay: chênh lệch (phút) giữa thời gian cất cánh/hạ cánh
thực tế với thời gian cất cánh/hạ cánh in trong vé
6. distance: khoảng cách giữa hai sân bay (dặm).
Câu hỏi:
1. Nhập và làm sạch dữ liệu, thực hiện các thống kê mô tả
(a) Trong R hãy nhập tập dữ liệu flights.rda (hướng dẫn: có thể dùng lệnh load, head)
(b) Hãy tạo một data.frame mới, đặt tên là newFlights, chỉ chứa các biến chúng ta cần
quan tâm là: carrier, origin, dep_time, arr_time, dep_delay và arr_time. Từ câu hỏi này
về sau, mọi yêu cầu xử lý đều được thực hiện trên data.frame newFlights này.
26
(c) Trong các biến đang xét, có một số biến chứa nhiều giá trị khuyết (NA – Not
Available). Hãy in bảng thống kê tỷ lệ giá trị khuyết đối với từng biến. Hãy đề xuất một
phương pháp để xử lý những giá trị khuyết này.
(d) Tính các giá trị thống kê mổ tả (cỡ mẫu, trung bình, độ lệch chuẩn, min, max, các
điểm tứ phân vị) của thời gian khởi hành trễ (biến dep_delay) của từng hãng hàng không
(carrier). Xuất kết quả ra dưới dạng bảng.
(e) Vẽ đồ thị boxplot cho thời gian khởi hành trễ dep_delay tương ứng với từng hãng
hàng không carrier.
(f) Ta sẽ quan sát thấy rằng có rất nhiều điểm outliers trên các đồ thị boxplot vừa vẽ (đối
với biến dep_delay). Hãy sử dụng khoảng tứ phân vị (interquartile range) để loại bỏ các
điểm outlier này và vẽ lại các đồ thị boxplot cho dep_delay. Dựa trên đồ thị boxplot, cho
nhận xét về thời gian khởi hành trễ của từng hãng hàng không.
2. Phân tích phương sai một nhân tố (one way ANOVA)
Ta quan tâm đến việc kiểm định rằng liệu có sự khác biệt về thời gian khởi hành trễ trung
bình giữa các hãng hàng không đối với các chuyến bay khởi hành từ Portland trong năm
2014 hay không?
(a) Hãy giải thích tại sao ta cần dùng phân tích phương sai để trả lời cho câu hỏi trên. Xác
định biến phụ thuộc và các nhân tố (hay các biến độc lập).
(b) Phát biểu các giả thuyết và đối thuyết bằng lời và công thức toán. Nêu các giả định
cần kiểm tra của mô hình.
(c) Thực hiện kiểm tra các giả định của mô hình (giả định về phân phối chuẩn, tính đồng
nhất của các phương sai). Gợi ý: ta có thể sử dụng phân tích thặng dư kết hợp với việc sử
dụng đồ thị QQ – plot, kiểm định Shapiro – Wilk để kiểm tra giả định về phân phối
chuẩn, kiểm định Levene hay Bartlett để kiểm tra giả định về tính đồng nhất của các
phương sai.
(d) Thực hiện phân tích ANOVA một nhân tố. Trình bày bảng phân tích phương sai trong
báo cáo. Cho kết luận.
new_DF<-
(c) Kiểm tra dữ kiệu khuyết trong tập tin.
flights[,c("year","month","day","carrier","origin","dest","dep_time","arr_time","arr_time
","dep_delay","arr_delay","distance")]
library(questionr)
head(new_DF,3)
Nhận xét: Dựa vào kết quả thu được ở bảng thống kê tỷ lệ giá trị khuyết đối với từng
freq.na(new_DF)
biến, ta nhận thấy có nhiều giá trị khuyết tại biến arr_delay, arr_time, dep_time,
dep_delay. Vì lượng khuyết trong dữ liệu chỉ chiếm tối đa 4% lượng quan sát (dưới
10%), do đó ta lựa chọn phương pháp xoá các quan sát của biến nào có giá trị khuyết
trong tệp tin new_DF.
Kiểm tra lại số lượng và tỉ lệ quan sát chứa dữ liệu khuyết đã xoá.
28
new_DF2 <-
na.omit(new_DF)
nrow(new_DF)
nrow(new_DF2)
nrow(new_DF) - nrow(new_DF2)
Nhận xét: Ta nhận thấy số lượng quan sát sau khi xoá là 1301 quan sát, chiếm tỷ lệ 0.8%
so với dữ liệu ban đầu, có thể thấy việc xoá các quan sát của biến có giá trị khuyết trong
tệp tin newDF không ảnh hưởng nhiều đến kết quả của dữ liệu.
(d) Tính các giá trị thống kê mổ tả (cỡ mẫu, trung bình, độ lệch chuẩn, min, max, các
điểm tứ phân vị) của thời gian khởi hành trễ (biến dep_delay) của từng hãng hàng không
(carrier). Xuất kết quả ra dưới dạng bảng.
29
(e) Vẽ đồ thị boxplot cho thời gian khởi hành trễ dep_delay tương ứng với từng hãng
hàng không carrier
Nhận xét: Qua biểu đồ trên ta thấy rằng có rất nhiều điểm ngoại lai (outliers) ở biến
dep_delay, điều này có thể là nguyên nhân ảnh hưởng đến kết quả phân tích phía sau. Do
đó, ta sử dụng khoảng tứ phân vị (interquartile range) để loại bỏ các điểm outlier.
(f) Ta sẽ quan sát thấy rằng có rất nhiều điểm outliers trên các đồ thị boxplot vừa vẽ (đối
với biến dep_delay). Hãy sử dụng khoảng tứ phân vị (interquartile range) để loại bỏ các
điểm outlier này và vẽ lại các đồ thị boxplot cho dep_delay. Dựa trên đồ thị boxplot, cho
nhận xét về thời gian khởi hành trễ của từng hãng hàng không.
30
rm.out <- function(x, na.rm = TRUE, ...) {
qnt <- quantile(x, probs=c(.25, .75), na.rm =
na.rm, ...) H <- 1.5 * IQR(x, na.rm = na.rm)
y <- x
y[x < (qnt[1] - H)] <- NA
y[x > (qnt[2] + H)] <- NA
y
}
31
apply(is.na(new_DF3), 2, sum)
apply(is.na(new_DF3), 2, mean)
Nhận xét: Số lượng NA = 18732 và chiếm tỉ lệ 11.65% lượng quan sát của dữ liệu. Trong
trường hợp này, ta không chọn phương pháp xoá các NA, vì lượng NA tương đối nhiều (
>10% dữ liệu). Do đó, ta sẽ xử lý bằng phương pháp thay thế các NA bằng các giá trị trung
bình tương ứng với từng hãng hàng không.
(carrier).
32
length = tapply(new_DF3$dep_delay, new_DF3$carrier,
length) mean= tapply(new_DF3$dep_delay, new_DF3$carrier,
mean) sd= tapply(new_DF3$dep_delay, new_DF3$carrier, sd)
min= tapply(new_DF3$dep_delay, new_DF3$carrier,
min) max= tapply(new_DF3$dep_delay,
new_DF3$carrier, max)
Q1= tapply(new_DF3$dep_delay, new_DF3$carrier, quantile, probs =
0.25) Q2= tapply(new_DF3$dep_delay, new_DF3$carrier, quantile, probs
= 0.5) Q3= tapply(new_DF3$dep_delay, new_DF3$carrier, quantile,
Vẽ lại biểu đồ boxplot thể hiện phân phối của biến dep_delay theo từng hãng hàng không
(carrier).
33
Nhận xét:
Đối với hãng hàng không AA:
+ Min = - 18 : Thời gian khởi hành sớm nhất: 18 phút.
+ Max = 26 : Thời gian khởi hành trễ nhất: 26 phút.
+ Q1 = - 6 : 25% chuyến bay có thời gian khởi hành sớm hơn 6 phút.
+ Q2 = - 2 : 50% chuyến bay có thời gian khởi hành sớm hơn 2 phút.
+ Q3 = 0 : 75% chuyến bay có thời gian khởi hành sớm hơn thời điểm dự kiến bay.
Đối với hãng hàng không AS:
+ Min = - 15 : Thời gian khởi hành sớm nhất: 15 phút.
+ Max = 12 : Thời gian khởi hành trễ nhất: 12 phút.
+ Q1 = - 5 : 25% chuyến bay có thời gian khởi hành sớm hơn 5 phút.
+ Q2 = - 2.5563 : 50% chuyến bay có thời gian khởi hành sớm hơn 2.5563 phút.
+ Q3 = - 1 : 75% chuyến bay có thời gian khởi hành sớm 1 phút.
Đối với hãng hàng không B6:
+ Min = - 20 : Thời gian khởi hành sớm nhất: 20 phút.
+ Max = 31 : Thời gian khởi hành trễ nhất: 31 phút.
34
+ Q1 = - 6 : 25% chuyến bay có thời gian khởi hành sớm hơn 6 phút.
+ Q2 = - 2 : 50% chuyến bay có thời gian khởi hành sớm hơn 2 phút.
+ Q3 = 1 : 75% chuyến bay có thời gian khởi hành sớm 1 phút.
Đối với hãng hàng không DL:
+ Min = - 15 : Thời gian khởi hành sớm nhất: 15 phút.
+ Max = 16 : Thời gian khởi hành trễ nhất: 16 phút.
+ Q1 = - 4 : 25% chuyến bay có thời gian khởi hành sớm hơn 4 phút.
+ Q2 = - 2 : 50% chuyến bay có thời gian khởi hành sớm hơn 2 phút.
+ Q3 = 0 : 75% chuyến bay có thời gian khởi hành sớm hơn thời điểm dự kiến bay.
Đối với hãng hàng không F9:
+ Min = - 20 : Thời gian khởi hành sớm nhất: 20 phút.
+ Max = 36 : Thời gian khởi hành trễ nhất: 36 phút.
+ Q1 = - 6 : 25% chuyến bay có thời gian khởi hành sớm hơn 6 phút.
+ Q2 = - 2 : 50% chuyến bay có thời gian khởi hành sớm hơn 2 phút.
+ Q3 = 4 : 75% chuyến bay có thời gian khởi hành trễ từ 4 phút trở xuống.
Đối với hãng hàng không HA:
+ Min = - 16 : Thời gian khởi hành sớm nhất: 16 phút.
+ Max = 8 : Thời gian khởi hành trễ nhất: 8 phút.
+ Q1 = - 7 : 25% chuyến bay có thời gian khởi hành sớm hơn 7 phút.
+ Q2 = - 4.5056 : 50% chuyến bay có thời gian khởi hành sớm hơn 4.5056 phút.
+ Q3 = - 2 : 75% chuyến bay có thời gian khởi hành sớm hơn 2 phút.
Đối với hãng hàng không OO:
+ Min = - 17 : Thời gian khởi hành sớm nhất: 17 phút.
+ Max = 10 : Thời gian khởi hành trễ nhất: 10 phút.
+ Q1 = - 7 : 25% chuyến bay có thời gian khởi hành sớm hơn 7 phút.
+ Q2 = - 4.1136 : 50% chuyến bay có thời gian khởi hành sớm hơn 4.1136 phút.
+ Q3 = - 2 : 75% chuyến bay có thời gian khởi hành sớm hơn 2 phút.
35
Đối với hãng hàng không UA:
+ Min = - 19 : Thời gian khởi hành sớm nhất: 19 phút.
+ Max = 27 : Thời gian khởi hành trễ nhất: 27 phút.
+ Q1 = - 5 : 25% chuyến bay có thời gian khởi hành sớm hơn 5 phút.
+ Q2 = - 1 : 50% chuyến bay có thời gian khởi hành sớm hơn 1 phút.
+ Q3 = 2 : 75% chuyến bay có thời gian khởi hành trễ từ 2 phút trở xuống.
Đối với hãng hàng không US:
+ Min = - 15 : Thời gian khởi hành sớm nhất: 15 phút.
+ Max = 11 : Thời gian khởi hành trễ nhất: 11 phút.
+ Q1 = - 6 : 25% chuyến bay có thời gian khởi hành sớm hơn 6 phút.
+ Q2 = - 3.0085 : 50% chuyến bay có thời gian khởi hành sớm hơn 3.0085 phút.
+ Q3 = - 1 : 75% chuyến bay có thời gian khởi hành sớm 1 phút.
Đối với hãng hàng không VX:
+ Min = -17 : Thời gian khởi hành sớm nhất: 17 phút.
+ Max = 15 : Thời gian khởi hành trễ nhất: 15 phút.
+ Q1 = -5 : 2% chuyến bay có thời gian khởi hành sớm hơn 5 phút.
+ Q2 = -2.6272 : 5% chuyến bay có thời gian khởi hành sớm hơn 2.6272 phút.
+ Q3 = -1 : 7% chuyến bay có thời gian khởi hành sớm hơn 1 phút.
Đối với hãng hàng không WN:
+ Min = - 11 : Thời gian khởi hành sớm nhất: 11 phút.
+ Max = 45 : Thời gian khởi hành trễ nhất: 45 phút.
+ Q1 = - 2 : 2% chuyến bay có thời gian khởi hành sớm hơn 2 phút.
+ Q2 = 3 : 50% chuyến bay có thời gian khởi hành trễ từ 3 phút trở xuống.
+ Q3 = 11 : 75% chuyến bay có thời gian khởi hành trễ từ 11 phút trở xuống.
2. Phân tích phương sai một nhân tố (one way ANOVA)
Các giả định cần kiểm tra trong ANOVA một nhân tố:
+ Giả định phân phối chuẩn: Việc lệch giờ bay ở các hãng hàng không đối với các
chuyến bay khởi hành từ Portland tuân theo phân phối chuẩn.
37
+ Tính đồng nhất của các phương sai: Phương sai việc lệch giờ bay ở các hãng hàng
không đối với các chuyến bay khởi hành từ Portland bằng nhau.
(c) Kiểm tra giả định phân phối chuẩn:
Giả thuyết H0: Việc lệch giờ bay ở các hãng hàng không đối với các chuyến bay khởi
hành từ Portland tuân theo phân phối chuẩn.
Giả thuyết H1: Việc lệch giờ bay ở các hãng hàng không đối với các chuyến bay khởi
hành từ Portland không tuân theo phân phối chuẩn.
library(nortest)
ad.test(AA_PDX$dep_delay)
38
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn do đó biến dep_delay ở hãng hàng không AA không
tuân theo phân phối chuẩn. Ngoài ra, p-value ở các kiểm định ad.test bé hơn rất nhiều so
với mức ý nghĩa α = 0.05, nên ta bác bỏ giả thuyết H0, nên cũng đưa ra kết luận là biến
dep_delay ở hãng hàng không AA không tuân theo phân phối chuẩn.
ad.test(AS_PDX$dep_delay)
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn do đó biến dep_delay ở hãng hàng không AS không
tuân theo phân phối chuẩn.
Ngoài ra, p-value ở các kiểm định ad.test bé hơn rất nhiều so với mức ý nghĩa α = 0.05,
nên ta bác bỏ giả thuyết H0, nên cũng đưa ra kết luận là biến dep_delay ở hãng hàng
không AS không tuân theo phân phối chuẩn.
39
DL_PDX = subset(PDX, PDX$carrier == "DL")
qqnorm(DL_PDX$dep_delay)
qqline(DL_PDX$dep_delay)
ad.test(DL_PDX$dep_delay)
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn bị do đó biến dep_delay ở hãng hàng không B6
không tuân theo phân phối chuẩn.
Ngoài ra, p – value ở các kiểm định ad.test bé hơn rất nhiều so với mức ý nghĩa ∝=
0.05, nên ta bác bỏ giả thuyết 𝐻0, nên cũng đưa ra kết luận là biến dep_delay ở
hãng hàng không B6 không tuân theo phân phối chuẩn.
40
ad.test(F9_PDX$dep_delay)
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn do đó biến dep_delay ở hãng hàng không F9 không
tuân theo phân phối chuẩn.
Ngoài ra, p-value ở các kiểm định ad.test bé hơn rất nhiều so với mức ý nghĩa α = 0.05,
nên ta bác bỏ giả thuyết 𝐻0, nên cũng đưa ra kết luận là biến dep_delay ở hãng hàng
không F9 không tuân theo phân phối chuẩn.
41
ad.test(HA_PDX$dep_delay)
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn do đó biến dep_delay ở hãng hàng không HA không
tuân theo phân phối chuẩn.
Ngoài ra, p-value ở các kiểm định ad.test bé hơn rất nhiều so với mức ý nghĩa α = 0.05,
nên ta bác bỏ giả thuyết 𝐻0, nên cũng đưa ra kết luận là biến dep_delay ở hãng hàng
không HA không tuân theo phân phối chuẩn.
4
ad.test(OO_PDX$dep_delay)
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn do đó biến dep_delay ở hãng hàng không OO không
tuân theo phân phối chuẩn.
Ngoài ra, p-value ở các kiểm định ad.test bé hơn rất nhiều so với mức ý nghĩa α = 0.05,
nên ta bác bỏ giả thuyết 𝐻0, nên cũng đưa ra kết luận là biến dep_delay ở hãng hàng
không OO không tuân theo phân phối chuẩn.
4
ad.test(UA_PDX$dep_delay)
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn do đó biến dep_delay ở hãng hàng không UA không
tuân theo phân phối chuẩn.
Ngoài ra, p-value ở các kiểm định ad.test bé hơn rất nhiều so với mức ý nghĩa α = 0.05,
nên ta bác bỏ giả thuyết 𝐻0, nên cũng đưa ra kết luận là biến dep_delay ở hãng hàng
không UA không tuân theo phân phối chuẩn.
4
ad.test(US_PDX$dep_delay)
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn do đó biến dep_delay ở hãng hàng không US không
tuân theo phân phối chuẩn.
Ngoài ra, p-value ở các kiểm định ad.test bé hơn rất nhiều so với mức ý nghĩa α = 0.05,
nên ta bác bỏ giả thuyết 𝐻0, nên cũng đưa ra kết luận là biến dep_delay ở hãng hàng
không US không tuân theo phân phối chuẩn.
4
ad.test(US_PDX$dep_delay)
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn do đó biến dep_delay ở hãng hàng không US không
tuân theo phân phối chuẩn.
Ngoài ra, p-value ở các kiểm định ad.test bé hơn rất nhiều so với mức ý nghĩa α = 0.05,
nên ta bác bỏ giả thuyết 𝐻0, nên cũng đưa ra kết luận là biến dep_delay ở hãng hàng
không US không tuân theo phân phối chuẩn
4
ad.test(VX_PDX$dep_delay)
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn do đó biến dep_delay ở hãng hàng không VX không
tuân theo phân phối chuẩn.
Ngoài ra, p-value ở các kiểm định ad.test bé hơn rất nhiều so với mức ý nghĩa α = 0.05,
nên ta bác bỏ giả thuyết 𝐻0, nên cũng đưa ra kết luận là biến dep_delay ở hãng hàng
không VX không tuân theo phân phối chuẩn.
4
ad.test(WN_PDX$dep_delay)
Nhận xét: Biểu đồ QQ-plot cho ta thấy có nhiều giá trị quan sát không nằm trên đường
thẳng kì vọng của phân phối chuẩn do đó biến dep_delay ở hãng hàng không WN không
tuân theo phân phối chuẩn.
Ngoài ra, p-value ở các kiểm định ad.test bé hơn rất nhiều so với mức ý nghĩa α = 0.05,
nên ta bác bỏ giả thuyết 𝐻0, nên cũng đưa ra kết luận là biến dep_delay ở hãng hàng
không WN không tuân theo phân phối chuẩn.
Kiểm định giả định về tính đồng nhất của các phương sai: Giả thuyết 𝐻0 : Phương
sai việc lệch giờ bay ở các hãng hàng không đối với các chuyến bay khởi hành từ
Portland bằng nhau. Giả thiết 𝐻̅ : Có ít nhất 2 hãng hàng không đối với các chuyến bay
khởi hành từ Portland có phương sai việc lệch giờ bay khác nhau.
library(car)
leveneTest(dep_delay~as.factor(carrier), data = PDX)
4
Nhận xét: Dựa trên p-value ở kiểm định leveneTest bé hơn rất nhiều so với mức ý nghĩa
α = 0.05, nên ta bác bỏ giả thuyết 𝐻0, vậy ta có thể đưa ra kết luận là có ít nhất 2 hãng
hàng không đối với các chuyến bay khởi hành từ Portland có phương sai việc lệch giờ
bay khác nhau.
d) Thực hiện phân tích phương sai một nhân tố
Mô hình hồi quy tuyến tính: Sử dụng một mô hình hồi quy phù hợp để phân tích các
yếu tố ảnh hưởng đến việc lệch giờ đến (arr_delay) của các chuyến bay
4
Để phân tích các yếu tố ảnh hưởng đến việc lệch giờ đến (arr_delay) của các chuyến
bay, ta xem biến (arr_delay) là biến phụ thuộc, và các biến độc lập là biến hãng hàng
không (carrier), biến chỉ sân bay đi (origin), biến chênh lệch thời gian khởi hành
(dep_delay) và biến khoảng cách giữa hai sân bay (distance). Đây là những yếu tố dự
báo có thể giúp giải thích sự biến đổi về việc lệch giờ đến của các chuyến bay.
Biến phụ thuộc: arr_delay
Biến độc lập: carrier, origin, dep_delay, distance. Mô hình được biểu diễn như sau:
arr_delay = β0 + β1 × carrierAS + β2 × carrierB6 + β3 × carrierDL + β4 × carrierF9 + ...
+ β10 × carrierW N + β11 × originSEA + β12 × dep_delay + β13 × distance Ta thực hiện
ước lượng các hệ số βi , i = 0, ..., 13 dựa trên tệp tin new_DF2:
lm_model_1
Nhận <- lm(arr_delay~carrier+origin+dep_delay+distance,
xét: Từ kết quả phân tích, ta thu được: new_DF2)
̂ = −2.750𝑒 − 01; 𝛽̂ = 6.322𝑒 − 01; 𝛽̂ = 7,521𝑒 − 02; 𝛽̂ = −8.403𝑒 − 01;
𝛽summary(lm_model_1)
4
Như vậy, đường thẳng hồi quy ước lượng cho bởi phương trình sau:
arr_delay = −2.750e − 01 + 6.322e − 01 × carrierAS + 7.521e − 02 × carrierB6 − 8.403e
− 01 × carrierDL + 2.068e + 00 × carrierF9 + ... − 2.890e + 00 × carrierW N + 3.192e −
01 × originSEA + 9.965e − 01 × dep_delay − 2.684e − 03 × distance
lm_model_2
So <-hình
sánh các mô lm(arr_delay~origin+dep_delay+distance,
1 và mô hình 2: new_DF2)
summary(lm_model_2)
anova(lm_model_1, lm_model_2)
5
Nhận xét: Dựa trên việc so sánh 2 mô hình, ta thấy p − value < 2.2e − 16 rất bé so với
mức ý nghĩa α = 0.05 nên ta bác bỏ giả thuyết 𝐻0, ta có thể kết luận 2 mô hình hiệu quả
khác nhau. Mặt khác dựa vào hệ số xác định hiệu chỉnh ở mô hình 1 (AdjustedR −
squared = 0.8577) cao hơn so với mô hình 2 (AdjustedR − squared = 0.8548), chứng tỏ
sự biến thiên của biến arr_delay được giải thích nhiều hơn bởi các biến độc lập. Như vậy
mô hình 1 là mô hình hiệu quả hơn mô hình 2.
Phân tích sự tác động của các nhân tố lên việc lệch giờ đến:
Như vậy mô hình hồi quy tuyến tính về ảnh hưởng của các nhân tố lên việc lệch giờ đến
được cho bởi: arr_delay = −2.750e − 01 + 6.322e − 01 × carrierAS + 7.521e − 02 ×
carrierB6 − 8.403e − 01 × carrierDL + 2.068e + 00 × carrierF9 + ... − 2.890e + 00 ×
carrierW N + 3.192e − 01 × originSEA + 9.965e − 01 × dep_delay − 2.684e − 03 ×
distance Trước hết, ta thấy rằng p−value tương ứng với thống kê F bé hơn 2.2e−16, có ý
nghĩa rất cao. Điều này chỉ ra rằng, ít nhất một biến dự báo trong mô hình có ý nghĩa giải
thích rất cao đến việc lệch giờ đến arr_delay.
Để xét ảnh hưởng cụ thể của từng biến độc lập, ta xét trọng số (hệ số 𝛽𝑖 ) và p − value
tương ứng. Ta thấy rằng p − value tương ứng với các biến carrierHA,
carrierVX,carrierWN, dep_delay, distance bé hơn 2e−16, điều này nói lên rằng ảnh
hưởng của các biến này có ý nghĩa rất cao lên việc lệch giờ đến arr_delay. Mặt khác, hệ
số hồi quy 𝛽𝑖 của một biến dự báo cũng có thể được xem như ảnh hưởng trung bình lên
biến phụ thuộc arr_delay khi tăng một đơn vị của biến dự báo đó, giả sử rằng các biến
dự báo khác không đổi. Cụ thể, 𝛽̂ = 9.965e − 01 thì khi chênh lệch giữa giờ bay tăng 1
1
phút ta có thể kỳ vọng chênh lệch giữa giờ đến sẽ tăng lên 9.965e-01 phút (giả sử rằng
các biến dự báo khác không đổi). Với 𝛽̂ =1 −2.684e − 03 thì khi khoảng cách giữa 2 sân
bay tăng tăng 1 dặm, ta có thể kỳ vọng chênh lệch giờ đến sẽ giảm -2.684e-03 phút (giả
sử rằng các biến dự báo khác không đổi). Hệ số 𝑅2 hiệu chỉnh bằng 0.8577 nghĩa là
85.77% sự biến thiên trong việc lệch giờ đến được giải thích bởi các biến các biến độc
lập.
Kiểm tra các giả định của mô hình
Nhắc lại các giả định của mô hình hồi quy: Yi = 𝛽0 + 𝛽1. 𝑋1 + ... 𝛽𝑖 . 𝑋𝑖 + 𝜖𝑖 , i = 1, ...n.
5
+ Tính tuyến tính của dữ liệu: mối quan hệ giữa biến dự báo X và biến phụ thuộc Y được
giả sử là tuyến tính.
+ Sai số có phân phối chuẩn
+ Phương sai của các sai số là hằng số: 𝜖𝑖 ∼ N(0, 𝜎2)
+ Các sai số 𝜖1, ..., 𝜖𝑛 thì độc lập với nhau.
Thực hiện phân tích thặng dư để kiểm tra các giả định của mô hình
+ Đồ thị thứ 1 (Residuals vs Fitted) cho thấy giả định về tính tuyến tính của dữ liệu thoả
mãn.
+ Đồ thị thứ 1 và thứ 3 (Scale - Location) cho ta thấy rằng giả định về tính đồng nhất của
phương sai cũng bị vi phạm. Ta thấy sự vi phạm này có thể do có quá nhiều sai số.
+ Đồ thị thứ 4 chỉ ra có các quan trắc thứ 52723, 55299 và 120906 có thể là các điểm có
ảnh hưởng cao trong bộ dữ liệu.
5
PHẦN RIÊNG
Đề tài: KHẢO SÁT THÓI QUEN ĐI UỐNG CÀ PHÊ TẠI VIỆT NAM
Các biến chính trong bộ dữ liệu:
• Age: Tuổi (định lượng)
• Sex: Giới tính (male/ female) (phân loại)
• Job: Công việc (Student / Employee) (phân loại)
• Income: Thu nhập trung/tháng (VND) (định lượng)
• Times: Số lần đến đi uống cà phê trong 1 tuần (định lượng)
• Lenght: Thời gian trung bình khi ngồi uống cà phê trong 1 lần. (định lượng)
• Thing: Loại thức uống thường xuyên sử dụng khi đi uống cà phê. (Tea / Coffee /
Juices)(phân loại)
• Price: Giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống. (định lượng)
Yêu cầu:
1. t-test: So sánh giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống giữa
Nam và Nữ.
2. t-test: So sánh giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống giữa sinh
viên và người có việc làm.
3. Mô hình anova: Vịêc sử dụng loại thức uống nào thường xuyên khi đi uống cà phê
có ảnh hưởng đến giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống hay
không?
4. Mô hình hồi quy: Phân tích những nhân tố ảnh hưởng đến giá tiền trung bình sẵn
sàng thanh toán cho một cốc đồ uống:
• Biến phụ thuộc: Price
• Biến độc lập: Các biến còn lại.
5
THỰC HIỆN:
1. Đọc dữ liệu:
library(readxl)
2. Làm sạch dữ liệu:
Coffee_data <-
read_excel("~/Desktop/Coffee_data.xlsx")
Kiểm tra dữ liệu khuyết trong tệp tin:
## # A tibble: 6 × 8
apply(is.na(Coffee_data), 2, which)
##Age Sex JobIncome Times Length Thing Price ## <dbl> <chr> <chr><dbl> <dbl> <dbl> <chr> <d
## integer(0)
Nhận xét: Tệp tin không có dữ liệu khuyết.
3. Làm rõ dữ liệu:
Tính giá trị thông kê mô tả cho các biến “Age”,“Income”,“Times”,“Length”,“Price”:
mean = apply(Coffee_data[,c("Age","Income","Times","Length","Price")],2, mean) median = apply(Cof
5
sd = apply(Coffee_data[,c("Age","Income","Times","Length","Price")],2,sd)
max = apply(Coffee_data[,c("Age","Income","Times","Length","Price")],2,max)
min = apply(Coffee_data[,c("Age","Income","Times","Length","Price")],2, min)
t(data.frame(mean,median,sd,max,min))
## Age Income Times Length Price
## mean 23.901961 7.794118 3.196078 3.696078 43.62745
## median 21.000000 7.000000 3.000000 3.000000 40.00000
## sd 8.227405 5.906925 1.865686 2.081054 18.44122
## max 42.000000 22.000000 8.000000 8.000000 80.00000
## min 16.000000 1.500000 1.000000 1.000000 20.00000
Vẽ biểu đồ phân bố tần số cho biến Price:
Nhận xét: Dựa trên các đồ thị, ta thấy giá tiền trung bình sẵn sàng thanh toán cho một cốc
đồ uống có phân bố trong khoảng 20.000đ - 80.000đ. Mức giá tiền trung bình sẵn sàng
thanh toán cho một cốc đồ uống có tần số cao nhất trong khoảng 20.000đ - 30.000đ, Mức
5
giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống có tần số thấp nhất trong
khoảng 50.000đ - 70.000đ.
Vẽ biểu đồ boxplot thể hiện phân phối của Price theo Sex:
Nhận xét: Dựa trên đồ thị, ta dự đoán không có sự khác biệt nhiều về giá tiền trung bình
sẵn sàng thanh toán cho một cốc đồ uống của nam và nữ.
Vẽ biểu đồ boxplot thể hiện phân phối của Price theo Job:
5
Nhận xét: Dựa trên đồ thị, ta dự đoán có sự khác biệt nhiều về giá tiền trung bình sẵn
sàng thanh toán cho một cốc đồ uống của người có việc làm và không có việc làm (cụ thể
là người có việc làm sẽ sẵng sàng bỏ ra số tiền cao hơn để thanh toán cho 1 cốc đồ uống).
Vẽ biểu đồ boxplot thể hiện phân phối của Price theo Thing:
5
Nhận xét: Dựa trên đồ thị, ta dự đoán có sự khác biệt về giá tiền trung bình sẵn sàng
thanh toán cho một cốc đồ uống đối với mỗi loại thức uống (cà phê, trà, nước trái cây).
Vẽ biểu đồ phân tán thể hiện phân phối của charges theo
“Age”,“Income”,“Times”,“Length”:
5
pairs(Price ~ Income,main = "pairs of Price for Income",data=Coffee_data)
5
pairs(Price ~ Times,main = "pairs of Price for Times",data=Coffee_data)
6
pairs(Price ~ Length,main = "pairs of Price for Length",data=Coffee_data)
6
Nhận xét: Dựa trên các đồ thị, ta thấy Price có mối quan hệ tuyến tính mạnh với các biến
Income, Age, Length; còn các biến Times thì không có.
4. t-test: So sánh giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống giữa
Nam và Nữ.
t.test(Price ~ Sex, data = Coffee_data)
Nhận xét:
##
## Welch Two Sample t-test
##
## data: Price by Sex
## t = 1.0565, df = 47.445, p-value = 0.2961
## alternative hypothesis: true difference in means between group Nam and group Nữ
is not equal to 0
## 95 percent confidence
interval: ## -4.680954
15.041456
## sample estimates:
## mean in group Nam mean in group
6
Giả thuyết H0: Giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống giữa Nam và
Nữ bằng nhau.
Giả thuyết H1: Giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống giữa Nam
cao hơn so với Nữ.
Vì pvalue = 0.2961 > mức ý nghĩa 5% nên chấp nhận giả thiết H0. Vậy giá tiền trung
bình sẵn sàng thanh toán cho một cốc đồ uống giữa Nam và Nữ bằng nhau.
5. t-test: So sánh giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống giữa
người có việc làm và sinh viên
t.test(Price ~ Job, data = Coffee_data)
Nhận xét:
##
Giả thuyết H0: Giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống giữa giữa
## Welch Two Sample t-test
người có việc làm và sinh viên bằng nhau
##
## data:
Giả thuyếtPrice
H1: by
GiáJob
tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống giữa giữa
## t =có
người 5.6682, df =cao
việc làm 35.453, p-value
hơn sinh viên = 2.028e-06
## alternative hypothesis: true difference in means between group Employee and group
Vì pvalueis= not
S tudent 2.028e-06
equal to<0mức ý nghĩa 5% nên bác bỏ H0, chấp nhận H1. Vậy giá tiền
trung
## 95bình sẵn sàng
percent thanh toán
confidence cho một cốc đồ uống giữa giữa người có việc làm cao hơn
interval:
sinh viên.
## 15.05438 31.84377
6.## sample
Mô hình estimates:
anova: Vịêc sử dụng loại thức uống nào thường xuyên khi đi uống cà phê
## mean in group
có ảnh hưởng đếnEmployee
giá tiềnmean
trunginbình
group
sẵn sàng thanh toán cho một cốc đồ uống hay
Student ##
không? 56.04167 32.59259
6
Giả thiết H1: Có ít nhất 2 loại thức uống mà giá tiền trung bình sẵn sàng thanh toán cho
một cốc đồ uống khác nhau.
Các giả định cần tiến hành trước khi phân tích ANOVA:
• Các tổng thể này có phân phối chuẩn: Giá tiền trung bình sẵn sàng thanh toán cho
một cốc đồ uống ở 3 loại thức uống tuân theo phân phối chuẩn
• Tính đồng nhất của các phương sai: Phương sai về giá tiền sẵn sàng thanh toán cho
một cốc đồ uống ở 3 loại thức uống bằng nhau.
Lọc dữ liệu tương ứng với từng loại thức uống:
Coffee<-subset(Coffee_data,Coffee_data$Thing
Kiểm tra giả định phân phối chuẩn:
=="Coffee") Tea<-subset(Coffee_data,Coffee_data$Thing
•=="Tea")
Đối với coffee:
Juice<-subset(Coffee_data,Coffee_data$Thing
qqnorm(Coffee$Price)
qqline(Coffee$Price)
6
Nhận xét:
Biểu đồ QQ-plot cho ta thấy những giá trị quan sát đa phần không nằm trên đường thẳng
kì vọng của phân phối chuẩn do đó biến Price ở loại thức uống coffee không tuân theo
phân phối chuẩn.
Ngoài ra, ta có thể dùng hàm shapiro.test để kiểm tra:
shapiro.test(Coffee$Price)
Nhận xét:
##
Giả thiết H0: Giá tiền sẵn sàng chi trả cho 1 cốc coffee tuân theo phân phối chuẩn
## Shapiro-Wilk normality test
## thiết H1: Giá tiền sẵn sàng chi trả cho 1 cốc coffee không tuân theo phân phối chuẩn
Giả
## data: Coffee$Price
Vì
##Pr(>F) = 0.002338
W = 0.80448, bé hơn
p-value mức ý nghĩa 5% nên ta bác bỏ H0, chấp nhận H1. Vậy biến
= 0.002338
price ở loại thức uống coffee không tuân theo phân phối chuẩn.
• Đối với Tea:
qqnorm(Tea$Pric
e)
6
Nhận xét:
Biểu đồ QQ-plot cho ta thấy những giá trị quan sát đa phần không nằm trên đường thẳng
kì vọng của phân phối chuẩn do đó biến Price ở loại thức uống Tea không tuân theo phân
phối chuẩn.
Ngoài ra, ta có thể dùng hàm shapiro.test để kiểm tra:
shapiro.test(Tea$Price)
Nhận xét:
##
Giả thiết H0: Giá tiền sẵn sàng chi trả cho 1 cốc Tea tuân theo phân phối chuẩn
## Shapiro-Wilk normality test
## thiết H1: Giá tiền sẵn sàng chi trả cho 1 cốc Tea không tuân theo phân phối chuẩn
Giả
## data: Tea$Price
## W = 0.90616, p-value = 0.04615
6
Vì Pr(>F) = 0.04615 bé hơn mức ý nghĩa 5% nên ta bác bỏ H0, chấp nhận H1. Vậy biến
price ở loại thức uống Tea không tuân theo phân phối chuẩn.
• Đối với Juice:
qqnorm(Juice$Price)
qqline(Juice$Price)
Nhận xét:
Biểu đồ QQ-plot cho ta thấy những giá trị quan sát đa phần trên đường thẳng kì vọng của
phân phối chuẩn do đó biến Price ở loại thức uống Juice tuân theo phân phối chuẩn.
Ngoài ra, ta có thể dùng hàm shapiro.test để kiểm tra:
shapiro.test(Juice$Price)
##
## Shapiro-Wilk normality test
##
## data: Juice$Price
## W = 0.90468, p-value = 0.1551
6
Nhận xét:
Giả thiết H0: Giá tiền sẵn sàng chi trả cho 1 cốc Juice tuân theo phân phối chuẩn
Giả thiết H1: Giá tiền sẵn sàng chi trả cho 1 cốc Juice không tuân theo phân phối chuẩn
Vì Pr(>F) = 0.1551 > hơn mức ý nghĩa 5% nên ta chấp nhận giả thuyết H0. Vậy biến
price ở loại thức uống Juice tuân theo phân phối chuẩn.
Thực hiện kiểm tra giả định tính đồng nhất của phương sai:
library(car)
## Loading required package: carData
leveneTest(Price~as.factor(Thing),data=Coffee_data)
Nhận xét:
## Levene's
Giả thiết H0: Test for Homogeneity
Phương sai giá tiền sẵnofsàng
Variance
chi trả(center = đồ uống ở các nhóm thức
cho 1 cốc
median)
uống bằng##nhauDf F value Pr(>F)
## group 2 0.3642 0.6967
## thiết48H1: Có ít nhất 2 nhóm thức uống có phương sai giá tiền sẵn sàng chi trả cho 1
Giả
cốc đồ uống khác nhau.
Vì Pr(>F) = 0.6967 > mức ý nghĩa 5% nên ta chấp nhận H0. Vậy phương sai giá tiền sẵn
sàng chi trả cho 1 cốc đồ uống ở các nhóm thức uống bằng nhau.
Mặc dù một số giả định về phân phối chuẩn không thoả mãn. Tuy nhiên, để tiếp tục thực
hiện phân tích phương sai, ta sẽ giả sử các giả định trên thoả mãn.
Thực hiện phân tích phương sai một nhân tố:
anova_model<-aov(Price~as.factor(Thing),data=Coffee_data)
Nhận xét: Vì Pr(>F) = 0.0684 lớn hơn mức ý nghĩa 5% nên chập nhận H0. Vậy giá tiền
summary(anova_model)
## Df Sum Sq Mean Sq F value Pr(>F)
## as.factor(Thing) 2 1798 899.0 2.838 0.0684 .
## Residuals48 15206 316.8 ## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
trung bình sẵn sàng thanh toán cho một cốc đồ uống ở 3 loại thức uống bằng nhau.
6
Vậy vịêc sử dụng loại thức uống nào thường xuyên khi đi uống cà phê không ảnh hưởng
đến giá tiền trung bình sẵn sàng thanh toán cho một cốc đồ uống.
7. Hồi quy: Phân tích các nhân tố ảnh hưởng đến giá tiền trung bình sẵn sàng thanh
toán cho một cốt đồ uống.
Xây dựng mô hình 1 trong đó:
• Biến phụ thuộc: Price
• Biến độc lập: tất cả các biến còn lại.
6
Giả thiết H0: Các hệ số hồi quy ứng với các biến không có ý nghĩa thống kê
Giả thiết H1: Các hệ số hồi quy ứng với các biến có ý nghĩa thống kê
Vì Pr ứng với các biến Times, Length, SexNữ, JobStudent, ThingJuice, ThingTea đều lớn
hơn mức ý nghĩa 5% nên ta chấp nhận giả thuyết H0. Do đó các hệ số ứng với các biến
trên không có ý nghĩa thống kê, ta sẽ loại bỏ các biến này ra khỏi mô hình.
Các hệ số ứng với các biến còn lại đều có Pr bé hơn mức ý nghĩa 5% nên ta sẽ bác bỏ H0,
chấp nhận H1, tức hệ số hồi quy ứng với các biến này có ý nghĩa thống kê. Do đó, ta
không cần loại bỏ những biến này ra khỏi mô hình.
Xây dựng mô hình 2 loại bỏ biến Length từ mô hình 1.
7
M3 = lm(Price ~ Age + Income + Sex + Job + Thing, data = Coffee_data)
summary(M3)
##
## Call:
## lm(formula = Price ~ Age + Income + Sex + Job + Thing, data = Coffee_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.6812 -3.4253 -0.0575 2.7615 11.1251
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.2042 3.8258 -0.838 0.406826
## Age 1.4095 0.2143 6.576 4.79e-08 ***
## Income 1.3113 0.3512 3.734 0.000538 ***
## SexNữ 2.6674 1.5361 1.736 0.089481 .
## JobStudent 2.4674 2.3263 1.061 0.294625
## ThingJuice 1.0797 1.8889 0.572 0.570501
## ThingTea 0.4580 1.7693 0.259 0.796964
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.08 on 44 degrees of freedom
## Multiple R-squared: 0.9332, Adjusted R-squared: 0.9241
## F-statistic: 102.5 on 6 and 44 DF, p-value: < 2.2e-16
Xây dựng mô hình 4 loại bỏ biến Job từ mô hình 3.
##
## Call:
## lm(formula = Price ~ Age + Income + Sex + Thing, data = Coffee_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.9292 -3.6049 0.1795 3.1009 11.6644
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.5689 3.5062 -0.447 0.656692
## Age 1.4616 0.2089 6.996 1.03e-08 ***
7
## Income 1.0953 0.2865 3.823 0.000402 ***
## SexNữ 2.9448 1.5158 1.943 0.058327 .
## ThingJuice 1.3188 1.8780 0.702 0.486162
## ThingTea 0.2888 1.7646 0.164 0.870741
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.087 on 45 degrees of freedom
## Multiple R-squared: 0.9315, Adjusted R-squared: 0.9239
## F-statistic: 122.4 on 5 and 45 DF, p-value: < 2.2e-16
Xây dựng mô hình 5 loại bỏ biến Thing từ mô hình 4.
7
##
## Residuals:
## Min 1Q Median 3Q
Max ## -8.784 -4.800 0.179
3.518 12.788 ##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.8003 3.1377 0.574 0.568816
## Age 1.3695 0.2055 6.666 2.39e-08 ***
## Income 1.1668 0.2862 4.077 0.000171
*** ## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' '
1 ##
## Residual standard error: 5.153 on 48 degrees of freedom
## Multiple R-squared: 0.925, Adjusted R-squared: 0.9219
## F-statistic: 296.1 on 2 and 48 DF, p-value: < 2.2e-16
anova(M1,M2)
Nhận xét:
## Analysis
Giả thiết H0: of Variance
Hai mô hình 1, 2 hiệu quả như nhau
Table ##
## Model
Giả thiết H1:1: Price
Hai mô ~ Age
hình+1,Income + Times
2 hiệu quả khác +nhau
Length + Sex + Job + Thing
## Model 2: Price ~ Age + Income + Times + Sex + Job + Thing
Vì
##xác suất quan
Res.Df RSSsátDf
PrSum
= 0.8286
of Sq> mức
F ý nghĩa 5% nên chấp nhận giả thiết H0. Vậy mô
hình 1, 2##hiệu
Pr(>F) 1 quả giống nhau. Mặt khác biến bỏ đi là biến Length không có ý nghĩa
42 1126.7
thống
## 2 kê43nên việc bỏ
1128.0 -1 biến Length
-1.2732 không
0.0475 ảnh hưởng đến mô hình hồi quy, do vậy mô
0.8286
hình 2 hiệu quả hơn mô hình 1.
anova(M2,M3)
## Analysis of Variance
Table ##
## Model 1: Price ~ Age + Income + Times + Sex + Job + Thing
## Model 2: Price ~ Age + Income + Sex + Job + Thing
## Res.Df RSS Df Sum of Sq F Pr(>F)
7
## 1 43 1128.0
## 2 44 1135.3 -1 -7.3386 0.2798 0.5996
Nhận xét:
Giả thiết H0: Hai mô hình 2, 3 hiệu quả như nhau
Giả thiết H1: Hai mô hình 2, 3 hiệu quả khác nhau
Vì xác suất quan sát Pr = 0.5996 > mức ý nghĩa 5% nên chấp nhận giả thiết H0. Vậy mô
hình 2, 3 hiệu quả giống nhau. Mặt khác biến bỏ đi là biến Times không có ý nghĩa thống
kê nên việc bỏ biến Times không ảnh hưởng đến mô hình hồi quy, do vậy mô hình 3 hiệu
quả hơn mô hình 2.
anova(M3,M4)
Nhận xét:
## Analysis
Giả thiết H0: of Variance
Hai mô hình 3, 4 hiệu quả như nhau
Table ##
## Model
Giả thiết H1:1: Price
Hai mô~ Age
hình+3,Income + Sex
4 hiệu quả + Job
khác + Thing
nhau
## Model 2: Price ~ Age + Income + Sex + Thing
Vì
##xác suất quan
Res.Df RSSsátDf
PrSum
= 0.2946
of Sq> mức
F ý nghĩa 5% nên chấp nhận giả thiết H0. Vậy mô
hình 3, 4##hiệu
Pr(>F) 1 quả giống nhau. Mặt khác biến bỏ đi là biến Job không có ý nghĩa thống
44 1135.3
kê
##nên
2 việc bỏ biến-1Job
45 1164.3 không1.125
-29.029 ảnh hưởng
0.2946đến mô hình hồi quy, do vậy mô hình 4 hiệu
quả hơn mô hình 3.
anova(M4,M5)
Nhận xét:
## Analysis of Variance
Giả thiết H0: Hai mô hình 4, 5 hiệu quả như nhau
Table ##
## Model 1: Price ~ Age + Income + Sex +
Thing ## Model 2: Price ~ Age + Income + Sex
## Res.Df RSS Df Sum of Sq F
Pr(>F) ## 1 45 1164.3
## 2 47 1178.1 -2 -13.754 0.2658 0.7678
7
Giả thiết H1: Hai mô hình 4, 5 hiệu quả khác nhau
Vì xác suất quan sát Pr = 0.7678 > mức ý nghĩa 5% nên chấp nhận giả thiết H0. Vậy mô
hình 4, 5 hiệu quả giống nhau. Mặt khác biến bỏ đi là biến Thing không có ý nghĩa thống
kê nên việc bỏ biến Job không ảnh hưởng đến mô hình hồi quy, do vậy mô hình 5 hiệu
quả hơn mô hình 4.
anova(M5,M6)
Nhận xét:
## Analysis of Variance
Giả thiết H0: Hai mô hình 5, 6 hiệu quả như nhau
Table ##
## Model
Giả thiết H1:1: Price
Hai mô ~ Age
hình+5,Income + khác nhau
6 hiệu quả
Sex ## Model 2: Price ~ Age + Income
Vì
##xác suất quan
Res.Df RSSsátDf
PrSum
= 0.0555
of Sq> mức F ý nghĩa 5% nên chấp nhận giả thuyết H0. Vậy
mô hình##
Pr(>F) 5, 16 hiệu quả giống nhau. Mặt khác biến bỏ đi là biến Sex không có ý nghĩa
47 1178.1
thống
## 2 kê48 nên việc bỏ
1274.8 -1 biến Sex3.8561
-96.657 không 0.0555
ảnh hưởng đến mô hình hồi quy, do vậy mô hình 6
hiệu
. ## quả
--- hơn mô hình 5.
## việc
Từ Signif. codes:
so sánh 0 '***'
các 0.001
mô hình, mô'**' 0.01
hình '*' mô
6 là 0.05hình
'.' 0.1 ' ' 1quả nhất.
hiệu
plot(M6,which =1)
7
Nhận xét: Đường màu đỏ gần gấp khúc, có thể nói không thỏa mãn giả định tuyến tính
giữa price và các biến độc lập. Các sai số hồi quy không phân tán ngẫu nhiên quanh
đường thẳng Y = 0, cho thấy phương sai của các sai số là không hằng số. Ta có thể luận
mô hình hồi quy chưa đủ tốt để thực hiện dự báo.