File code: (https://drive.google.com/drive/folders/1bu6Kc4gpsUDw3U-jeV-hg6blgj8zorx4?usp=sharing)
Dữ liệu nghiên cứu về một công ty bảo hiểm ở Mỹ muốn cải thiện dự báo dòng tiền bằng cách ước tính chi phí bảo hiểm sức khoẻ thông qua các biến số đo lường mức độ rủi ro về sức khoẻ của khách hàng và các yếu tố nhân khẩu học tại thời điểm các khách hàng này sử dụng dịch vụ bảo hiểm y tế của công ty trên nhập viện. Bộ dữ liệu này được thu thập trong khoảng thời gian 5 năm từ năm 2015-2020 và bao gồm có 1338 bệnh nhân nhập viện với 7 trường thông tin. Bộ dữ liệu được lấy từ website: https://www.kaggle.com/datasets/mirichoi0218/insurance.
Dữ liệu nghiên cứu bao gồm 1338 quan sát với 7 biến bao gồm 4 biến định lượng và 3 biến định tính.
Trong đó:
age: số tuổi của các bệnh nhân
sex: giới tính (F: nữ ; M: nam)
bmi: chỉ số khối của cơ thể, cho biết tỷ lệ cân nặng với chiều cao ở người để đánh giá được trình trạng cơ thể: gầy, cân đối, béo phì của một người. bmi được tính bằng cân nặng / chiều cao^2 (kg/m^2), tỷ lệ bmi lý tưởng là từ 18,5 đến 24,9
dependent: số người phụ thuộc.
smoker: tình trạng sử dụng thuốc lá của các bệnh nhân (Y: có ; N: không)
region: khu vực cư trú tại MỸ của các bệnh nhân (Northeast: Đông Bắc, Southeast: Đông Nam, Southwest: Tây Bắc, Northwest: Tây Nam)
charges: chi phí y tế của các bệnh nhân do công ty bảo hiểm thanh toán (đơn vị: USD)
Việc phân tích dữ liệu về chi phí y tế của các bệnh nhân mà công ty bảo hiểm phải chi trả có liên quan tương đối nhiều đến các yếu tố như độ tuổi, giới tính, chỉ số BMI, số người phụ thuộc và khu vực sinh sống của các bệnh nhân. Vậy liệu rằng nếu một bệnh nhân có độ tuổi lớn hay có chỉ số cơ thể bmi cao khi nhập viện thì chi phí y tế mà công ty bảo hiểm sẽ phải chi trả sẽ nhiều hơn chi phí mà công ty đó sẽ chi trả một bệnh nhân ít tuổi và có chỉ số bmi lý tưởng khi nhập viện hay không ? hay phụ thuộc vào việc người đó có giới tính gì hay đến từ khu vực nào hay không ? Vì vậy yếu tố chi phí bảo hiểm y tế (charges) cần được phân tích dựa vào dữ liệu của các yếu tố khác ở trên đã đề cập. Từ đó có thể cho ta thấy được phân khúc bệnh nhân có những đặc điểm khác nhau thì chi phí y tế của họ sẽ như thế nào và số tiền mà công ty bảo hiểm chi trả sẽ nằm trong phân khúc nào. Việc phân tích những yếu tố trên tác động đến chi phí y tế của các bệnh nhân phần nào sẽ giúp hoạch định được dòng tiền mà công ty bảo hiểm sẽ phải chi trả cho các bệnh nhân.
Biến phụ thuộc : charges (chi phí y tế các bệnh nhân mà công ty bảo hiểm chi trả :USD)
setwd("C:/PTDLDT")
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
library(dplyr)
##
## 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(xlsx)
add <- "dulieumoi.xlsx"
data <- read_xlsx("dulieumoi.xlsx", 1)
str(data)
## tibble [1,338 × 7] (S3: tbl_df/tbl/data.frame)
## $ age : num [1:1338] 19 18 28 33 32 31 46 37 37 60 ...
## $ sex : chr [1:1338] "F" "M" "M" "M" ...
## $ bmi : num [1:1338] 27.9 33.8 33 22.7 28.9 ...
## $ dependent: num [1:1338] 0 1 3 0 0 0 1 3 2 0 ...
## $ smoker : chr [1:1338] "Y" "N" "N" "N" ...
## $ region : chr [1:1338] "southwest" "southeast" "southeast" "northwest" ...
## $ charges : num [1:1338] 16885 1726 4449 21984 3867 ...
library(data.table)
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
##
## between, first, last
data.table(data)
## age sex bmi dependent smoker region charges
## 1: 19 F 27.900 0 Y southwest 16884.924
## 2: 18 M 33.770 1 N southeast 1725.552
## 3: 28 M 33.000 3 N southeast 4449.462
## 4: 33 M 22.705 0 N northwest 21984.471
## 5: 32 M 28.880 0 N northwest 3866.855
## ---
## 1334: 50 M 30.970 3 N northwest 10600.548
## 1335: 18 F 31.920 0 N northeast 2205.981
## 1336: 18 F 36.850 0 N southeast 1629.833
## 1337: 21 F 25.800 0 N southwest 2007.945
## 1338: 61 F 29.070 0 Y northwest 29141.360
table(data$sex)
##
## F M
## 662 676
table(data$sex)/sum(table(data$sex))
##
## F M
## 0.4947683 0.5052317
Biến giới tính (sex) là biến định tính, thể hiện giới tính của bệnh nhân (F: nữ; M: nam). Dựa vào kết quả thống kê trên ta thấy trong tổng số 1338 bệnh nhân nhập viện có sử dụng bảo hiểm thì có 662 bệnh nhân giới tính là nữ và chiếm 49,48% tổng số người nhập viện. Số bệnh nhân nam là 676 người và so với tổng số bệnhn nhân thì chiếm tỉ lệ 50,52%.
library(ggplot2)
ggplot(data,aes(sex)) + geom_bar(color ="red", fill = "blue") + ylab("Số bệnh nhân") + xlab("Giới tính (sex)")
Đồ thị cột thể hiện số bệnh nhân nhập viện được chia theo giới tính nam hoặc nữ, có thể thấy không có quá nhiều sự chênh lệch giữa giới tính của các bệnh nhân khi tỷ lệ bệnh nhân nam và nữ xấp xỉ nhau.
summary(data$age)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 18.00 27.00 39.00 39.21 51.00 64.00
Biến độ tuổi (age) là biến định lượng cho biết độ tuổi của các bệnh nhân. Thông qua kết quả trên ta thấy các bệnh nhân nhập viện có độ tuổi nhỏ nhất là 18 tuổi, lớn nhất là 64 tuổi và độ tuổi trung bình của các bệnh nhân khoảng 39 tuổi. Tứ phân vị: là ba điểm cắt sẽ chia tập dữ liệu thành 4 nhóm có kích thước bằng nhau, cụ thể:
Tứ phân vị thứ nhất (1st Qu.) = 27 Nghĩa là dưới 25% số người nhập viện có độ tuổi nhỏ hơn 27 tuổi hay trên 75% số người nhập viện có độ tuổi lớn hơn 27 tuổi.
Tứ phân vị thứ hai (trung vị: Median) = 39 Nghĩa là dưới 50% số bện nhân có số tuổi nhỏ hơn 39 hay trên 50% số bệnh nhân có độ tuổi lớn hơn 39 tuổi.
Tứ phân vị thứ ba (3rd Qu.) = 51 Nghĩa là dưới 75% tổng số người nhập viện có độ tuổi nhỏ hơn 51 hay trên 25% số người nhập viện lớn hơn 51 tuổi.
age <- data$age
table(cut(age,3))
##
## (18,33.3] (33.3,48.7] (48.7,64]
## 523 402 413
Bảng tần số trên cho thấy có 523 người nhập viện có độ tuổi trong khoảng từ 18 đến 33 tuổi; có 402 người nhập viện có tuổi trong khoảng từ 33 đến 48 tuổi và có 413 người nhập viện có số tuổi nằm trong khoảng từ 48 đến 64 tuổi.
library(ggplot2)
hist(data$age, main = "Biểu đồ tần số của độ tuổi (age)",xlab = "Độ tuổi", ylab = "Số người", col = "lightblue")
Dựa vào biểu đồ tần số của biến độ tuổi (age) cho thấy không có quá
nhiều sự chênh lệch về số lượng người nhập viện ứng với những độ tuổi
khác nhau. Trong đó số lượng người nhập viện dưới 20 tuổi là nhiều nhất
và số người nhập viện trên 60 tuổi là ít nhất.
summary(data$bmi)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 15.96 26.30 30.40 30.66 34.69 53.13
Biến (bmi) là biến định lượng về chỉ số khối của cơ thể, cho biết tỷ lệ cân nặng với chiều cao ở người nhập viện để đánh giá được trình trạng cơ thể. Thông qua kết quả trên cho ta thấy chỉ số khối (bmi) thấp nhất là 15,96 (kg/m^2) và cao nhhất là 53,13 (kg/m^2). Giá trị trung bình của chỉ số khối cơ thể (bmi) là 30,66 (kg/m^2).
Tứ phân vị: là ba điểm cắt sẽ chia tập dữ liệu thành 4 nhóm có kích thước bằng nhau, cụ thể:
Tứ phân vị thứ nhất (1st Qu.) = 26,3 Nghĩa là dưới 25% số người nhập viện có chỉ số khối (bmi) nhỏ hơn 26,3 kg/m^2 tuổi hay trên 75% số người nhập viện có chỉ số khối (bmi) lớn hơn 26,3 kg/m^2
Tứ phân vị thứ hai (trung vị: Median) = 30,4 Nghĩa là dưới 50% số bện nhân có chỉ số khối (bmi) nhỏ hơn 30,4 kg/m^2 hay trên 50% số bệnh nhân có chỉ số khối lớn hơn 30,4 kg/m^2
Tứ phân vị thứ ba (3rd Qu.) = 34,69 Nghĩa là dưới 75% tổng số người nhập viện có chỉ số khối (bmi) nhỏ hơn 34,69 kg/m^2 hay trên 25% số người nhập viện có chỉ số khối (bmi) lớn hơn 34,69 kg/m^2
bmi <- data$bmi
table(cut(bmi,3))
##
## (15.9,28.4] (28.4,40.7] (40.7,53.2]
## 502 765 71
Ta thấy rằng phần lớn số người nhập viện có chỉ số khối (bmi) nằm trong khoảng từ 28,4 đến 40,7 kg/m^2 chiếm 765 người. Có 502 người nhập viện có chỉ số khối trong khoảng 15,9 đến 28,4 kg/m^2 và chỉ có 71 người có chỉ số khối (bmi) cao trong khoảng từ 40,7 đến 53,2 kg/m^2.
hist(data$bmi, main = "Biểu đồ tần số của chỉ số khối cơ thể (bmi)",xlab = "Chỉ số khối (bmi)", ylab = "Số người", col = "pink")
Thông qua biểu đồ tần số trên có thể thấy rằng phần lớn những người nhập viện có chỉ số khối cơ thể (bmi) nằm trong khoảng từ 20 đến 40 kg/m^2, tức cao hơn so với chỉ số bmi lý tưởng của một cơ thể là từ 18,5 đến 24,9 kg/m^2. Còn lại những người nhập viện có chỉ số bmi quá thấp là dưới 20 kg/m^2 và quá cao là trên 40 kg/m^2 chiếm số ít trong tổng số người nhập viện.
table(data$smoker)
##
## N Y
## 1064 274
table(data$smoker)/sum(table(data$smoker))
##
## N Y
## 0.7952167 0.2047833
Biến tình trạng sử dụng thuốc lá (smoker) là biến định tính, thể hiện những người nhập viện có sử dụng thuốc lá hay không (N: không; Y: nữ). Dựa vào kết quả thống kê trên ta thấy trong tổng số 1338 bệnh nhân nhập viện thì có tới 1064 người sử dụng thuốc lá và chiếm 79,52% tổng số người nhập viện. Số bệnh nhân không sử dụng thuốc lá là 274 người và so với tổng số bệnh nhân thì chiếm tỉ lệ 20,47%.
ggplot(data,aes(smoker)) + geom_bar(color ="blue", fill = "yellow") + ylab("Số bệnh nhân") + xlab("tình trạng sử dụng thuốc lá (smoker)")
Dựa vào biểu đồ cột ta thấy có sự chênh lệch khá lớn giữa số người nhập viện có sử dụng thuốc lá và không sử dụng thuốc lá. Số người không sử dụng thuốc lá chiếm phần lớn trong tồng số 1338 người nhập viện, gần gấp 4 lần những người có sử dụng thuốc lá.
table(data$dependent)
##
## 0 1 2 3 4 5
## 574 324 240 157 25 18
table(data$dependent)/sum(table(data$dependent))
##
## 0 1 2 3 4 5
## 0.42899851 0.24215247 0.17937220 0.11733931 0.01868460 0.01345291
Biến số người phụ thuộc (dependent): là biến định tính, thể hiện số người phụ thuộc của những người nhập viện, theo như số liệu gốc thì biến số người phụ thuộc nhận các giá trị là 0,1,2,3,4,5. Có thể thấy phần lớn số người nhập viện không có người phụ thuộc hoặc có từ 1,2 người phụ thuộc cụ thể là có 574 người nhập viện không có người phụ thuộc, chiếm đến 42,89% tổng số người nhập viện, bên cạnh đó tỷ lệ người nhập viện có 1 người phụ thuộc là 24,21% và tỷ lệ người nhập viện có 2 người phụ thuộc là 17,93%. Con số này của những người nhập viện có 3 hoặc 4 hoặc 5 người phụ thuộc chỉ lần lượt là 11,73%; 1,87% và 1,34% .
pie(table(data$dependent), col = rainbow(6), main = "Biểu đồ số người phụ thuộc của những người nhập viện")
Theo như biểu đồ tròn phía trên có thể thấy tỷ lệ những người nhập viện không có người phụ thuộc chiếm gần một nửa tổng số người nhập viện, những người nhập viện có 1 hoặc 2 hoặc 3 người phụ thuộc chiếm hơn một nửa tổng số và những người nhập viện có 4 hoặc 5 người phụ thuộc chỉ chiếm phần nhỏ trong tổng số những người nhập viện. Có thể nói rằng những người có ít người phụ thuộc có tỷ lệ nhập viện cao hơn so với những người có nhiều người phụ thuộc.
table(data$region)
##
## northeast northwest southeast southwest
## 324 325 364 325
table(data$region)/sum(table(data$region))
##
## northeast northwest southeast southwest
## 0.2421525 0.2428999 0.2720478 0.2428999
Biến khu vực cư trú (region) là biến định tính bao gồm 4 thông tin về vùng cư trú tại Mỹ của các bệnh nhân nhập viện là (Northeast: Đông Bắc, Southeast: Đông Nam, Southwest: Tây Bắc, Northwest: Tây Nam). Từ kết quả trên ta thấy trong tổng số 1338 người nhập viện thì trong đó có 324 người đến từ vùng Đông Bắc; 325 người đến từ Tây Nam; 364 người đến từ Đông Nam và 325 người đến từ vùng Tây Bắc, các tỷ lệ này tương ứng lần lượt là 24,21%; 24,29%; 27,2% và 24,29% trong tổng số người nhập viện.
library(ggplot2)
ggplot(data,aes(region))+ geom_bar(color = "blue",fill="orange") + ylab("Số người") + xlab("Khu vực cư trú (region)")
Theo như biểu đồ cột trên thì có thể thấy không có quá nhiều sự khác biệt về số lượng người nhập viện đến từ những vùng khác nhau. Trong đó những người đến từ vùng Đông Nam là nhiều nhất còn lại số lượng những người đến từ vùng Đông Bắc, Tây Bắc và Tây Nam là khá tương đồng nhau.
summary(data$charges)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1122 4740 9382 13270 16640 63770
Biến chi phí y tế (charges) là biến định lượng cho biết số tiền bảo hiểm mà công ty bảo hiểm phải chi trả cho các bệnh nhân. Thông qua kết quả trên ta thấy số tiền bảo hiểm ít nhất là 1122 USD, số tiền bảo hiểm chi trả nhiều nhất là 63770 USD và trung bình công ty bảo hiểm chi trả 13270 USD cho một người nhập viện.
Tứ phân vị: là ba điểm cắt sẽ chia tập dữ liệu thành 4 nhóm có kích thước bằng nhau, cụ thể:
Tứ phân vị thứ nhất (1st Qu.) = 4740 Nghĩa là dưới 25% số người nhập viện có chi phí y tế dưới 4740 USD hay trên 75% số người nhập viện có chi phí lớn hơn 4740 USD.
Tứ phân vị thứ hai (trung vị: Median) = 9382 Nghĩa là dưới 50% số bện nhân có chi phí y tế nhỏ hơn 9382 USD hay trên 50% số bệnh nhân có chi phí lớn hơn 9382 USD.
Tứ phân vị thứ ba (3rd Qu.) = 16640 Nghĩa là dưới 75% tổng số người nhập viện có chi phí y tế nhỏ hơn 166640 USD hay trên 25% chi phí y tế của những người nhập viện lớn hơn 16640 USD.
hist(data$charges, main = "Biểu đồ tần số của chi phí y tế (charges)",xlab = "Chi phí y tế", ylab = "Count", col = "lightgreen")
Với dữ liệu gốc, biến chi phí y tế (charges) là biến định lượng nhận các giá trị từ 0 đến 63770 USD nên tác giả đã đặt quy ước về việc mã hoá biến (charges) như sau: Chi phí thấp (Thấp): chi phí y tế từ trên 0 USD đến 15000 USD. Chi phí cao (Cao): chi phí y tế từ 15000 USD đến 64000 USD.
charges <- cut(data$charges, breaks = c(0,15000,64000), labels=c("Thấp","Cao"))
table(charges)
## charges
## Thấp Cao
## 980 358
sex <- data$sex
table(sex)
## sex
## F M
## 662 676
Bảng tần số:
a <- table(sex, charges);a
## charges
## sex Thấp Cao
## F 503 159
## M 477 199
Bảng tần suất:
a1 <- prop.table(a);a1
## charges
## sex Thấp Cao
## F 0.3759342 0.1188341
## M 0.3565022 0.1487294
Phân phối biên:
addmargins(a)
## charges
## sex Thấp Cao Sum
## F 503 159 662
## M 477 199 676
## Sum 980 358 1338
Biểu đồ cột kết hợp 2 biến:
library(ggplot2)
library(data.table)
k <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, sex)
k |> ggplot(aes(x=sex,y=after_stat(count))) + geom_bar(fill="blue") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "red", vjust = - .5) + facet_grid(. ~charges) + labs(x = "Giới tính",y = "Số người")
Thông qua bảng tần số, tần suất trên của 2 biến Chi phí y tế và Giới tính ta thấy có 980 người nhập viện có chi phí y tế thấp (tức dưới 15000 USD) trong đó có 503 người là nữ, chiếm tỉ lệ 37,6% tổng số bệnh nhân và 477 người là nam, chiếm 35,6% tổng số bệnh nhân. Bên cạnh đó có 358 người có chi phí y tế ở mức cao (trên 15000 USD) trong đó có 159 người là nữ, chiếm 11,9% tổng số bệnh nhân và 199 người là nam, chiếm 14,9% tổng số bệnh nhân. Số người nhập viện có chi phí y tế cao chỉ xấp xỉ khoảng 30% số người nhập viện có chi phí y tế thấp. Qua biểu đồ có thể thấy đối với những người nhập viện có chi phí thấp thì tỷ lệ nữ cao hơn nam nhưng đối với những người nhập viện có chi phí cao thì tỷ lệ nam lại nhiều hơn nữ.
library(epitools)
riskratio(a)
## $data
## charges
## sex Thấp Cao Total
## F 503 159 662
## M 477 199 676
## Total 980 358 1338
##
## $measure
## risk ratio with 95% C.I.
## sex estimate lower upper
## F 1.000000 NA NA
## M 1.225652 1.024954 1.465649
##
## $p.value
## two-sided
## sex midp.exact fisher.exact chi.square
## F NA NA NA
## M 0.02533111 0.02627532 0.02515577
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế cao theo giới tính là 1,2256 tức là tỉ lệ những bệnh nhân có chi phí y tế cao là nữ gấp 1,2256 lần tỉ lệ những bệnh nhân có chi phí y tế cao là nam.
Khi thêm tham số rev = “c” thì sẽ thực hiện việc đổi chỗ 2 cột trong bảng ngẫu nhiên:
riskratio(a, rev = "c")
## $data
## charges
## sex Cao Thấp Total
## F 159 503 662
## M 199 477 676
## Total 358 980 1338
##
## $measure
## risk ratio with 95% C.I.
## sex estimate lower upper
## F 1.0000000 NA NA
## M 0.9286706 0.8703608 0.9908868
##
## $p.value
## two-sided
## sex midp.exact fisher.exact chi.square
## F NA NA NA
## M 0.02533111 0.02627532 0.02515577
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế thấp theo giới tính là 0,9287 tức là tỉ lệ những bệnh nhân có chi phí y tế thấp là nữ ít hơn và xấp xỉ bằng tỉ lệ những bệnh nhân có chi phí y tế cao là nam.
epitab(a, method = "oddsratio")
## $tab
## charges
## sex Thấp p0 Cao p1 oddsratio lower upper p.value
## F 503 0.5132653 159 0.4441341 1.000000 NA NA NA
## M 477 0.4867347 199 0.5558659 1.319792 1.034851 1.68319 0.02627532
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 1,3193 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở giới tính nam lớn hơn khoảng 31,93% so với tỉ lệ bệnh nhân có chi phí y tế cao/bệnh nhân có chi phí y tế thấp ở giới tính nữ.
Khi thêm tham số rev = “r” thì sẽ thực hiện việc đổi chỗ 2 dòng trong bảng ngẫu nhiên:
epitab(a, method = "oddsratio", rev = "r")
## $tab
## charges
## sex Thấp p0 Cao p1 oddsratio lower upper p.value
## M 477 0.4867347 199 0.5558659 1.000000 NA NA NA
## F 503 0.5132653 159 0.4441341 0.757695 0.5941098 0.9663226 0.02627532
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 0,7577 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở giới tính nữ chỉ bằng khoảng 75,77% tỉ lệ bệnh nhân có chi phí y tế cao/bệnh nhân có chi phí y tế thấp ở giới tính nam.
Kiểm định tính độc lập cho 2 biến (charges) và (sex):
Phương pháp chi bình phương:
Giả thuyết Ho: charges và sex độc lập
a <- table(data$sex, charges);a
## charges
## Thấp Cao
## F 503 159
## M 477 199
chisq.test(a)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: a
## X-squared = 4.7404, df = 1, p-value = 0.02946
Kết quả kiểm định trên cho thấy giá trị tới hạn P_value = 0,02946 < 5% vì vậy chưa có cơ sở để thừa nhận giả thuyết Ho, nói cách khác giữa chi phí bảo hiểm y tế (charges) và giới tính (sex) có liên quan tới nhau.
Với dữ liệu gốc, biến độ tuổi (age) là biến định lượng nhận các giá trị từ 18 đến 64 tuổi. Theo Trung tâm Y tế và Sức khoẻ Philips ở Mỹ cho biết nếu như từ lâu tuổi 40 được xem là cột mốc đánh dấu sự bắt đầu của tuổi trung niên thì nay độ tuổi này đã hạ xuống còn 35 với người Mỹ nên tác giả đã đặt quy ước về việc mã hoá biến (age) như sau:
Tuổi nhóm trung niên (trungnien): độ tuổi từ trên 35 tuổi đến 65 tuổi.
Tuổi nhóm thanh niên (thanhnien): độ tuổi từ trên 16 tuổi đến 35 tuổi.
age <- cut(data$age, breaks = c(16,35,65), labels=c("thanhnien","trungnien"))
table(age)
## age
## thanhnien trungnien
## 574 764
Bảng tần số:
b <- table(age, charges); b
## charges
## age Thấp Cao
## thanhnien 428 146
## trungnien 552 212
Bảng tần suất:
b1 <- prop.table(b); b1
## charges
## age Thấp Cao
## thanhnien 0.3198804 0.1091181
## trungnien 0.4125561 0.1584454
Phân phối biên:
addmargins(b)
## charges
## age Thấp Cao Sum
## thanhnien 428 146 574
## trungnien 552 212 764
## Sum 980 358 1338
Biểu đồ cột kết hợp 2 biến:
m <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age)
m |> ggplot(aes(x=age,y=after_stat(count))) + geom_bar(fill="green") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "blue", vjust = - .5) + facet_grid(. ~charges) + labs(x = "Độ tuổi",y = "Số người")
Thông qua bảng tần số, tần suất trên của 2 biến Chi phí y tế và độ tuổi ta thấy có 980 người nhập viện có chi phí y tế thấp (tức dưới 15000 USD) trong đó có 428 người nhóm tuổi thanh niên, chiếm tỉ lệ 31,99% tổng số bệnh nhân và 552 người nhóm tuổi trung niên, chiếm tỉ lệ 41,25% tổng số bệnh nhân . Bên cạnh đó có 358 người có chi phí y tế ở mức cao (trên 15000 USD) trong đó có 146 người nhóm tuổi thanh niên, chiếm 10,91% tổng số bệnh nhân và 212 người nhóm tuổi trung niên, chiếm 15,84% tổng số bệnh nhân. Số người nhập viện có chi phí y tế cao chỉ xấp xỉ khoảng 30% số người nhập viện có chi phí y tế thấp. Qua biểu đồ có thể thấy đối với những người nhập viện có cả chi phí thấp và chi phí cao thì tỷ lệ người thuộc nhóm tuổi trung niên vẫn nhiều hơn những người thuộc nhóm tuổi thanh niên nhưng đối với từng mức chi phí thì mức độ chênh lệch giữa 2 nhóm tuồi này không quá lớn.
epitab(b, method = "riskratio")
## $tab
## charges
## age Thấp p0 Cao p1 riskratio lower upper p.value
## thanhnien 428 0.7456446 146 0.2543554 1.000000 NA NA NA
## trungnien 552 0.7225131 212 0.2774869 1.090942 0.9104463 1.30722 0.3501079
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế cao theo độ tuổi là 1,0909 tức là tỉ lệ những bệnh nhân có chi phí y tế cao trong nhóm tuổi trung niên gấp 1,0909 lần tỉ lệ những bệnh nhân có chi phí y tế cao trong nhóm tuổi thanh niên.
Khi thêm tham số rev = “c” thì sẽ thực hiện việc đổi chỗ 2 cột trong bảng ngẫu nhiên:
epitab(b, method = "riskratio", rev = "c")
## $tab
## charges
## age Cao p0 Thấp p1 riskratio lower upper p.value
## thanhnien 146 0.2543554 428 0.7456446 1.0000000 NA NA NA
## trungnien 212 0.2774869 552 0.7225131 0.9689778 0.9080744 1.033966 0.3501079
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế thấp theo độ tuổi là 0,9690 tức là tỉ lệ những bệnh nhân có chi phí y tế thấp trong nhóm tuổi trung niên gần bằng tỉ lệ những bệnh nhân có chi phí y tế thấp trong nhóm tuổi thanh niên.
epitab(b, method = "oddsratio")
## $tab
## charges
## age Thấp p0 Cao p1 oddsratio lower upper p.value
## thanhnien 428 0.4367347 146 0.4078212 1.000000 NA NA NA
## trungnien 552 0.5632653 212 0.5921788 1.125869 0.8806103 1.439434 0.3501079
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 1,1259 tức tỉ lệ những bệnh nhân có chi phí y tế thấp/những bệnh nhân có chi phí y tế cao ở nhóm tuổi thanh niên lớn hơn khoảng 12,59% so với tỉ lệ bệnh nhân có chi phí y tế thấp/bệnh nhân có chi phí y tế cao ở nhóm tuổi trung niên.
Khi thêm tham số rev = “r” thì sẽ thực hiện việc đổi chỗ 2 dòng trong bảng ngẫu nhiên:
epitab(b, method = "oddsratio", rev = "r")
## $tab
## charges
## age Thấp p0 Cao p1 oddsratio lower upper p.value
## trungnien 552 0.5632653 212 0.5921788 1.0000000 NA NA NA
## thanhnien 428 0.4367347 146 0.4078212 0.8882031 0.6947177 1.135576 0.3501079
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 0,8882 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm tuổi thanh niên bằng khoảng 88,82% so với tỉ lệ bệnh nhân có chi phí y tế cao/bệnh nhân có chi phí y tế thấp ở nhóm tuổi trung niên.
Kiểm định tính độc lập cho 2 biến (charges) và (age):
Phương pháp chi bình phương: Giả thuyết Ho: (charges) và (age) độc lập
b <- table(age, charges);b
## charges
## age Thấp Cao
## thanhnien 428 146
## trungnien 552 212
chisq.test(b)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: b
## X-squared = 0.78073, df = 1, p-value = 0.3769
Kết quả kiểm định trên cho thấy giá trị tới hạn P_value = 0,3769 > 5% vì vậy có cơ sở để thừa nhận giả thuyết Ho, nói cách khác giữa chi phí bảo hiểm y tế (charges) và độ tuổi (age) độc lập với nhau.
Với dữ liệu gốc, biến chỉ số khối của cơ thể (bmi) là biến định lượng nhận các giá trị từ 15,96 đến 53,13 kg/m^2. Chỉ số bmi của một người lý tưởng sẽ nằm trong khoảng từ 18,5 đến 24,9 kg/m^2 nên tác giả đã đặt quy ước về việc mã hoá biến (bmi) như sau: Chỉ số khối (bmi) người bình thường (candoi): bmi từ 15,9 đến 25 kg/m^2. Chỉ số khối (bmi) người không cân đối (khongcandoi): bmi từ 25 đến 54 kg/m^2.
bmi <- cut(data$bmi, breaks = c(15.9,25,54), labels=c("candoi","khongcandoi"))
table(bmi)
## bmi
## candoi khongcandoi
## 247 1091
Bảng tần số:
d <- table(bmi, charges); d
## charges
## bmi Thấp Cao
## candoi 187 60
## khongcandoi 793 298
Bảng tần suất:
d1 <- prop.table(d); d1
## charges
## bmi Thấp Cao
## candoi 0.13976084 0.04484305
## khongcandoi 0.59267564 0.22272048
Phân phối biên:
addmargins(d)
## charges
## bmi Thấp Cao Sum
## candoi 187 60 247
## khongcandoi 793 298 1091
## Sum 980 358 1338
Biểu đồ cột kết hợp 2 biến:
n <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age, bmi)
m |> ggplot(aes(x=bmi,y=after_stat(count))) + geom_bar(fill="pink") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "navy", vjust = - .5) + facet_grid(. ~charges) + labs(x = "Chỉ số khối (bmi) cơ thể",y = "Số người")
Thông qua bảng tần số, tần suất trên của 2 biến Chi phí y tế và chỉ số khối cơ thể ta thấy có 980 người nhập viện có chi phí y tế thấp (tức dưới 15000 USD) trong đó chỉ có 187 người có chỉ số bmi cân đối, chiếm tỉ lệ 13,98% tổng số bệnh nhân và 793 người có chỉ số bmi không cân đối, chiếm tỉ lệ 59,27% tổng số bệnh nhân . Bên cạnh đó có 358 người có chi phí y tế ở mức cao (trên 15000 USD) trong đó chỉ có 60 có chỉ số bmi cân đối, chiếm 4,48% tổng số bệnh nhân và 298 người có chỉ số bmi không cân đối, chiếm 22,27% tổng số bệnh nhân. Trong tổng số những người nhập viện thì tỉ lệ những người có chỉ số khối cơ thể (bmi) không cân đối gấp hơn 4 lần những người có chỉ số (bmi) cân đối. Qua biểu đồ có thể thấy đối với những người nhập viện có cả chi phí thấp và chi phí cao thì tỷ lệ người thuộc nhóm chỉ số bmi không cân đối vẫn nhiều hơn những người thuộc nhóm có chỉ số bmi cân đối, bên cạnh đó đối với từng mức chi phí thì mức độ chênh lệch về số lượng bệnh nhân giữa 2 nhóm chỉ số bmi này là khá nhiều.
epitab(d, method = "riskratio")
## $tab
## charges
## bmi Thấp p0 Cao p1 riskratio lower upper
## candoi 187 0.7570850 60 0.2429150 1.000000 NA NA
## khongcandoi 793 0.7268561 298 0.2731439 1.124442 0.8840731 1.430165
## charges
## bmi p.value
## candoi NA
## khongcandoi 0.3812685
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế cao theo chỉ số khối (bmi) cơ thể là 1,1244 tức là tỉ lệ những bệnh nhân có chi phí y tế cao có chỉ số bmi không cân đối lớn hơn 12,44% so với tỉ lệ những bệnh nhân có chi phí y tế cao có chỉ số bmi cân đối.
epitab(d, method = "oddsratio")
## $tab
## charges
## bmi Thấp p0 Cao p1 oddsratio lower upper
## candoi 187 0.1908163 60 0.1675978 1.000000 NA NA
## khongcandoi 793 0.8091837 298 0.8324022 1.171206 0.8506008 1.612654
## charges
## bmi p.value
## candoi NA
## khongcandoi 0.3812685
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 1,1712 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm người có chỉ số bmi không cân đối lớn hơn khoảng 17,12% so với tỉ lệ bệnh nhân có chi phí y tế cao/bệnh nhân có chi phí y tế thấp ở nhóm người có chỉ số bmi cân đối.
Kiểm định tính độc lập cho 2 biến (charges) và (bmi):
Phương pháp chi bình phương: Giả thuyết Ho: (charges) và (bmi) độc lập
d <- table(bmi, charges);d
## charges
## bmi Thấp Cao
## candoi 187 60
## khongcandoi 793 298
chisq.test(d)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: d
## X-squared = 0.79119, df = 1, p-value = 0.3737
Kết quả kiểm định trên cho thấy giá trị tới hạn P_value = 0,3737 > 5% vì vậy có cơ sở để thừa nhận giả thuyết Ho, nói cách khác giữa chi phí bảo hiểm y tế (charges) và chỉ số khối cơ thể (bmi) độc lập với nhau.
Với dữ liệu gốc, biến số người phụ thuộc (dependent) là biến định tính nhận các giá trị từ 0 đến 5 (người). Những bệnh nhân chỉ có 0 hay 1 người phụ thuộc thường được coi là ít người phụ thuộc, những bệnh nhân có từ 2 người phụ thuộc trở lên được coi là nhiều người phụ thuộc nên tác giả đã đặt quy ước về việc mã hoá biến (dependent) như sau: Bệnh nhân có ít người phụ thuộc (ít): Số người phụ thuộc từ 0 đến 1 người. Bệnh nhân có nhiều người phụ thuộc (nhiều): Số người phụ thuộc từ 2 đến 5 người.
p <- table(data$dependent, charges); p
## charges
## Thấp Cao
## 0 436 138
## 1 242 82
## 2 164 76
## 3 104 53
## 4 17 8
## 5 17 1
f <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age, bmi)
library(dplyr)
dpd <- f %>% mutate(phuthuoc = case_when(data$dependent == "0" ~ 1, data$dependent =="1" ~ 1, data$dependent =="2" ~ 4, data$dependent =="3" ~ 4, data$dependent =="4" ~ 4, data$dependent =="5" ~ 4))
dependent <- cut(dpd$phuthuoc, breaks = c(0,2,5), labels = c("It", "Nhieu"))
table(dependent)
## dependent
## It Nhieu
## 898 440
Bảng tần số:
e <- table(dependent, charges); e
## charges
## dependent Thấp Cao
## It 678 220
## Nhieu 302 138
Bảng tần suất:
e1 <- prop.table(e); e1
## charges
## dependent Thấp Cao
## It 0.5067265 0.1644245
## Nhieu 0.2257100 0.1031390
Phân phối biên:
addmargins(e)
## charges
## dependent Thấp Cao Sum
## It 678 220 898
## Nhieu 302 138 440
## Sum 980 358 1338
Biểu đồ cột kết hợp 2 biến:
k <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age, bmi, dependent)
k |> ggplot(aes(x=dependent,y=after_stat(count))) + geom_bar(fill="yellow") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "darkblue", vjust = - .5) + facet_grid(. ~charges) + labs(x = "Số người phụ thuộc (dependent)",y = "Số người")
Thông qua bảng tần số, tần suất trên của 2 biến Chi phí y tế và số người phụ thuộc ta thấy có 980 người nhập viện có chi phí y tế thấp (tức dưới 15000 USD) trong đó có tới 678 người có ít người phụ thuộc (tức không có hoặc có 1 người phụ thuộc), chiếm tỉ lệ 50,67% tổng số bệnh nhân và 302 người có nhiều người phụ thuộc (tức có 2,3,4,5 người phụ thuộc), chiếm tỉ lệ 22,57% tổng số bệnh nhân . Bên cạnh đó có 358 người có chi phí y tế ở mức cao (trên 15000 USD) trong đó có 220 người có ít người phụ thuộc, chiếm 16,44% tổng số bệnh nhân và 138 người có nhiều người phụ thuộc, chiếm 10,31% tổng số bệnh nhân. Trong tổng số những người nhập viện thì tỉ lệ những người có ít người phụ thuộc (không có hoặc chỉ có 1 người phụ thuộc) gấp hơn 2 lần những người có nhiều người phụ thuộc. Qua biểu đồ có thể thấy đối với những người nhập viện có cả chi phí thấp và chi phí cao thì tỷ lệ người thuộc nhóm có ít người phụ thuộc vẫn nhiều hơn những người thuộc nhóm có nhiều người phụ thuộc, bên cạnh đó đối với mức chi phí y tế thấp thì tỷ lệ những bệnh nhân có ít người phụ thuộc lớn gấp đôi tỷ lệ những bệnh nhân có nhiều người phụ thuộc.
epitab(e, method = "riskratio")
## $tab
## charges
## dependent Thấp p0 Cao p1 riskratio lower upper p.value
## It 678 0.7550111 220 0.2449889 1.000000 NA NA NA
## Nhieu 302 0.6863636 138 0.3136364 1.280207 1.069647 1.532215 0.008556493
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế cao theo số người phụ thuộc (dependent) là 1,2802 tức là tỉ lệ những bệnh nhân có nhiều người phụ thuộc có chi phí y tế cao lớn hơn 28,02% so với tỉ lệ những bệnh nhân có ít người phụ thuộc mà có chi phí y tế cao.
epitab(e, method = "oddsratio")
## $tab
## charges
## dependent Thấp p0 Cao p1 oddsratio lower upper p.value
## It 678 0.6918367 220 0.6145251 1.000000 NA NA NA
## Nhieu 302 0.3081633 138 0.3854749 1.408248 1.094163 1.812492 0.008556493
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 1,4082 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm bệnh nhân có nhiều người phụ thuộc lớn hơn khoảng 40,82% so với tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm bệnh nhân có ít người phụ thuộc.
Kiểm định tính độc lập cho 2 biến (charges) và (dependent):
Phương pháp chi bình phương: Giả thuyết Ho: (charges) và (dependent) độc lập
e <- table(dependent, charges);e
## charges
## dependent Thấp Cao
## It 678 220
## Nhieu 302 138
chisq.test(e)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: e
## X-squared = 6.7551, df = 1, p-value = 0.009348
Kết quả kiểm định trên cho thấy giá trị tới hạn P_value = 0,009348 < 5% vì vậy chưa có cơ sở để thừa nhận giả thuyết Ho, nói cách khác giữa chi phí bảo hiểm y tế (charges) và số người phụ thuộc (dependent) có liên quan với nhau.
Với dữ liệu gốc, biến khu vực cư trú (region) là biến định tính nhận 4 giá trị: Northeast, Southeast, Southwest, Northwest. Những bệnh nhân đến từ những vùng khác nhau ở Mỹ, cụ thể hơn là từ Đông Bắc, Đông Nam, Tây Bắc, Tây Nam nên tác giả đã đặt quy ước về việc mã hoá 2 giá trị biến (region) như sau: Bệnh nhân đến từ phía Bắc Mỹ (Bắc): khu vực Northeast (Đông Bắc) và Northwest (Tây Bắc). Bệnh nhân đến từ phía Nam Mỹ (Nam): khu vực Southeast (Đông Nam) và Southwest (Tây Nam).
g <- table(data$region, charges); g
## charges
## Thấp Cao
## northeast 235 89
## northwest 244 81
## southeast 248 116
## southwest 253 72
i <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age, bmi, dependent)
region <- i %>% mutate(khuvuc = case_when(data$region == "northeast" ~ 1, data$region =="northwest" ~ 1, data$region =="southeast" ~ 4, data$region =="southwest" ~ 4))
region <- cut(region$khuvuc, breaks = c(0,2,5), labels = c("Bắc", "Nam"))
table(region)
## region
## Bắc Nam
## 649 689
Bảng tần số:
g <- table(region, charges); g
## charges
## region Thấp Cao
## Bắc 479 170
## Nam 501 188
Bảng tần suất:
g1 <- prop.table(g); g1
## charges
## region Thấp Cao
## Bắc 0.3579970 0.1270553
## Nam 0.3744395 0.1405082
Phân phối biên:
addmargins(g)
## charges
## region Thấp Cao Sum
## Bắc 479 170 649
## Nam 501 188 689
## Sum 980 358 1338
Biểu đồ cột kết hợp 2 biến:
k <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, sex, age, bmi, dependent, region)
k |> ggplot(aes(x=region,y=after_stat(count))) + geom_bar(fill="purple") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "darkgreen", vjust = - .5) + facet_grid(. ~charges) + labs(x = "Khu vực cư trú (region)",y = "Số người")
Thông qua bảng tần số, tần suất trên của 2 biến Chi phí y tế và khu vực cư trú ta thấy có 980 người nhập viện có chi phí y tế thấp (tức dưới 15000 USD) trong đó có 479 người đến từ khu vực phía Bắc (bao gồm Đông Bắc và Tây Bắc), chiếm tỉ lệ 35,80% tổng số bệnh nhân và 501 người đến từ khu vực phía Nam (bao gồm khu vực Đông Nam và Tây Nam), chiếm tỉ lệ 37,44% tổng số bệnh nhân . Bên cạnh đó có 358 người có chi phí y tế ở mức cao (trên 15000 USD) trong đó có 170 đến từ khu vực phía Bắc, chiếm 12,7% tổng số bệnh nhân và 188 người đến từ khu vực phía Nam, chiếm 14,05% tổng số bệnh nhân. Trong tổng số những người nhập viện số lượng người đến từ khu vực phía Bắc (Đông Bắc và Tây Bắc) xấp xỉ số lượng những người đến từ khu vực phía Nam (Đông Nam và Tây Nam). Qua biểu đồ có thể thấy đối với những người nhập viện có cả chi phí thấp và chi phí cao thì tỷ lệ người đến từ khu vực phía Nam vẫn nhiều hơn tỷ lệ những người đến từ khu vực phía Bắc, tuy nhiên sự chênh lệch này là không quá đáng kể.
epitab(g, method = "riskratio")
## $tab
## charges
## region Thấp p0 Cao p1 riskratio lower upper p.value
## Bắc 479 0.7380586 170 0.2619414 1.00000 NA NA NA
## Nam 501 0.7271408 188 0.2728592 1.04168 0.8721901 1.244107 0.6657332
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế cao theo khu vực cư trú (region) là 1,04168 tức là tỉ lệ những bệnh nhân đến từ khu vực phía Nam có chi phí y tế cao chỉ lớn hơn 4,17% so với tỉ lệ những bệnh nhân đến từ khu vực phía Bắc mà có chi phí y tế cao.
epitab(g, method = "oddsratio")
## $tab
## charges
## region Thấp p0 Cao p1 oddsratio lower upper p.value
## Bắc 479 0.4887755 170 0.4748603 1.000000 NA NA NA
## Nam 501 0.5112245 188 0.5251397 1.057321 0.8297932 1.347236 0.6657332
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 1,0573 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm bệnh nhân đến từ khu vực phía Nam chỉ lớn hơn khoảng 5,73% so với tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm bệnh nhân đến từ khu vực phía Bắc.
Kiểm định tính độc lập cho 2 biến (charges) và (region):
Phương pháp chi bình phương: Giả thuyết Ho: (charges) và (region) độc lập
g <- table(region, charges);g
## charges
## region Thấp Cao
## Bắc 479 170
## Nam 501 188
chisq.test(g)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: g
## X-squared = 0.15138, df = 1, p-value = 0.6972
Kết quả kiểm định trên cho thấy giá trị tới hạn P_value = 0,6972 > 5% vì vậy có cơ sở để thừa nhận giả thuyết Ho, nói cách khác giữa chi phí bảo hiểm y tế (charges) và khu vực cư trú (region) độc lập với nhau.
Thông qua kiểm định về tính độc lập của biến phụ thuộc chi phí y tế (charges) với các biến độc lập ở nhiệm vụ trước thì tác giả đã tổng hợp được các yếu tố có liên quan đến chi phí y tế (charges) bao gồm độ tuổi (age), giới tính (sex) và số người phụ thuộc (dependent). Vì vậy tác giả sẽ thực hiện việc chạy mô hình hồi quy cho dữ liệu nhị phân của biến phu thuộc (charges) với các biến độc lập (age), (sex) và (dependent).
k <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age, sex, dependent)
mhlogit1 <- glm(data = k, formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "logit"))
levels(factor(charges))
## [1] "Thấp" "Cao"
summary(mhlogit1)
##
## Call:
## glm(formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "logit"),
## data = k)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.9298 -0.8095 -0.7175 1.4471 1.7663
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.32406 0.12510 -10.584 <2e-16 ***
## agetrungnien 0.09824 0.12634 0.778 0.4368
## sexM 0.27822 0.12448 2.235 0.0254 *
## dependentNhieu 0.33287 0.12945 2.571 0.0101 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1554.3 on 1337 degrees of freedom
## Residual deviance: 1541.7 on 1334 degrees of freedom
## AIC: 1549.7
##
## Number of Fisher Scoring iterations: 4
Đối với mô hình hồi quy logit của biến phụ thuộc chi phí y tế (charges) với các biến độ tuổi (age), giới tính (sex) và số người phụ thuộc (dependent) ta thấy rằng có 2 yếu tố có ý nghĩa thống kê ở mức ý nghĩa 5% đó là giới tính (sex) và người phụ thuộc (dependent), yếu tố độ tuổi (age) không có ý nghĩa thống kê. Bên cạnh đó chiều hướng tác động của 2 yếu số (sex) và (dependent) tới (charges) là cùng hướng, hệ số hồi quy mang dấu (+).
Mà mô hình hồi quy logistic với link function=“logit” có dạng tổng quát như sau:
logit(π)=log(π/1−π)= β0 + β1X1 + β2X2 +⋯+ βkXk
Vậy nên mô hình 1 được xác định như sau:
MHlogit1: logit(π) = log(π/1−π) = -1,3241 + 0,2782sex + 0,3319dependent
với π = P(charges = “Cao” hoặc “Thấp”)
mhprobit1 <- glm(data = k, formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "probit"))
levels(factor(charges))
## [1] "Thấp" "Cao"
summary(mhprobit1)
##
## Call:
## glm(formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "probit"),
## data = k)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.9283 -0.8100 -0.7176 1.4490 1.7676
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.80753 0.07319 -11.033 <2e-16 ***
## agetrungnien 0.05881 0.07500 0.784 0.4330
## sexM 0.16492 0.07391 2.231 0.0256 *
## dependentNhieu 0.19855 0.07768 2.556 0.0106 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1554.3 on 1337 degrees of freedom
## Residual deviance: 1541.8 on 1334 degrees of freedom
## AIC: 1549.8
##
## Number of Fisher Scoring iterations: 4
Đối với mô hình hồi quy probit của biến phụ thuộc chi phí y tế (charges) với các biến độ tuổi (age), giới tính (sex) và số người phụ thuộc (dependent) ta thấy rằng có 2 yếu tố có ý nghĩa thống kê ở mức ý nghĩa 5% đó là giới tính (sex) và người phụ thuộc (dependent), yếu tố độ tuổi (age) không có ý nghĩa thống kê. Bên cạnh đó chiều hướng tác động của 2 yếu số (sex) và (dependent) tới (charges) là cùng hướng, hệ số hồi quy mang dấu (+).
Mà mô hình hồi quy logistic với link function=“probit” có dạng tổng quát như sau:
probit(π) = Φ − 1(π) = β0 + β1X1 + β2X2 +⋯+ βkXk
Vậy nên mô hình probit 1 được xác định như sau:
MHprobit1: probit(π) = Φ − 1(π) = -0,8075 + 0,1649sex + 0,1986dependent
với π = P(charges = “Cao” hoặc “Thấp”)
mhcloglog1 <- glm(data = k, formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "cloglog"))
summary(mhcloglog1)
##
## Call:
## glm(formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "cloglog"),
## data = k)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.9322 -0.8087 -0.7174 1.4442 1.7647
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.44099 0.10914 -13.204 <2e-16 ***
## agetrungnien 0.08352 0.10840 0.770 0.4410
## sexM 0.23959 0.10685 2.242 0.0249 *
## dependentNhieu 0.28442 0.10951 2.597 0.0094 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1554.3 on 1337 degrees of freedom
## Residual deviance: 1541.7 on 1334 degrees of freedom
## AIC: 1549.7
##
## Number of Fisher Scoring iterations: 5
Đối với mô hình hồi quy cloglog của biến phụ thuộc chi phí y tế (charges) với các biến độ tuổi (age), giới tính (sex) và số người phụ thuộc (dependent) ta thấy rằng có 2 yếu tố có ý nghĩa thống kê ở mức ý nghĩa 5% đó là giới tính (sex) và người phụ thuộc (dependent), yếu tố độ tuổi (age) không có ý nghĩa thống kê. Bên cạnh đó chiều hướng tác động của 2 yếu số (sex) và (dependent) tới (charges) là cùng hướng, hệ số hồi quy mang dấu (+).
Mà mô hình hồi quy logistic với link function=“cloglog” có dạng tổng quát như sau:
cloglog(π) = log(−log(1−π)) = β0 + β1X1 + β2X2 + ⋯ + βkXk
Vậy nên mô hình cloglog 1 được xác định như sau:
MHcloglog1: cloglog(π) = log(−log(1−π)) = -1,4410 + 0,2396sex + 0,2844dependent
với π = P(charges = “Cao” hoặc “Thấp”)
AIC được đề xuất bởi Akaike Hirotugu, một nhà thống kê học người Nhật. AIC là một tiêu chí được sử dụng một cách phổ biến để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Maximum Likekihood (ML). Một cách chung chung giá trị của AIC càng nhỏ thì mô hình càng tốt. AIC được tính bằng công thức sau: \(AIC = −2ln(L) + 2k\)
Với L là giá trị cực đại của hàm hợp lý (likelihood function) và klà số tham số của mô hình.
AIC(mhlogit1)
## [1] 1549.735
AIC(mhprobit1)
## [1] 1549.76
AIC(mhcloglog1)
## [1] 1549.699
Từ chỉ số AIC của 3 mô hình trên có thể thấy AIC ở các mô hình khá xấp xỉ nhau nhưng ở mô hình cloglog lại có AIC thấp nhất (1547,885). Vậy đối với tiêu chí đánh giá AIC thì mô hình cloglog (mhcloglog1) là phù hợp nhất để xem xét tác động của các yếu tố giới tính & số người phụ thuộc tới chi phí y tế.
Deviance cũng là một tiêu chí rất phổ biến được sử dụng để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Hợp lý cực đại (ML). Một cách tổng quá, cũng giống như chỉ tiêu AIC, giá trị của Deviance càng nhỏ thì mô hình càng tốt.
deviance(mhlogit1)
## [1] 1541.735
deviance(mhprobit1)
## [1] 1541.76
deviance(mhcloglog1)
## [1] 1541.699
Từ chỉ số Deviance của 3 mô hình trên có thể thấy Deviance ở các mô hình khá xấp xỉ nhau nhưng ở mô hình cloglog 1 lại có Deviance thấp nhất (1539,885). Vậy đối với tiêu chí đánh giá Deviance thì mô hình cloglog (mhcloglog1) là phù hợp nhất để xem xét tác động của các yếu tố giới tính (sex) & số người phụ thuộc (deviance) tới chi phí y tế (charges).
Là chỉ tiêu dùng để đánh giá mô hình hồi quy logistic, Brier Score được tính như sau: \(B = 1/n * ∑i=1n(pi−oi)\)
Trong đó: pi,oi lần lượt là giá trị xác suất quan sát được, và giá trị xác suất tính ra từ mô hình.
Giá trị của Brier Score càng nhỏ nghĩa là chênh lệch giữa xác suất thực tế và xác suất tính từ mô hình càng nhỏ, nghĩa là mô hình càng tốt.
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.2.3
##
## Attaching package: 'DescTools'
## The following object is masked from 'package:data.table':
##
## %like%
BrierScore(mhlogit1)
## [1] 0.1941048
BrierScore(mhprobit1)
## [1] 0.194109
BrierScore(mhcloglog1)
## [1] 0.1940988
Đối với tiêu chí đánh giá BrierScore thì mô hình hồi quy cloglog 1 là phù hợp nhất vì cho ra kết quả nhỏ nhất (0,19379) tức chênh lệch xác suất thực tế và xác suất tính từ mô hình cloglog là bé hơn so với 2 mô hình hồi quy logit và probit phía trên.
Thông qua các tiêu chí đánh giá mô hình AIC, Deviance, BrierScore thì mô hình phù hợp nhất để xem xét tác động của các yếu tố giới tính (sex) & số người phụ thuộc (deviance) tới chi phí y tế (charges) là mô hình hồi quy cloglog.