library(AER)
library(DT)
library(dplyr)
library(DescTools)
library(epitools)
library(scales)
library(ggplot2)

data("NMES1988")
t <- NMES1988

Thống kê mô tả các cặp biến

Phân tích biến insurance (sở hữu bảo hiểm tư nhân) và số lần nhập viện (hospital)

Mục đích: Dùng biến hospital và insurance để nghiên cứu sự tương tác hoặc mối quan hệ giữa việc sử dụng dịch vụ y tế (đo bằng số lần nhập viện) và tình trạng bảo hiểm y tế của người dân vào năm 1988.

Phân tích: Có thể phân tích xem những người có bảo hiểm có xu hướng sử dụng dịch vụ y tế (nhập viện) như thế nào so với những người không có bảo hiểm.

Bảng tần số

# Bảng tần số của hospital và insurance:
t$hospital1 <- cut(t$hospital, breaks = c(-0.5,2.5,9), labels = c("it","nhieu"))
table(t$hospital1, t$insurance)
##        
##           no  yes
##   it     964 3352
##   nhieu   21   69
# Tỉ lệ phần trăm của bảng tần số:
round((table(t$hospital1,t$insurance)/sum(table(t$hospital,t$insurance)))*100, 2)
##        
##            no   yes
##   it    21.88 76.08
##   nhieu  0.48  1.57
# Bảng tần số với tổng cộng:
addmargins(table(t$hospital1,t$insurance))
##        
##           no  yes  Sum
##   it     964 3352 4316
##   nhieu   21   69   90
##   Sum    985 3421 4406
# Trực quan hóa dữ liệu 
t %>% ggplot(aes(x = hospital1, y = after_stat(count), fill = insurance)) +
  geom_bar(position = "dodge", color = "black") +
  geom_text(aes(label = after_stat(count)), stat = 'count', color = 'black', vjust = -0.25, position = position_dodge(width = 0.9)) +
  theme_classic() +
  labs(x = "Tần suất nhập viện",
       y = "Số lượng",
       title = "Tần suất nhập viện với bảo hiểm Medicaid") +
  scale_fill_manual(values = c("no" = "lightblue", "yes" = "lightgreen")) 

Nhận xét:

Nhận xét về sự phân tích mối quan hệ giữa biến sở hữu bảo hiểm tư nhân (insurance) và số lần nhập viện (hospital) Phân bố số lần nhập viện theo tình trạng bảo hiểm:

Nhóm ít lần nhập viện (“it”):

  • Có 964 người không có bảo hiểm y tế tư nhân, chiếm 21.88% tổng số người trong tập dữ liệu.

  • Có 3352 người có bảo hiểm y tế tư nhân, chiếm 76.08% tổng số người trong tập dữ liệu.

Nhóm nhiều lần nhập viện (“nhieu”):

  • Có 21 người không có bảo hiểm y tế tư nhân, chiếm 0.48% tổng số người trong tập dữ liệu.
  • Có 69 người có bảo hiểm y tế tư nhân, chiếm 1.57% tổng số người trong tập dữ liệu.

Tổng cộng có 985 người không có bảo hiểm y tế tư nhân, chiếm 22.35% tổng số người trong tập dữ liệu.

Tổng cộng có 3421 người có bảo hiểm y tế tư nhân, chiếm 77.65% tổng số người trong tập dữ liệu.

\(\to\) Kết luận:

Bảo hiểm y tế tư nhân và số lần nhập viện:

Tỷ lệ người có bảo hiểm y tế tư nhân nhập viện nhiều lần (nhóm “nhieu”) là 69 người, trong khi tỷ lệ người không có bảo hiểm tư nhân nhập viện nhiều lần là 21 người.

Điều này cho thấy rằng những người có bảo hiểm y tế tư nhân có xu hướng sử dụng dịch vụ y tế nhiều hơn so với những người không có bảo hiểm.

Sự chênh lệch rõ ràng:

Số lượng người có bảo hiểm y tế tư nhân nhiều hơn hẳn so với số người không có bảo hiểm, chiếm gần 78% tổng số mẫu.

Chênh lệch này có thể phản ánh một phần sự phổ biến của bảo hiểm y tế tư nhân vào năm 1988, hoặc có thể liên quan đến các yếu tố kinh tế-xã hội khác chưa được phân tích ở đây.

Relative Risk

# Tính chỉ số liên quan đến rủi ro (Relative Risk và Risk Ratio)

th2 <- table(t$hospital1,t$insurance)
RelRisk(th2)
## [1] 0.9572355
riskratio(th2, rev = 'b')
## $data
##        
##          yes  no Total
##   nhieu   69  21    90
##   it    3352 964  4316
##   Total 3421 985  4406
## 
## $measure
##        risk ratio with 95% C.I.
##          estimate    lower    upper
##   nhieu 1.0000000       NA       NA
##   it    0.9572355 0.655533 1.397794
## 
## $p.value
##        two-sided
##         midp.exact fisher.exact chi.square
##   nhieu         NA           NA         NA
##   it     0.8073139    0.7989323  0.8220732
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
epitab(th2, method = 'riskratio',rev = 'b')
## $tab
##        
##          yes        p0  no        p1 riskratio    lower    upper   p.value
##   nhieu   69 0.7666667  21 0.2333333 1.0000000       NA       NA        NA
##   it    3352 0.7766450 964 0.2233550 0.9572355 0.655533 1.397794 0.7989323
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Nhận xét:

Risk Ratio (RR):

RR gần với 1 (0.9572355), cho thấy xác suát nhập viện nhiều lần ở nhóm có BHTN gần như tương đương với nhóm không có BHTN.

RR < 1 ngụ ý rằng nhóm có BHTN có xu hướng nhập viện nhiều lần thấp hơn một chút so với nhóm không có BHTN, nhưng sự khác biệt rất nhỏ.

Khoảng tin cậy 95% [0.879832, 1.107563] bao gồm 1, điều này cho thấy sự khác biệt không có ý nghĩa thống kê.

P-value:

P-value = 0.7989323 >> 0.05, điều này có nghĩa là không có bằng chứng thống kê đủ mạnh để kết luận rằng có sự khác biệt đáng kể giữa hai nhóm.

Kết luận:

  • Không có sự khác biệt đáng kể về tỷ lệ nhập viện nhiều lần giữa nhóm có BHTN và nhóm không có BHTN.

  • Việc có BHTN không làm tăng hoặc giảm đáng kể khả năng nhập viện nhiều lần trong mẫu nghiên cứu này.

  • Kết quả này gợi ý rằng các yếu tố khác (như tình trạng sức khỏe, tuổi tác, v.v.) có thể quan trọng hơn trong việc quyết định tần suất nhập viện, so với việc có hay không có BHTN.

Tỷ lệ chênh - Oddratio

OddsRatio(th2)
## [1] 0.9449369
oddsratio(th2)
## $data
##        
##          no  yes Total
##   it    964 3352  4316
##   nhieu  21   69    90
##   Total 985 3421  4406
## 
## $measure
##        odds ratio with 95% C.I.
##          estimate     lower    upper
##   it    1.0000000        NA       NA
##   nhieu 0.9399099 0.5835463 1.579581
## 
## $p.value
##        two-sided
##         midp.exact fisher.exact chi.square
##   it            NA           NA         NA
##   nhieu  0.8073139    0.7989323  0.8220732
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
epitab(th2, method = 'oddsratio')
## $tab
##        
##          no        p0  yes         p1 oddsratio     lower   upper   p.value
##   it    964 0.9786802 3352 0.97983046 1.0000000        NA      NA        NA
##   nhieu  21 0.0213198   69 0.02016954 0.9449369 0.5767605 1.54814 0.7989323
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"
epitab(th2, method = 'oddsratio', rev = 'c' )
## $tab
##        
##          yes         p0  no        p1 oddsratio     lower    upper   p.value
##   it    3352 0.97983046 964 0.9786802  1.000000        NA       NA        NA
##   nhieu   69 0.02016954  21 0.0213198  1.058272 0.6459366 1.733822 0.7989323
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Nhận xét

Odds Ratio

Kết quả Odds Ratio của nhóm nhiều lần nhập viện so với nhóm ít lần nhập viện là 0.9449369 điều này có nghĩa là người sở hữu bảo hiểm với số lần nhập viện nhiều chỉ bằng 0.9449369 so với odd người có sở hữu bảo hiểm nhưng có số lần nhập viện ít.

Tin cậy:

Chỉ số OR cho nhóm nhiều lần nhập viện là 0.9449369, với khoảng tin cậy 95% từ 0.5767605 đến 1.54814. Điều này có nghĩa là khả năng nhập viện nhiều lần giữa những người có và không có bảo hiểm tư nhân không khác biệt lớn.

Khoảng tin cậy 95% của OR bao gồm giá trị 1, cho thấy không có sự khác biệt thống kê có ý nghĩa về khả năng nhập viện nhiều lần giữa hai nhóm.

P-value:

P-value lớn hơn 0.05 cho thấy không có sự khác biệt thống kê có ý nghĩa về khả năng nhập viện nhiều lần giữa nhóm có và không có bảo hiểm tư nhân.

Phân tích biến insurance (sở hữu bảo hiểm tư nhân) và biến chronic (số bệnh mãn tính mà người được khảo sát mắc phải)

Bảng tần số

t$chronic1 <- cut(t$chronic, breaks = c(-0.5,1.5,9), labels = c("1benh","nhieubenh"))

table(t$chronic1)
## 
##     1benh nhieubenh 
##      2523      1883
round((table(t$chronic1,t$insurance)/sum(table(t$chronic1,t$insurance)))*100, 2)
##            
##                no   yes
##   1benh     12.32 44.94
##   nhieubenh 10.03 32.71
# Trực quan hóa dữ liệu

t %>% ggplot(aes(x = chronic1, y = after_stat(count), fill = insurance)) +
  geom_bar(position = "dodge", color = "black") +
  geom_text(aes(label = after_stat(count)), stat = 'count', color = 'black', vjust = -0.25, position = position_dodge(width = 0.9)) +
  theme_classic() +
  labs(x = "Số bệnh mãn tính",
       y = "Số lượng",
       title = "Số bệnh mãn tính với bảo hiểm Medicaid") +
  scale_fill_manual(values = c("no" = "lightblue", "yes" = "lightgreen")) 

Nhận xét:

Nhóm không mắc bệnh mãn tính:

Có bảo hiểm: 800 người (78.0% của nhóm này) Không có bảo hiểm: 225 người (22.0% của nhóm này)

Nhóm mắc bệnh mãn tính:

Có bảo hiểm: 2621 người (77.5% của nhóm này) Không có bảo hiểm: 760 người (22.5% của nhóm này)

Phần lớn người dân (76.7%) mắc ít nhất một bệnh mãn tính. Tỷ lệ người có bảo hiểm tư nhân cao hơn đáng kể so với người không có bảo hiểm (77.6% so với 22.4%). Tỷ lệ người có bảo hiểm trong nhóm không mắc bệnh mãn tính (78.0%) hơi cao hơn một chút so với nhóm mắc bệnh mãn tính (77.5%), nhưng sự khác biệt không đáng kể.

Nhóm có bảo hiểm y tế tư nhân chiếm tỷ lệ cao hơn đáng kể so với nhóm không có bảo hiểm trong cả hai nhóm 1benh và nhieubenh.

Đặc biệt, tỷ lệ người có bảo hiểm y tế tư nhân trong nhóm 1benh cao gấp khoảng 3.65 lần so với nhóm không có bảo hiểm (44.94% so với 12.32%).

Kết quả này gợi ý rằng những người có bảo hiểm y tế tư nhân có xu hướng có nhiều bệnh mãn tính hơn so với những người không có bảo hiểm. Điều này có thể do những người có bảo hiểm dễ dàng tiếp cận các dịch vụ y tế hơn và do đó có thể phát hiện nhiều bệnh hơn.

Relative Risk

th3 <- table(t$chronic1,t$insurance)
RelRisk(th3)
## [1] 0.9168761
riskratio(th3, rev = 'b')
## $data
##            
##              yes  no Total
##   nhieubenh 1441 442  1883
##   1benh     1980 543  2523
##   Total     3421 985  4406
## 
## $measure
##            risk ratio with 95% C.I.
##              estimate     lower    upper
##   nhieubenh 1.0000000        NA       NA
##   1benh     0.9168761 0.8209854 1.023967
## 
## $p.value
##            two-sided
##             midp.exact fisher.exact chi.square
##   nhieubenh         NA           NA         NA
##   1benh      0.1246373    0.1249618  0.1240892
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
epitab(th3, method = 'riskratio',rev = 'c')
## $tab
##            
##              yes        p0  no        p1 riskratio     lower    upper   p.value
##   1benh     1980 0.7847800 543 0.2152200   1.00000        NA       NA        NA
##   nhieubenh 1441 0.7652682 442 0.2347318   1.09066 0.9765943 1.218048 0.1249618
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Nhận xét:

Nguy cơ tương đối cho những người có một bệnh mãn tính so với những người có nhiều bệnh mãn tính là 0.9168761.

Kết quả bao gồm tỷ lệ nguy cơ với khoảng tin cậy 95%:

  • Điều này cho thấy rằng những người có một bệnh mãn tính có khả năng có bảo hiểm bằng 0.9168761 lần so với những người có nhiều bệnh mãn tính.

  • Khoảng tin cậy từ 0.8209854 đến 1.023967 cho thấy kết quả không có ý nghĩa thống kê (vì nó bao gồm giá trị 1).

Giá trị p trên 0.05, cho thấy không có sự khác biệt có ý nghĩa thống kê trong tình trạng bảo hiểm giữa những người có một bệnh mãn tính và những người có nhiều bệnh mãn tính.

Tỷ lệ chênh - Oddratio

OddsRatio(th3)
## [1] 0.8940799
oddsratio(th3)
## $data
##            
##              no  yes Total
##   1benh     543 1980  2523
##   nhieubenh 442 1441  1883
##   Total     985 3421  4406
## 
## $measure
##            odds ratio with 95% C.I.
##              estimate     lower    upper
##   1benh     1.0000000        NA       NA
##   nhieubenh 0.8940687 0.7752368 1.031464
## 
## $p.value
##            two-sided
##             midp.exact fisher.exact chi.square
##   1benh             NA           NA         NA
##   nhieubenh  0.1246373    0.1249618  0.1240892
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"

Kết quả Odd Ratio của những người không có bảo hiểm medicaid so với người không có bảo hiểm medicaid khoảng 0.8940799. Điều này có nghĩa là odd của những người không sở hữu bảo hiểm tư nhân và không có bảo hiểm medicaid thấp hơn 0.8940799 lần so với odd người sở hữu bảo hiểm Medicaid.

epitab(th3, method = 'oddsratio')
## $tab
##            
##              no       p0  yes        p1 oddsratio     lower    upper   p.value
##   1benh     543 0.551269 1980 0.5787781 1.0000000        NA       NA        NA
##   nhieubenh 442 0.448731 1441 0.4212219 0.8940799 0.7751575 1.031247 0.1249618
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"
epitab(th3, method = 'oddsratio', rev = 'c' )
## $tab
##            
##              yes        p0  no       p1 oddsratio     lower   upper   p.value
##   1benh     1980 0.5787781 543 0.551269  1.000000        NA      NA        NA
##   nhieubenh 1441 0.4212219 442 0.448731  1.118468 0.9696997 1.29006 0.1249618
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Nhận xét:

Kết quả Odd Ratio của những người ít bệnh mãn tính (0-2 bệnh mãn tính trong người) có bảo hiểm medicaid so với người không có bảo hiểm medicaid khoảng 1.118468 điều này có nghĩa là odd của những người sở hữu bảo hiểm tư nhân,không có bảo hiểm medicaid cao hơn 1.118468 lần so với odd người sở hữu bảo hiểm Medicaid.

Giá trị p là 0.1249618, lớn hơn 0.05 cho thấy không có sự khác biệt giữa odd có bảo hiểm medicaid và không có bảo hiểm medicaid trong trường hợp có hay không có mắc bệnh mãn tính