Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 21

3.

Thống kê mô tả
Ta tính các giá trị thống kê mô tả bao gồm: trung bình (mean), trung vị
(median), độ lệch chuẩn (sd), giá trị nhỏ nhất (min) và giá trị lớn nhất (max)
của các biến trong dữ liệu.

H0 là mô hình rút gọn ( mô hình 2 )


H1 là mô hình đầy đủ ban đầu ( mô hình 1 )

Tính các giá trị thống kê mô tả (trung bình, độ lệch chuẩn, min, max, trung vị)
Dựa trên Anova
Mô tả trung bình biến YEAR,
Những dữ liệu còn lại là Biến PHÂN LOẠI, thống kê,
Có 2 bản
Thống kê 4 cột đó và Mấy cột conf lại, có bao nhiêu hành khách dùng dịch vụ
Giả Định Giả thiết không H 0

Thống kê Mô tả là : Vẽ vài Đồ Thị gốc của Ứng dụng.


Vẽ đồ thị bằng Lệnh : Plot, đổi tên trục tung và trực hoành bằng xlab, ylab
Vẽ biểu đồ hộp : boxplot

Cái nào mà Độ tin cậy cao thì nó sẽ ảnh hưởng đến Khách hàng
XÂY DỤNG MÔ HÌNH GIả định
MÔ HÌNH TT1
Đặt giả thuyết H0 là các biến thứ i không mang ý nghĩa thống kê
Giả thiết H1 là các biến thứ i mang ý nghĩa thống kê
Theo mô hình New_DF 1 thì ,các biến thứ i có mức ý nghĩa lớn hơn 5% sẽ ko
có dấu sao* nên loại biến (Adjusted.Passenger.Count), các biến thứ i còn lại
vẫn có ý nghĩa thống kê
Xây dựng Mô Hình TT2

P có giá trị nhỏ hơn giá trị 5% nến mình chưa bác Bỏ H0
H0 là mô hình rút gọn

Bài toán kiểm định 2 mẫu

Mục tiêu của nhóm là tìm ra mô hình phù hợp để dự đoán


Adjusted.Pasenger.Count (số hành khách)
Yêu cầu : Mô hình phải có ít nhất 1 biến phụ thuộc và 5 biến độc lập , Ajusted
R-spaured (hệ số tương quan R^2 hiệu chỉnh) phải lớn hơn 0.45 ) tức có có
45% giá trị số biến giải thích cho biến phụ thuộc .

Chọn mẫu “mlm0” gồm 1 biến phụ thuộc ( Adjusted.Pasenger.Count) và 6


biến độc lập lần lượt là ( số giờ bay, loại vé, mã loại hoạt động, chuyến bay nội
địa hay nước ngoài, hãng hàng không, Terminal).
* 1 vài chú thích trong bản thống kê
Residual là sai số còn lại sau khi mô hình đã được khớp với dữ liệu. Nó được
tính bằng hiệu của giá trị thực tế và giá trị dự đoán của mô hình. Residual càng
nhỏ thì mô hình càng chính xác.
Coefficients trong Rstudio là các giá trị ước lượng của các hệ số trong mô hình
tuyến tính.
Các thành phần chính của Coefficients bao gồm Estimate (ước lượng),
Std.Error (độ lệch chuẩn), t value (giá trị t), và p-value (giá trị p).
Estimate là giá trị ước lượng của hệ số, Std.Error là độ lệch chuẩn của ước
lượng, t value là giá trị t của ước lượng, và p-value là xác suất của giá trị t.Các
hệ số này được sử dụng để kiểm định giả thuyết về sự ảnh hưởng của các biến
độc lập đến biến phụ thuộc trong mô hình.
Theo như trên bản thống kê
Cột Estimate là hệ số hồi quy : hàng nghang ( hệ số chặn Intercept) , dòng 2-8
là hệ số góc của biến độc lập và tất cả ( ngoại trừ tập hợp con Enplaned của
biến Activity.Type.Code) là đều có p-value (giá trị p) rất nhỏ và tất cả đều có ý
nghĩa thống kê.
Residual standard error : sai số chuẩn của Residual
Miltiple R-spaured : là hệ số R bình phương ( mẫu càng nhiều biến thì giá trị
càng cao ), ko có ý nghĩa só sánh 2 mô hình
Ajusted R-spaured : là hệ số R bình phương hiệu chỉnh( giá trị càng về 1 thì mô
hình càng phù hợp )
F-statistic : phân tích anova hệ số F ( F từng phần )

Nhận xét mẫu mlm0


Từ 3 bảng thống kê ở trên ta nhận xét thấy rằng:
Biến Opeating.Airline gồm rất nhiều dữ liệu con khác nhau, tuy cũng có dữ
liệu có ý nghĩa thông kê nhưng trong đó cũng có rất nhiều dữ liệu con của biến
Operating.Airline không có ý nghĩa thông kê ( Pr(>t)) lớn hơn mức ý nghĩa 5%
nên nhoms quyết định lập một mẫu mới mlm1.

Mẫu mlm1 là mẫu mlm0 nhưng đã loại bỏ biến hãng hàng không
( Operating.Airline). Mẫu mlm1 gồm 1 biến phụ thuộc
( Adjusted.Pasenger.Count) và 5 biến độc lập lần lượt là ( số giờ bay, loại vé,
mã loại hoạt động, chuyến bay nội địa hay nước ngoài, Terminal).

Nhận xét
Từ mẫu mlm1 ta thấy chỉ có biến Activity.Type.Code ( dữ liệu con Enplaned )
Pr(>t)=0.503 là không có mức ý nghĩa thống kê. Các biến còn lại đều mang ý
nghĩa thông kê.

Kiểm định 2 mẫu mlm0 và mlm1


Giả thuyết H0 là mẫu mlm1 ( mô hình rút gọn )
Giả thuyết H1 là mẫu mlm0 ( mô hình đầy đủ )
Xét với mức y nghĩa 5%
Dựa vào hệ số R^2 hiệu chỉnh của 2 mẫu để so sánh

Mẫu mlm0
Mẫu mlm1

Ta thấy rằng mặc đù mẫu mlm1 ( có 5 biến độc lập ) sẽ rút gọn hơn mẫu mlm0
( 6 biến độc lập ), nhưng sau khi xóa biến Operating.Airline ( hãng hàng
không ) thì hệ số tương quan R^2 hiệu chỉnh của mẫu mlm1 giảm mạnh ( Từ
0.4789 về 0.3124 ) chứng tỏ Operating.Airline ( hãng hàng không ) là cần thiết
cho mẫu phù hợp nên dựa vào hệ số tương quan R^2 hiệu chỉnh,
nhóm Bác bỏ H0 và chấp nhận H1 , chấp nhận mô hình đầy đủ mlm0

Mô hình mlm0 đã đáp ứng đủ yêu cầu của nhóm đặt ra ( có 1 biến phụ thuộc và
6 biến độc lập, Adjusted R-squared = 0.4789 >0.45)

Phân tích phương sai Anova


Sử dụng mô hình mlm0 để phân tích anova

Trong lệnh Anova trong R, các thông số Sum sq, MeanSq, F value và Pr(>F) có
ý nghĩa như sau
Sum sq: Tổng bình phương
MeanSq: Trung bình bình phương
F value: Giá trị F
Pr(>F): Giá trị p ( giá trị càng thấp thì độ tin cậy càng cao)
Đây là các thông số quan trọng để đánh giá sự khác biệt giữa các nhóm trong
phân tích Anova.

Dòng lệnh augment ( Ước lượng )


Trong RStudio, dòng lệnh augment được sử dụng để thêm các cột mới vào dữ
liệu dựa trên mô hình thống kê đã được xây dựng. Các thông số trong dòng
lệnh augment có thể bao gồm tên mô hình, biến cần dự báo, và các thông số
khác liên quan đến mô hình.
Ở đây biến dự báo của chúng ta là Adjusted.Passenger.Count ( số khách hàng )

Chúng ta chỉ cần xem cột cuối cùng .fitted ( là giá trị dự đoán biến phụ thuộc
dựa vào số liệu của các biến còn lại).
Ở đây cột fitted có vài giá trị Âm ( được in màu đỏ ) dự đoán sai, vì số khách
hàng ko thể có dấu âm.

Dòng lệnh RMSE ( Khoảng Ước Lượng )


Lỗi trung bình bình phương gốc (RMSE) là thước đo mức độ hiệu quả của mô
hình của bạn. Nó thực hiện điều này bằng cách đo sự khác biệt giữa các giá trị
dự đoán và giá trị thực tế . R-MSE càng nhỏ tức là sai số càng bé thì mức độ
ước lượng cho thấy độ tin cậy của mô hình có thể đạt cao nhất.

Ở đây RMSE=41973.11 là số lớn , nhóm nhận sét sai số mức ước lượng cho độ
tin cậy của mô hình mlm0 là khá thấp

Dự đoán
Dự đoán Adjusted.Passenger.Count (Số khách hàng)
Cho sẳn vài giá trị của biến độc lập để dự đoán Adjusted.Pasenger.Count
Tài liệu tham khảo
https://youtu.be/La8HC_KxBxY?feature=shared ( đăng nhập lần gần nhất
26/11/2023)

Mô hình hồi quy tuyến tính đan biến mlm0 ( 6 biến )


Estimate là giá trị ước lượng của hệ số, Std.Error là độ lệch chuẩn của ước
lượng, t value là giá trị t của ước lượng, và p-value là xác suất của giá trị t.Các
hệ số này được sử dụng để kiểm định giả thuyết về sự ảnh hưởng của các biến
độc lập đến biến phụ thuộc trong mô hình.
Theo như trên bản thống kê
Cột Estimate là hệ số hồi quy : hàng nghang ( hệ số chặn Intercept) , dòng 2 trở
đi là hệ số góc của biến độc lập cái nào có p-value (giá trị p) rất nhỏ có ý nghĩa
thống kê.
Residual standard error : sai số chuẩn của Residual
3. Thống kê mô tả
3.1. Tính các giá trị thống kê cho các biến liên tục

Ta tính các giá trị thống kê mô tả bao gồm: trung bình (mean), trung vị
(median), độ lệch chuẩn (sd), giá trị nhỏ nhất (min) và giá trị lớn nhất (max)
của các biến trong dữ liệu.
3.2. Lập bảng thống kê và vẽ đồ thị cho các biến phân loại
 Giữa các thời gian chuyến bay (Activity.period)

Nhận xét : Các tổng các giờ bay so với nhau thì Chuyên lệch không nhiều ( từ
khoảng 5-15 giờ )
 Giữa các hãng hàng không vận hành với nhau (Operating.Airline)

Từ bản thống kê và biểu đồ ta thấy đa số các hãng hàng không vận hành phân
bố không đều ( có sự chuyên lệch lớn giữa chúng với nhau , tập trung chủ yếu
ở khoảng 230-270 và cao nhất là United Airlines- Pre khoảng 2154 )

 Giữa các hãng hàng không công bố (Published.Airline)

Từ biểu đồ và bản thống kê : Ta thấy là tổng thể thì phân bố không đều, các
hãng tập trung chủ yếu ở (170-250) và cao nhất là United Airlines- Pre khoảng
2645 )

 Giữa số chuyến bay nội và ngoại địa (GEO.Summary)


Nhận xét : Ta thấy số chuyến bay ngoài nước cao hơn nội địa chiếm 9196
khoảng ( 61,34%)

 Giữa các các địa điểm đến của chuyến bay (GEO.Region)
Nhận xét : Từ bản thống kê và biểu đồ ta thấy : 2 nơi tập trung đến chiếm chủ
yếu là US (38,62% ) và Asia (21,81%) , các nơi còn lại dao động từ khoảng
800 - 2000, có 2 nơi thấp nhất là Central America và South America ( 260 và
90 ) chỉ chiếm khoảng 2,33

 Giữa các mã loại hoạt động (Activity.Type.Code)

Nhận xét : Deplaned(được sử dụng khi hành khách đã xuống máy bay tại điểm
đến) với Enplaned (thường được sử dụng khi hành khách đã lên máy bay để bắt
đầu chuyến bay) gần bằng nhau khoảng ( 47,11%) và Transit (được sử dụng
khi hành khách chuyển tiếp từ một chuyến bay sang một chuyến bay khác tại
sân bay trung chuyển) thì chiếm ít khoảng 5,77%.
Từ đó ta thấy rằng, nhu cầu hành khách dùng Transit thì khá thấp ( ít trung
chuyển chuyến bay)
 Giữa các loại vé với nhau (Price.Category.Code)

Nhận xét : Ta thấy loại vé Low Fare ( vé thấp ) chiếm khoảng 12,8%),Còn
Other( thường được sử dụng để phân loại các hạng vé không thuộc vào các loại
giá cụ thể khác, có thể là các hạng vé đặc biệt, vé doanh nghiệp hoặc các loại
vé có điều kiện đặc biệt khác) chiếm khoảng 87,19%.
Việc phân loại các hạng vé theo mã loại giá giúp cho hãng hàng không và hệ
thống đặt vé có thể quản lý và hiển thị các tùy chọn vé một cách dễ dàng cho
hành khách.

3.3. Dùng vài lệnh có sẳn trong R và thêm các gói cài đặt khác để vẽ 1 vài
đồ thị so sánh.
Vẽ đồ thì hàm gốc có sẳn trong R
 Giữa số khách hàng phân bố theo năm (Adjusted.Pasenger.Count with
Year)
Nhận xét :
Ta thấy rằng số khách hàng phân bố không đều giữa các năm ( 2006-2016)
Từ năm 2006 đến năm 2012 có su hướng tăng nhưng ko nhiều, đến năm 2013
thì tăng nhưng lại giảm xuống sau nhưng năm sau
Ở mỗi năm trung bình các hành khách tập trung khoảng 270000/người .

 Giữa số khách hàng phân bố theo tháng (Adjusted.Pasenger.Count with


Month)
Nhận xét : Ta thấy rằng số khách hàng phân bố không đều giữa các tháng
Từ tháng 1 đến tháng 12 có su hướng tăng giảm không nhiều
Ở mỗi tháng trung bình các hành khách tập trung khoảng 300000/người .

Ngoài ra chúng ta có thể dùng 1 vài gói cài đặt ở ngoài để vẽ thêm biểu đồ
Sử dụng gói ggplot2 ,dplyr hoặc plotly

 Giữa số khách hàng phân bố theo mã loại hoạt động


(Adjusted.Pasenger.Count with Activity.Type.Code)
 Giữa số khách hàng phân bố theo loại vé (Adjusted.Pasenger.Count with
Price.Category.Code )
CODE RSUDIO của nhóm

# Đọc dữ liệu
data <- read.csv("C:\\Users\\ASUS\\Documents\\Zalo Received Files\\
Air_Traffic_Passenger_Statistics.csv")
head(data,5) #in ra 5 dong dau
str(data) # tệp chứa khoảng 15007 dữ liệu và 17 biến
#Lam sach du lieu
new_DF <- data[,c("Activity.Period","Adjusted.Passenger.Count","Year",
"Month","Price.Category.Code","Operating.Airline","GEO.Summary","GEO.R
egion","Terminal","Activity.Type.Code")] # gan data voi cac cot sang bien
str(new_DF)
head(new_DF,5) # in ra 5 dong dau
apply(is.na(new_DF),2,which) #Xuat vi tri dong chua NA
apply(is.na(new_DF),2,sum) #Tinh so luong NA o cac bien
apply(is.na(new_DF),2,mean) #Tinh ty le NA o cac bien
new_DF <-na.omit(new_DF) #Xoa cac quan sat ma bien nao chua NA
apply(is.na(new_DF),2,sum) #Kiem tra lai tap tin
# một vài cái lệnh cơ bản về cột hành khách
mean(new_DF$Adjusted.Passenger.Count) # trung bình số hành khách trong cả
bản thống kê
median(new_DF$Adjusted.Passenger.Count) # thu vị hành khách 93699369
## ý nghĩa là có khoảng 50% lớn hơn giá vị trung vị và khoảng 50% nhỏ hơn
giá trị trung vị này
var(new_DF$Adjusted.Passenger.Count) # Phương sai số hành khách
sd(new_DF$Adjusted.Passenger.Count) # Sai số chuẩn
max(new_DF$Adjusted.Passenger.Count)
min(new_DF$Adjusted.Passenger.Count)
#3.2.Lập bảng thống kê cho các biến phân loại
install.packages("ggplot2")
install.packages("patchwork")
install.packages("prettyB")
# Mở các thư viện cái gói vừa cài đặt
library(ggplot2)
library(patchwork)
library(prettyB)
#Vẽ đồ thị
table(new_DF$Activity.Period)
barplot_p(table(new_DF$Activity.Period),main="Thời gian giờ chuyến bay"
,xlab="Tổng giờ bay",ylab="SSố thứ tự ")
table(data$Operating.Airline)
barplot_p(table(data$Operating.Airline),main= "Hãng hàng không")
table(data$Published.Airline)
barplot_p(table(data$Published.Airline),main="Hãng hàng không đã không
xuất bản")
table(data$GEO.Summary)
barplot_p(table(data$GEO.Summary),main="Chuyến bay nội địa và nước
ngoài")
table (data$GEO.Region)
barplot_p(table (data$GEO.Region),main="Địa điểm đến của các chuyến bay")
table(data$Activity.Type.Code)
barplot_p(table(data$Activity.Type.Code),main="Kế hoạch hoạt động")
table(data$Price.Category.Code)
barplot_p(table(data$Price.Category.Code),main="Loại vé")
barplot_p(data$Adjusted.Passenger.Count, main="Số hành Khách đã được hiệu
chỉnh")
# vẽ bản hàm gốc
plot(new_DF$Adjusted.Passenger.Count,new_DF$Year,
pch=20, main="Số hành khách so sánh với số năm", xlab="Số hành
khách",ylab="Năm")
boxplot(new_DF$Adjusted.Passenger.Count ~ new_DF$Month,
main="Số hành khách so sánh với tháng",xlab="Tháng",ylab="Số hành
khách")
# Vẽ các biểu đồ bằng ggplot2
ggplot(data=new_DF,aes(x=new_DF$Year,
y=new_DF$Adjusted.Passenger.Count))+ geom_boxplot()
ggplot(data=new_DF,aes(x=new_DF,y=new_DF$Adjusted.Passenger.Count))
+ geom_boxplot()
# Biểu đồ phân phối hành khách theo Năm
# Cài đặt vài gói dữ liệu để vẽ hình
install.packages("dplyr")
install.packages("plotly")
library (dplyr)
library(plotly)
# Số hành khách dựa theo loại vé
loaive=ggplot(new_DF,aes(Price.Category.Code,Adjusted.Passenger.Count))+
geom_boxplot (aes( fill=Price.Category.Code))+labs(title="số hành khách dựa
theo loại vé")
ggplotly(loaive)
# Số hành khách dựa mã code của các hãng hàng không
thang=ggplot(new_DF,aes(Activity.Type.Code,Adjusted.Passenger.Count))+
geom_boxplot (aes( fill=Activity.Type.Code))+
labs(title="số hành khách dựa theo các hàng hàng không")
ggplotly(thang)
# Số hành khách dựa theo số giờ bay và loại vé
ggplot(data=data,aes(x=data$Activity.Period,y=data$Adjusted.Passenger.Coun
t, col=data$Adjusted.Activity.Type.Code))+geom_boxplot()
# chạy mô hình hồi quy
TT1=lm(data=new_DF , new_DF$Adjusted.Passenger.Count ~
new_DF$Activity.Period+new_DF$GEO.Summary+
new_DF$GEO.Region+new_DF$Activity.Type.Code+new_DF$Price.Categor
y.Code+new_DF$Year+new_DF$Month)
summary(TT1)
TT2=lm(data=new_DF, new_DF$Adjusted.Passenger.Count ~
new_DF$Activity.Period+new_DF$Year+
new_DF$Month+new_DF$Price.Category.Code+new_DF$Activity.Type.Code
)
summary(TT2)
anova(TT1,TT2)
#Vẽ đồ thị
# xác xuất khi các yêu tố ảnh hưởng đến khách hàng bằng 0
# bằng exp(1.000e+02)/(1+exp(1.000e+02))=1 ,
#là hệ số chặn cho chúng ta biết khi tất cả các biến khác độc lập khác =0 thì
xác xuất hành khách là bao nhiêu
TT4
# Thông kê suy diễn
sohanhkhachtrungbinh<-
subset(new_DF,new_DF$Adjusted.Passenger.Count=="Aer Lingus")
qqnorm(new_DF,new_DF$Adjusted.Passenger.Count)
qqline(sohanhkhachtrungbinh$Adjusted.Passenger.Count)
set.seed(1234)
#anova 1 nhan to
#so sanh trung binh 3 dia diem den duoc chon de xem dau la dia diem duoc
chon nhieu hon
data.1=subset(new_DF, new_DF$GEO.Region=="US")
head(data.1,10)
qqnorm(data.1$Adjusted.Passenger.Count)
qqline(data.1$Adjusted.Passenger.Count,col='red')
shapiro.test(data.1$Adjusted.Passenger.Count)
data.2=subset(new_DF,data$GEO.Region=="Mexico")
head(data.2,10)
qqnorm(data.2$Adjusted.Passenger.Count)
qqline(data.2$Adjusted.Passenger.Count,col='red')
shapiro.test(data.2$Adjusted.Passenger.Count)
data.3=subset(new_DF, data$GEO.Region=="Europe")
head(data.3,10)
qqnorm(data.3$Adjusted.Passenger.Count)
qqline(data.3$Adjusted.Passenger.Count,col='red')
shapiro.test(data.3$Adjusted.Passenger.Count)
anova(data.1,data.2,data.3)
#kiem tra gia dinh ve tinh dong chat cua phuong sai
install.packages("car")
library(car)
leveneTest(data$Adjusted.Passenger.Count~as.factor(data$GEO.Region),data=
new_DF)
#phan tich phuong sai 1 nhan to
anova_1<-aov(data$Adjusted.Passenger.Count~
data$GEO.Region,data=new_DF)
summary(anova_1)
#so sanh trung binh 3 hang bay duoc chon de xem dau la hang bay duoc chon
nhieu hon
data.4=subset(new_DF,new_DF$Operating.Airline=="US Airways")
head(data.4,10)
qqnorm(data.4$Adjusted.Passenger.Count)
qqline(data.4$Adjusted.Passenger.Count,col='red')
shapiro.test(data.4$Adjusted.Passenger.Count)
data.5=subset(new_DF,Operating.Airline=="Mexicana Airlines")
head(data.5,10)
qqnorm(data.5$Adjusted.Passenger.Count)
qqline(data.5$Adjusted.Passenger.Count,col='red')
shapiro.test(data.5$Adjusted.Passenger.Count)
data.6=subset(new_DF, Operating.Airline=="British Airways")
head(data.6,10)
qqnorm(data.6$Adjusted.Passenger.Count)
qqline(data.6$Adjusted.Passenger.Count,col='red')
shapiro.test(data.6$Adjusted.Passenger.Count)
#kiem tra gia dinh ve tinh dong chat cua phuong sai
leveneTest(Adjusted.Passenger.Count~as.factor(Operating.Airline),data=new_
DF)
#phan tich phuong sai 1 nhan to
anova_2<-aov(Adjusted.Passenger.Count~Operating.Airline,data=new_DF)
summary(anova_2)
#Phân tích hồi quy bội
mlm0<-lm(new_DF$Adjusted.Passenger.Count~ new_DF$Activity.Period
+new_DF$Price.Category.Code+new_DF$Activity.Type.Code

+new_DF$GEO.Summary+new_DF$Operating.Airline+new_DF$Terminal)
summary(mlm0) # hồi quy tuyến tính đa biến
mlm1<-lm(new_DF$Adjusted.Passenger.Count~
new_DF$Price.Category.Code+new_DF$Activity.Type.Code

+new_DF$GEO.Summary+new_DF$Terminal+new_DF$Activity.Period)
summary(mlm1) #hồi quy tuyến tính đa biếnbiến

anova(mlm0) # chạy mô hình anova cho rõ hơn


# nếu muốn biết thêm về giá trị y dự đoán tương ứng hay sai số thì cài đặt gói
sau
install.packages("broom")
library(broom)
augment (mlm0)
RMSE=sqrt(sum(residuals(mlm0)^2)/
length(new_DF$Adjusted.Passenger.Count))
RMSE
# nếu giá trị RMSE càng nhỏ thì sai số của mô hình hồi quy tuyến tình càng
nhỏ
# dự đoán Adjusted.Passenger.Count nếu cho trước giá trị của các biến độc lâp
giatridudoan<-data.frame(Activity.Period=200507,Price.Category.Code=40
,Activity.Type.Code=40,GEO.Summary=500
,Operating.Airline=34,Terminal=6)
giatridudoan
predict(mlm0,giatridudoan)

You might also like