You are on page 1of 78

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÁO CÁO BÀI TẬP LỚN


MÔN XÁC SUẤT THỐNG KÊ
GVHD: NGUYỄN BÁ THI

Sinh viên: Phạm Mai Huyên

MSSV: 2013342

Lớp: L19

Khoa: Cơ Khí

Thành phố Hồ Chí Minh, tháng 04, năm 2022.


PHẦN CHUNG
A.BÀI TẬP 2
Tập tin “diem_so.csv” chứa thông tin về điểm toán của các em học sinh trung học thuộc
hai trường học ở Bồ Đào Nha. Các thuộc tính dữ liệu bao gồm điểm học sinh, nơi cư trú,
và một số hoạt động xã hội khác. Dữ liệu được thu thập bằng cách sử dụng báo cáo của
các trường và các kết quả khảo sát sinh viên. Dữ liệu gốc được cung cấp tại:
https://archive.ics.uci.edu/ml/datasets/student+performance.
Các biến chính trong bộ dữ liệu:
• G1: Điểm thi học kì 1.
• G2: Điểm thi học kì 2.
• G3: Điểm thi cuối khóa.
• studytime: Thời gian tự học trên tuần (1- ít hơn 2 giờ, 2- từ 2 đến 5 giờ, 3- từ 5-10 giờ,
or 4- lớn hơn 10 giờ)
• failures: số lần không qua môn( 1,2,3 hoặc 4 chỉ nhiều hơn hoặc bằng 4 lần)
• absences: số lần nghỉ học
• higher: có muốn học cao hơn hay không (yes: có, no: không)
• age: tuổi của học sinh
Câu hỏi:
1. Đọc dữ liệu (Import data): Hãy dùng lệnh read.csv() để đọc tệp tin.
2. Làm sạch dữ liệu (Data cleaning):
a. Hãy trích ra một dữ liệu con đặt tên là new_DF chỉ bao gồm các biến chính mà ta quan
tâm như đã trình bày trong phần giới thiệu dữ liệu. Từ câu hỏi này về sau, mọi yêu cầu xử
lý đều dựa trên tập dữ liệu con new_DF này.
b. Kiểm tra các dữ liệu bị khuyết trong tập tin. (Các câu lệnh tham khảo: is.na(), which(),
apply()). 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.
3. Làm rõ dữ liệu (Data visualization):
a. Đối với các biến liên tục, hãy tính các giá trị thống kê mô tả gồm: trung bình, trung vị,
độ lệch chuẩn, giá trị lớn nhất và giá trị nhỏ nhất. Xuất kết quả với dưới dạng bảng. (Hàm
gợi ý: mean(), median(), sd(), min(), max(), apply(), as.data.frame(), rownames()).

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

Giả thiết 𝐇̅ : Hai mô hình 1, 2 hiệu quả khác nhau


Vì xác suất quan sát Pr > mức ý nghĩa α=0,05 nên chấp nhận giả thiết H. Vậy mô hình 1,
2 hiệu quả giống nhau. Mặt khác biến bỏ đi là biến higher không có ý nghĩa thống kê nên
việc bỏ biến higher không ảnh hưởng đến mô hình hồi quy, do vậy mô hình 2 hiệu quả
hơn mô hình 1.
Sử dụng lệnh anova để so sánh mô hình 2 và 3:

18
anova(M2,M3)

Nhận xét:
Giả thiết H: Hai mô hình 2, 3 hiệu quả như nhau

Giả thiết 𝐇̅ : Hai mô hình 2, 3 hiệu quả khác


nhau
Vì xác suất quan sát Pr < mức ý nghĩa α=0,05 nên bác bỏ giả thiết H, chấp nhận giả thiết
𝐇̅ . Vậy hai mô hình hai mô hình 2, 3 hiệu quả khác nhau. Vì biến failures trong đó vẫn
có failure1 có ảnh hưởng tới mô hình (do hệ số ứng với failures1 có ý nghĩa thống kê),
do đó bỏ đi biến failures sẽ gây ảnh hưởng tới mô hình, khiến mô hình trở nên tệ hơn. Do
vậy mô hình 2 hiệu quả hơn mô hình 3.
Kết luận: Từ việc so sánh các mô hình, mô hình 2 là mô hình hợp lý nhất trong 3 mô hình.
c. Để đánh giá sự tác động của các biến lên điểm thi cuối kì, ta quan tâm các hệ số hồi
quy p-value tương ứng và các hệ số hồi quy ứng với các biến.
Ta thấy rằng p-value tương ứng với G2 <2.10-6, điều này nói lên rằng ảnh hưởng
của G2 có ý nghĩa rất lớn lên biến điểm thi cuối kỳ G3. Ta còn nhận thấy sự ảnh hưởng
G1, absences, failures1 lên điểm thi cuối kỳ, ít ảnh hưởng hơn so với G2. Các biến
failures2, failures3, studytime2, studytime3, age không có ý nghĩa với mô hình hồi quy
nên không có ảnh hưởng nhiều đến điểm thi G3.
Mặt khác các hệ số hồi quy của 1 biến dự báo cũng được xem như ảnh hưởng trung bình
lên biến phụ thuộc là điểm thi cuối kỳ khi tăng 1 đơn vị của biến dự báo đó, giả sử khi
các biến dự báo khác không đổi. Cụ thể hơn, hệ số hồi quy ứng với G2 = 0,96650 thì ứng
với điểm thi G2 tăng 1đ thì ta có thể kỳ vọng điểm thi cuối kỳ có thể trung bình tăng lên
0,96650đ (giả sử rằng các biến dự báo còn lại không đổi).
Tương tự cũng như hệ số hồi quy ứng với G1 = 0,15774 thì ứng với điểm thi G1 tăng 1đ
thì ta có thể kỳ vọng điểm thi cuối kì trung bình tăng 0,15774đ (giả sử rằng các biến dự
báo còn lại không đổi).
Tương tự đối với các biến còn lại.
d. Suy luận sự tác động của các biến điểm thi cuối kì
19
tacdong=calc.relimp(M2)
tacdong

e. Vẽ đồ thị sai số hồi quy và sai số dự báo:

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.

THỰC HIỆN BẰNG R STUDIO


1. Nhập và làm sạch dữ liệu, thực hiện các thống kê mô tả.
(a) Nhập dữ liệu
load("D:/xstk/flights.rda")
27
head(flights,3)

(b) làm sạch dữ liệu

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.

length = tapply(new_DF2$dep_delay, new_DF2$carrier,


length) mean = tapply(new_DF2$dep_delay,
new_DF2$carrier, mean) sd =
tapply(new_DF2$dep_delay,new_DF2$carrier, sd)
min = tapply(new_DF2$dep_delay,new_DF2$carrier,
min) max =
tapply(new_DF2$dep_delay,new_DF2$carrier, max)
Q1 = tapply(new_DF2$dep_delay,new_DF2$carrier, quantile, prosb =
0.25) Q2 = tapply(new_DF2$dep_delay,new_DF2$carrier, quantile, prosb

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

boxplot(dep_delay ~ carrier, xlab = "Carrier", ylab = "Dep_delay", main = "Boxplot of


Dep_delay for a category of Carrier", data = new_DF2)

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
}

Kiếm tra tổng


new_DF3 NA và tỷ lệ NA
<- rbind(AA,AS,B6,DL,F9,HA,OO,UA,US,VX,WN)

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.

new_DF3 <- rbind(AA,AS,B6,DL,F9,HA,OO,UA,US,VX,WN)


Nhận xét: Sau khi thay thế các NA bằng các giá trị trung bình, dữ liệu đã không còn NA.
apply(is.na(new_DF3),
Tính lại các giá trị thống2,kêwhich)
mô tả cho biến dep_delay theo 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).

boxplot(dep_delay ~ carrier, xlab = "Carrier", ylab = "Dep_delay", main = "Boxplot of


Dep_delay for a category of Carrier", data = new_DF3)

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)

PDX = subset(new_DF3, new_DF3$origin == "PDX")


head(PDX,3)
36
(a) Giải thích lý do sử dụng ANOVA một nhân tố:
Ta có 11 hãng hàng không có chuyến bay khởi hành từ Portland trong năm 2014. Để thực
hiện so sánh trung bình của nhiều nhóm, phương pháp tối ưu nhất là dùng phân tích
phương sai. Nếu chỉ so sánh 2 trung bình của 2 nhóm, ta có thể dùng t-test. Vì vậy nếu
dùng t-test cho bài toán này, ta phải thực hiện kiểm định rất nhiều lần. Phương pháp phân
tích phương sai cho ta kết luận sự bằng nhau hoặc khác nhau giữa các nhóm so sánh
thông qua một phép kiểm định duy nhất.
Như vậy ta sẽ sử dụng mô hình ANOVA một nhân tố: đánh giá sự khác biệt trong việc
lệch giờ bay (dep_delay) giữa các hãng bay đối với các chuyến bay khởi hành từ Portland
trong năm 2014.
Trong đó:
Biến phụ thuộc: dep_delay
Các nhân tố (hay biến độc lập): carrier
(b) Đặt giả thuyết:
+ Giả thuyết H0: µ1 = µ2= ... = µ1 1⇔ Việc lệch giờ bay 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 năm 2014 bằng nhau.
+ Đối thuyết H1: ∃𝑚𝑢𝑖 ≠ 𝑚𝑢𝑗 với (i ≠ j) ⇔ 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 năm 2014 có việc lệch giờ bay trung bình khác nhau.
Bảng ANOVA một nhân tố:

Nguồn của sự biên thiên SS df MS F


Giữa các nhôm SSB k-1 MSB
𝑀𝑆𝐵
Trong từng nhóm SSW n-k MSW 𝐹=
𝑀𝑆𝑊
Tổng SST n-1

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.

AA_PDX = subset(PDX, PDX$carrier ==


"AA") qqnorm(AA_PDX$dep_delay)
qqline(AA_PDX$dep_delay)

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.

AS_PDX = subset(PDX, PDX$carrier ==


"AS") qqnorm(AS_PDX$dep_delay)
qqline(AS_PDX$dep_delay)

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.

F9_PDX = subset(PDX, PDX$carrier == "F9")


qqnorm(F9_PDX$dep_delay)
qqline(F9_PDX$dep_delay)

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.

HA_PDX = subset(PDX, PDX$carrier ==


"HA") qqnorm(HA_PDX$dep_delay)
qqline(HA_PDX$dep_delay)

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.

OO_PDX = subset(PDX, PDX$carrier ==


"OO") qqnorm(OO_PDX$dep_delay)
qqline(OO_PDX$dep_delay)

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.

UA_PDX = subset(PDX, PDX$carrier ==


"UA") qqnorm(UA_PDX$dep_delay)
qqline(UA_PDX$dep_delay)

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.

US_PDX = subset(PDX, PDX$carrier ==


"US") qqnorm(US_PDX$dep_delay)
qqline(US_PDX$dep_delay)

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.

US_PDX = subset(PDX, PDX$carrier ==


"US") qqnorm(US_PDX$dep_delay)
qqline(US_PDX$dep_delay)

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

VX_PDX = subset(PDX, PDX$carrier ==


"VX") qqnorm(VX_PDX$dep_delay)
qqline(VX_PDX$dep_delay)

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.

WN_PDX = subset(PDX, PDX$carrier ==


"WN") qqnorm(WN_PDX$dep_delay)
qqline(WN_PDX$dep_delay)

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ố

anova <- aov(dep_delay~as.factor(carrier), data = PDX)


Nhận xét: Dựa trên kết quả ANOVA cho thấy:
summary(anova)

+ SSB = 748990, bậc tự do k − 1 = 10(k = 11)


+ SSW = 2594172, bậc tự do N − k = 52808 − 11 = 52797 (N là tổng số phần tử khảo sát
ở tất cả các nhóm)
+ MSB = SSB/(k − 1) = 74899 + MSW = SSW/(N − k) = 49
+ Giá trị thống kê kiểm định: f = MSB/MSW = 1524
+ Mức ý nghĩa quan sát: p − value < 2e − 16.
Dựa vào p − value < 2e − 16 rất bé so với mức ý nghĩa α = 0.05 nên ta bác bỏ
được giả thuyết H0. Ngoài ta, ta có thể dựa vào f = 1524 > ngưỡng𝑓𝑎;𝑘−1;𝑁−𝑘 =
𝑓0.05;10;52797 = 1.8309 ta cũng đưa ra kết luận là bác bỏ được giả thuyết 𝐻0.
Vậy có sự khác biệt về việc lệch giờ bay 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.

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)

̂0𝛽 = 2.068𝑒 + 00; 𝛽̂ =1 6.628𝑒 + 00; 𝛽̂ = 21.858𝑒 − 01; 𝛽̂ = −3.494𝑒


3
+ 00;
4 5 6 7
𝛽̂ = 1.160𝑒 − 01; 𝛽̂ = −2.075𝑒 + 00; 𝛽̂ = −2.890𝑒 + 00; 𝛽̂ = 3.192𝑒 − 01;
8 9 10 11
𝛽̂ = 9.965𝑒 − 01; 𝛽̂ = −2.684𝑒 − 03
12 13

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

Kiểm định các hệ số hồi quy:


Giả thuyết H0: Hệ số hồi quy không có ý nghĩa thống kê (𝛽𝑖 = 0)
Giả thuyết H1: Hệ số hồi quy có ý nghĩa thống kê (𝛽𝑖 ≠ 0)
+ P r(> |t|) của các hệ số ứng với biến carrierB6, carrierOO, carrierUS lớn hơn mức ý
nghĩa α = 0.05 nên ta chưa đủ cơ sở để bác bỏ giả thuyết 𝐻0. Do đó hệ số ứng với các
biến này không có ý nghĩa với mô hình hồi quy ta xây dựng. Ta có thể cân nhắc việc loại
bỏ các biến này ra khỏi mô hình.
Ta xây dựng mô hình 2: là mô hình loại bỏ biến carrier ra khỏi mô hình 1

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

par(mfrow = c(2, 2))


Nhận xét:
plot(lm_model_1)
+ Đồ thị Normal Q-Q cho thấy giả định sai số có phân phối chuẩn chưa thực sự thỏa mãn.

+ Đồ 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

## 118 NữStudent 3 22 Coffee30


## 216 Nam Student 1.5 3 1 Coffee20
## 320 Nữ Student 2 21 Tea 30
## 425 Nam Employee834 Coffee50
## 516 NữStudent 3 24 Tea 40
## 616 NữStudent 2.5 42 Coffee30

## 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:

hist(Coffee_data$Price, ylim = c(0,25), xlab ="Price", main = "Histogram of Price",


label s = T)

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:

boxplot(Price~Sex,data=Coffee_data, main = "Boxplot of Price for 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:

boxplot(Price~Job,data=Coffee_data, main = "Boxplot of Price for 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:

boxplot(Price~Thing,data=Coffee_data, main = "Boxplot of Price for 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”:

pairs(Price ~ Age,main = "pairs of Price for Age",data=Coffee_data)

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

Phát biểu giả thiết:


Giả thiết H0: 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 bằng nhau

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

##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.

M1 = lm(Price ~ Age + Income + Times + Length + Sex + Job + Thing, data =


##
Coffee_d
## Call: ata)
summary(M1)
## lm(formula = Price ~ Age + Income + Times + Length + Sex + Job +
## Thing, data = Coffee_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.7367 -3.6837 -0.1514 2.9369 10.9169
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.5859 4.1031 -0.630 0.53195
## Age 1.3773 0.2429 5.669 1.19e-06 ***
## Income 1.3644 0.4005 3.406 0.00146 **
## Times -0.2677 0.4978 -0.538 0.59356
## Length 0.1609 0.7385 0.218 0.82860
## SexNữ 2.4013 1.6354 1.468 0.14946
## JobStudent 2.7216 2.5191 1.080 0.28614
## ThingJuice 1.2454 1.9689 0.633 0.53047
## ThingTea 0.3088 1.8239 0.169 0.86635
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.179 on 42 degrees of freedom
## Multiple R-squared: 0.9337, Adjusted R-squared: 0.9211
## F-statistic: 73.98 on 8 and 42 DF, p-value: < 2.2e-16
Nhận xét:
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:

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.

M2 = lm(Price ~ Age + Income + Times + Sex + Job + Thing, data = Coffee_data)


##
summary(M2)
## Call:
## lm(formula = Price ~ Age + Income + Times + Sex + Job + Thing,
## data = Coffee_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.6859 -3.6472 -0.1596 2.9131 11.1496
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.8088 3.9292 -0.715 0.478560
## Age 1.4000 0.2168 6.456 7.92e-08 ***
## Income 1.3873 0.3821 3.630 0.000748 ***
## Times -0.2597 0.4909 -0.529 0.599580
## SexNữ 2.4460 1.6044 1.525 0.134700
## JobStudent 2.8288 2.4431 1.158 0.253292
## ThingJuice 1.1635 1.9111 0.609 0.545865
## ThingTea 0.3414 1.7976 0.190 0.850267
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.122 on 43 degrees of freedom
## Multiple R-squared: 0.9337, Adjusted R-squared: 0.9229
## F-statistic: 86.46 on 7 and 43 DF, p-value: < 2.2e-16
Xây dựng mô hình 3 loại bỏ biến Times từ mô hình 2.

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.

M4 = lm(Price ~ Age + Income + Sex + Thing, data = Coffee_data)


summary(M4)

##
## 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.

M5 = lm(Price ~ Age + Income + Sex, data = Coffee_data)


Xây dựng mô hình 6 loại bỏ biến Sex từ mô hình 5.
summary(M5)
M6
## = lm(Price ~ Age + Income, data = Coffee_data)
summary(M6)
## Call:
## lm(formula = Price ~ Age + Income + Sex, data =
##
Coffee_data) ##
##
## Call:
Residuals:
##
## lm(formula
Min 1Q = Price
Median~ Age 3Q
+ Income,
Max data = Coffee_data)
## -9.0739 -3.9662 0.0269 3.2801 11.5094
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.0701 3.3807 -0.317 0.753007
## Age 1.4619 0.2051 7.129 5.22e-09 ***
## Income 1.0912 0.2807 3.888 0.000316 ***
## SexNữ 2.8960 1.4748 1.964 0.055495
. ## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' '
1 ##
## Residual standard error: 5.007 on 47 degrees of freedom
## Multiple R-squared: 0.9307, Adjusted R-squared:
0.9263 ## F-statistic: 210.5 on 3 and 47 DF, p-value: <

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

##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

##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

##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

##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.

You might also like