Dữ liệu về tất cả các vụ tai nạn máy bay thương mại gây tử vong từ năm 1993–2015. Không bao gồm máy bay nhỏ (dưới 6 hành khách) và máy bay phi thương mại (chở hàng, quân sự, tư nhân). Nguồn lấy từ trang web https://vincentarelbundock.github.io/Rdatasets/articles/data.html của tác giả David McCandless.
Khung dữ liệu bao gồm 439 quan sát về 5 biến như sau:
Phase - Giai đoạn: dữ liệu về giai đoạn xảy ra tai nạn của chuyến bay,gồm 4 yếu tố (en route - giai đoạn máy bay đang bay trong lộ trình, landing - giai đoạn máy bay hạ cánh, standing - giai đoạn máy bay đứng yên, take-off - giai đoạn máy bay cất cánh, unknow - không xác định được giai đoạn xảy ra tai nạn)
Cause - Gây ra: dữ liệu về nguyên nhân của tại nạn, gồm 5 yếu tố (criminal - tội phạm, human error - lỗi nhân viên, mechanical - lỗi kỹ thuật, unknown - không xác định được nguyên nhân)
Date - ngày: Thời điểm xảy ra sự cố
Fatalities - tử vong: Số người tử vong, là một vectơ số
Year - Năm: Năm xảy ra tai nạn, là một vectơ số
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.3 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
data <- readxl::read_excel("aircrash.xlsx")
# Bảng tần số của biến nguyên nhân
table(data$Cause)
##
## criminal human error mechanical unknown weather
## 23 207 74 52 83
# Đồ thị biến nguyên nhân
barplot(table(data$Cause))
Kết quả: Có 23 tai nạn do tội phạm gây ra, 207 tai nạn do lỗi của nhân viên, 74 tai nạn do lỗi kỹ thuật máy bay, 83 tai nạn do thời tiết và 52 tai nạn chưa rõ nguyên nhân. Số tai nạn nguyên nhân do lỗi của nhân viên là nhiều nhất và số tai nạn nguyên nhân do tội phạm là ít nhất.
# Bảng tần số của biến giai đoạn xảy ra tai nạn
table(data$Phase)
##
## en route landing standing take-off unknown
## 157 210 4 65 3
# Đồ thị
barplot(table(data$Phase))
Kết quả: Giai đoạn hạ cánh là giai đoạn xảy ra tai nạn nhiều nhất với 210 tai nạn và có 3 tai nạn không xác định được giai đoạn xảy ra sự cố. Tai nạn xảy ra khi máy bay đứng yên là 4 tai nạn, 65 tai nạn xảy ra khi máy bay cất cánh và 157 tai nạn xảy ra trên lộ trình đi của máy bay.
# Bảng tần số của số người tử vong
table(data$Fatalities)
##
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
## 28 22 18 13 10 12 11 9 11 12 5 6 6 11 8 11
## 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
## 8 12 11 5 6 6 3 6 3 1 4 7 1 2 1 3
## 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
## 3 1 3 2 3 1 1 2 3 1 2 8 2 3 1 1
## 49 50 51 52 53 55 57 60 61 65 66 68 69 70 71 74
## 4 3 1 1 3 4 3 3 1 4 1 3 1 2 1 1
## 75 77 78 80 82 83 85 88 90 94 96 98 101 102 103 104
## 4 2 1 2 1 2 1 2 2 1 1 1 1 2 2 3
## 108 110 112 113 114 116 117 119 121 123 125 127 129 131 132 141
## 2 1 1 2 2 3 1 1 1 1 3 1 1 2 2 3
## 143 144 145 148 149 150 152 154 158 159 160 162 163 168 169 170
## 1 1 1 1 2 1 2 2 1 1 2 1 1 1 1 1
## 189 199 202 217 225 228 229 230 234 237 239 264 265 298 312 965
## 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1
## 1692
## 1
# Đồ thị
barplot(table(data$Fatalities))
# Số ca trung bình tử vong
summary(data$Fatalities)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 7.00 19.00 50.68 60.00 1692.00
Kết quả: Số ca tử vong nhiều nhất được ghi nhận là 1692 ca, thấp nhất là 1 ca tử vong. Từ năm 1993-2015, số người tử vong trung bình khi xảy ra tai nạn máy bay là 50 người.
# Bảng tần số của năm xảy ra tai nạn
table(data$Year)
##
## 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008
## 35 34 32 29 27 25 25 27 22 23 14 16 23 16 12 14
## 2009 2010 2011 2012 2013 2014 2015
## 10 10 18 11 7 7 2
# Đồ thị
barplot(table(data$Year))
Kết quả: Trong năm 1993 xảy ra nhiều tai nạn nhất trong thời gian quan sát là 35 tai nạn, năm 2015 xảy ra ít tai nạn nhất với 2 tai nạn. Nhìn đồ thị có thể thấy được trung bình xảy ra tai nạn nhiều nhất là từ năm 1993 đến năm 2002, từ năm 2002 đến 2015, tai nạn máy bay giảm đi và được kiểm soát hơn.
Đầu tiên, mã hoá dữ liệu của 2 biến: Giai đoạn xảy ra tai nạn và Nguyên nhân xảy ra tai nạn
Biến Phase - giai đoạn xảy ra tai nạn: mã hoá thành 2 yếu tố gồm (1) giai đoạn máy bay chuyển động (en route, landing, take-off) và (2) giai đoạn máy bay không chuyển động hay không xác định được (standing, unknown), sau đó gán vào tên mới phase1
Biến Cause - nguyên nhân xảy ra tai nạn: mã hoá thành 2 yếu tố gồm (human) nguyên nhân xảy ra tai nạn là do con người (criminal, human error) và (non-human) nguyên nhân xảy ra tai nạn không phải do con người và không xác định được (mechanical, weather, unknown), sau đó gán vào tên mới cause1
# Mã hoá biến Phase
data$phase_1 <- factor(NA, levels = c("1", "2"))
data$phase_1[data$Phase %in% c("en route", "landing", "take-off")] <- "1"
data$phase_1[data$Phase %in% c("standing", "unknown")] <- "2"
table(data$phase_1)
##
## 1 2
## 432 7
# Mã hoá biến Cause
data$cause_1 <- factor(NA, levels = c("human", "non-human"))
data$cause_1[data$Cause %in% c("mechanical", "weather", "unknown")] <- "non-human"
data$cause_1[data$Cause %in% c("criminal", "human error")] <- "human"
table(data$cause_1)
##
## human non-human
## 230 209
# Bảng tần số của 2 biến mã hoá
table(data$phase_1,data$cause_1)
##
## human non-human
## 1 227 205
## 2 3 4
# Đồ thị 2 biến mã hoá
barplot(table(data$phase_1,data$cause_1))
Kết quả: Những tai nạn nguyên nhân do con người (tội phạm, lỗi nhân viên) có 227 tai nạn xảy ra trong giai đoạn máy bay chuyển động (đang bay, đang hạ cánh, đang cất cánh) và 3 tai nạn xảy ra trong giai đoạn máy bay đứng yên, không xác định được giai đoạn. Những tai nạn nguyên nhân không phải do con người (lỗi kỹ thuật, thời tiết, không xác định được) có 205 tai nạn xảy ra khi máy bay trong giai đoạn chuyển động và 4 tai nạn xảy ra trong khi máy bay đứng yên. Tổng quan hơn là tai nạn máy bay xảy ra nhiều hơn là do con người và giai đoạn máy bay đang chuyển động sẽ dễ xảy ra tai nạn hơn.
Biến Fatilities - tử vong: Biến thu thập số ca tử vong của các tai nạn từ ít nhất là 1 ca tử vong trong 1 tai nạn đến nhiều nhất là 1692 ca tử vong trong 1 tai nạn. Mã hoá thành 2 yếu tố: high (có số ca tử vong >=100) và low (có số ca tử vong <100).
# Mã hoá biến tử vong
data$fatilities_1 <- cut(data$Fatalities, breaks = c(0,100,1692), labels=c("low","high"))
table(data$fatilities_1)
##
## low high
## 365 74
# Kết hợp với biến cause_1
addmargins(table(data$fatilities_1,data$cause_1))
##
## human non-human Sum
## low 180 185 365
## high 50 24 74
## Sum 230 209 439
# Kết hợp với biến phase_1
addmargins(table(data$fatilities_1,data$phase_1))
##
## 1 2 Sum
## low 359 6 365
## high 73 1 74
## Sum 432 7 439
Kết quả:
Trong khoảng thời từ năm 1993-2015: đa số các tai nạn máy bay có số ca tử vong dưới 100 ca chiếm 83.14% với 365 tai nạn và 74 tai nạn có số ca tử vong lớn hơn 100 ca chiếm 16.86%.
Trong số những tai nạn do con người gây ra có 180 tai nạn có số ca tử vong dưới 100 ca là 180 ca chiếm 78.26% và 50 tai nạn có số ca tử vong hơn 100 ca chiếm 21.74%. Mặt khác, trong số những tai nạn không do con người gây ra có 185 tai nạn có số ca tử vong thấp dưới 100 ca chiếm 88.52% và 11.48% còn lại là số tai nạn có ca tử vong cao hơn 100 ca.
Giai đoạn xảy ra tai nạn khi máy bay đang chuyển động có 359 tai nạn có số tử vong thấp hơn 100 ca chiếm 83.1%, số tai nạn có ca tử vong cao hơn 100 là 73 tai nạn chiếm 16.9%. Trong giai đoạn máy bay đứng yên xảy ra tai nạn, 1 trường hợp có số ca tử vong lớn hơn 100 chiếm 14.29% và 6 tai nạn còn lại có số ca tử vong thấp hơn 100 chiếm 85.71%.
Kết luận rằng từ năm 1993 đến năm 2015 tai nạn máy bay xảy ra do con người chiếm 52.39% và không do con người chiếm 47.61%. Giai đoạn xảy ra tai nạn nhiều nhất là khi máy bay đang chuyển động chiếm 98.41% và giai đoạn máy bay đứng yên không xảy ra nhiều tai nạn chỉ chiếm 1.59%. Số ca tử vong được ghi nhận dưới 100 ca là nhiều nhất với 337 tai nạn, 74 tai nạn còn lại có số ca tử vong được ghi nhận trên 100 ca.
1) Giả thuyết H0: biến Cause, Phase là 2 biến độc lập. Với mức ý nghĩa 5%
a <- table(data$Cause,data$Phase)
chisq.test(a)
## Warning in chisq.test(a): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: a
## X-squared = 82.291, df = 16, p-value = 6.413e-11
Kết quả kiểm định:
p-value = 6.413e-11 < 0.05
-> Bác bỏ H0
-> Nguyên nhân xảy ra tai nạn và giai đoạn xảy ra tai nạn là có liên quan với nhau.
2) Đặt giả thuyết H0: biến Cause, Fatalities là 2 biến độc lập. Với mức ý nghĩa 5%
b <- table(data$Cause,data$Fatalities)
chisq.test(b)
## Warning in chisq.test(b): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: b
## X-squared = 535.02, df = 512, p-value = 0.2328
Kết quả kiểm định:
p-value = 0.2328 > 0.05
-> Chưa đủ cơ sở bác bỏ H0
-> Nguyên nhân xảy ra tai nạn và số ca tử vong là 2 biến độc lập, không phụ thuộc nhau.
3) Đặt giả thuyết H0: biến Phase, Fatalities là 2 biến độc lập. Với mức ý nghĩa 5%
c <- table(data$Phase,data$Fatalities)
chisq.test(c)
## Warning in chisq.test(c): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: c
## X-squared = 391.73, df = 512, p-value = 1
Kết quả kiểm định:
p-value = 1 > 0.05
-> Chưa đủ cơ sở bác bỏ H0
-> Giai đoạn xảy ra tai nạn và số ca tử vong là 2 biến độc lập, không phụ thuộc nhau.
Ước lượng tỷ lệ tai nạn có số người tử vong nhiều hơn 100 người trong những tai nạn có nguyên nhân từ con người
Đặt giả thuyết H0: Tỷ lệ tai nạn có số ca tử vong > 100 trong những tai nạn có nguyên nhân từ con người là 70%
tmq <- table(data[data$cause_1 == "human", ]$fatilities_1)
tmq
##
## low high
## 180 50
prop.test(tmq["high"], sum(tmq), p = 0.7)
##
## 1-sample proportions test with continuity correction
##
## data: tmq["high"] out of sum(tmq), null probability 0.7
## X-squared = 252.8, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.7
## 95 percent confidence interval:
## 0.1670138 0.2774281
## sample estimates:
## p
## 0.2173913
Kết quả ước lượng cho thấy p-value = 2.2e-16 nhỏ hơn giá trị \(\alpha = 0,05\)
-> Đủ cơ sở bác bỏ H0. Cho thấy được tỷ lệ tai nạn có số người tử vong cao hơn 100 người trong những tai nạn do con người gây ra không phải là 70%.
Ước lượng tỷ lệ tai nạn có số người tử vong ít hơn 100 người trong những tai nạn có nguyên nhân từ con người
Đặt giả thuyết H0: Tỷ lệ tai nạn có số ca tử vong < 100 ca trong những tai nạn có nguyên nhân từ con người là 60%
prop.test(tmq["low"], sum(tmq), p = 0.6)
##
## 1-sample proportions test with continuity correction
##
## data: tmq["low"] out of sum(tmq), null probability 0.6
## X-squared = 31.2, df = 1, p-value = 2.327e-08
## alternative hypothesis: true p is not equal to 0.6
## 95 percent confidence interval:
## 0.7225719 0.8329862
## sample estimates:
## p
## 0.7826087
Kết quả ước lượng cho thấy p-value = 2.327e-08 nhỏ hơn giá trị \(\alpha = 0,05\)
-> Đủ cơ sở bác bỏ H0. Cho thấy được tỷ lệ tai nạn có số người tử vong ít hơn 100 người trong những tai nạn do con người gây ra không phải là 60%.
Đặt giả thuyết H0: Tỷ lệ tai nạn có số ca tử vong > 100 và tỷ lệ tai nạn có số ca tử vong < 100 ca trong những tai nạn có nguyên nhân từ con người là bằng nhau
thap <- data[data$fatilities_1 == 'low',]
cao <- data[data$fatilities_1 == 'high',]
low_human <- thap[thap$cause_1 == 'human',]
high_human <- cao[cao$cause_1 == 'human' ,]
m <- c(nrow(thap), nrow(cao))
m
## [1] 365 74
n <- c(nrow(low_human), nrow(high_human))
n
## [1] 180 50
prop.test(n,m)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: n out of m
## X-squared = 7.5024, df = 1, p-value = 0.006162
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.30900046 -0.05604952
## sample estimates:
## prop 1 prop 2
## 0.4931507 0.6756757
Kết quả ước lượng cho thấy p-value = 0.006162 nhỏ hơn giá trị \(\alpha = 0,05\)
-> Đủ cơ sở bác bỏ H0. Cho thấy được tỷ lệ tai nạn có số ca tử vong > 100 và tỷ lệ tai nạn có số ca tử vong < 100 ca trong những tai nạn có nguyên nhân từ con người là không bằng nhau.
Hai biến phụ thuộc: biến nguyên nhân và biến giai đoạn
library(DescTools)
data1 <- table(data$cause_1,data$phase_1)
addmargins(data1)
##
## 1 2 Sum
## human 227 3 230
## non-human 205 4 209
## Sum 432 7 439
RelRisk(data1)
## [1] 1.006214
Kết quả: RR > 1 cho thấy tai nạn xảy ra trong giai đoạn chuyển động do con người gây ra có mức độ rủi ro cao hơn các tai nạn từ các nguyên nhân khác.
r = getOption("repos")
r["CRAN"] = "http://cran.us.r-project.org"
options(repos = r)
install.packages("epitools")
##
## The downloaded binary packages are in
## /var/folders/ph/8pctdw413fv1n37td3zcx97c0000gn/T//RtmpwM32uw/downloaded_packages
library(epitools)
riskratio(data1)
## Warning in chisq.test(xx, correct = correction): Chi-squared approximation may
## be incorrect
## $data
##
## 1 2 Total
## human 227 3 230
## non-human 205 4 209
## Total 432 7 439
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## human 1.000000 NA NA
## non-human 1.467305 0.3322871 6.479285
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## human NA NA NA
## non-human 0.6347193 0.7133192 0.6106256
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Kết quả
Tai nạn nguyên nhân do con người có tỷ số rủi ro là 1.000000, tai nạn máy báy do nguyên nhân khác số rủi ro là 1.204181, với khoảng tin cậy 95% từ 0.629115 đến 2.304762.
Điều này có nghĩa là tai nạn không do con người có khả năng xảy ra khi máy bay chuyển động cao hơn 20.418% so với tai nạn do con người gây ra.
Giá trị p.value lớn hơn 0.05, chấp nhận việc có sự khác biệt về tỷ lệ tai nạn xảy ra trong giai đoạn chuyển động máy bay của 2 nhóm nguyên nhân là khác nhau.
epitab(data1, method = 'riskratio', rev = 'c')
## Warning in chisq.test(xx, correct = correction): Chi-squared approximation may
## be incorrect
## $tab
##
## 2 p0 1 p1 riskratio lower upper p.value
## human 3 0.01304348 227 0.9869565 1.0000000 NA NA NA
## non-human 4 0.01913876 205 0.9808612 0.9938242 0.9701883 1.018036 0.7133192
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
riskratio(data1, rev = 'c')
## Warning in chisq.test(xx, correct = correction): Chi-squared approximation may
## be incorrect
## $data
##
## 2 1 Total
## human 3 227 230
## non-human 4 205 209
## Total 7 432 439
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## human 1.0000000 NA NA
## non-human 0.9938242 0.9701883 1.018036
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## human NA NA NA
## non-human 0.6347193 0.7133192 0.6106256
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Kết quả
Tai nạn không do con người gây ra có tỷ số rủi ro là 0.9938242, với khoảng tin cậy 95% từ 0.9701883 đến 1.018036.
Điều này có nghĩa là tai nạn không do con người gây ra có nguy cơ xảy ra tai nạn khi máy bay đứng yên thấp hơn 0.61758% so với tai nạn do con người gây ra.
Giá trị p lớn hơn 0.05, chấp nhận việc có sự khác biệt về tỷ lệ tai nạn xảy ra trong giai đoạn máy bay đứng yên của 2 nhóm nguyên nhân là khác nhau.
Khoảng ước lượng cho Relative Risk
tmp <- matrix(c(227 ,205 ,3 ,4),nrow = 2)
RelRisk(tmp, conf.level = .95)
## rel. risk lwr.ci upr.ci
## 1.0062142 0.9787295 1.0384171
Kết quả
Ước lượng cho Tỷ lệ Rủi ro Tương đối giữa nhóm nguyên nhân do con người và nhóm nguyên nhân không do con người là khoảng 1.006
Khoảng tin cậy 95% cho ước lượng này là từ khoảng 0.98 đến 1.04. Điều này cho rằng có 95% khả năng rằng giá trị thực sự của Tỷ lệ Rủi ro Tương đối nằm trong khoảng từ 0.98 đến 1.04.
OddsRatio(data1)
## [1] 1.476423
oddsratio(data1)
## Warning in chisq.test(xx, correct = correction): Chi-squared approximation may
## be incorrect
## $data
##
## 1 2 Total
## human 227 3 230
## non-human 205 4 209
## Total 432 7 439
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## human 1.000000 NA NA
## non-human 1.457371 0.3014272 7.990943
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## human NA NA NA
## non-human 0.6347193 0.7133192 0.6106256
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Kết quả
Odds Ratio: Tai nạn do con người khi máy bay chuyển động cao hơn 1.47 lần so với tai nạn do các nguyên nhân khác.
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
You can also embed plots, for example:
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.