Trong bối cảnh cạnh tranh ngày càng khốc liệt của ngành hàng không, chất lượng dịch vụ trở thành yếu tố then chốt quyết định sự hài lòng và lòng trung thành của khách hàng. Các hãng hàng không không chỉ cạnh tranh về giá cả và tuyến bay mà còn phải không ngừng nâng cao chất lượng dịch vụ để thu hút và giữ chân khách hàng. Việc phân tích từ dữ liệu trong cuộc khảo sát về trải nghiệm dịch vụ hàng không như loại hình du lịch, sự sạch sẽ, xử lý hành lý và trải nghiệm trên chuyến bay không chỉ giúp hãng hàng không hiểu rõ hơn nhu cầu và mong muốn của khách hàng mà còn định hướng cho các cải tiến dịch vụ trong tương lai.Chình vì thế, ở bài nghiên cứu này nhằm phân tích các yếu tố ảnh hưởng đến sự hài lòng của hành khách, từ đó đề xuất các biện pháp nâng cao chất lượng dịch vụ của hãng hàng không.
Mục tiêu của của bài nghiên cứu lần này chúng tôi sẽ đánh giá mức độ hài lòng của hành khách của hãng hàng không dựa trên bộ dữ liệu về sự hài lòng của hành khách. Nghiên cứu tập trung vào các yếu tố như giới tính, độ tuổi, loại khách hàng, loại hình du lịch, độ trễ xuất phát và đến, khoảng cách bay, và các tiện ích liên quan đến thời gian. Mục đích là phân tích mối quan hệ giữa các yếu tố này và mức độ hài lòng của hành khách, từ đó đưa ra những nhận định và đề xuất cải thiện để nâng cao trải nghiệm của hành khách trong quá trình sử dụng dịch vụ hàng không.
Thu thập dữ liệu, Phân tích khảo sát trải nghiệm dịch vụ hàng không của khách hàng tham gia khảo sát bằng cách sử dụng phương pháp mô hình hồi quy, các thống kê mổ tả để đo lường biến định tính, định lười dưới dạng đếm số lần xuất hiện các biến. và nghiên cứu mối tương quan giữa chúng.
Kết quả này giúp các công ty hàng không tập trung cải thiện các dịch vụ quan trọng để nâng cao trải nghiệm khách hàng, duy trì sự trung thành và thu hút thêm khách hàng mới. Điều này không chỉ có ý nghĩa thực tiễn trong quản lý và tiếp thị mà còn đóng góp vào cơ sở dữ liệu khoa học về sự hài lòng và trung thành của khách hàng, ngoài ra có thể phát triển thêm trong lĩnh vực ngành nghề hàng không.
Chúng tôi sẽ giới thiệu bộ dữ liệu “Airline Passenger Satisfaction”, được thu thập từ trang Kaggle.
Bộ dữ liệu Airline Passenger Satisfaction cung cấp Khảo sát về dịch vụ hàng không của khách hàng từ hơn 25.000 tham gia khảo sát đối với hãng hãng không, bao gồm thông tin bổ sung về từng hành khách, chuyến bay và loại hình di chuyển của họ, cũng như đánh giá các yếu tố khác nhau như mức độ sạch sẽ trong máy bay, sự thoải mái, dịch vụ và trải nghiệm tổng thể. Dựa vào những thông tin này chúng tôi có thể phân tích các mức độ về sự trải nghiệm của hành khách hàng không khi đi máy bay.
Bộ dữ liệu Airline Passenger Satisfaction là một tập dữ liệu cung cấp thông tin chi tiết về sử hài lòng của hàng khách hàng không chứa trên 12 biến và 25.976 quan sát
• Gender (gender): Giới tính của hành khách, “Male” (Nam) hoặc “Female” (Nữ).
• Age (age): Độ tuổi của hành khách khi họ sử dụng dịch vụ hàng không.
• Customer Type (type of customer): Phân loại khách hàng trung thành và không trung thành
• Type of Travel (type of travel): Mục đích của việc di chuyển là công việc kinh doanh ( Business) và Personal ( Các công việc khác).
• Class (class): Mô tả hạng ghế trên máy bay mà hành khách sử dụng,
• Departure Delay (delay): Thời gian cất cánh muộn của chuyến bay
• Arrival Delay (arrival delay): Thời gian hạ cánh trễ của chuyến bay
• Departure and Arrival Time Convenience (dep and arr):Sự thuận tiện về thời gian cất cánh và hạ cánh.
• Baggage handling : Mức độ hài lòng với dịch vụ xử lý hành lý của hãng hàng không từ 1 (rất tệ) đến 5 (rất hài lòng) - 0 điểm.
• Satisfaction: Trải nghiệm của khách hàng đối với hãng bay, bao gồm: Satisfied: Hài lòng; Neutral or Unsatisfied: Trung lập hoặc không hài lòng.
• Inflight wifi service: Mức độ hài lòng với dịch vụ Wifi trên máy bay từ 1 (rất tệ) đến 5 (rất hài lòng) - 0 nghĩa là “không đánh giá”
• In-flight Service: Mức độ hài lòng với dịch vụ trên chuyến bay từ 1 (rất tệ) đến 5 (rất hài lòng) - 0 có nghĩa là “không đánh giá”
• Cleanliness: Mức độ hài lòng với độ sạch sẽ của máy bay từ 1 (rất tệ) đến 5 (rất hài lòng) - 0 có nghĩa là “không đánh giá”
library(scales)
## Warning: package 'scales' was built under R version 4.2.3
library(DT)
## Warning: package 'DT' was built under R version 4.2.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(magrittr)
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.3
## Warning: package 'ggplot2' was built under R version 4.2.3
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'tidyr' was built under R version 4.2.3
## Warning: package 'readr' was built under R version 4.2.3
## Warning: package 'purrr' was built under R version 4.2.3
## Warning: package 'stringr' was built under R version 4.2.3
## Warning: package 'forcats' was built under R version 4.2.3
## Warning: package 'lubridate' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.4
## ✔ ggplot2 3.4.2 ✔ stringr 1.5.0
## ✔ lubridate 1.9.2 ✔ tibble 3.2.1
## ✔ purrr 1.0.1 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ readr::col_factor() masks scales::col_factor()
## ✖ purrr::discard() masks scales::discard()
## ✖ tidyr::extract() masks magrittr::extract()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ purrr::set_names() masks magrittr::set_names()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(ggplot2)
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.2.3
library(epitools)
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
data <- read_excel("Zalo Received Files/test airline passenger.xlsx")
View(data)
str(data)
## tibble [25,976 × 25] (S3: tbl_df/tbl/data.frame)
## $ x : num [1:25976] 25673 12805 17032 17232 11783 ...
## $ id : num [1:25976] 63665 62219 79679 62549 92304 ...
## $ Gender : chr [1:25976] "Male" "Male" "Female" "Male" ...
## $ Customer Type : chr [1:25976] "Loyal Customer" "Loyal Customer" "Loyal Customer" "disloyal Customer" ...
## $ Age : num [1:25976] 65 59 20 25 10 36 36 25 56 46 ...
## $ Type of Travel : chr [1:25976] "Business travel" "Personal Travel" "Personal Travel" "Business travel" ...
## $ Class : chr [1:25976] "Business" "Eco" "Eco" "Business" ...
## $ Flight Distance : num [1:25976] 3086 2425 762 1037 2615 ...
## $ Inflight wifi service : num [1:25976] 5 4 1 5 3 3 2 3 4 4 ...
## $ Departure/Arrival time convenient: num [1:25976] 5 2 4 2 1 3 2 4 4 4 ...
## $ Ease of Online booking : num [1:25976] 2 4 1 5 3 3 2 3 4 3 ...
## $ Gate location : num [1:25976] 5 3 3 3 3 3 2 4 4 4 ...
## $ Food and drink : num [1:25976] 4 3 5 2 2 5 2 3 4 3 ...
## $ Online boarding : num [1:25976] 3 4 1 5 3 2 5 3 3 5 ...
## $ Seat comfort : num [1:25976] 5 3 5 2 2 5 4 3 4 5 ...
## $ Inflight entertainment : num [1:25976] 4 3 5 2 2 5 5 3 5 5 ...
## $ On-board service : num [1:25976] 4 3 4 4 2 5 5 4 5 5 ...
## $ Leg room service : num [1:25976] 4 5 4 5 5 5 5 1 5 4 ...
## $ Baggage handling : num [1:25976] 4 3 3 3 2 4 5 3 5 5 ...
## $ Checkin service : num [1:25976] 3 4 4 5 1 4 5 4 3 3 ...
## $ Inflight service : num [1:25976] 4 3 4 5 4 5 5 2 5 5 ...
## $ Cleanliness : num [1:25976] 4 3 5 2 2 5 5 3 3 4 ...
## $ Departure Delay in Minutes : num [1:25976] 40 39 31 31 30 28 28 27 26 26 ...
## $ Arrival Delay in Minutes : num [1:25976] 0 0 0 0 0 0 0 0 0 0 ...
## $ satisfaction : chr [1:25976] "satisfied" "neutral or dissatisfied" "neutral or dissatisfied" "satisfied" ...
table(data$satisfaction)
##
## neutral or dissatisfied satisfied
## 14573 11403
table(data$satisfaction)/sum(table(data$satisfaction))
##
## neutral or dissatisfied satisfied
## 0.5610179 0.4389821
p <- as.data.frame(table(data$satisfaction))
colnames(p) <- c("satisfaction", "Count")
ggplot(p, aes(x = satisfaction, y = Count, fill = satisfaction)) +
geom_bar(stat = "identity", position = "dodge") + geom_text(aes(label = Count), vjust = -0.3, size = 3.5) +
labs(
x = "", y = "Số lượng",
title = "Số khách hàng đánh giá",
) +
scale_y_continuous(labels = comma) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
plot.subtitle = element_text(size = 12, color = "grey50"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
legend.title = element_blank(),
legend.position = "top"
)
library(ggplot2)
p$Percentage <- (p$Count / sum(p$Count)) * 100
ggplot(p, aes(x = "", y = Percentage, fill = satisfaction)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Đầu tiên, chúng tôi sẽ lập bảng tần số cho biến Gender nhằm mục đích để nắm bắt được số lượng giới thích của hàng khách khi sự dụng dịch vụ hàng không.
table(data$Gender)
##
## Female Male
## 13172 12804
table(data$Gender)/sum(table(data$Gender))
##
## Female Male
## 0.5070835 0.4929165
s <- as.data.frame(table(data$Gender))
colnames(s) <- c("Gender", "Count")
ggplot(s, aes(x = Gender, y = Count, fill = Gender)) +
geom_bar(stat = "identity", position = "dodge") + geom_text(aes(label = Count), vjust = -0.3, size = 3.5) +
labs(
x = "", y = "Số lượng",
title = "GIỚI TÍNH",
) +
scale_y_continuous(labels = comma) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
plot.subtitle = element_text(size = 12, color = "grey50"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
legend.title = element_blank(),
legend.position = "top"
)
library(ggplot2)
s$Percentage <- (s$Count / sum(s$Count)) * 100
ggplot(s, aes(x = "", y = Percentage, fill = Gender)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Dựa vào kết quả bảng tần số và biểu đồ trên ta có thể thấy: Phân bố giới tính trong bộ dữ liệu “Airline Passenger Satisfaction” Sự chênh lệch về giới tính giữa số lượng hành khách nữ 13,172 (50.71%) và nam 12,804 (49.29%). Sự chênh lệch nhỏ này (nữ chỉ hơn nam khoảng 1.42%) cho thấy rằng cả hai giới tính đều được đại diện gần như đồng đều trong bộ dữ liệu, tạo điều kiện thuận lợi cho việc phân tích trải nghiệm khách hàng.
Trước khi phân tích biến Age, nhóm chúng tôi sẽ phân nhóm thành 6 nhóm độ tuổi: trẻ em(7-12), thiếu niên(12-18), thanh niên(18-25), trung niên(25-60), người cao tuổi(60-75), người già( 75 tuổi trở lên).
Biến Age thể hiện độ tuổi của hàng khách tham gia máy bay.
data$age <- cut(data$Age,
breaks = c(6, 12, 18, 25, 60, 75, Inf),
labels = c("trẻ nhỏ","thiếu niên", "thanh niên","trung niên","người cao tuổi","người già"))
Bây giờ chúng tôi sẽ lập bảng tần số để thể hiện rõ số tuổi cho khách hàng.
table(data$age)
##
## trẻ nhỏ thiếu niên thanh niên trung niên người cao tuổi
## 904 1257 3399 18338 1983
## người già
## 95
library(ggplot2)
z <- as.data.frame(table(data$'age'))
colnames(z) <- c("age", "Count")
ggplot(z, aes(x = `age`, y = Count, fill = `age`)) +
geom_bar(stat = "identity", position = "dodge") + geom_text(aes(label = Count), vjust = -0.3, size = 3.5) +
labs(
x = "", y = "Số lượng",
title = "Phân bố các nhóm tuổi"
) +
scale_y_continuous(labels = comma) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
plot.subtitle = element_text(size = 12, color = "grey50"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
legend.title = element_blank(),
legend.position = "top"
)
Biểu đồ trên cho thấy sự phân bố các nhóm tuổi trong tập dữ liệu với sự không đồng đều rõ rệt. Nhóm trung niên chiếm ưu thế vượt trội với 18,338 người, trong khi các nhóm khác như trẻ nhỏ (904 người), thiếu niên (1,257 người), thanh niên (3,399 người), người cao tuổi (1,983 người) và người già (95 người) có số lượng ít hơn đáng kể.
o <- prop.table(table(data$age)) * 100
o
##
## trẻ nhỏ thiếu niên thanh niên trung niên người cao tuổi
## 3.4801355 4.8390822 13.0851555 70.5959347 7.6339698
## người già
## 0.3657222
z$Percentage <- (z$Count / sum(z$Count)) * 100
ggplot(z, aes(x = "", y = Percentage, fill = age)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Có sự đa dạng về các độ tuổi tham gia khảo sát mức độ hài lòng , với phần lớn hành khách tập trung trong độ tuổi từ 20 đến 40, đặc biệt đỉnh cao nhất ở tuổi 25. Tỷ lệ hành khách giảm dần từ khoảng 45 tuổi trở đi, với nhóm tuổi trên 60 và dưới 16 có tỷ lệ thấp hơn đáng kể. Nhóm trẻ (dưới 20) chiếm khoảng 7-10% tổng số hành khách. Phân bố này giúp điều chỉnh dịch vụ và chiến lược kinh doanh phù hợp hơn với từng nhóm tuổi.
Việc mô tả mục đích khi di chuyển bằng máy bay mà hành khách thực hiện chủ yếu rất quan trọng, giúp cho chúng ta có thể hiểu rõ về hàng khách hơn. Như việc khách dùng dịch vụ dịch chuyển nhầm mục đích gì?
Nên bây giờ chúng tôi sẽ vẽ biểu đồ thống kê xem khách hàng tham gia dịch vụ nhắm mục đích làm việc gì
table(data$'Type of Travel')
##
## Business travel Personal Travel
## 18038 7938
table(data$'Type of Travel')/sum(table(data$'Type of Travel'))
##
## Business travel Personal Travel
## 0.6944102 0.3055898
b <- as.data.frame(table(data$'Type of Travel'))
colnames(b) <- c("Type of Travel", "Count")
ggplot(b, aes(x = `Type of Travel`, y = Count, fill = `Type of Travel`)) +
geom_bar(stat = "identity") +
geom_text(aes(label = Count), vjust = -0.3, size = 3.5) +
theme_minimal()
b$Percentage <- (b$Count / sum(b$Count)) * 100
ggplot(b, aes(x = "", y = Percentage, fill = `Type of Travel`)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Qua biểu đồ, ta thấy:
Số lượng khách hàng đi công tác là 18038 người (khoảng 69,44%)
Số lượng khách hàng đi vì công việc riêng là 7938 người ( khoảng 30,56%)
Như vậy số lượng khách hàng đi công tác nhiều hơn kh khách hàng đi vì công việc riêng là 10100 người (khoảng 38,88%)
Điều này cho thấy rằng hành khách sử dụng dịch vụ của hãng hàng không chủ yếu vì mục đích công việc hơn là hình thức di chuyển khác.Thông tin có thể cung cấp cho doanh nghiệp hàng không về việc phát triển và tối ưu hóa dịch vụ, tiếp thị và chiến lược phân phối. Các chính sách khuyến mãi, dịch vụ chăm sóc khách hàng và lựa chọn các tuyến bay có thể được điều chỉnh để phù hợp với nhu cầu chủ yếu của khách hàng là đi công tác.
Chẳng hạn, cung cấp các dịch vụ và tiện ích phù hợp với loại hình di chuyển của hành khách đi công tác như wifi, dịch vụ chăm sóc khách hàng trong khi họ đang bận công việc.
table(data$'Class')
##
## Business Eco Eco Plus
## 12495 11564 1917
table(data$'Class')/sum(table(data$'Class'))
##
## Business Eco Eco Plus
## 0.48102094 0.44518017 0.07379889
c <- as.data.frame(table(data$'Class'))
colnames(c) <- c("Class", "Count")
c$Percentage <- ( c$Count / sum( c$Count)) * 100
ggplot(c, aes(x = "", y = Percentage, fill = `Class`)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.75), size = 3)
c <- as.data.frame(table(data$'Class'))
colnames(c) <- c("Class", "Count")
ggplot(c, aes(x = Class, y = Count, fill = Class)) +
geom_bar(stat = "identity", position = "dodge") + geom_text(aes(label = Count), vjust = -0.3, size = 3.5) +
labs(
x = "", y = "Số lượng",
title = "Phân bố các hạng vé khách hàng dùng"
) +
scale_y_continuous(labels = comma) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
plot.subtitle = element_text(size = 12, color = "grey50"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
legend.title = element_blank(),
legend.position = "top"
)
Qua biểu đồ, ta thấy:
Số lượng khách hàng đăng ký hạng ghế thương gia chiếm số lượng lớn khoảng 12495 người (khoảng 48,1%)
Số lượng khách hàng đăng ký hạng ghế phổ thống là 11564 người ( khoảng 44,52%)
Số lượng khách hàng đăng ký hạng ghế cao cấp có ít người sử dụng nhất khoảng 1917 người (khoảng 7,38%)
table(data$'Customer Type')
##
## disloyal Customer Loyal Customer
## 4799 21177
table(data$'Customer Type')/sum(table(data$'Customer Type'))
##
## disloyal Customer Loyal Customer
## 0.1847475 0.8152525
a <- as.data.frame(table(data$'Customer Type'))
colnames(a) <- c("Customer Type", "Count")
ggplot(a, aes(x = `Customer Type`, y = Count, fill = `Customer Type`)) +
geom_bar(stat = "identity", position = "dodge") + geom_text(aes(label = Count), vjust = -0.3, size = 3.5) +
labs(
x = "", y = "Số lượng",
title = "Phân bố tệp khách hàng"
) +
scale_y_continuous(labels = comma) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
plot.subtitle = element_text(size = 12, color = "grey50"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
legend.title = element_blank(),
legend.position = "top"
)
a$Percentage <- (a$Count / sum(a$Count)) * 100
ggplot(a, aes(x = "", y = Percentage, fill = `Customer Type`)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Qua biểu đồ, ta thấy:
Số lượng khách hàng trung thành chiếm số lượng lớn khoảng 21177 người (khoảng 81,53%)
Số lượng khách hàng không trung thành là 4799 người ( khoảng 18,47%)
Như vậy số lượng khách trung thành nhiều hơn khách hàng không trung thành là 16348 người (khoảng 63,05%)
table(data$`Inflight wifi service`)/sum(table(data$`Inflight wifi service`))
##
## 0 1 2 3 4 5
## 0.03129812 0.17277487 0.24984601 0.24318602 0.19175393 0.11114105
# Dữ liệu
labels <- c("Không đánh giá","Rất tệ", "Tệ", "Bình thường", "Hài lòng", "Rất hài lòng")
values <- c(0.0313, 0.1728, 0.2498, 0.2432, 0.1918, 0.1111)
variable_name <- "Inflight.wifi.service"
# Tính tổng giá trị
total <- sum(values)
# Tính phần trăm cho mỗi mức độ
percentages <- values / total * 100
# Tạo dataframe
df <- data.frame(labels, values, percentages)
# Vẽ biểu đồ cột
library(ggplot2)
ggplot(df, aes(x = labels, y = percentages)) +
geom_col(fill = '#4c72b0') +
geom_text(aes(label = sprintf("%.2f%%", percentages)), vjust = -0.5, size = 4) +
labs(x = "Mức độ đánh giá", y = "Phần trăm", title = paste0("Phân bố các mức độ đánh giá cho biến ", variable_name)) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nhận xét:
Khách hàng đánh giá ở mức bình thường về dịch vụ wifi chiếm tỷ trọng khá cao (24.32%). Điều này cho thấy rằng phần lớn hành khách có trải nghiệm ở mức tương đối. Họ có thể gặp một số vấn đề nhưng chúng không đủ nghiêm trọng để đánh giá tệ hơn.
Khách hàng đánh giá tệ về dịch vụ wifi chiếm tỷ trọng cao nhất (24.98%): cho thấy có một lượng lớn hành khách không hài lòng với dịch vụ wifi. Điều này có thể phản ánh các vấn đề nghiêm trọng về chất lượng kết nối, tốc độ hoặc độ ổn định của wifi.
Khách hàng đánh giá hài lòng về dịch vụ wifi chiếm tỷ trọng thấp hơn đánh giá bình thường và tệ nhưng vẫn có tỷ trọng khá cao (19.18%). Điều đó cho thấy dịch vụ có thể được đánh giá tốt về tốc độ và ổn định, nhưng vẫn có những yếu tố khác chưa đạt đến mức xuất sắc.
Khách hàng đánh giá rất hài lòng về dịch vụ wifi chiếm tỷ trọng không cao (11.11%). Điều này cho thấy rằng chỉ một phần nhỏ hành khách có trải nghiệm rất tốt với dịch vụ wifi. Dịch vụ này có thể rất tốt ở một số khía cạnh như tốc độ cao, ổn định, và dễ truy cập.
Khách hàng đánh giá rất tệ về dịch vụ wifi chiếm tỷ trọng khá cao (17.28%), cho thấy có nhiều hành khách gặp phải trải nghiệm rất không hài lòng với dịch vụ wifi. Những vấn đề như kết nối không ổn định, tốc độ chậm, hoặc không thể truy cập có thể là nguyên nhân chính.
Khách hàng không đánh giá về dịch vụ wifi chiếm tỷ trọng thấp nhất (3.13%). Nguyên nhân dẫn đến việc khách hàng không đánh giá tỷ trọng thấp có thể do họ không sử dụng dịch vụ hoặc không có ý kiến về chất lượng dịch vụ.
table(data$`Baggage handling`)/sum(table(data$`Baggage handling`))
##
## 1 2 3 4 5
## 0.06894826 0.10937019 0.20091623 0.36102556 0.25973976
# Dữ liệu
labels <- c("Không đánh giá","Rất tệ", "Tệ", "Bình thường", "Hài lòng", "Rất hài lòng")
values <- c( 0,0.06895, 0.10937, 0.20092, 0.36103, 0.25974 )
variable_name <- "Baggage.handling"
# Tính toán tổng giá trị
total <- sum(values)
# Tính phần trăm cho mỗi mức độ
percentages <- values / total * 100
# Tạo dataframe
df <- data.frame(labels, values, percentages)
# Vẽ biểu đồ cột
library(ggplot2)
ggplot(df, aes(x = labels, y = percentages)) +
geom_col(fill = '#4c72b0') +
geom_text(aes(label = sprintf("%.2f%%", percentages)), vjust = -0.5, size = 4) +
labs(x = "Mức độ đánh giá", y = "Phần trăm", title = paste0("Phân bố các mức độ đánh giá cho ", variable_name)) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Khách hàng đánh giá bình thường về dịch vụ vận chuyển hành lý chiếm tỷ lệ khoảng 20.09%. Điều này cho thấy có một số khách hàng cảm thấy dịch vụ này chỉ ở mức trung bình, không nổi bật nhưng cũng không quá tệ.
Khách hàng đánh giá hài lòng về dịch vụ vận chuyển hành lý chiếm tỷ lệ cao nhất khoảng 36.10%. Điều này cho thấy rằng dịch vụ xử lý hành lý đang thực hiện tốt các chức năng cơ bản và đáp ứng kỳ vọng của phần lớn khách hàng.
Khách hàng không đánh giá về dịch vụ vận chuyển hành lý chiểm tỷ lệ 0% cho chúng ta biết rằng không có khách hàng nào bỏ qua việc đánh giá dịch vụ này.
Khách hàng đánh giá rất hài lòng về dịch vụ vận chuyển hành lý chiếm tỷ lệ khá cao khoảng 25.97%. Điều này cho thấy một số lượng đáng kể khách hàng rất hài lòng với dịch vụ. Khách hàng có thể rất hài lòng do dịch vụ nhanh chóng, nhân viên thân thiện và chuyên nghiệp, hoặc do việc xử lý các vấn đề phát sinh một cách hiệu quả.
Khách hàng đánh giá rất tệ về dịch vụ vận chuyển hành lý chiếm tỷ lệ khoảng 6.89% cho thấy có một nhóm nhỏ khách hàng rất không hài lòng với dịch vụ, có thể do các vấn đề nghiêm trọng như hành lý bị mất, hư hỏng nặng, hoặc thái độ phục vụ không tốt.
Khách hàng đánh giá tệ về dịch vụ vận chuyển hành lý chiếm tỷ lệ khoảng 10.94%, có thể do các vấn đề như thời gian chờ đợi lâu, hành lý bị hư hỏng nhẹ, hoặc dịch vụ không đáp ứng kỳ vọng.
table(data$`Inflight service`)/sum(table(data$`Inflight service`))
##
## 0 1 2 3 4 5
## 7.699415e-05 6.844780e-02 1.097552e-01 1.931398e-01 3.610256e-01 2.675547e-01
# Dữ liệu
labels <- c("Không đánh giá","Rất tệ", "Tệ", "Bình thường", "Hài lòng", "Rất hài lòng")
values <- c( 7.699e-05, 6.845e-02, 1.098e-01, 1.931e-01, 3.610e-01, 2.676e-01 )
variable_name <- "Inflight.service"
# Tính toán tổng giá trị
total <- sum(values)
# Tính phần trăm cho mỗi mức độ
percentages <- values / total * 100
# Tạo dataframe
df <- data.frame(labels, values, percentages)
# Vẽ biểu đồ cột
library(ggplot2)
ggplot(df, aes(x = labels, y = percentages)) +
geom_col(fill = '#4c72b0') +
geom_text(aes(label = sprintf("%.2f%%", percentages)), vjust = -0.5, size = 4) +
labs(x = "Mức độ đánh giá", y = "Phần trăm", title = paste0("Phân bố các mức độ đánh giá cho ", variable_name)) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))# Dữ liệu
labels <- c("Không đánh giá","Rất tệ", "Tệ", "Bình thường", "Hài lòng", "Rất hài lòng")
values <- c( 7.699e-05, 6.845e-02, 1.098e-01, 1.931e-01, 3.610e-01, 2.676e-01 )
variable_name <- "Inflight.service"
Nhận xét: Biểu đồ phân bố các mức độ đánh giá cho dịch vụ trên chuyến bay cho thấy kết quả khá tích cực với hơn một nửa số hành khách đánh giá dịch vụ ở mức “Hài lòng” hoặc “Rất hài lòng”. Cụ thể, “Hài lòng” chiếm tỷ lệ cao nhất với 36.10%, tiếp theo là “Rất hài lòng” với 26.76%. Mức độ “Bình thường” cũng chiếm một tỷ lệ đáng kể là 19.31%, cho thấy có một phần hành khách có trải nghiệm trung bình. Tuy nhiên, có khoảng 17.82% hành khách đánh giá dịch vụ là “Tệ” hoặc “Rất tệ”, điều này cho thấy cần có những cải thiện để nâng cao trải nghiệm của những hành khách này. Tỷ lệ “Không đánh giá” là rất nhỏ (0.01%), cho thấy hầu hết hành khách đều có đánh giá về dịch vụ. Nhìn chung, dịch vụ trên chuyến bay nhận được nhiều phản hồi tích cực nhưng vẫn cần cải tiến để giảm tỷ lệ khách hàng không hài lòng.
table(data$Cleanliness)/sum(table(data$Cleanliness))
##
## 0 1 2 3 4 5
## 7.699415e-05 1.313135e-01 1.532569e-01 2.334848e-01 2.613951e-01 2.204727e-01
# Dữ liệu
labels <- c("Không đánh giá","Rất tệ", "Tệ", "Bình thường", "Hài lòng", "Rất hài lòng")
values <- c( 7.699e-05, 1.313e-01, 1.533e-01, 2.335e-01 ,2.614e-01, 2.205e-01 )
variable_name <- "Cleaneliness"
# Tính toán tổng giá trị
total <- sum(values)
# Tính phần trăm cho mỗi mức độ
percentages <- values / total * 100
# Tạo dataframe
df <- data.frame(labels, values, percentages)
# Vẽ biểu đồ cột
library(ggplot2)
ggplot(df, aes(x = labels, y = percentages)) +
geom_col(fill = '#4c72b0') +
geom_text(aes(label = sprintf("%.2f%%", percentages)), vjust = -0.5, size = 4) +
labs(x = "Mức độ đánh giá", y = "Phần trăm", title = paste0("Phân bố các mức độ đánh giá cho ", variable_name)) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Kết quả biểu đồ cho thấy phần lớn hành khách đánh giá mức độ vệ sinh của hãng hàng không là tích cực, với tỷ lệ “Hài lòng” và “Rất hài lòng” chiếm tổng cộng gần 50% (48.19%). Tuy nhiên, vẫn còn một tỷ lệ đáng kể hành khách cảm thấy không hài lòng, với mức độ “Tệ” và “Rất tệ” chiếm khoảng 28.46%. Điều này cho thấy có sự phân hóa rõ rệt trong mức độ hài lòng về mức độ vệ sinh. Dù phần lớn hành khách có cảm nhận tích cực về mức độ vệ sinh, vẫn còn một tỷ lệ không nhỏ cảm thấy không hài lòng. Điều này chỉ ra rằng, bên cạnh những phản hồi tích cực, hãng hàng không cần chú trọng cải thiện chất lượng vệ sinh để nâng cao trải nghiệm của hành khách, đặc biệt là những người có cảm nhận tiêu cực.
Trước khi phân tích biến Departure Delay in Mintutes, nhóm chúng tôi sẽ phân nhóm thành 3 nhóm thời gian khởi hành: trễ ngắn hạn (0-60 phút), trễ trung hạn (60-240 phút), trễ dài hạn (240 phút trở lên).
Biến Departure Delay in Mintutes thể hiện thời gian khởi hành trễ của chuyến bay.
data$dd <- cut(data$`Departure Delay in Minutes`,
breaks = c(-2,0, 60, 240, Inf),
labels = c("đúng giờ","ngắn hạn","trung hạn", "dài hạn"))
Bây giờ chúng tôi sẽ lập bảng tần số để thể hiện rõ nhóm thời gian khởi hành
table(data$dd)
##
## đúng giờ ngắn hạn trung hạn dài hạn
## 14688 9552 1623 113
l <- prop.table(table(data$dd)) * 100
l
##
## đúng giờ ngắn hạn trung hạn dài hạn
## 56.5445026 36.7724053 6.2480751 0.4350169
library(ggplot2)
l <- as.data.frame(table(data$dd))
colnames(l) <- c("dd", "Count")
ggplot(l, aes(x = dd, y = Count, fill = dd)) +
geom_bar(stat = "identity", position = "dodge") + geom_text(aes(label = Count), vjust = -0.3, size = 3.5) +
labs(
x = "", y = "Số lượng",
title = "Phân bố các nhóm thời gian khởi hành"
) +
scale_y_continuous(labels = comma) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
plot.subtitle = element_text(size = 12, color = "grey50"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
legend.title = element_blank(),
legend.position = "top"
)
l$Percentage <- (l$Count / sum(l$Count)) * 100
ggplot(l, aes(x = "", y = Percentage, fill = dd)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Biểu đồ từ cuộc khảo sát cho thấy phân bố nhóm thời gian chuyến bay cất cánh muộn cho thấy rằng phần lớn các chuyến bay (56.54%) đến đúng giờ, với cất cánh muộn ngắn hạn là phổ biến thứ hai (36.77%). Các nhóm thời gian chuyến bay muộn trung hạn (6.25%) và dài hạn (0.44%) ít phổ biến hơn nhiều. Điều này cho thấy rằng, mặc dù chuyến bay cất cánh muộn trong thời gian ngắn hạn là khá phổ biến, chuyến bay cất cánh muộn trong thời gian dài hạn là tương đối hiếm.
Trước khi phân tích biến Arrival Delay in Mintutes, nhóm chúng tôi sẽ phân nhóm thành 3 nhóm thời gian hạ cánh: trễ ngắn hạn (0-60 phút), trễ trung hạn (60-240 phút), trễ dài hạn (240 phút trở lên).
Biến Arrival Delay in Mintutes thể hiện thời gian hạ cánh trễ của chuyến bay.
data$ad <- cut(data$`Arrival Delay in Minutes`,
breaks = c(-2, 0, 60, 240, Inf),
labels = c("đúng giờ","ngắn hạn","trung hạn", "dài hạn"))
Bây giờ chúng tôi sẽ lập bảng tần số để thể hiện rõ nhóm thời gian hạ cánh
table(data$ad)
##
## đúng giờ ngắn hạn trung hạn dài hạn
## 14677 9538 1651 110
k <- prop.table(table(data$dd)) * 100
k
##
## đúng giờ ngắn hạn trung hạn dài hạn
## 56.5445026 36.7724053 6.2480751 0.4350169
library(ggplot2)
k <- as.data.frame(table(data$ad))
colnames(k) <- c("ad", "Count")
ggplot(k, aes(x = ad, y = Count, fill = ad)) +
geom_bar(stat = "identity", position = "dodge") + geom_text(aes(label = Count), vjust = -0.3, size = 3.5) +
labs(
x = "", y = "Số lượng",
title = "Phân bố nhóm thời gian hạ cánh"
) +
scale_y_continuous(labels = comma) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
plot.subtitle = element_text(size = 12, color = "grey50"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
legend.title = element_blank(),
legend.position = "top"
)
k$Percentage <- (k$Count / sum(k$Count)) * 100
ggplot(k, aes(x = "", y = Percentage, fill = ad)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Tỷ lệ phần trăm", x = "", y = "") +
theme_void() +
theme(legend.title = element_blank()) +
geom_text(aes(label = paste(round(Percentage, 2), "%")),
position = position_stack(vjust = 0.5), size = 4)
Biểu đồ phân bố nhóm thời gian hạ cánh cho thấy phần lớn các chuyến bay hạ cánh đúng giờ gồm 14677 người chiếm 56.5% hoặc trong thời gian ngắn hạn gồm 9538 người chiếm 36.72%. Số lượng chuyến bay có thời gian hạ cánh trung hạn gồm 1651 chiếm 6.36% và dài hạn gồm 110 người chiếm 0.42% là rất ít. Kết quả này phản ánh đa số chuyến bay đáp xuống đúng giờ hoặc sớm.
addmargins(table(data$satisfaction, data$`Customer Type`))
##
## disloyal Customer Loyal Customer Sum
## neutral or dissatisfied 3591 10982 14573
## satisfied 1208 10195 11403
## Sum 4799 21177 25976
prop.table(table(data$satisfaction, data$`Customer Type`))
##
## disloyal Customer Loyal Customer
## neutral or dissatisfied 0.13824299 0.42277487
## satisfied 0.04650447 0.39247767
library(ggplot2)
library(dplyr)
data %>% ggplot(aes(x = `satisfaction`, fill = `Customer Type`)) +
geom_bar(position = "dodge") +
geom_text(aes(label = scales::percent(after_stat(count / sum(count)), accuracy = 0.01)),
stat = "count",
position = position_dodge(width = 0.9),
vjust = -0.5,
color = 'red') +
scale_fill_manual(values = c("Loyal Customer" = "blue", "disloyal Customer" = "green")) + labs( fill = 'Loại khách hàng',title = "Sự hài lòng về hãng hàng không ở từng loại khách hàng") + theme_minimal()
Từ kết quả trên, có thể thấy rằng khách hàng trung thành có mức độ hài lòng chiếm 39.35% cao hơn so với khách hàng không trung thành chiếm 4.65%. Cụ thể, tỷ lệ khách hàng hài lòng trong nhóm khách hàng trung thành cao hơn đáng kể so với nhóm khách hàng không trung thành. Điều này cho thấy rằng mức độ hài lòng có mối liên hệ chặt chẽ với sự trung thành của khách hàng, và việc nâng cao mức độ hài lòng của khách hàng có thể giúp tăng cường sự trung thành của họ đối với dịch vụ.
addmargins(table(data$satisfaction, data$`Class`))
##
## Business Eco Eco Plus Sum
## neutral or dissatisfied 3809 9322 1442 14573
## satisfied 8686 2242 475 11403
## Sum 12495 11564 1917 25976
prop.table(table(data$satisfaction, data$`Class`))
##
## Business Eco Eco Plus
## neutral or dissatisfied 0.14663536 0.35886973 0.05551278
## satisfied 0.33438559 0.08631044 0.01828611
library(ggplot2)
library(dplyr)
data %>% ggplot(aes(x = `satisfaction`, fill = `Class`)) +
geom_bar(position = "dodge") +
geom_text(aes(label = scales::percent(after_stat(count / sum(count)), accuracy = 0.01)),
stat = "count",
position = position_dodge(width = 0.9),
vjust = -0.5,
color = 'red') +
scale_fill_manual(values = c("Business" = "blue", "Eco Plus" = "green", "Eco" = "brown")) + labs( fill = 'Hạng ghế',title = "Sự hài lòng về hãng hàng không ở từng loại hạng ghế") + theme_minimal()
Nhận xét: Từ kết quả biểu đồ trên có thể thấy phần lớn khách hàng không hài lòng ngồi ở hạng ghể thường (Eco) chiếm tỷ tệ cao nhất 35,89% so với hạng ghế thương gia (Business) chiếm 14,66% và hạng ghế cao cấp Eco Plus chiếm 5,55%. Mặc khác khách hàng hài lòng nhiều nhất khi ngồi ở hạng ghế thương gia chiếm 33,44% so với 2 hạng ghế còn lại là hạng ghế thường chiếm 8,63% và hạng ghế cao cấp 1,83%. Nhìn chung có thể thấy sự đánh giá của khách hàng hạng thương gia đối với hạng thương gia là tương đối cao. Còn số người đăng ký hạng ghế thường thì đánh giá trải nghiệm rất tốt.
data$`Inflight service` = factor(data$`Inflight service`,
levels = c(0, 1, 2, 3, 4, 5),
labels = c("Không đánh giá","Rất tệ", "Tệ", "Bình thường", "Hài lòng", "Rất hài lòng"))
addmargins(table(data$`satisfaction`, data$`Inflight service`))
##
## Không đánh giá Rất tệ Tệ Bình thường Hài lòng
## neutral or dissatisfied 2 1244 1997 3785 4875
## satisfied 0 534 854 1232 4503
## Sum 2 1778 2851 5017 9378
##
## Rất hài lòng Sum
## neutral or dissatisfied 2670 14573
## satisfied 4280 11403
## Sum 6950 25976
prop.table(table(data$satisfaction, data$`Inflight service`))
##
## Không đánh giá Rất tệ Tệ Bình thường
## neutral or dissatisfied 7.699415e-05 4.789036e-02 7.687866e-02 1.457114e-01
## satisfied 0.000000e+00 2.055744e-02 3.287650e-02 4.742840e-02
##
## Hài lòng Rất hài lòng
## neutral or dissatisfied 1.876732e-01 1.027872e-01
## satisfied 1.733523e-01 1.647675e-01
library(ggplot2)
library(dplyr)
data %>% ggplot(aes(x = `satisfaction`, fill = data$`Inflight service`)) +
geom_bar(position = "dodge") +
geom_text(aes(label = scales::percent(after_stat(count / sum(count)), accuracy = 0.01)),
stat = "count",
position = position_dodge(width = 0.9),
vjust = -0.5,
color = 'black') +
scale_fill_manual(values = c("Không đánh giá" = "blue", "Rất tệ" = "green", "Tệ" = "brown","Bình thường"="purple", "Hài lòng"="pink", "Rất hài lòng"="grey" )) + labs( fill = 'Đánh giá',title = "Sự hài lòng về hãng hàng không về dịch vụ trên chuyến bay ") + theme_minimal()
## Warning: Use of `` data$`Inflight service` `` is discouraged.
## ℹ Use `Inflight service` instead.
## Use of `` data$`Inflight service` `` is discouraged.
## ℹ Use `Inflight service` instead.
Tỷ lệ khách hàng hài lòng khi tham gia dịch vụ hàng không về dịch vụ trên chuyến bay cảm thấy hài lòng chiếm tỉ lệ cao nhất là 17.34%, và rất hài lòng 16,48% cho thấy dịch vụ trên chuyến bay của hãng hàng không dành cho khách hàng cực kì tốt. Còn những khách hàng không hài lòng về dịch vụ trên chuyến bay chiếm tỉ lệ cao nhất là hài lòng 18,7%, và thấp nhất là rất tệ chiếm 4,79%. Chính vì thế việc về dịch vụ trên chuyến bay không ảnh hưởng gì nhiều đến sự hài lòng của khách hàng.
addmargins(table(data$`satisfaction`, data$dd))
##
## đúng giờ ngắn hạn trung hạn dài hạn Sum
## neutral or dissatisfied 7831 5637 1033 72 14573
## satisfied 6857 3915 590 41 11403
## Sum 14688 9552 1623 113 25976
prop.table(table(data$satisfaction, data$dd))
##
## đúng giờ ngắn hạn trung hạn dài hạn
## neutral or dissatisfied 0.301470588 0.217008007 0.039767478 0.002771789
## satisfied 0.263974438 0.150716046 0.022713274 0.001578380
library(ggplot2)
library(dplyr)
data %>% ggplot(aes(x = `satisfaction`, fill = data$`dd`)) +
geom_bar(position = "dodge") +
geom_text(aes(label = scales::percent(after_stat(count / sum(count)), accuracy = 0.01)),
stat = "count",
position = position_dodge(width = 0.9),
vjust = -0.5,
color = 'black') +
scale_fill_manual(values = c("đúng giờ" = "red","ngắn hạn" = "blue", "trung hạn" = "green", "dài hạn" = "brown")) + labs( fill = 'Thời gian cất cánh trễ',title = "Sự hài lòng về hãng hàng không đối với thời gian cất cánh ") + theme_minimal()
## Warning: Use of `data$dd` is discouraged.
## ℹ Use `dd` instead.
## Use of `data$dd` is discouraged.
## ℹ Use `dd` instead.
Biểu đồ cho thấy hành khách hài lòng thường có xu hướng gặp ít sự chậm trễ hơn, với tỷ lệ cao hơn trong nhóm “Đúng giờ” (26.40%) so với nhóm trung lập hoặc không hài lòng (30.15%). Ngược lại, hành khách trung lập hoặc không hài lòng có tỷ lệ cao hơn trong các nhóm thời gian chậm trễ, đặc biệt là nhóm “Ngắn hạn” (21.70% so với 15.07%). Điều này cho thấy sự chậm trễ, đặc biệt là trong khoảng thời gian ngắn hạn, ảnh hưởng tiêu cực đến sự hài lòng của hành khách.
addmargins(table(data$`satisfaction`, data$ad))
##
## đúng giờ ngắn hạn trung hạn dài hạn Sum
## neutral or dissatisfied 7646 5782 1077 68 14573
## satisfied 7031 3756 574 42 11403
## Sum 14677 9538 1651 110 25976
prop.table(table(data$satisfaction, data$ad))
##
## đúng giờ ngắn hạn trung hạn dài hạn
## neutral or dissatisfied 0.294348630 0.222590083 0.041461349 0.002617801
## satisfied 0.270672929 0.144595011 0.022097321 0.001616877
library(ggplot2)
library(dplyr)
data %>% ggplot(aes(x = `satisfaction`, fill = data$ad)) +
geom_bar(position = "dodge") +
geom_text(aes(label = scales::percent(after_stat(count / sum(count)), accuracy = 0.01)),
stat = "count",
position = position_dodge(width = 0.9),
vjust = -0.5,
color = 'black') +
scale_fill_manual(values = c("đúng giờ" = "red","ngắn hạn" = "blue", "trung hạn" = "green", "dài hạn" = "brown")) + labs( fill = 'Thời gian cất cánh trễ',title = "Sự hài lòng về hãng hàng không đối với thời gian cất cánh ") + theme_minimal()
## Warning: Use of `data$ad` is discouraged.
## ℹ Use `ad` instead.
## Use of `data$ad` is discouraged.
## ℹ Use `ad` instead.
Biểu đồ phân tích mối quan hệ giữa mức độ hài lòng và thời gian đến trễ của chuyến bay cho thấy rằng hành khách hài lòng có xu hướng gặp ít sự chậm trễ hơn. Cụ thể, tỷ lệ hành khách hài lòng cao nhất là trong nhóm “Đúng giờ” (27.07%), giảm dần trong các nhóm thời gian đến trễ, với tỷ lệ thấp nhất trong nhóm “Dài hạn” (0.16%). Ngược lại, hành khách trung lập hoặc không hài lòng có tỷ lệ cao hơn trong các nhóm thời gian đến trễ, đặc biệt là nhóm “Ngắn hạn” (22.26%). Điều này phản ánh rằng sự chậm trễ, đặc biệt là trong khoảng thời gian ngắn hạn, ảnh hưởng tiêu cực đến sự hài lòng của hành khách.
chisq.test(table(data$satisfaction, data$`Customer Type`))
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table(data$satisfaction, data$`Customer Type`)
## X-squared = 837.25, df = 1, p-value < 2.2e-16
Giả thuyết:
H0: biến satisfaction và biến customer type độc lập
H1: biến satisfaction và biến customer type không độc lập
Mức ý nghĩa: α= 0.05
Ta có p_value < α, vậy bác bỏ giả thuyết H0.
Với mức ý nghĩa 5%, sự hài lòng của khách hàng có chịu sự ảnh hưởng của loại khách hàng.
chisq.test(table(data$satisfaction, data$Class))
##
## Pearson's Chi-squared test
##
## data: table(data$satisfaction, data$Class)
## X-squared = 6435, df = 2, p-value < 2.2e-16
Giả thuyết:
H0: biến satisfaction và biến class độc lập
H1: biến satisfaction và biến class không độc lập
Mức ý nghĩa: α= 0.05
Ta có p_value < α, vậy bác bỏ giả thuyết H0.
Với mức ý nghĩa 5%, sự hài lòng của khách hàng có chịu sự ảnh hưởng của hạng ghế.
chisq.test(table(data$satisfaction, data$`Inflight service`))
## Warning in chisq.test(table(data$satisfaction, data$`Inflight service`)):
## Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: table(data$satisfaction, data$`Inflight service`)
## X-squared = 2074.7, df = 5, p-value < 2.2e-16
Giả thuyết:
H0: biến satisfaction và biến Inflight service độc lập
H1: biến satisfaction và biến Inflight service không độc lập
Mức ý nghĩa: α= 0.05
Ta có p_value < α, vậy bác bỏ giả thuyết H0.
Với mức ý nghĩa 5%, sự hài lòng của khách hàng có chịu sự ảnh hưởng của dịch vụ cung cấp trên chuyến bay.
chisq.test(table(data$satisfaction, data$dd))
##
## Pearson's Chi-squared test
##
## data: table(data$satisfaction, data$dd)
## X-squared = 119.37, df = 3, p-value < 2.2e-16
Giả thuyết:
H0: biến satisfaction và biến Departure Delay in Mintutes độc lập
H1: biến satisfaction và biến Departure Delay in Mintutes không độc lập
Mức ý nghĩa: α= 0.05
Ta có p_value < α, vậy bác bỏ giả thuyết H0.
Với mức ý nghĩa 5%, sự hài lòng của khách hàng có chịu sự ảnh hưởng của thời gian cất cánh trễ của chuyến bay
chisq.test(table(data$satisfaction, data$ad))
##
## Pearson's Chi-squared test
##
## data: table(data$satisfaction, data$ad)
## X-squared = 232.11, df = 3, p-value < 2.2e-16
Giả thuyết:
H0: biến satisfaction và biến Arrival Delay in Mintutes độc lập
H1: biến satisfaction và biến Arrival Delay in Mintutes không độc lập
Mức ý nghĩa: α= 0.05
Ta có p_value < α, vậy bác bỏ giả thuyết H0.
Với mức ý nghĩa 5%, sự hài lòng của khách hàng có chịu sự ảnh hưởng của thời gian hạ cánh trễ của chuyến bay
Relative risk
rr1 <- table(data$`Customer Type`,data$satisfaction)
addmargins(rr1)
##
## neutral or dissatisfied satisfied Sum
## disloyal Customer 3591 1208 4799
## Loyal Customer 10982 10195 21177
## Sum 14573 11403 25976
RelRisk(rr1)
## [1] 1.442938
Với kết quả RR = 1.442938, có thể thấy rằng trong nhóm khách không hài lòng, xác suất khách hàng không trung thành cao gấp 1.44 lần so với khách hàng trung thành.
Odd Ratio
addmargins(rr1)
##
## neutral or dissatisfied satisfied Sum
## disloyal Customer 3591 1208 4799
## Loyal Customer 10982 10195 21177
## Sum 14573 11403 25976
OddsRatio(rr1)
## [1] 2.759652
Với kết quả OR = 2.759652, Odd khách hàng trung thành không hài lòng gấp 2.76 lần Odd khách hàng trung thành hài lòng. Điều này có thể phản ánh rằng khách hàng có thể không hài lòng bởi chất lượng dịch vụ, cách phục vụ khách hàng,…
Relative risk
rr2 <- matrix(c(3809, 10764,
8686, 2717
),
nrow = 2,
byrow = TRUE,
dimnames = list(c("Neutral or dissatisfied", "Satisfied"),
c("Business", "Eco")))
addmargins(rr2)
## Business Eco Sum
## Neutral or dissatisfied 3809 10764 14573
## Satisfied 8686 2717 11403
## Sum 12495 13481 25976
RelRisk(rr2)
## [1] 0.3431321
Với RR = 0.3431321, có thể thấy rằng trong nhóm khách ghế hạng thương gia, xác suất khách hàng không hài lòng cao gấp 0.34 lầnso với tỷ lệ hành khách hài lòng.
Odd Ratio
addmargins(rr2)
## Business Eco Sum
## Neutral or dissatisfied 3809 10764 14573
## Satisfied 8686 2717 11403
## Sum 12495 13481 25976
OddsRatio(rr2)
## [1] 0.1106897
Với kết quả OR = 0.1106897, odd khách hàng ghế hạng thương gia cảm cảm thấy hài lòng gấp 0.11 lần khách hàng ghế hạng thường cảm thấy hài lòng.
Relative risk
rr3 <- matrix(c(3243, 11330,
1388, 10015
),
nrow = 2,
byrow = TRUE,
dimnames = list(c("Neutral or dissatisfied", "Satisfied"),
c("Tệ", "Tốt")))
addmargins(rr3)
## Tệ Tốt Sum
## Neutral or dissatisfied 3243 11330 14573
## Satisfied 1388 10015 11403
## Sum 4631 21345 25976
RelRisk(rr3)
## [1] 1.828217
Với RR = 1.828217 có thể thấy rằng trong nhóm khách cảm thấy dịch vụ trên chuyến bay tệ, xác suất khách hàng không hài lòng cao gấp 1.82 lần khách hàng hài lòng.
Odd Ratio
addmargins(rr3)
## Tệ Tốt Sum
## Neutral or dissatisfied 3243 11330 14573
## Satisfied 1388 10015 11403
## Sum 4631 21345 25976
OddsRatio(rr3)
## [1] 2.065278
Với kết quả OR = 2.065278, odd khách hàng hài lòng cảm thấy dịch vụ trên chuyến bay tệ gấp 2.07 lần hơn so với khách hàng hài lòng cảm thấy dịch vụ trên chuyến bay tốt.
Relative risk
rr4 <- matrix(c(7831, 6742,
6857, 4546
),
nrow = 2,
byrow = TRUE,
dimnames = list(c("Neutral or dissatisfied", "Satisfied"),
c("Đúng giờ", "Trễ giờ")))
addmargins(rr4)
## Đúng giờ Trễ giờ Sum
## Neutral or dissatisfied 7831 6742 14573
## Satisfied 6857 4546 11403
## Sum 14688 11288 25976
RelRisk(rr4)
## [1] 0.8936207
Với kết quả RR = 0.8936207, có thể thấy rằng trong nhóm khách có chuyến bay cất cánh đúng giờ, xác suất khách hàng không hài lòng cao gấp 0.89 lần so với tỷ lệ hành khách hài lòng.
Odd Ratio
addmargins(rr4)
## Đúng giờ Trễ giờ Sum
## Neutral or dissatisfied 7831 6742 14573
## Satisfied 6857 4546 11403
## Sum 14688 11288 25976
OddsRatio(rr4)
## [1] 0.7700586
Với kết quả OR = 0.7700586, odd khách hàng có chuyến bay cất cánh đúng giờ cảm thấy hài lòng gấp 0.77 lần hơn so với khách hàng có chuyến bay cất cánh trễ giờ cảm thấy hài lòng.
Relative risk
rr5 <- matrix(c(7646, 6927,
7031, 4372
),
nrow = 2,
byrow = TRUE,
dimnames = list(c("Neutral or dissatisfied", "Satisfied"),
c("Đúng giờ", "Trễ giờ")))
addmargins(rr5)
## Đúng giờ Trễ giờ Sum
## Neutral or dissatisfied 7646 6927 14573
## Satisfied 7031 4372 11403
## Sum 14677 11299 25976
RelRisk(rr5)
## [1] 0.8509173
Với kết quả RR = 0.8509173, có thể thấy rằng trong nhóm khách có chuyến bay hạ cánh đúng giờ, xác suất khách hàng không hài lòng cao gấp 0.85 lần so với hành khách hài lòng.
Odd Ratio
addmargins(rr5)
## Đúng giờ Trễ giờ Sum
## Neutral or dissatisfied 7646 6927 14573
## Satisfied 7031 4372 11403
## Sum 14677 11299 25976
OddsRatio(rr5)
## [1] 0.6863603
Với kết quả OR = 0.6863603, odd khách hàng có chuyến bay hạ cánh đúng giờ cảm thấy hài lòng gấp 0.69 lần hơn so với khách hàng có chuyến bay hạ cánh trể giờ cảm thấy hài lòng.
epitab(rr1, method = 'riskratio', rev = 'c')
## $tab
##
## satisfied p0 neutral or dissatisfied p1
## disloyal Customer 1208 0.2517191 3591 0.7482809
## Loyal Customer 10195 0.4814185 10982 0.5185815
##
## riskratio lower upper p.value
## disloyal Customer 1.0000000 NA NA NA
## Loyal Customer 0.6930305 0.6786825 0.7076819 5.4258e-193
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả trên cho thấy những khách hàng không trung thành cảm thấy hài lòng là 25.17% còn những khách hàng trung thành cảm thấy hài lòng là 48.14%. Tỷ lệ relative risk là khoảng 0.69, điều này có thể hiểu là nhóm khách hàng trung thành cảm thấy hài lòng chỉ bằng 0.69 lần so với nhóm khách hàng không trung thành. Khoảng ước lượng của relative risk là 0.6786825 đến 0.7076819 với mức độ tin cậy 95% và p-value là 5.4258e-193 cho thấy sự chênh lệch về sự hài lòng giữa 2 nhóm khách hàng là có sự chênh lệch đáng kể.
epitab(rr2, method = 'riskratio', rev = 'c')
## $tab
## Eco p0 Business p1 riskratio lower
## Neutral or dissatisfied 10764 0.7386262 3809 0.2613738 1.00000 NA
## Satisfied 2717 0.2382706 8686 0.7617294 2.91433 2.830575
## upper p.value
## Neutral or dissatisfied NA NA
## Satisfied 3.000562 0
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả trên cho thấy những khách hàng hạng ghế phổ thông cảm thấy hài lòng là 23.82% còn những khách hàng hạng ghế phổ thông cảm thấy không hài lòng là 73.86%. Tỷ lệ relative risk là khoảng 2.91, điều này có thể hiểu là nhóm khách hàng hạng ghế phổ thông cảm thấy hài lòng bằng 2.91 lần so với nhóm khách hàng hạng ghế phổ thông cảm thấy không hài lòng. Khoảng ước lượng của relative risk là 2.830575 đến 3.000562 với mức độ tin cậy 95% và p-value là 0 cho thấy sự chênh lệch về sự hài lòng giữa 2 nhóm khách hàng là có sự chênh lệch đáng kể.
epitab(rr3, method = 'riskratio', rev = 'c')
## $tab
## Tốt p0 Tệ p1 riskratio lower
## Neutral or dissatisfied 11330 0.7774652 3243 0.2225348 1.0000000 NA
## Satisfied 10015 0.8782776 1388 0.1217224 0.5469811 0.5162136
## upper p.value
## Neutral or dissatisfied NA NA
## Satisfied 0.5795825 2.389286e-101
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả trên cho thấy những khách hàng cảm thấy dịch vụ trên chuyến bay tốt và cảm thấy hài lòng là 87.82% còn những khách hàng cảm thấy dịch vụ trên chuyến bay tốt và cảm thấy không hài lòng là 77.75%. Tỷ lệ relative risk là khoảng 0.54, điều này có thể hiểu là nhóm khách hàng cảm thấy dịch vụ trên chuyến bay tốt và cảm thấy hài lòng bằng 0.54 lần so với những khách hàng cảm thấy dịch vụ trên chuyến bay tốt và cảm thấy không hài lòng. Khoảng ước lượng của relative risk là 0.5162136 đến 0.5795825 với mức độ tin cậy 95% và p-value là 2.389286e-101 cho thấy sự chênh lệch về sự hài lòng giữa 2 nhóm khách hàng là có sự chênh lệch đáng kể.
epitab(rr4, method = 'riskratio', rev = 'c')
## $tab
## Trễ giờ p0 Đúng giờ p1 riskratio lower
## Neutral or dissatisfied 6742 0.4626364 7831 0.5373636 1.000000 NA
## Satisfied 4546 0.3986670 6857 0.6013330 1.119043 1.095547
## upper p.value
## Neutral or dissatisfied NA NA
## Satisfied 1.143043 5.065551e-25
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả trên cho thấy những khách hàng có chuyến bay trễ giờ cảm thấy hài lòng là 39.86% còn những khách hàng có chuyến bay trễ giờ cảm thấy không hài lòng là 46.26%. Tỷ lệ relative risk là khoảng 1.11, điều này có thể hiểu là nhóm khách hàng ccó chuyến bay trễ giờ cảm thấy hài lòng bằng 1.11 lần so với những khách hàng có chuyến bay trễ giờ cảm thấy không hài lòng. Khoảng ước lượng của relative risk là 1.095547 đến 1.143043 với mức độ tin cậy 95% và p-value là 5.065551e-25 cho thấy sự chênh lệch đáng kể về sự hài lòng giữa 2 nhóm khách hàng.
epitab(rr5, method = 'riskratio', rev = 'c')
## $tab
## Trễ giờ p0 Đúng giờ p1 riskratio lower
## Neutral or dissatisfied 6927 0.4753311 7646 0.5246689 1.000000 NA
## Satisfied 4372 0.3834079 7031 0.6165921 1.175202 1.150581
## upper p.value
## Neutral or dissatisfied NA NA
## Satisfied 1.20035 6.664911e-50
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Kết quả trên cho thấy những khách hàng có chuyến bay hạ cánh trễ giờ cảm thấy hài lòng là 38.34% còn những khách hàng có chuyến bay hạ cánh trễ giờ cảm thấy không hài lòng là 47.53%. Tỷ lệ relative risk là khoảng 1.17, điều này có thể hiểu là nhóm khách hàng ccó chuyến bay hạ cánh trễ giờ cảm thấy hài lòng bằng 1.17 lần so với những khách hàng có chuyến bay hạ cánh trễ giờ cảm thấy không hài lòng. Khoảng ước lượng của relative risk là 1.150581 đến 1.20035 với mức độ tin cậy 95% và p-value là 6.664911e-50 cho thấy sự chênh lệch đáng kể về sự hài lòng giữa 2 nhóm khách hàng.
epitab(rr1, method = 'oddsratio',rev = 'c')
## $tab
##
## satisfied p0 neutral or dissatisfied p1
## disloyal Customer 1208 0.105937 3591 0.2464146
## Loyal Customer 10195 0.894063 10982 0.7535854
##
## oddsratio lower upper p.value
## disloyal Customer 1.0000000 NA NA NA
## Loyal Customer 0.3623646 0.337683 0.3888502 5.4258e-193
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Odds ratio: 0.3623646 cho thấy khách hàng trung thành có khả năng hài lòng thấp hơn 64% so với khách hàng không trung thành. Điều này được xác nhận bởi p-value cực nhỏ (5.4258e-193) cho thấy kết quả này rất đáng tin cậy.
Phân tích chi tiết:
Khách hàng không trung thành có 10,6% hài lòng và 24,6% không hài lòng hoặc trung tính.
Khách hàng trung thành có 89,4% hài lòng và 75,4% không hài lòng hoặc trung tính.
Kết luận: Khách hàng trung thành có khả năng hài lòng thấp hơn đáng kể so với khách hàng không trung thành. Điều này cho thấy có vấn đề về sự hài lòng của khách hàng trung thành cần được giải quyết.
epitab(rr2, method = 'oddsratio', rev = 'c')
## $tab
## Eco p0 Business p1 oddsratio lower
## Neutral or dissatisfied 10764 0.7984571 3809 0.3048419 1.000000 NA
## Satisfied 2717 0.2015429 8686 0.6951581 9.034267 8.535776
## upper p.value
## Neutral or dissatisfied NA NA
## Satisfied 9.561869 0
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Odds ratio: 9.034267 cho thấy khách hàng thuộc nhóm “Business” có khả năng hài lòng cao hơn 9 lần so với khách hàng thuộc nhóm “Eco”. Điều này được xác nhận bởi p-value cực nhỏ (0) cho thấy kết quả này rất đáng tin cậy.
Phân tích chi tiết:
Khách hàng thuộc nhóm “Eco” có 79,8% không hài lòng hoặc trung tính và 20,2% hài lòng.
Khách hàng thuộc nhóm “Business” có 30,5% không hài lòng hoặc trung tính và 69,5% hài lòng.
Kết luận: Khách hàng thuộc nhóm “Business” có khả năng hài lòng cao hơn đáng kể so với khách hàng thuộc nhóm “Eco”. Điều này có thể cho thấy nhóm “Eco” có thể cần được chú ý nhiều hơn về mặt cải thiện sự hài lòng khách hàng
epitab(rr3, method = 'oddsratio', rev = 'c')
## $tab
## Tốt p0 Tệ p1 oddsratio lower
## Neutral or dissatisfied 11330 0.5308035 3243 0.7002807 1.0000000 NA
## Satisfied 10015 0.4691965 1388 0.2997193 0.4841963 0.4521971
## upper p.value
## Neutral or dissatisfied NA NA
## Satisfied 0.51846 2.389286e-101
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Odds ratio: 0.4841963 cho thấy khách hàng đánh giá dịch vụ trên chuyến bay là “Tệ” có khả năng hài lòng thấp hơn 52% so với khách hàng đánh giá dịch vụ là “Tốt”. Điều này được xác nhận bởi p-value cực nhỏ (2.389286e-101) cho thấy kết quả này rất đáng tin cậy.
Phân tích chi tiết:
Khách hàng đánh giá dịch vụ là “Tốt” có 53,1% không hài lòng hoặc trung tính và 46,9% hài lòng.
Khách hàng đánh giá dịch vụ là “Tệ” có 70,0% không hài lòng hoặc trung tính và 30,0% hài lòng.
Kết luận: Khách hàng đánh giá dịch vụ trên chuyến bay là “Tệ” có khả năng hài lòng thấp hơn đáng kể so với khách hàng đánh giá dịch vụ là “Tốt”. Điều này cho thấy dịch vụ trên chuyến bay có ảnh hưởng rõ rệt đến mức độ hài lòng của khách hàng.
epitab(rr4, method = 'oddsratio', rev = 'c')
## $tab
## Trễ giờ p0 Đúng giờ p1 oddsratio lower
## Neutral or dissatisfied 6742 0.5972714 7831 0.5331563 1.000000 NA
## Satisfied 4546 0.4027286 6857 0.4668437 1.298603 1.235696
## upper p.value
## Neutral or dissatisfied NA NA
## Satisfied 1.364712 5.065551e-25
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Odds ratio: 1.298603 cho thấy khách hàng đi chuyến bay đúng giờ có khả năng hài lòng cao hơn 30% so với khách hàng đi chuyến bay bị trễ giờ. Điều này được xác nhận bởi p-value cực nhỏ (5.065551e-25) cho thấy kết quả này rất đáng tin cậy.
Phân tích chi tiết:
Khách hàng đi chuyến bay bị trễ giờ có 59,7% không hài lòng hoặc trung tính và 40,3% hài lòng.
Khách hàng đi chuyến bay đúng giờ có 53,3% không hài lòng hoặc trung tính và 46,7% hài lòng.
Kết luận: Khách hàng đi chuyến bay đúng giờ có khả năng hài lòng cao hơn đáng kể so với khách hàng đi chuyến bay bị trễ giờ. Điều này cho thấy độ trễ giờ bay là một yếu tố quan trọng ảnh hưởng đến sự hài lòng của khách hàng.
epitab(rr5, method = 'oddsratio', rev = 'c')
## $tab
## Trễ giờ p0 Đúng giờ p1 oddsratio lower
## Neutral or dissatisfied 6927 0.6130631 7646 0.5209511 1.000000 NA
## Satisfied 4372 0.3869369 7031 0.4790489 1.456961 1.386154
## upper p.value
## Neutral or dissatisfied NA NA
## Satisfied 1.531384 6.664911e-50
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Odds ratio: 1.456961 cho thấy khách hàng đi chuyến bay đúng giờ có khả năng hài lòng cao hơn 46% so với khách hàng đi chuyến bay bị trễ giờ đến. Điều này được xác nhận bởi p-value cực nhỏ (6.664911e-50) cho thấy kết quả này rất đáng tin cậy.
Phân tích chi tiết:
Khách hàng đi chuyến bay bị trễ giờ đến có 61,3% không hài lòng hoặc trung tính và 38,7% hài lòng.
Khách hàng đi chuyến bay đúng giờ có 52,1% không hài lòng hoặc trung tính và 47,9% hài lòng.
Kết luận: Khách hàng đi chuyến bay đúng giờ có khả năng hài lòng cao hơn đáng kể so với khách hàng đi chuyến bay bị trễ giờ đến. Điều này cho thấy độ trễ giờ đến là một yếu tố quan trọng ảnh hưởng đến sự hài lòng của khách hàng.
p <- data[data$satisfaction == 'satisfied',]
prop.test(length(p$satisfaction), length(data$satisfaction))
##
## 1-sample proportions test with continuity correction
##
## data: length(p$satisfaction) out of length(data$satisfaction), null probability 0.5
## X-squared = 386.61, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4329374 0.4450449
## sample estimates:
## p
## 0.4389821
p <- data[data$satisfaction == 'neutral or dissatisfied',]
prop.test(length(p$satisfaction), length(data$satisfaction))
##
## 1-sample proportions test with continuity correction
##
## data: length(p$satisfaction) out of length(data$satisfaction), null probability 0.5
## X-squared = 386.61, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5549551 0.5670626
## sample estimates:
## p
## 0.5610179
Với độ tin cậy 95%, ta có tỷ lệ khách hàng hài lòng về hãng hàng không so với tổng thể nằm trong khoảng từ 43.3% đến 44.5%. Hay nói cách khác, tỷ lệ người không hài lòng về hãng hàng không sẽ chiếm khoảng từ 55.5% đến 56.7%.
p <- data[data$Class== 'Business',]
prop.test(length(p$Class), length(data$Class))
##
## 1-sample proportions test with continuity correction
##
## data: length(p$Class) out of length(data$Class), null probability 0.5
## X-squared = 37.351, df = 1, p-value = 9.868e-10
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4749289 0.4871186
## sample estimates:
## p
## 0.4810209
Với độ tin cậy 95%, ta có tỷ lệ khách hàng ngồi ở hạng ghế thương gia so với tổng thể nằm trong khoảng từ 47.5% đến 48.7%.
p <- data[data$Class== 'Eco Plus',]
prop.test(length(p$Class), length(data$Class))
##
## 1-sample proportions test with continuity correction
##
## data: length(p$Class) out of length(data$Class), null probability 0.5
## X-squared = 18872, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.07066330 0.07706129
## sample estimates:
## p
## 0.07379889
Với độ tin cậy 95%, ta có tỷ lệ khách hàng ngồi ở hạng ghế cao cấp so với tổng thể nằm trong khoảng từ 7.07% đến 7.71%.
p <- data[data$Class== 'Eco',]
prop.test(length(p$Class), length(data$Class))
##
## 1-sample proportions test with continuity correction
##
## data: length(p$Class) out of length(data$Class), null probability 0.5
## X-squared = 312.03, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4391258 0.4512508
## sample estimates:
## p
## 0.4451802
Với độ tin cậy 95%, ta có tỷ lệ khách hàng ngồi ở hạng ghế thường so với tổng thể nằm trong khoảng từ 43.91% đến 45.13%.
p <- data[data$`Customer Type`== 'Loyal Customer',]
prop.test(length(p$`Customer Type`), length(data$`Customer Type`))
##
## 1-sample proportions test with continuity correction
##
## data: length(p$`Customer Type`) out of length(data$`Customer Type`), null probability 0.5
## X-squared = 10325, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.8104671 0.8199444
## sample estimates:
## p
## 0.8152525
p <- data[data$`Customer Type`== 'disloyal Customer',]
prop.test(length(p$`Customer Type`), length(data$`Customer Type`))
##
## 1-sample proportions test with continuity correction
##
## data: length(p$`Customer Type`) out of length(data$`Customer Type`), null probability 0.5
## X-squared = 10325, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.1800556 0.1895329
## sample estimates:
## p
## 0.1847475
Với độ tin cậy 95%, ta có tỷ lệ khách hàng trung thành so với tổng thể nằm trong khoảng từ 81.05% đến 82%. Hay nói cách khác, tỷ lệ người không hài lòng về hãng hàng không sẽ chiếm khoảng từ 18% đến 18.95%.
p <- data[data$`Inflight service`== 'Hài lòng',]
prop.test(length(p$`Inflight service`), length(data$`Inflight service`))
##
## 1-sample proportions test with continuity correction
##
## data: length(p$`Inflight service`) out of length(data$`Inflight service`), null probability 0.5
## X-squared = 2006.2, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.3551865 0.3669058
## sample estimates:
## p
## 0.3610256
Với độ tin cậy 95%, ta có tỷ lệ khách hàng hài lòng về dịch vụ trên chuyến bay so với tổng thể nằm trong khoảng từ 35.52% đến 36.69%.
p <- data[data$dd== 'đúng giờ',]
prop.test(length(p$dd), length(data$dd))
##
## 1-sample proportions test with continuity correction
##
## data: length(p$dd) out of length(data$dd), null probability 0.5
## X-squared = 444.76, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5593884 0.5714822
## sample estimates:
## p
## 0.565445
Với độ tin cậy 95%, ta có tỷ lệ chuyến bay cất cánh đúng giờ so với tổng thể nằm trong khoảng từ 55.93% đến 57.14%.
p <- data[data$ad== 'đúng giờ',]
prop.test(length(p$ad), length(data$ad))
##
## 1-sample proportions test with continuity correction
##
## data: length(p$ad) out of length(data$ad), null probability 0.5
## X-squared = 439.03, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5589643 0.5710595
## sample estimates:
## p
## 0.5650216
Với độ tin cậy 95%, ta có tỷ lệ chuyến bay hạ cánh đúng giờ so với tổng thể nằm trong khoảng từ 55.9% đến 57.11%.
# Chạy mô hình xác suất tuyến tính
data$satisfaction <- ifelse(data$satisfaction == "satisfied", 1, 0)
# Chạy mô hình xác suất tuyến tính
model1 <- glm(satisfaction ~ `Customer Type` + Class + `Inflight service`+ `Departure Delay in Minutes`+`Arrival Delay in Minutes`, data = data )
# Hiển thị kết quả mô hình
summary(model1)
##
## Call:
## glm(formula = satisfaction ~ `Customer Type` + Class + `Inflight service` +
## `Departure Delay in Minutes` + `Arrival Delay in Minutes`,
## data = data)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.84501 -0.28743 -0.08723 0.26106 1.19585
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.1808279 0.2919948 -0.619 0.53573
## `Customer Type`Loyal Customer 0.1801179 0.0066611 27.040 < 2e-16 ***
## ClassEco -0.4515135 0.0054387 -83.018 < 2e-16 ***
## ClassEco Plus -0.4093591 0.0102043 -40.116 < 2e-16 ***
## `Inflight service`Rất tệ 0.6380948 0.2921079 2.184 0.02894 *
## `Inflight service`Tệ 0.5955417 0.2920402 2.039 0.04144 *
## `Inflight service`Bình thường 0.5773312 0.2920005 1.977 0.04803 *
## `Inflight service`Hài lòng 0.7396498 0.2919643 2.533 0.01130 *
## `Inflight service`Rất hài lòng 0.8390910 0.2919714 2.874 0.00406 **
## `Departure Delay in Minutes` 0.0004734 0.0002328 2.033 0.04204 *
## `Arrival Delay in Minutes` -0.0009983 0.0002327 -4.290 1.79e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.170433)
##
## Null deviance: 6397.3 on 25975 degrees of freedom
## Residual deviance: 4425.3 on 25965 degrees of freedom
## AIC: 27767
##
## Number of Fisher Scoring iterations: 2
Phương Trình Hồi Quy:
π ̂= -0.1808+0.1801.Customer Type -0.4515.Class -0.4094.Class +0.6381.Inflight Service +0.5955×Inflight Service +0.5773×Inflight Service +0.7396×Inflight Service +0.8391×Inflight Service + 0.0005×Departure Delay in Minutes-0.0010×Arrival Delay in Minutes
Phương trình này cho phép bạn dự đoán sự hài lòng của khách hàng dựa trên các yếu tố như loại khách hàng, hạng ghế, chất lượng dịch vụ trên máy bay, và thời gian chậm trễ của chuyến bay.
Giải Thích:
Hệ số chặn: -0.1808 Đây là giá trị dự đoán của sự hài lòng khi tất cả các biến độc lập đều bằng 0.
Hệ số của Customer Type: 0.1801 cho thấy khách hàng trung thành có mức độ hài lòng cao hơn so với khách hàng không trung thành. Cụ thể, nếu khách hàng là trung thành, mức độ hài lòng dự đoán tăng thêm 0.1801 đơn vị so với khách hàng không trung thành.
Hệ số của Class (Eco): -0.4515 cho thấy hành khách chọn hạng ghế Economy (Eco) có mức độ hài lòng thấp hơn so với hạng ghế khác (ví dụ: Business hoặc First Class). Cụ thể, nếu khách hàng chọn hạng ghế Economy, mức độ hài lòng dự đoán giảm 0.4515 đơn vị so với hạng ghế khác.
Hệ số của Class (Eco Plus): -0.4094 cho thấy hành khách chọn hạng ghế Economy Plus (Eco Plus) có mức độ hài lòng thấp hơn so với hạng ghế khác. Cụ thể, nếu khách hàng chọn hạng ghế Economy Plus, mức độ hài lòng dự đoán giảm 0.4094 đơn vị so với hạng ghế khác.
Hệ số của Inflight Service (Very Poor): 0.6381 cho thấy mức độ hài lòng tăng thêm 0.6381 đơn vị nếu hành khách đánh giá dịch vụ trên máy bay là “Very Poor” so với dịch vụ cơ bản.
Hệ số của Inflight Service (Poor): 0.5955 cho thấy mức độ hài lòng tăng thêm 0.5955 đơn vị nếu hành khách đánh giá dịch vụ trên máy bay là “Poor” so với dịch vụ cơ bản.
Hệ số của Inflight Service (Average): 0.5773 cho thấy mức độ hài lòng tăng thêm 0.5773 đơn vị nếu hành khách đánh giá dịch vụ trên máy bay là “Average” so với dịch vụ cơ bản.
Hệ số của Inflight Service (Good): 0.7396 cho thấy mức độ hài lòng tăng thêm 0.7396 đơn vị nếu hành khách đánh giá dịch vụ trên máy bay là “Good” so với dịch vụ cơ bản.
Hệ số của Inflight Service (Very Good): 0.8391 cho thấy mức độ hài lòng tăng thêm 0.8391 đơn vị nếu hành khách đánh giá dịch vụ trên máy bay là “Very Good” so với dịch vụ cơ bản.
Hệ số của Departure Delay in Minutes: 0.0005 cho thấy mỗi phút chậm trễ khi khởi hành làm tăng mức độ hài lòng dự đoán lên 0.0005 đơn vị. Tuy nhiên, ảnh hưởng này là rất nhỏ và có thể không đáng kể trong thực tế.
Hệ số của Arrival Delay in Minutes: -0.0010 cho thấy mỗi phút hạ cánh chậm trễ khi đến làm giảm mức độ hài lòng dự đoán đi 0.0010 đơn vị. Mặc dù giá trị này nhỏ, nhưng nó cho thấy rằng sự chậm trễ khi đến có ảnh hưởng tiêu cực đến sự hài lòng của hành khách.
# Fit the logistic regression model
model2 <- glm(satisfaction ~ `Customer Type` + Class + `Inflight service`+ `Departure Delay in Minutes`+`Arrival Delay in Minutes`, family = binomial(link = "logit"), data = data)
# View the model summary
summary(model2)
##
## Call:
## glm(formula = satisfaction ~ `Customer Type` + Class + `Inflight service` +
## `Departure Delay in Minutes` + `Arrival Delay in Minutes`,
## family = binomial(link = "logit"), data = data)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.9695 -0.7899 -0.4381 0.7226 2.8596
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -11.765320 84.476497 -0.139 0.8892
## `Customer Type`Loyal Customer 1.195130 0.043273 27.618 < 2e-16 ***
## ClassEco -2.214556 0.032260 -68.648 < 2e-16 ***
## ClassEco Plus -1.927334 0.059139 -32.590 < 2e-16 ***
## `Inflight service`Rất tệ 11.179080 84.476509 0.132 0.8947
## `Inflight service`Tệ 10.921410 84.476500 0.129 0.8971
## `Inflight service`Bình thường 10.771445 84.476496 0.128 0.8985
## `Inflight service`Hài lòng 11.779817 84.476491 0.139 0.8891
## `Inflight service`Rất hài lòng 12.315701 84.476493 0.146 0.8841
## `Departure Delay in Minutes` 0.002772 0.001435 1.932 0.0534 .
## `Arrival Delay in Minutes` -0.006018 0.001432 -4.203 2.63e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 35623 on 25975 degrees of freedom
## Residual deviance: 26635 on 25965 degrees of freedom
## AIC: 26657
##
## Number of Fisher Scoring iterations: 9
# Fit the logistic regression model
model3 <- glm(satisfaction ~ `Customer Type` + Class + `Inflight service`+ `Departure Delay in Minutes`+`Arrival Delay in Minutes`, family = binomial(link = "probit"), data = data)
# View the model summary
summary(model3)
##
## Call:
## glm(formula = satisfaction ~ `Customer Type` + Class + `Inflight service` +
## `Departure Delay in Minutes` + `Arrival Delay in Minutes`,
## family = binomial(link = "probit"), data = data)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.9791 -0.8016 -0.4460 0.7349 3.0302
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.8247549 25.8612297 -0.187 0.8520
## `Customer Type`Loyal Customer 0.6562462 0.0245971 26.680 < 2e-16 ***
## ClassEco -1.3155285 0.0184706 -71.223 < 2e-16 ***
## ClassEco Plus -1.1630282 0.0345099 -33.701 < 2e-16 ***
## `Inflight service`Rất tệ 4.5753655 25.8612433 0.177 0.8596
## `Inflight service`Tệ 4.4252886 25.8612340 0.171 0.8641
## `Inflight service`Bình thường 4.3227983 25.8612288 0.167 0.8672
## `Inflight service`Hài lòng 4.8855463 25.8612239 0.189 0.8502
## `Inflight service`Rất hài lòng 5.2205784 25.8612255 0.202 0.8400
## `Departure Delay in Minutes` 0.0016727 0.0008311 2.013 0.0441 *
## `Arrival Delay in Minutes` -0.0035541 0.0008294 -4.285 1.83e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 35623 on 25975 degrees of freedom
## Residual deviance: 26725 on 25965 degrees of freedom
## AIC: 26747
##
## Number of Fisher Scoring iterations: 9
probit(P(satisfaction = 1)) = -4.8247549 + 0.6562462 * Customer TypeLoyal Customer - 1.3155285 * ClassEco - 1.1630282 * ClassEco Plus + 4.5753655 * Inflight serviceRất tệ + 4.4252886 * Inflight serviceTệ + 4.3227983 * Inflight serviceBình thường + 4.8855463 * Inflight serviceHài lòng + 5.2205784 * Inflight serviceRất hài lòng + 0.0016727 * Departure Delay in Minutes - 0.0035541 * Arrival Delay in Minutes
Hệ số của Customer Type (1.1951 cho thấy Khách hàng trung thành có chỉ số probit 1.1951 so với khách hàng không trung thành. Điều này có nghĩa là khách hàng trung thành có khả năng hài lòng cao hơn đáng kể và trong điều kiện các yếu tố khác không đổi
Hệ số của Class (Eco): -2.2146 cho thấy Hành khách chọn hạng ghế Economy (Eco) có chỉ số probit của sự hài lòng giảm đi 2.2146 so với hạng ghế khác. Điều này chỉ ra rằng hành khách chọn hạng ghế Economy có khả năng không hài lòng cao hơn và trong điều kiện các yếu tố khác không đổi
Hệ số của Class (Eco Plus): -1.9273 cho thấy: Hành khách chọn hạng ghế Economy Plus (Eco Plus) có log odds của sự hài lòng giảm đi 1.9273 so với hạng ghế khác. Điều này chỉ ra rằng hành khách chọn hạng ghế Economy Plus có khả năng không hài lòng cao hơn và trong điều kiện các yếu tố khác không đổi
Hệ số của Inflight Service (Very Poor): 11.1791 cho thấy chỉ số probit của sự hài lòng tăng thêm 11.1791 khi dịch vụ trên máy bay được đánh giá là “Very Poor” và trong điều kiện các yếu tố khác không đổi . và trong điều kiện các yếu tố khác không đổi .Mặc dù hệ số này cao, nó có thể không có ý nghĩa thực tế do giá trị p cao (0.8947).
Hệ số của Inflight Service (Poor): 10.9214 cho thấy chỉ số probit của sự hài lòng tăng thêm 10.9214 khi dịch vụ trên máy bay được đánh giá là “Poor”. và trong điều kiện các yếu tố khác không đổi Tương tự như trên, giá trị p cao (0.8971) cho thấy hệ số này không có ý nghĩa thống kê.
Hệ số của Inflight Service (Average): 10.7714 cho thấy chỉ số probit của sự hài lòng tăng thêm 10.7714 khi dịch vụ trên máy bay được đánh giá là “Average”. và trong điều kiện các yếu tố khác không đổi Giá trị p cao (0.8985) cho thấy hệ số này không có ý nghĩa thống kê.
Hệ số của Inflight Service (Good): 11.7798 cho thấy chỉ số probit của sự hài lòng tăng thêm 11.7798 khi dịch vụ trên máy bay được đánh giá là “Good”. Và trong điều kiện các yếu tố khác không đổi Giá trị p cao (0.8891) cho thấy hệ số này không có ý nghĩa thống kê.
Hệ số của Inflight Service (Very Good): 12.3157 cho thấy chỉ số probit của sự hài lòng tăng thêm 12.3157 khi dịch vụ trên máy bay được đánh giá là “Very Good”. và trong điều kiện các yếu tố khác không đổi Giá trị p cao (0.8841) cho thấy hệ số này không có ý nghĩa thống kê.
AIC(model1)
## [1] 27767.42
AIC(model2)
## [1] 26656.64
AIC(model3)
## [1] 26746.69
Kết quả trên cho chúng ta thấy rằng mô hình logit sẽ hiệu quả hơn các mô hình probit và xác suất tuyến tính. Bởi vì chỉ số AIC của logit đạt thấp nhất là 26656.64, trong khi đó của mô hình probit là 26746.69 và kém hiệu quả nhất của mô hình xác suất tuyến tính với AIC là 27767.42.
BrierScore(model1)
## [1] 0.1703608
BrierScore(model2)
## [1] 0.1665815
BrierScore(model3)
## [1] 0.1676092
Dựa vào kết quả của hệ số Brier Score chúng tôi cho rằng mô hình logit vẫn sẽ là lựa chọn tốt nhất vì giá trị BrierScore thấp hơn đạt 0.1665815, kết quả này tương đồng với phương pháp AIC. Trong khi đó hệ số Brier Score của mô hình probit là 0.1676092. Brier Score của hai mô hình khá thấp, mô hình xác suất tuyến tính kém hiệu quả nhất với hệ số Brier Score là 0.1703608.
Conf(table(predict(model1, type="response") >=0.5,model1$data$satisfaction == '1'))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction FALSE TRUE
## FALSE 11005 2795
## TRUE 3568 8608
##
## Total n : 25'976
## Accuracy : 0.7550
## 95% CI : (0.7498, 0.7602)
## No Information Rate : 0.5610
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.5063
## Mcnemar's Test P-Value : < 2.2e-16
##
## Sensitivity : 0.7552
## Specificity : 0.7549
## Pos Pred Value : 0.7975
## Neg Pred Value : 0.7070
## Prevalence : 0.5610
## Detection Rate : 0.5313
## Detection Prevalence : 0.4237
## Balanced Accuracy : 0.7550
## F-val Accuracy : 0.7757
## Matthews Cor.-Coef : 0.5072
##
## 'Positive' Class : FALSE
Từ kết quả ma trận nhầm lẫn của mô hình xác suất tuyến tính cho rằng có 11005 số lần mô hình dự đoán đúng là số khách hàng không hài lòng. Tuy nhiên có 2795 lần mô hình dự đoán sai đối với số khách hàng không hài lòng và khoảng 3568 lần mô hình dự đoán sai số khách hàng hài lòng. Số lần mô hình dự đoán đúng số khách hàng hài lòng là 8608 lần . Kết quả cũng chỉ ra tỷ lệ mô hình dự đoán đúng là 75.50%
Conf(table(predict(model2, type="response") >=0.5,model2$data$satisfaction == '1'))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction FALSE TRUE
## FALSE 11263 2954
## TRUE 3310 8449
##
## Total n : 25'976
## Accuracy : 0.7589
## 95% CI : (0.7536, 0.7640)
## No Information Rate : 0.5610
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.5121
## Mcnemar's Test P-Value : 7.28e-06
##
## Sensitivity : 0.7729
## Specificity : 0.7409
## Pos Pred Value : 0.7922
## Neg Pred Value : 0.7185
## Prevalence : 0.5610
## Detection Rate : 0.5473
## Detection Prevalence : 0.4336
## Balanced Accuracy : 0.7569
## F-val Accuracy : 0.7824
## Matthews Cor.-Coef : 0.5123
##
## 'Positive' Class : FALSE
Từ kết quả ma trận nhầm lẫn của mô hình logit cho rằng có 11263 số lần mô hình dự đoán đúng là số khách hàng không hài lòng. Tuy nhiên có 2954 lần mô hình dự đoán sai đối với số khách hàng không hài lòng và khoảng 3310 lần mô hình dự đoán sai số khách hàng hài lòng. Số lần mô hình dự đoán đúng số khách hàng hài lòng là 8449 lần . Kết quả cũng chỉ ra tỷ lệ mô hình dự đoán đúng là 75.89%.
Conf(table(predict(model3, type="response") >=0.5,model3$data$satisfaction == '1'))
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction FALSE TRUE
## FALSE 11121 2876
## TRUE 3452 8527
##
## Total n : 25'976
## Accuracy : 0.7564
## 95% CI : (0.7511, 0.7616)
## No Information Rate : 0.5610
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.5081
## Mcnemar's Test P-Value : 4.89e-13
##
## Sensitivity : 0.7631
## Specificity : 0.7478
## Pos Pred Value : 0.7945
## Neg Pred Value : 0.7118
## Prevalence : 0.5610
## Detection Rate : 0.5388
## Detection Prevalence : 0.4281
## Balanced Accuracy : 0.7555
## F-val Accuracy : 0.7785
## Matthews Cor.-Coef : 0.5086
##
## 'Positive' Class : FALSE
Từ kết quả ma trận nhầm lẫn của mô hình probit cho rằng có 11121 số lần mô hình dự đoán đúng là số khách hàng không hài lòng. Tuy nhiên có 2876 lần mô hình dự đoán sai đối với số khách hàng không hài lòng và khoảng 3452 lần mô hình dự đoán sai số khách hàng hài lòng. Số lần mô hình dự đoán đúng số khách hàng hài lòng là 8527 lần . Kết quả cũng chỉ ra tỷ lệ mô hình dự đoán đúng là 75.89%.