library(DescTools)
## Warning: package 'DescTools' was built under R version 4.2.3
library(epitools)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
library(pscl)
## Warning: package 'pscl' was built under R version 4.2.3
## Classes and Methods for R developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University
## Simon Jackman
## hurdle and zeroinfl functions by Achim Zeileis
library(mdscore)
## Warning: package 'mdscore' was built under R version 4.2.3
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 4.2.3
library(caret)
## Warning: package 'caret' was built under R version 4.2.3
## Loading required package: lattice
## Warning: package 'lattice' was built under R version 4.2.3
## 
## Attaching package: 'caret'
## The following objects are masked from 'package:DescTools':
## 
##     MAE, RMSE
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.2.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.2.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
setwd("C:/Users/HP/Documents/PTDLĐT/")
data <- read_excel("data.xlsx")
age <- cut(data$age,2, labels = c('thanhnien','trungnien'))
c <- data.frame(age, data$gender, data$height, data$weight, data$weight, data$aphi, data$aplo, data$cholesterol, data$gluc, data$smoke, data$alco, data$active, data$cardio)

1 Bài về nhà tuần 6 (câu 5)

Câu 5: Chạy mô hình hồi quy của các biến định tính trong câu số 2, thực hiện các bài toán liên quan.

Ước lượng hàm hồi quy có dữ liệu nhị phân:

- Biến phụ thuộc: trình trạng mắc bệnh tim (cardio) nhận 2 giá trị: Y / N

- Biến độc lập: có 7 biến định tính

  • Tuổi (age) nhận 2 giá trị: thanh niên / trung niên

  • Giới tính (gender) nhận 2 giá trị: F / M

  • Trình trạng cholesterol (cholesterol) nhận 2 giá trị: Bình thường / nguy cơ cao

  • Tình trạng glucozo (gluc) nhận 2 giá trị: Bình thường / nguy cơ cao

  • Tình trạng sử dụng thuốc lá (smoke) nhận 2 giá trị: Y / N

  • Tình trạng sử dụng rượu bia (alco) nhận 2 giá trị: Y / N

  • Tình trạng vận động (active) nhận 2 giá trị: Y / N

1.1 Các mô hình logit

- Mô hình 1

Mô hình hồi quy logistic với link function = “logit” có dạng tổng quát như sau:

\[logit(π)=log(\frac{π}{1−π})=β_0+β_1X_1+β_2X_2+⋯+β_kX_k\]

mh1 <- glm(data = data, formula = factor(cardio) ~ c$age + gender + cholesterol + gluc + smoke+ alco + active, family = binomial(link = "logit"))
levels(factor(data$cardio))
## [1] "N" "Y"
summary(mh1)
## 
## Call:
## glm(formula = factor(cardio) ~ c$age + gender + cholesterol + 
##     gluc + smoke + alco + active, family = binomial(link = "logit"), 
##     data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.9042  -0.7768  -0.6097   0.7907   1.9377  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -1.54147    0.20688  -7.451 9.27e-14 ***
## c$agetrungnien  0.21008    0.14868   1.413   0.1577    
## genderM        -0.06195    0.15394  -0.402   0.6874    
## cholesterolNCC  2.20625    0.14873  14.833  < 2e-16 ***
## glucNCC        -0.03226    0.14717  -0.219   0.8265    
## smokeY         -0.10778    0.16847  -0.640   0.5223    
## alcoY           0.41752    0.17442   2.394   0.0167 *  
## activeY         0.34242    0.15907   2.153   0.0313 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1384.0  on 999  degrees of freedom
## Residual deviance: 1114.9  on 992  degrees of freedom
## AIC: 1130.9
## 
## Number of Fisher Scoring iterations: 4

Kết quả hồi quy cho thấy mô hình 1 như sau:

MH1: \[logit(π) = -1.54147 + 0.21008age - 0.06195gender + 2.20625cholesterol - 0.03226gluc - 0.10778smoke + 0.41752alco + 0.34242active\]

với π = P(cardio = “N” hoặc “Y”)

-Kiểm định sự phù hợp của mô hình 1

Cặp giả thuyết - đối thuyết:

\(H_0\): Mô hình không phù hợp với dữ liệu điều tra

\(H_1\): Mô hình phù hợp với dữ liệu điều tra

# Kiểm định sự phù hợp của mô hình
lr_test1 <- anova(mh1, test = "Chisq")
p_value1 <- lr_test1$Pr[2]
p_value1
## [1] 0.005026256

Kết quả kiểm định cho thấy P_value < 0.05 nên ta bác bỏ giả thuyết \(H_0\), cho thấy mô hình 1 là mô hình phù hợp với mức ý nghĩa 5%. Nhưng mô hình này có biến gluc và gender không thực sự có ảnh hưởng đến biến phụ thuộc (cardio) vì có Prob(Z) khá lớn. Vì vậy ta loại biến gluc và gender, chạy hồi quy logit theo các biến age, cholesterol, smoke, alco, active:

- Mô hình 2

mh2 <- glm(data = data, formula = factor(cardio) ~ c$age + cholesterol + smoke+ alco + active, family = binomial(link = "logit"))
levels(factor(data$cardio))
## [1] "N" "Y"
summary(mh2)
## 
## Call:
## glm(formula = factor(cardio) ~ c$age + cholesterol + smoke + 
##     alco + active, family = binomial(link = "logit"), data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.8881  -0.7830  -0.6134   0.8015   1.9292  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -1.5751     0.1897  -8.304   <2e-16 ***
## c$agetrungnien   0.2088     0.1486   1.405   0.1601    
## cholesterolNCC   2.2047     0.1486  14.836   <2e-16 ***
## smokeY          -0.1169     0.1673  -0.699   0.4848    
## alcoY            0.4187     0.1743   2.402   0.0163 *  
## activeY          0.3411     0.1589   2.146   0.0319 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1384.0  on 999  degrees of freedom
## Residual deviance: 1115.1  on 994  degrees of freedom
## AIC: 1127.1
## 
## Number of Fisher Scoring iterations: 4

Kết quả hồi quy thể hiện mô hình 2 như sau:

MH2: \(logit(π) = log(\frac{π}{1−π}) = -1.5751 + 0.2088age + 2.2047cholesterol - 0.1169smoke + 0.4187alco + 0.3411active\)

với π = P(cardio = “N” hoặc “Y”)

- Kiểm định sự phù hợp của mô hình 2

Cặp giả thuyết - đối thuyết:

\(H_0\): Mô hình không phù hợp với dữ liệu điều tra

\(H_1\): Mô hình phù hợp với dữ liệu điều tra

# Kiểm định sự phù hợp của mô hình
lr_test2 <- anova(mh2, test = "Chisq")
p_value2 <- lr_test2$Pr[2]
p_value2
## [1] 0.005026256

Kết quả kiểm định cho thấy P_value < 0.05 nên ta bác bỏ giả thuyết \(H_0\), cho thấy mô hình 2 là mô hình phù hợp với mức ý nghĩa 5%. Nhưng mô hình này có biến age và smoke không thực sự tác động đến biến phụ thuộc (cardio) vì có Prob(age) = 0.1601 và Prob(smoke) = 0.4848 > 0.1 > 0.05. Nên ta loại tiếp biến age và smoke, chạy mô hình hồi quy logit theo các biến cholesterol, smoke, alco, active:

- Mô hình 3:

mh3 <- glm(data = data, formula = factor(cardio) ~ cholesterol + alco + active, family = binomial(link = "logit"))
levels(factor(data$cardio))
## [1] "N" "Y"
summary(mh3)
## 
## Call:
## glm(formula = factor(cardio) ~ cholesterol + alco + active, family = binomial(link = "logit"), 
##     data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.8217  -0.7449  -0.6358   0.7657   1.8429  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -1.4960     0.1660  -9.010   <2e-16 ***
## cholesterolNCC   2.2172     0.1480  14.982   <2e-16 ***
## alcoY            0.3712     0.1674   2.217   0.0266 *  
## activeY          0.3559     0.1584   2.247   0.0246 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1384.0  on 999  degrees of freedom
## Residual deviance: 1117.7  on 996  degrees of freedom
## AIC: 1125.7
## 
## Number of Fisher Scoring iterations: 4

Kết quả hồi quy thể hiện mô hình 3 như sau:

MH3: \(logit(π) = log(\frac{π}{1−π}) = -1.4960 + 2.2172cholesterol + 0.3712alco + 0.3559active\)

với π = P(cardio = “N” hoặc “Y”)

- Kiểm định sự phù hợp của mô hình 3

Cặp giả thuyết - đối thuyết:

\(H_0\): Mô hình không phù hợp với dữ liệu điều tra

\(H_1\): Mô hình phù hợp với dữ liệu điều tra

# Kiểm định sự phù hợp của mô hình
lr_test3 <- anova(mh3, test = "Chisq")
p_value3 <- lr_test3$Pr[2]
p_value3
## [1] 5.682136e-58

Kết quả kiểm định cho thấy P_value < 0.05 nên ta bác bỏ giả thuyết \(H_0\), cho thấy mô hình 3 là mô hình phù hợp với mức ý nghĩa 5%.

1.2 Các chỉ tiêu đánh giá các mô hình hồi quy logit

- Kiểm định AIC, Brier Score và Pseudo-R2

Sau khi kiểm định sự phù hợp của các mô hình logit: MH1, MH2, MH3 đều phù hợp với dữ liệu, ta sẽ đưa ra lựa chọn mô hình logit phù hợp nhất.

# Chỉ số AIC - Akaike Information Criterion
aic1 <- AIC(mh1)
aic2 <- AIC(mh2)
aic3 <- AIC(mh3)
AIC <-cbind(aic1,aic2,aic3)
AIC
##          aic1     aic2     aic3
## [1,] 1130.931 1127.145 1125.662
# Chỉ số Brier Score
bs1 <- BrierScore(mh1)
bs2 <- BrierScore(mh2)
bs3 <- BrierScore(mh3)
BrierScore <- cbind(bs1,bs2,bs3)
BrierScore
##            bs1       bs2       bs3
## [1,] 0.1853618 0.1853904 0.1859024
# Chỉ số Pseudo - R2
pr1 <- PseudoR2(mh1)
pr2 <- PseudoR2(mh2)
pr3 <- PseudoR2(mh3)
pR2 <- cbind(pr1,pr2,pr3)
pR2
##                pr1       pr2       pr3
## McFadden 0.1944078 0.1942531 0.1924348

Thông qua kết quả các chỉ số AIC, Brier Score và Pseudo cho thấy giá trị của chỉ số AIC của mô hình 3 là nhỏ nhất, nghĩa là mô hình 3 là mô hình logit tốt nhất trong 3 mô hình. Tuy nhiên, chỉ số Brier Score lại thể hiện rằng mô hình 1 có giá trị nhỏ nhất, tức là mô hình 1 là mô hình logit tốt nhất và chỉ số Pseudo cũng cho thấy mô hình 1 có giá trị lớn nhất nên ta chọn mô hình 1 là mô hình logit tốt nhất .

Do MH2 có chỉ số AIC và Brier Score cao nhất nên ta loại bỏ mô hình 2. Xét MH1 và MH3 qua ma trận nhầm lẫn, kiếm định LRT để đưa ra mô hình phù hợp với dữ liệu:

- Ma trận nhầm lẫn

confusionMatrix(table(predict(mh1, type="response") >= 0.5, mh1$data$cardio == 'Y'))
## Confusion Matrix and Statistics
## 
##        
##         FALSE TRUE
##   FALSE   401  128
##   TRUE    123  348
##                                           
##                Accuracy : 0.749           
##                  95% CI : (0.7209, 0.7756)
##     No Information Rate : 0.524           
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.4966          
##                                           
##  Mcnemar's Test P-Value : 0.8007          
##                                           
##             Sensitivity : 0.7653          
##             Specificity : 0.7311          
##          Pos Pred Value : 0.7580          
##          Neg Pred Value : 0.7389          
##              Prevalence : 0.5240          
##          Detection Rate : 0.4010          
##    Detection Prevalence : 0.5290          
##       Balanced Accuracy : 0.7482          
##                                           
##        'Positive' Class : FALSE           
## 

Từ bảng kết quả của mô hình 1, độ đặc hiệu là 73.11%; độ nhạy là 76.53%; độ chính xác toàn thể là 74.9%.

confusionMatrix(table(predict(mh3, type="response") >= 0.5, mh3$data$cardio == 'Y'))
## Confusion Matrix and Statistics
## 
##        
##         FALSE TRUE
##   FALSE   401  128
##   TRUE    123  348
##                                           
##                Accuracy : 0.749           
##                  95% CI : (0.7209, 0.7756)
##     No Information Rate : 0.524           
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.4966          
##                                           
##  Mcnemar's Test P-Value : 0.8007          
##                                           
##             Sensitivity : 0.7653          
##             Specificity : 0.7311          
##          Pos Pred Value : 0.7580          
##          Neg Pred Value : 0.7389          
##              Prevalence : 0.5240          
##          Detection Rate : 0.4010          
##    Detection Prevalence : 0.5290          
##       Balanced Accuracy : 0.7482          
##                                           
##        'Positive' Class : FALSE           
## 

Từ bảng kết quả của mô hình 3, độ đặc hiệu là 73.11%; độ nhạy là 76.53%; độ chính xác toàn thể là 74.9%.

Thông qua chạy ma trận nhầm lẫn của hai mô hình này cho thấy MH1 và MH3 đều có độ chính xác toàn thể , độ đặc hiệu và độ nhạy bằng nhau. Nên ta sử dụng kiểm định LRT để lựa chọn mô hình tối ưu, phù hợp nhất.

- Kiểm định LRT (Likelihood ratio test)

Với giả thuyết: \(H_0\): MH3 tối ưu hơn mô hình MH1

lrtest(mh3, mh1)

Kết quả kiểm định cho thấy P_value > 0.05 nên ta không có cơ sở để bác bỏ \(H_0\), tức là MH3 là mô hình phù hợp nhất.

1.3 Mô hình probit

Mô hình hồi quy probit với link function = “probit” có dạng tổng quát như sau:

\[probit(π)=\Phi (1-π))=β_0+β_1X_1+β_2X_2+⋯+β_kX_k\]

mh4 <- glm(data = data, formula = factor(cardio) ~ c$age + gender + cholesterol + gluc + smoke+ alco + active, family = binomial(link = "probit"))
levels(factor(data$cardio))
## [1] "N" "Y"
summary(mh4)
## 
## Call:
## glm(formula = factor(cardio) ~ c$age + gender + cholesterol + 
##     gluc + smoke + alco + active, family = binomial(link = "probit"), 
##     data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.8990  -0.7787  -0.6096   0.7946   1.9347  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -0.92750    0.12024  -7.714 1.22e-14 ***
## c$agetrungnien  0.12640    0.08772   1.441   0.1496    
## genderM        -0.03688    0.09075  -0.406   0.6845    
## cholesterolNCC  1.34805    0.08731  15.440  < 2e-16 ***
## glucNCC        -0.01998    0.08672  -0.230   0.8178    
## smokeY         -0.05551    0.09938  -0.559   0.5764    
## alcoY           0.23416    0.10281   2.278   0.0227 *  
## activeY         0.19385    0.09349   2.074   0.0381 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1384.0  on 999  degrees of freedom
## Residual deviance: 1115.3  on 992  degrees of freedom
## AIC: 1131.3
## 
## Number of Fisher Scoring iterations: 4

Vậy nên mô hình probit được xác định như sau:

\[probit(π)=\Phi (1-π))= - 0.92750 +1.34805cholesterol +0.23416alco + 0.19385active\]

với π = P(cardio = “N” hoặc “Y”)

1.4 Mô hình clogclog

Mô hình hồi quy cloglog với link function = “cloglog” có dạng tổng quát như sau:

\[cloglog(π)=log(-log(1-π))=β_0+β_1X_1+β_2X_2+⋯+β_kX_k\]

mh5 <- glm(data = data, formula = factor(cardio) ~ c$age + gender + cholesterol + gluc + smoke+ alco + active, family = binomial(link = "cloglog"))
levels(factor(data$cardio))
## [1] "N" "Y"
summary(mh5)
## 
## Call:
## glm(formula = factor(cardio) ~ c$age + gender + cholesterol + 
##     gluc + smoke + alco + active, family = binomial(link = "cloglog"), 
##     data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.9567  -0.7921  -0.6218   0.7538   1.9263  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -1.53827    0.15015 -10.245  < 2e-16 ***
## c$agetrungnien  0.12460    0.10024   1.243  0.21385    
## genderM        -0.04384    0.10239  -0.428  0.66849    
## cholesterolNCC  1.64024    0.10740  15.273  < 2e-16 ***
## glucNCC        -0.04031    0.09770  -0.413  0.67990    
## smokeY         -0.18942    0.11333  -1.671  0.09466 .  
## alcoY           0.08179    0.11671   0.701  0.48345    
## activeY         0.34105    0.10726   3.180  0.00147 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1384.0  on 999  degrees of freedom
## Residual deviance: 1108.9  on 992  degrees of freedom
## AIC: 1124.9
## 
## Number of Fisher Scoring iterations: 8

Vậy nên mô hình cloglog được xác định như sau:

\[cloglog(π)=log(-log(1-π))= -1.53827 + 1.64024cholesterol - 0.18942smoke + 0.34105active\]

với π = P(cardio = “N” hoặc “Y”)

1.5 Lựa chọn mô hình logit, probit, clolog

Để đánh giá các mô hình hồi quy logit, probit và cloglog, ta sử dụng các tiêu chí sau:

# Tiêu chí AIC - Akaike Information Criterion
aiclo <- AIC(mh3)
aicpro <- AIC(mh4)
aicclo <- AIC(mh5)
AIC <-cbind(aiclo,aicpro,aicclo)
AIC
##         aiclo   aicpro   aicclo
## [1,] 1125.662 1131.328 1124.949
# Tiêu chí Deviance
delo <- deviance(mh3)
depro <- deviance(mh4)
declo <- deviance(mh5)
deviance <- cbind(delo,depro,declo)
deviance
##          delo    depro    declo
## [1,] 1117.662 1115.328 1108.949
# Tiêu chí Brier Score
bslo <- BrierScore(mh3)
bspro <- BrierScore(mh4)
bsclo <- BrierScore(mh5)
BrierScore <- cbind(bslo,bspro,bsclo)
BrierScore
##           bslo     bspro     bsclo
## [1,] 0.1859024 0.1854803 0.1841596

Thông qua kết quả các tiêu chí AIC, deviance và Brier Score cho thấy giá trị của AIC, deviance và Brier Score của mô hình cloglog là nhỏ nhất, nghĩa là mô hình cloglog là mô hình tốt nhất trong 3 mô hình logit, probit, clogclog.

1.6 Chạy mô hình phù hợp nhất

summary(mh5)
## 
## Call:
## glm(formula = factor(cardio) ~ c$age + gender + cholesterol + 
##     gluc + smoke + alco + active, family = binomial(link = "cloglog"), 
##     data = data)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.9567  -0.7921  -0.6218   0.7538   1.9263  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -1.53827    0.15015 -10.245  < 2e-16 ***
## c$agetrungnien  0.12460    0.10024   1.243  0.21385    
## genderM        -0.04384    0.10239  -0.428  0.66849    
## cholesterolNCC  1.64024    0.10740  15.273  < 2e-16 ***
## glucNCC        -0.04031    0.09770  -0.413  0.67990    
## smokeY         -0.18942    0.11333  -1.671  0.09466 .  
## alcoY           0.08179    0.11671   0.701  0.48345    
## activeY         0.34105    0.10726   3.180  0.00147 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1384.0  on 999  degrees of freedom
## Residual deviance: 1108.9  on 992  degrees of freedom
## AIC: 1124.9
## 
## Number of Fisher Scoring iterations: 8

Mô hình cloglog được xác định như sau:

\[cloglog(π)=log(-log(1-π))= -1.53827 + 1.64024cholesterol - 0.18942smoke + 0.34105active\]

với π = P(cardio = “N” hoặc “Y”)

Đối với mô hình hồi quy cloglog của biến phụ thuộc tình trạng bệnh nhân mắc bệnh tim (carido) với các biến độ tuổi (age), giới tính (gender), trình trạng cholesterol (cholesterol), trình trạng glucozo (gluc), trình trạng sử dụng rượu bia (alco), trình trạng sử dụng thuốc lá (smoke) và trình trạng vận động (active).

Ta thấy rằng có 2 yếu tố có ý nghĩa thống kê ở mức ý nghĩa 5% là trình trạng cholesterol (cholesterol) và trình trạng vận động (active). Và có 1 yếu tố có ý nghĩa thống kê ở mức ý nghĩa 10% là tình trạng sử dụng hút thuốc lá (smoke).

  • Tình trạng cholesterol có ảnh hưởng đến tình trạng bệnh nhân mắc bệnh tim với hệ số mang dấu (+) cho thấy nguy cơ bệnh nhân mắc bệnh tim tăng khi trình trạng đường huyết (glucozo) của bệnh nhân đạt mức nguy cơ cao.

  • Tình trạng vận động có ảnh hưởng đến tình trạng bệnh nhân mắc bệnh tim với hệ số mang dấu (+), tức là nguy cơ mắc bệnh tim càng tăng khi bệnh nhân có vận động .

  • Tình trạng sử dụng thuốc lá có ảnh hưởng đến tình trạng bệnh nhân mắc bệnh tim với hệ số mang dấu (-),cho thấy nguy cơ bệnh nhân mắc bệnh tim càng tăng khi bệnh nhân không hút thuốc lá.

Ngoài ra, yếu tố giới tính (gender), trình trạng glucozo (gluc), tình trạng sử dụng rượu bia (alco), trình trạng sử dụng thuốc lá (smoke) không có ý nghĩa thống kê, tức là các yếu tố này không ảnh hưởng đáng kể đến nguy cơ mắc bệnh tim của bệnh nhân.

2 Bài về nhà tuần 5 (câu 4)

Câu 4: Phân tích thống kê mô tả của 2 biến phụ thuộc ở câu 2 với 5 biến còn lại trong câu 3, nhận xét về kết quả phân tích này.

2.1 Phân tích theo biến định tính

2.1.1 Phân tích bệnh nhân mắc bệnh tim theo giới tính

  • Bảng tần số
pt1 <- table(data$gender,data$cardio)
addmargins(pt1)
##      
##          N    Y  Sum
##   F    333  306  639
##   M    191  170  361
##   Sum  524  476 1000
ppt1 <- prop.table(pt1)
addmargins(ppt1)
##      
##           N     Y   Sum
##   F   0.333 0.306 0.639
##   M   0.191 0.170 0.361
##   Sum 0.524 0.476 1.000

Từ bảng tần suất thể hiện số bệnh nhân mắc bệnh tim theo giới tính, trong tổng số 1000 bệnh nhân đến khám tại bệnh viện thì có 639 bệnh nhân nữ và 361 bệnh nhân nam. Theo kết quả thống kê, ta thấy số bệnh nhân nữ bị bệnh tim là 306 người (chiếm 30,6% tổng số bệnh nhân) nhiều hơn số nam giới mắc bệnh tim là 170 người (chiếm 17%). Trong đó, có 333 bệnh nhân nữ không mắc bệnh tim và chiếm 33,3% trên tổng số bệnh nhân cũng cao hơn so với số bệnh nhân nam không mắc bệnh tim là 191 người (tương đương 19,1%).

  • Đồ thị
data |> ggplot(aes(x = gender, 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(. ~ cardio) +
 # theme_classic() +
  labs(x = 'Giới tính', y = 'Số người')

Dựa vào đồ thị phân loại bệnh nhân mắc bệnh tim theo giới tính, ta thấy có sự chênh lệch giữa nam và nữ trong đó bệnh nhân mắc bệnh tim là nữ cao gấp 1,8 lần bệnh nhân nam mắc bệnh tim. Đồng thời, cho thấy số người bệnh nhân nữ không mắc bệnh tim cũng cao gấp 1,743 lần so với số bệnh nhân nam không bị bệnh tim.

  • Rủi ro tương đối
RelRisk(pt1)
## [1] 0.9849569

Kết quả cho thấy nữ giới có khả năng không mắc bệnh tim cao gấp 0,985 lần so với nam giới.

epitab(pt1, method = 'riskratio')
## $tab
##    
##       N        p0   Y        p1 riskratio   lower    upper   p.value
##   F 333 0.5211268 306 0.4788732 1.0000000      NA       NA        NA
##   M 191 0.5290859 170 0.4709141 0.9833795 0.85833 1.126647 0.8432959
## 
## $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 bệnh nhân mắc bệnh tim theo giới tính là 1,1536 tức là tỉ lệ bệnh nhân mắc bệnh tim là nam gấp 0.983 lần so với tỉ lệ bệnh nhân mắc bệnh tim là nữ.

epitab(pt1, method = 'riskratio', rev = "c")
## $tab
##    
##       Y        p0   N        p1 riskratio     lower    upper   p.value
##   F 306 0.4788732 333 0.5211268  1.000000        NA       NA        NA
##   M 170 0.4709141 191 0.5290859  1.015273 0.8982576 1.147532 0.8432959
## 
## $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 bệnh nhân không mắc bệnh tim theo giới tính là 1.015 tức là tỷ lệ bệnh nhân không mắc bệnh tim là nam gấp 1.015 lần so với tỉ lệ bệnh nhân không mắc bệnh tim là nữ.

  • Tỷ lệ chênh lệch
OddsRatio(pt1)
## [1] 0.9685864

Kết quả cho thấy nữ có tỷ lệ không mắc bệnh cao gấp 0.9686 lần so với nam.

  • Tỷ lệ chênh (Odd ratio)
epitab(pt1, method = 'oddsratio')
## $tab
##    
##       N        p0   Y        p1 oddsratio    lower    upper   p.value
##   F 333 0.6354962 306 0.6428571 1.0000000       NA       NA        NA
##   M 191 0.3645038 170 0.3571429 0.9685864 0.747985 1.254249 0.8432959
## 
## $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.9686, tức là tỷ lệ bệnh nhân không mắc bệnh tim/ mắc bệnh tim là nam thấp hơn tỷ lệ bệnh nhân nữ không mắc bệnh tim/ mắc bệnh tim là 3,1414%.

2.1.2 Phân tích bệnh nhân mắc bệnh tim theo tình trạng sử dụng thuốc lá

pt2 <- table(data$smoke,data$cardio)
addmargins(pt2)
##      
##          N    Y  Sum
##   N    367  331  698
##   Y    157  145  302
##   Sum  524  476 1000
ppt2 <- prop.table(pt2)
addmargins(ppt2)
##      
##           N     Y   Sum
##   N   0.367 0.331 0.698
##   Y   0.157 0.145 0.302
##   Sum 0.524 0.476 1.000

Từ bảng tần suất thể hiện số bệnh nhân mắc bệnh tim theo tình trạng sử dụng thuốc lá, trong tổng số 1000 bệnh nhân đến khám tại bệnh viện thì có 698 bệnh nhân không sử dụng thuốc lá và 302 bệnh nhân sử dụng thuốc lá. Theo kết quả thống kê, ta thấy số bệnh nhân không hút thuốc lá mắc bệnh tim là 331 người (chiếm 33,1% tổng số bệnh nhân) nhiều hơn số người sử dụng thuốc lá mắc bệnh tim là 145 người (chiếm 14,5%). Trong đó, có 367 bệnh nhân không sử dụng thuốc lá không mắc bệnh tim và chiếm 36,7% trên tổng số bệnh nhân cũng cao hơn so với số bệnh nhân không mắc bệnh tim có hút thuốc lá là 157 người (tương đương 15,7%).

data |> ggplot(aes(x = smoke, 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(. ~ cardio) +
 # theme_classic() +
  labs(x = 'Trình trạng sử dụng thuốc lá', y = 'Số người')

Dựa vào đồ thị phân loại bệnh nhân mắc bệnh tim theo tình trạng sử dụng thuốc lá, ta thấy có sự khác biệt rõ ràng giữa người sử dụng thuốc lá và không sử dụng thuốc lá. Trong đó bệnh nhân mắc bệnh tim không sử dụng thuốc lá cao hơn bệnh nhân hút thuốc mắc bệnh tim gấp khoảng 2,283 lần. Đồng thời, cho thấy số người bệnh nhân không sử dụng thuốc lá không mắc bệnh tim cũng cao gấp 2,3376 lần so với số bệnh nhân hút thuốc không mắc bệnh tim.

  • Rủi ro tương đối
RelRisk(pt2)
## [1] 1.011388

Kết quả cho thấy bệnh nhân không sử dụng thuốc lá có khả năng không mắc bệnh tim cao gấp 1,0114 lần so với bệnh nhân có sử dụng thuốc lá.

epitab(pt2, method = 'riskratio')
## $tab
##    
##       N        p0   Y        p1 riskratio     lower    upper   p.value
##   N 367 0.5257880 331 0.4742120  1.000000        NA       NA        NA
##   Y 157 0.5198675 145 0.4801325  1.012485 0.8793514 1.165774 0.8903871
## 
## $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 bệnh nhân mắc bệnh tim theo trình trạng sử dụng thuốc lá là 1.012 tức là tỷ lệ bệnh nhân mắc bệnh tim có sử dụng thuốc lá gấp 1.012 lần so với tỷ lệ bệnh nhân mắc bệnh tim không sử dụng thuốc lá.

epitab(pt2, method = 'riskratio', rev = "c")
## $tab
##    
##       Y        p0   N        p1 riskratio     lower    upper   p.value
##   N 331 0.4742120 367 0.5257880 1.0000000        NA       NA        NA
##   Y 145 0.4801325 157 0.5198675 0.9887399 0.8688395 1.125187 0.8903871
## 
## $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 bệnh nhân không mắc bệnh tim theo tình trạng sử dụng thuốc lá là 0.9887 tức là tỷ lệ bệnh nhân không mắc bệnh tim có sử dụng thuốc lá gấp 0.9887 lần so với tỷ lệ bệnh nhân không mắc bệnh tim không có hút thuốc lá.

  • Tỷ lệ chênh lệch
OddsRatio(pt2)
## [1] 1.024015

Kết quả cho thấy bệnh nhân không sử dụng thuốc lá có tỷ lệ không mắc bệnh cao gấp 1.024 lần so với bệnh nhân có sử dụng thuốc lá.

epitab(pt2, method = 'oddsratio')
## $tab
##    
##       N        p0   Y        p1 oddsratio     lower    upper   p.value
##   N 367 0.7003817 331 0.6953782  1.000000        NA       NA        NA
##   Y 157 0.2996183 145 0.3046218  1.024015 0.7815191 1.341755 0.8903871
## 
## $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.024, tức là tỷ lệ bệnh nhân không mắc bệnh tim/ mắc bệnh tim là có sử dụng thuốc lá cao hơn tỷ lệ bệnh nhân không mắc bệnh tim/ mắc bệnh tim không hút thuốc lá là 2.402%.

2.1.3 Phân tích theo tình trạng sử dụng rượu bia của bệnh nhân mắc bệnh tim

pt3 <- table(data$alco,data$cardio)
addmargins(pt3)
##      
##          N    Y  Sum
##   N    395  337  732
##   Y    129  139  268
##   Sum  524  476 1000
ppt3 <- prop.table(pt3)
addmargins(ppt3)
##      
##           N     Y   Sum
##   N   0.395 0.337 0.732
##   Y   0.129 0.139 0.268
##   Sum 0.524 0.476 1.000

Từ bảng tần suất thể hiện số bệnh nhân mắc bệnh tim sử dụng rượu bia, trong tổng số 500 bệnh nhân đến khám tại bệnh viện thì có 732 bệnh nhân không sử dụng rượu bia và 268 bệnh nhân sử dụng rượu bia. Theo kết quả thống kê, ta thấy số bệnh nhân không uống rượu bia mắc bệnh tim là 337 người (chiếm 33,7% tổng số bệnh nhân) nhiều hơn số người sử dụng rượu bia mắc bệnh tim là 139 người (chiếm chỉ có 13,9%). Trong đó, có 395 bệnh nhân không sử dụng rượu bia không mắc bệnh tim và chiếm 39,5% trên tổng số bệnh nhân cũng cao hơn so với số bệnh nhân không mắc bệnh tim có uống rượu bia là 129 người (tương đương 12.9%).

data |> ggplot(aes(x = alco, 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(. ~ cardio) +
 # theme_classic() +
  labs(x = 'Trình trạng sử dụng rượu bia', y = 'Số người')

Dựa vào đồ thị thể hiện bệnh nhân mắc bệnh tim theo phân loại sử dụng rượu bia, ta thấy có sự khác biệt rõ ràng giữa người sử dụng rượu bia và không sử dụng rượu bia. Trong đó bệnh nhân mắc bệnh tim không sử dụng rượu bia cao hơn bệnh nhân hút thuốc mắc bệnh tim gấp 2.424 lần. Đồng thời, cho thấy số người bệnh nhân không sử dụng thuốc lá không mắc bệnh tim cũng cao gấp khoảng 3.062 lần so với số bệnh nhân uống rượu bia không mắc bệnh tim.

  • Rủi ro tương đối
RelRisk(pt3)
## [1] 1.121066

Kết quả cho thấy bệnh nhân không sử dụng rượu bia có khả năng không mắc bệnh tim cao gấp 1.121 lần so với bệnh nhân có sử dụng rượu bia.

epitab(pt3, method = 'riskratio')
## $tab
##    
##       N        p0   Y        p1 riskratio     lower    upper   p.value
##   N 395 0.5396175 337 0.4603825  1.000000        NA       NA        NA
##   Y 129 0.4813433 139 0.5186567  1.126578 0.9799126 1.295195 0.1157482
## 
## $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 bệnh nhân mắc bệnh tim theo trình trạng sử dụng rượu bia là 1.1266 tức là tỷ lệ bệnh nhân mắc bệnh tim có sử dụng rượu bia gấp 1.1265 lần so với tỷ lệ bệnh nhân mắc bệnh tim không sử dụng rượu bia.

epitab(pt3, method = 'riskratio', rev = "c")
## $tab
##    
##       Y        p0   N        p1 riskratio     lower    upper   p.value
##   N 337 0.4603825 395 0.5396175 1.0000000        NA       NA        NA
##   Y 139 0.5186567 129 0.4813433 0.8920083 0.7745864 1.027231 0.1157482
## 
## $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 bệnh nhân không mắc bệnh tim theo tình trạng sử dụng rượu bia là 0.892 tức là tỷ lệ bệnh nhân không mắc bệnh tim có sử dụng rượu bia gấp 0.892 lần so với tỷ lệ bệnh nhân không mắc bệnh tim không uống rượu bia.

  • Tỷ lệ chênh lệch
OddsRatio(pt3)
## [1] 1.262968

Kết quả cho thấy bệnh nhân không sử dụng rượu bia có tỷ lệ không mắc bệnh cao gấp 1.2629 lần so với bệnh nhân có sử dụng rượu bia.

epitab(pt3, method = 'oddsratio')
## $tab
##    
##       N        p0   Y        p1 oddsratio     lower    upper   p.value
##   N 395 0.7538168 337 0.7079832  1.000000        NA       NA        NA
##   Y 129 0.2461832 139 0.2920168  1.262968 0.9542932 1.671486 0.1157482
## 
## $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.2629, tức là tỷ lệ bệnh nhân không mắc bệnh tim/ mắc bệnh tim là có sử dụng rượu bia cao hơn tỷ lệ bệnh nhân không mắc bệnh tim/ mắc bệnh tim không sử dụng rượu bia là 26.29%.

2.1.4 Phân tích theo hoạt động thể chất của bệnh nhân mắc bệnh tim

pt4 <- table(data$active,data$cardio)
addmargins(pt4)
##      
##          N    Y  Sum
##   N    184  151  335
##   Y    340  325  665
##   Sum  524  476 1000
ppt4 <- prop.table(pt4)
addmargins(ppt4)
##      
##           N     Y   Sum
##   N   0.184 0.151 0.335
##   Y   0.340 0.325 0.665
##   Sum 0.524 0.476 1.000

Từ bảng tần suất thể hiện số bệnh nhân mắc bệnh tim có hoạt động thể chất, trong tổng số 1000 bệnh nhân đến khám tại bệnh viện thì có 335 bệnh nhân không vận động và 665 bệnh nhân có vận động. Theo kết quả thống kê, ta thấy số bệnh nhân không vận động mắc bệnh tim là 151 người (chiếm 15.1% tổng số bệnh nhân) ít hơn số người vận động mắc bệnh tim là 325 người (chiếm 32.5%). Trong đó, có 184 bệnh nhân không vận động không mắc bệnh tim và chiếm 18.4% trên tổng số bệnh nhân cũng ít hơn so với số bệnh nhân không mắc bệnh tim có vận động là 340 người (tương đương 34%).

data |> ggplot(aes(x = active, 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(. ~ cardio) +
 # theme_classic() +
  labs(x = 'Trình trạng hoạt động thể chất', y = 'Số người')

Dựa vào đồ thị phân loại bệnh nhân mắc bệnh tim theo tình trạng hoạt động tập thể chất, ta thấy có sự chêch lệch rõ ràng giữa người có vận động và không vận động. Trong đó bệnh nhân mắc bệnh tim vận động cao hơn bệnh nhân không vận động mắc bệnh tim gấp khoảng 2.15 lần. Đồng thời, cho thấy số người bệnh nhân có vận động không mắc bệnh tim cũng cao gấp 1.848 lần so với số bệnh nhân không vận động không mắc bệnh tim.

  • Rủi ro tương đối
RelRisk(pt4)
## [1] 1.074276

Kết quả cho thấy bệnh nhân không vận động có khả năng không mắc bệnh tim cao gấp 1.074 lần so với bệnh nhân có vận động.

epitab(pt4, method = 'riskratio')
## $tab
##    
##       N        p0   Y        p1 riskratio     lower    upper   p.value
##   N 184 0.5492537 151 0.4507463   1.00000        NA       NA        NA
##   Y 340 0.5112782 325 0.4887218   1.08425 0.9412088 1.249031 0.2831735
## 
## $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 bệnh nhân mắc bệnh tim theo trình trạng vận động thể chất là 1.084 tức là tỷ lệ bệnh nhân mắc bệnh tim có vận động gấp 1.084 lần so với tỷ lệ bệnh nhân mắc bệnh tim không vận động.

epitab(pt4, method = 'riskratio', rev = "c")
## $tab
##    
##       Y        p0   N        p1 riskratio     lower   upper   p.value
##   N 151 0.4507463 184 0.5492537 1.0000000        NA      NA        NA
##   Y 325 0.4887218 340 0.5112782 0.9308598 0.8237863 1.05185 0.2831735
## 
## $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 bệnh nhân không mắc bệnh tim theo tình trạng vận động là 0.9308 tức là tỷ lệ bệnh nhân không mắc bệnh tim có vận động gấp 0.9308 lần so với tỷ lệ bệnh nhân không mắc bệnh tim không có vận động.

  • Tỷ lệ chênh lệch
OddsRatio(pt4)
## [1] 1.164784

Kết quả cho thấy bệnh nhân không vận động có tỷ lệ không mắc bệnh cao gấp 1.16478 lần so với bệnh nhân có vận động.

epitab(pt4, method = 'oddsratio')
## $tab
##    
##       N       p0   Y        p1 oddsratio     lower   upper   p.value
##   N 184 0.351145 151 0.3172269  1.000000        NA      NA        NA
##   Y 340 0.648855 325 0.6827731  1.164784 0.8949643 1.51595 0.2831735
## 
## $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.16478, tức là tỷ lệ bệnh nhân không mắc bệnh tim/ mắc bệnh tim là có vận động cao hơn tỷ lệ bệnh nhân không mắc bệnh tim/ mắc bệnh tim không vận động là 16.478%.

  • Thống kê suy diễn cho 2 biến cardio và active

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến cardio và active độc lập

\(H_0\): Biến cardio và active có liên quan với nhau

chisq.test(pt4)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt4
## X-squared = 1.1403, df = 1, p-value = 0.2856

Kết quả kiểm định cho thấy P_value > 0.05 nên ta không có cơ sở để bác bỏ giả thuyết \(H_0\), cho thấy chưa đủ thông tin để kết luận rằng số lượng bệnh nhân mắc bệnh tim có liên quan đến tình trạng vận động của bệnh nhân.

2.2 Phân tích theo biến định lượng

2.2.1 Phân tích tuổi bệnh nhân theo giới tính

  • Bảng tần số
pt5 <- table(data$gender,c$age)
addmargins(pt5)
##      
##       thanhnien trungnien  Sum
##   F         283       356  639
##   M         156       205  361
##   Sum       439       561 1000
ppt5 <- prop.table(pt5)
addmargins(ppt5)
##      
##       thanhnien trungnien   Sum
##   F       0.283     0.356 0.639
##   M       0.156     0.205 0.361
##   Sum     0.439     0.561 1.000

Từ bảng tần suất thể hiện số tuổi bệnh nhân theo giới tính, kết quả thống kê cho ta thấy bệnh nhân nữ và nam trong độ tuổi thanh niên và trung niên. Trong đó, có 283 bệnh nhân nữ trong độ tuổi thanh niên và chiếm 28,3% trên tổng số bệnh nhân cao hơn so với số bệnh nhân nam trong độ tuổi đó là 156 người (tương đương 15,6%). Và bệnh nhân trong độ tuổi trung niên là nữ có 356 người đến khám và 205 bệnh nhân ở độ tuổi trung là nam đi khám.

  • Đồ thị
data |> ggplot(aes(x = gender, 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(. ~ c$age) +
 # theme_classic() +
  labs(x = 'Giới tính', y = 'Số người')

Dựa vào đồ thị phân loại tuổi bệnh nhân theo giới tính, ta thấy có sự chênh lệch giữa nam và nữ. Trong đó bệnh nhân nữ ở độ tuổi trung niên cao gấp 1,736 lần nam. Đồng thời, bệnh nhân nữ trong độ tuổi thanh niên cũng cao gấp 1,814 lần nam.

  • Rủi ro tương đối
RelRisk(pt5)
## [1] 1.024869

Kết quả cho thấy bệnh nhân là nữ trong độ tuổi trung niên cao gấp 1,0248 lần so với bệnh nhân là nam giới.

epitab(pt5, method = 'riskratio')
## $tab
##    
##     thanhnien        p0 trungnien        p1 riskratio     lower    upper
##   F       283 0.4428795       356 0.5571205  1.000000        NA       NA
##   M       156 0.4321330       205 0.5678670  1.019289 0.9099466 1.141771
##    
##       p.value
##   F        NA
##   M 0.7907675
## 
## $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 bệnh nhân ở độ tuổi trung niên theo giới tính là 1.0193 tức là tỷ lệ bệnh nhân nữ ở độ tuổi trung niên cao gấp 1.0193 lần so với tỷ lệ bệnh nhân nam giới trong độ tuổi trung niên.

epitab(pt5, method = 'riskratio', rev = "c")
## $tab
##    
##     trungnien        p0 thanhnien        p1 riskratio     lower    upper
##   F       356 0.5571205       283 0.4428795 1.0000000        NA       NA
##   M       205 0.5678670       156 0.4321330 0.9757349 0.8425268 1.130004
##    
##       p.value
##   F        NA
##   M 0.7907675
## 
## $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 bệnh nhân ở độ tuổi thanh niên theo giới tính là 0.9757 tức là tỷ lệ bệnh nhân trong độ tuổi thanh niên là nam cao gấp 0.9757 lần so với tỷ lệ bệnh nhân trong độ tuổi thanh niên là nữ.

  • Tỷ lệ chênh lệch
OddsRatio(pt5)
## [1] 1.044638

Kết quả cho thấy bệnh nhân nữ ở độ tuổi thanh niên cao gấp 1.044 lần so với bệnh nhân nam.

epitab(pt5, method = 'oddsratio')
## $tab
##    
##     thanhnien        p0 trungnien        p1 oddsratio     lower    upper
##   F       283 0.6446469       356 0.6345811  1.000000        NA       NA
##   M       156 0.3553531       205 0.3654189  1.044638 0.8052711 1.355156
##    
##       p.value
##   F        NA
##   M 0.7907675
## 
## $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.044, tức là tỷ lệ bệnh nhân ở độ tuổi thanh niên/ trung niên là nam cao hơn tỷ lệ bệnh nhân ở độ tuổi thanh niên/ trung niên là nam.

  • Thống kê suy diễn cho 2 biến age và gender

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến age và gender độc lập

\(H_0\): Biến age và gender có liên quan với nhau

chisq.test(pt5)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt5
## X-squared = 0.068938, df = 1, p-value = 0.7929

Kết quả kiểm định cho thấy P_value > 0.05 nên ta không có cơ sở để bác bỏ giả thuyết \(H_0\), cho thấy chưa đủ thông tin để kết luận rằng tuổi bệnh nhân có phụ thuộc đến giới tính của bệnh nhân.

2.2.2 Phân tích bệnh nhân ở từng độ tuổi theo tình trạng sử dụng thuốc lá

  • Bảng tần số
pt6 <- table(data$smoke,c$age)
addmargins(pt6)
##      
##       thanhnien trungnien  Sum
##   N         297       401  698
##   Y         142       160  302
##   Sum       439       561 1000
ppt6 <- prop.table(pt6)
addmargins(ppt6)
##      
##       thanhnien trungnien   Sum
##   N       0.297     0.401 0.698
##   Y       0.142     0.160 0.302
##   Sum     0.439     0.561 1.000

Từ bảng tần suất thể hiện số tuổi bệnh nhân theo giới tính, kết quả thống kê cho ta thấy bệnh nhân trong độ tuổi thanh niên không sử dụng thuốc lá là 297 người (tương ứng 29.7%) cao hơn số bệnh nhân có sử dụng thuốc là 142 người (chiếm 14.2%). Trong đó, có 401 bệnh nhân ở độ tuổi trung niên không sử dụng thuốc lá và chiếm 40,1% trên tổng số bệnh nhân cao hơn so với số bệnh nhân có hút thuốc lá trong độ tuổi đó là 160 người (tương đương 16%).

  • Đồ thị
data |> ggplot(aes(x = smoke, 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(. ~ c$age) +
 # theme_classic() +
  labs(x = 'Trình trạng sử dụng thuốc lá', y = 'Số người')

Dựa vào đồ thị phân loại tuổi bệnh nhân theo tình trạng sử dụng thuốc lá, ta thấy có sự chênh lệch giữa trình trạng sử dụng thuốc lá của từng độ tuổi bệnh nhân. Trong đó, ở độ tuổi trung niên thì số bệnh nhân không hút thuốc lá cao gấp 2.5 lần bệnh nhân sử dụng thuốc lá. Ngoài ra, bệnh nhân không hút thuốc lá trong độ tuổi thanh niên có tỷ lệ cao gấp 2.0915 lần so với bệnh nhân sử dụng thuốc lá trong độ tuổi đó.

  • Rủi ro tương đối
RelRisk(pt6)
## [1] 0.9049397

Kết quả cho thấy bệnh nhân không hút thuốc trong độ tuổi trung niên cao gấp 0.9049 lần so với bệnh nhân sử dụng thuốc lá.

epitab(pt6, method = 'riskratio')
## $tab
##    
##     thanhnien        p0 trungnien        p1 riskratio     lower    upper
##   N       297 0.4255014       401 0.5744986 1.0000000        NA       NA
##   Y       142 0.4701987       160 0.5298013 0.9221978 0.8146863 1.043897
##    
##       p.value
##   N        NA
##   Y 0.2116073
## 
## $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 bệnh nhân ở độ tuổi trung niên theo tình trạng sử dụng thuốc lá là 0.922 tức là tỷ lệ bệnh nhân sử dụng thuốc lá ở độ tuổi trung niên cao gấp 0.922 lần so với tỷ lệ bệnh nhân không hút thuốc lá trong độ tuổi trung niên.

epitab(pt6, method = 'riskratio', rev = "c")
## $tab
##    
##     trungnien        p0 thanhnien        p1 riskratio     lower    upper
##   N       401 0.5744986       297 0.4255014  1.000000        NA       NA
##   Y       160 0.5298013       142 0.4701987  1.105046 0.9534804 1.280705
##    
##       p.value
##   N        NA
##   Y 0.2116073
## 
## $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 bệnh nhân ở độ tuổi thanh niên trong tình trạng sử dụng thuốc lá là 1.105 tức là tỷ lệ bệnh nhân trong độ tuổi thanh niên hút thuốc lá cao gấp 1.105 lần so với tỷ lệ bệnh nhân trong độ tuổi thanh niên không sử dụng thuốc lá.

  • Tỷ lệ chênh lệch
OddsRatio(pt6)
## [1] 0.8345334

Kết quả cho thấy bệnh nhân không sử dụng thuốc lá ở độ tuổi thanh niên cao gấp 0.8345 lần so với bệnh nhân hút thuốc lá.

epitab(pt6, method = 'oddsratio')
## $tab
##    
##     thanhnien        p0 trungnien       p1 oddsratio    lower    upper
##   N       297 0.6765376       401 0.714795 1.0000000       NA       NA
##   Y       142 0.3234624       160 0.285205 0.8345334 0.636271 1.094574
##    
##       p.value
##   N        NA
##   Y 0.2116073
## 
## $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.8345, tức là tỷ lệ bệnh nhân ở độ tuổi thanh niên/ trung niên sử dụng thuốc lá thấp hơn 16.5% tỷ lệ bệnh nhân ở độ tuổi thanh niên/ trung niên không sử dụng thuốc lá.

  • Thống kê suy diễn cho 2 biến age và smoke

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến age và smoke độc lập

\(H_0\): Biến age và smoke có liên quan với nhau

chisq.test(pt6)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt6
## X-squared = 1.5333, df = 1, p-value = 0.2156

Kết quả kiểm định cho thấy P_value > 0.05 nên ta bác bỏ giả thuyết \(H_0\), cho thấy chưa đủ thông tin để kết luận rằng trình trạng sử dụng thuốc lá có phụ thuộc đến tuổi của bệnh nhân.

2.2.3 Phân tích tuổi bệnh nhân theo tình trạng sử dụng rượu bia

  • Bảng tần số
pt7 <- table(data$alco,c$age)
addmargins(pt7)
##      
##       thanhnien trungnien  Sum
##   N         307       425  732
##   Y         132       136  268
##   Sum       439       561 1000
ppt7 <- prop.table(pt7)
addmargins(ppt7)
##      
##       thanhnien trungnien   Sum
##   N       0.307     0.425 0.732
##   Y       0.132     0.136 0.268
##   Sum     0.439     0.561 1.000

Từ bảng tần suất thể hiện số tuổi bệnh nhân theo trình trạng sử dụng rượu bia, kết quả thống kê cho ta thấy bệnh nhân trong độ tuổi tuổi thanh niên không sử dụng rượu bia là 307 người (tương ứng 30.7%) cao hơn số bệnh nhân có sử dụng rượu bia là 132 người (chiếm 13.2%). Trong đó, có 425 bệnh nhân ở độ tuổi trung niên không sử dụng rượu bia và chiếm 42.5% trên tổng số bệnh nhân cao hơn so với số bệnh nhân có uống rượu bia trong độ tuổi đó là 136 người (tương đương 13.6%).

  • Đồ thị
data |> ggplot(aes(x = alco, 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(. ~ c$age) +
 # theme_classic() +
  labs(x = 'Trình trạng sử dụng rượu bia', y = 'Số người')

Dựa vào đồ thị phân loại tuổi bệnh nhân theo tình trạng sử dụng rượu bia, ta thấy có sự chênh lệch giữa trình trạng sử dụng rượu bia của từng độ tuổi bệnh nhân. Trong đó, ở độ tuổi thanh niên thì số bệnh nhân không uống rượu bia cao gấp 2.326 lần bệnh nhân sử dụng rượu bia. Ngoài ra, bệnh nhân không uống rượu bia trong độ tuổi trung niên có tỷ lệ cao gấp 3.125 lần so với bệnh nhân không sử dụng rượu bia trong độ tuổi đó.

  • Rủi ro tương đối
RelRisk(pt7)
## [1] 0.8515069

Kết quả cho thấy bệnh nhân không sử dụng rượu bia trong độ tuổi trung niên cao gấp 0.8515 lần so với bệnh nhân sử dụng rượu bia.

epitab(pt7, method = 'riskratio')
## $tab
##    
##     thanhnien        p0 trungnien        p1 riskratio     lower     upper
##   N       307 0.4193989       425 0.5806011 1.0000000        NA        NA
##   Y       132 0.4925373       136 0.5074627 0.8740299 0.7651422 0.9984133
##    
##        p.value
##   N         NA
##   Y 0.04393321
## 
## $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 bệnh nhân ở độ tuổi trung niên theo tình trạng sử dụng rượu bia là 0.874 tức là tỷ lệ bệnh nhân sử dụng rượu bia ở độ tuổi trung niên cao gấp 0.874 lần so với tỷ lệ bệnh nhân không uống rượu trong độ tuổi trung niên.

epitab(pt7, method = 'riskratio', rev = "c")
## $tab
##    
##     trungnien        p0 thanhnien        p1 riskratio    lower    upper
##   N       425 0.5806011       307 0.4193989  1.000000       NA       NA
##   Y       136 0.5074627       132 0.4925373  1.174389 1.012388 1.362312
##    
##        p.value
##   N         NA
##   Y 0.04393321
## 
## $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 bệnh nhân ở độ tuổi thanh niên trong tình trạng sử dụng rượu bia là 1.1744 tức là tỷ lệ bệnh nhân trong độ tuổi thanh niên uống rượu bia cao gấp 1.1744 lần so với tỷ lệ bệnh nhân trong độ tuổi thanh niên không sử dụng rượu bia.

  • Tỷ lệ chênh lệch
OddsRatio(pt7)
## [1] 0.7442424

Kết quả cho thấy bệnh nhân không sử dụng rượu bia trong độ tuổi thanh niên cao gấp 0.74424 lần so với bệnh nhân sử dụng rượu bia.

epitab(pt7, method = 'oddsratio')
## $tab
##    
##     thanhnien        p0 trungnien        p1 oddsratio     lower     upper
##   N       307 0.6993166       425 0.7575758 1.0000000        NA        NA
##   Y       132 0.3006834       136 0.2424242 0.7442424 0.5619855 0.9856069
##    
##        p.value
##   N         NA
##   Y 0.04393321
## 
## $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.74424 tức là tỷ lệ bệnh nhân trong độ tuổi trung niên/ thanh niên có sử dụng rượu bia ít hơn 25.58% tỷ lệ bệnh nhân ở độ tuổi thanh niên/ trung niên không sử dụng rượu bia .

  • Thống kê suy diễn cho 2 biến age và alco

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến age và alco độc lập

\(H_0\): Biến age và alco có liên quan với nhau

chisq.test(pt7)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt7
## X-squared = 3.9692, df = 1, p-value = 0.04634

Kết quả kiểm định cho thấy P_value < 0.05 nên ta bác bỏ giả thuyết \(H_0\), cho thấy trình trạng sử dụng rượu bia có phụ thuộc đến tuổi của bệnh nhân.

2.2.4 Phân tích tuổi bệnh nhân theo tình trạng vận động

  • Bảng tần số
pt8 <- table(data$active,c$age)
addmargins(pt8)
##      
##       thanhnien trungnien  Sum
##   N         154       181  335
##   Y         285       380  665
##   Sum       439       561 1000
ppt8 <- prop.table(pt8)
addmargins(ppt8)
##      
##       thanhnien trungnien   Sum
##   N       0.154     0.181 0.335
##   Y       0.285     0.380 0.665
##   Sum     0.439     0.561 1.000

Từ bảng tần suất thể hiện bệnh nhân ở từng độ tuổi theo trình trạng vận động, kết quả thống kê cho ta thấy bệnh nhân trong độ tuổi thanh niên vận động là 285 người (tương ứng 28.5%) nhiều hơn số bệnh nhân không vận động là 154 người (chiếm 15.4%). Trong đó, có 181 bệnh nhân ở độ tuổi trung niên không vận động và chiếm 18.1% trên tổng số bệnh nhân ít hơn so với số bệnh nhân có vận động trong độ tuổi đó là 380 người (tương đương 38%).

  • Đồ thị
data |> ggplot(aes(x = active, 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(. ~ c$age) +
 # theme_classic() +
  labs(x = 'Tình trạng vận động', y = 'Số người')

Dựa vào đồ thị phân loại tuổi bệnh nhân theo tình trạng vận động, ta thấy có sự chênh lệch giữa trình trạng vận động của từng độ tuổi bệnh nhân. Trong đó, ở độ tuổi thanh niên thì số bệnh nhân vận động cao gấp 1.85 lần bệnh nhân không vận động. Ngoài ra, bệnh nhân có vận động trong độ tuổi trung niên có tỷ lệ cao gấp 2.099 lần so với bệnh nhân không vận động trong độ tuổi đó.

  • Rủi ro tương đối
RelRisk(pt8)
## [1] 1.072637

Kết quả cho thấy bệnh nhân không vận động trong độ tuổi trung niên thấp gấp 1.0726 lần so với bệnh nhân vận động.

epitab(pt8, method = 'riskratio')
## $tab
##    
##     thanhnien        p0 trungnien        p1 riskratio     lower    upper
##   N       154 0.4597015       181 0.5402985  1.000000        NA       NA
##   Y       285 0.4285714       380 0.5714286  1.057616 0.9392447 1.190906
##    
##       p.value
##   N        NA
##   Y 0.3802181
## 
## $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 bệnh nhân ở độ tuổi trung niên theo tình trạng vận động là 1.0576 tức là tỷ lệ bệnh nhân có vận động ở độ tuổi trung niên cao gấp 1.0576 lần so với tỷ lệ bệnh nhân không vận động trong độ tuổi trung niên.

epitab(pt8, method = 'riskratio', rev = "c")
## $tab
##    
##     trungnien        p0 thanhnien        p1 riskratio     lower    upper
##   N       181 0.5402985       154 0.4597015  1.000000        NA       NA
##   Y       380 0.5714286       285 0.4285714  0.932282 0.8060155 1.078329
##    
##       p.value
##   N        NA
##   Y 0.3802181
## 
## $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 bệnh nhân ở độ tuổi thanh niên trong tình trạng sử dụng rượu bia là 0.93228 tức là tỷ lệ bệnh nhân trong độ tuổi thanh niên có vận động cao gấp 0.93228 lần so với tỷ lệ bệnh nhân trong độ tuổi thanh niên không vận động.

  • Rủi ro tương đối
OddsRatio(pt8)
## [1] 1.134438

Kết quả cho thấy bệnh nhân không vận động trong độ tuổi thanh niên thấp gấp 1.1344 lần so với bệnh nhân có vận động.

  • Tỷ lệ chênh lệch
epitab(pt8, method = 'oddsratio')
## $tab
##    
##     thanhnien        p0 trungnien        p1 oddsratio     lower    upper
##   N       154 0.3507973       181 0.3226381  1.000000        NA       NA
##   Y       285 0.6492027       380 0.6773619  1.134438 0.8711197 1.477352
##    
##       p.value
##   N        NA
##   Y 0.3802181
## 
## $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.1344 tức là tỷ lệ bệnh nhân trong độ tuổi trung niên/ thanh niên có vận động nhiều hơn tỷ lệ bệnh nhân ở độ tuổi thanh niên/ trung niên không vận động là 13.44%.

  • Thống kê suy diễn cho 2 biến age và active

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến age và active độc lập

\(H_0\): Biến age và active có liên quan với nhau

chisq.test(pt8)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt8
## X-squared = 0.75475, df = 1, p-value = 0.385

Kết quả kiểm định cho thấy P_value > 0.05 nên ta không có cơ sở để bác bỏ giả thuyết \(H_0\), cho thấy chưa đủ cơ sở để kết luận rằng trình trạng vận động của bệnh nhân có ảnh hưởng đến tuổi của bệnh nhân.

2.3 Thống kê suy diễn cho dữ liệu định tính

2.3.1 Kiểm định tính độc lập cho 2 biến định tính

  • Thống kê suy diễn cho 2 biến cardio và gender

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến cardio và gender độc lập

\(H_0\): Biến cardio và gender có liên quan với nhau

chisq.test(pt1)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt1
## X-squared = 0.031022, df = 1, p-value = 0.8602

Kết quả kiểm định cho thấy P_value > 0.05 nên cho thấy chưa đủ thông tin để kết luận rằng số lượng bệnh nhân mắc bệnh tim có liên quan đến giới tính của bệnh nhân.

  • Thống kê suy diễn cho 2 biến cardio và smoke

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến cardio và smoke độc lập

\(H_0\): Biến cardio và smoke có liên quan với nhau

chisq.test(pt2)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt2
## X-squared = 0.010641, df = 1, p-value = 0.9178

Kết quả kiểm định cho thấy P_value > 0.05 nên ta không có cơ sở để bác bỏ giả thuyết \(H_0\), cho thấy chưa đủ thông tin để kết luận rằng số lượng bệnh nhân mắc bệnh tim có liên quan đến tình trạng sử dụng thuốc lá của bệnh nhân.

  • Thống kê suy diễn cho 2 biến cardio và alco

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến cardio và alco độc lập

\(H_0\): Biến cardio và alco có liên quan với nhau

chisq.test(pt3)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt3
## X-squared = 2.4424, df = 1, p-value = 0.1181

Kết quả kiểm định cho thấy P_value > 0.05 nên ta không có cơ sở để bác bỏ giả thuyết \(H_0\), cho thấy chưa đủ thông tin để kết luận rằng số lượng bệnh nhân mắc bệnh tim có liên quan đến tình trạng sử dụng rượu bia của bệnh nhân.

  • Thống kê suy diễn cho 2 biến cardio và active

Với cặp giả thuyết - đối thuyết:

\(H_0\): Biến cardio và active độc lập

\(H_0\): Biến cardio và active có liên quan với nhau

chisq.test(pt4)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pt4
## X-squared = 1.1403, df = 1, p-value = 0.2856

Kết quả kiểm định cho thấy P_value > 0.05 nên ta không có cơ sở để bác bỏ giả thuyết \(H_0\), cho thấy chưa đủ thông tin để kết luận rằng số lượng bệnh nhân mắc bệnh tim có liên quan đến tình trạng vận động của bệnh nhân.

3 Bài về nhà tuần 3 - 4 (câu 3)

Câu 3: Làm thống kê mô tả để phân tích cho ít nhất 5 biến (vừa định tính định lượng và có 2 biến đã chọn ở câu 2), nhận xét về kết quả phân tích này.

Tác giả chọn phân tích 6 biến: cardio, age, gender, smoke, alco

3.1 Thống kê mô tả biến cardio

3.1.1 Bảng tần suất

table(data$cardio)
## 
##   N   Y 
## 524 476
table(data$cardio)/sum(table(data$cardio))
## 
##     N     Y 
## 0.524 0.476

Biến cardio thể hiện số lượng người đến khám bệnh có mắc bệnh tim hay không. Dựa vào kết quả thống kê, ta thấy có 479 người đi khám có mắc bệnh tim (chiếm 47,9% tổng người) và 521 người không mắc bệnh tim trên tổng 1000 người đi khám (tương đương 5,21%).

3.1.2 Đồ thị

library(ggplot2)
data |> ggplot(aes(x = cardio, 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) +labs(x = 'Nguy cơ bệnh nhân mắc bệnh tim', y = 'Số người')

Dựa vào đồ thị, ta cho biết số lượng người đến khám bệnh bị mắc bệnh tim. Không có sự chênh lệch rõ rệt giữa bệnh nhân đi khám mắc bệnh tim và bệnh nhân không mắc bệnh tim, nghĩa là tỷ lệ người đi khám mắc bệnh tim và người đến khám bệnh không mắc bệnh tim là xấp xỉ ( người đi khám bị bệnh tim gấp 1.1 lần so với người đi khám không bị bệnh tim).

3.2 Thống kê mô tả biến gender

3.2.1 Bảng tần số

table(data$gender)
## 
##   F   M 
## 639 361
table(data$gender)/sum(table(data$gender))
## 
##     F     M 
## 0.639 0.361

Biến gender thể hiện giới tính của bệnh nhân. Thông qua kết quả thống kê, ta thấy tỷ lệ người đi khám là nữ chiếm 63,9%, cho thấy có 639 bệnh nhân giới tính là nữ trên tổng 1000 người đi khám. Trong đó, có 361 bệnh nhân nam đi khám so với tổng số bệnh nhân (chiếm 36,1% người đi khám).

3.2.2 Đồ thị

library(ggplot2)
data |> ggplot(aes(x = gender, 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) +labs(x = 'Giới tính', y = 'Số người')

Dựa vào đồ thị, ta cho biết số lượng người đến khám bệnh theo giới tính là nam hoặc nữ. Có sự chênh lệch giữa giới tính của các bệnh nhân đi khám, trong tỷ lệ người đi khám là nữ chiếm cao hơn, gấp 1,77 lần so với tỷ lệ người đi khám là nam.

3.3 Thống kê mô tả biến age

3.3.1 Bảng summary

summary(data$age)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   39.00   48.00   54.00   53.19   58.00   65.00

Biến age cho biết độ tuổi của người đến khám bệnh. Thông qua bảng thống kê mô tả, trong 1000 người đi khám bệnh, bệnh nhân ít tuổi nhất là 39 tuổi và lớn nhất là 65 tuổi. Cho thấy số tuổi trung bình mà bệnh nhân đi khám bệnh tim là khoảng 53 - 54 tuổi.

age = data$age
age = cut(age,2, labels = c('thanhnien','trungnien' ))
table(age)
## age
## thanhnien trungnien 
##       439       561

Ta có thể thấy người đến khám bệnh có độ tuổi nằm trong độ tuổi thanh niên chiếm 439 người. Và có 561 người ở độ tuổi trung niên đi khám bệnh.

3.3.2 Đồ thị

k <- data.frame(age, data$gender, data$height, data$weight, data$weight, data$aphi, data$aplo, data$cholesterol,data$gluc, data$smoke, data$alco, data$active, data$cardio)
k |> ggplot(aes(x = age, 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) +labs(x = 'Độ tuổi của người đến khám bệnh', y = 'Số người')

Qua đồ thị, ta thấy có sự chênh lệch giữa độ tuổi mà người đến khám bệnh, trong đó người đi khám ở độ tuổi trung niên gấp 1.273 lần người khám bệnh trong độ tuổi thanh niên.

3.4 Thống kê mô tả biến smoke

3.4.1 Bảng tần suất

table(data$smoke)
## 
##   N   Y 
## 698 302
table(data$smoke)/sum(table(data$smoke))
## 
##     N     Y 
## 0.698 0.302

Biến smoke thể hiện số lượng người đi khám có sử dụng thuốc lá hay không. Dựa vào kết quả thống kê, ta thấy chỉ có 302 người đi khám có hút thuốc lá (chiếm 30.2% tổng người) và 698 người không sử dụng thuốc lá trên tổng 1000 người đi khám (tương đương 69.8%).

3.4.2 Đồ thị

data |> ggplot(aes(x = smoke, 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) +labs(x = 'Tình trạng sử dụng thuốc lá', y = 'Số người')

Dựa vào đồ thị, ta cho thấy sự chênh lệch khá lớn giữa người đi khám có sử dụng thuốc lá và người đi khám không sử dụng thuốc lá. Số người không hút thuốc lá chiếm phần lớn, gấp khoảng 2.33 lần người đi khám có hút thuốc lá.

3.5 Thống kê mô tả biến alco

3.5.1 Bảng tần suất

table(data$alco)
## 
##   N   Y 
## 732 268
table(data$alco)/sum(table(data$alco))
## 
##     N     Y 
## 0.732 0.268

Biến alco thể hiện số lượng người đi khám có sử dụng rượu bia hay không. Dựa vào kết quả thống kê, ta thấy chỉ có 268 người đi khám có uống rượu bia (chiếm 26.8% tổng người) và 732 người không sử dụng rượu bia trên tổng 1000 người đi khám (tương đương 73,2%).

3.5.2 Đồ thị

data |> ggplot(aes(x = alco, 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) +labs(x = 'Tình trạng sử dụng rượu bia', y = 'Số người')

Dựa vào đồ thị, ta cho thấy sự chênh lệch khá lớn giữa người đi khám có trình trạng sử dụng rượu bia và người đi khám không sử dụng rượu bia. Số người không uống rượu bia chiếm phần lớn, gấp 2.7 lần người đi khám sử dụng rượu bia.

3.6 Thống kê mô tả biến active

3.6.1 Bảng tần suất

table(data$active)
## 
##   N   Y 
## 335 665
table(data$active)/sum(table(data$active))
## 
##     N     Y 
## 0.335 0.665

Biến active thể hiện số lượng người đi khám có vận động hay không. Dựa vào kết quả thống kê, ta thấy có 665 người đi khám có vận động (chiếm 66.5% tổng người) và 335 người không vận động trên tổng 1000 người đi khám (tương đương 33.5%).

3.6.2 Đồ thị

data |> ggplot(aes(x = active, 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) +labs(x = 'Trình trạng vận động', y = 'Số người')

Thông qua đồ thị, ta cho thấy sự chênh lệch lớn giữa người đi khám có vận động và người đi khám không có vận động. Số người có vận động chiếm phần lớn, gấp 1.9411 lần người đi khám không vận động.

4 Bài về nhà tuần 2 (câu 2)

Câu 2: Chọn 1 hoặc 2 biến định tính và 1 biến định lượng làm biến phụ thuộc để phân tích, giải thích lý do.(1đ)

4.1 Chọn biến định tính làm biến phụ thuộc

Bài nghiên cứu chọn biến phụ thuộc là biến cardio (Bệnh nhân bị bệnh tim (Y/N)).

Giải thích: Tim mạch là bệnh lý xuất hiện âm thầm nhưng để lại nhiều hậu quả nghiêm trọng đối với tính mạng.Trong những năm trở lại đây, tỷ lệ tử vong do bệnh tim ngày càng tăng trên toàn thế giới. Bài nghiên cứu xác định thông qua 1000 hồ sơ bệnh nhân khám ở khoa tim mạch cho thấy các yếu tố nào có khả năng nguyên nhân làm bệnh nhân bị bệnh tim.Từ đó, đưa ra những biện pháp phòng ngừa hợp lí tránh các loại bệnh tim mạch.

4.2 Chọn biến định lượng làm biến phụ thuộc

Bài nghiên cứu chọn biến phụ thuộc là biến age (số tuổi của bệnh nhân).

Giải thích: Nhằm mục đích là xác định tuổi của bệnh nhân có làm ảnh hưởng đến huyết áp, cholesterol, glu,… hay không. Từ đó, đưa ra những giải pháp tăng cường sức khỏe, cải thiện đời sống phòng ngừa bệnh tim.

5 Bài về nhà tuần 1 (câu 1)

Tìm một dataset có dữ liệu định tính, dữ liệu định lượng, có trên 5 biến và nhiều hơn 300 quan sát.(1đ)

5.1 Dữ liệu nghiên cứu

Bộ dữ liệu được lấy tại trang website Kaggle do Svetlana Ulianova chia sẻ (2019). Dữ liệu được thu nhập từ 1000 hồ sơ bệnh nhân ở khoa tim mạch ở bệnh viện tại Mỹ được khám trong khoảng thời gian 5 ngày. Bộ dữ liệu có 12 biến gồm 1000 quan sát.

5.2 Giải thích các biến:

  1. age: số tuổi của các bệnh nhân
  2. gender: Giới tính của các bệnh nhân (Nữ - F/Nam - M)
  3. height: Chiều cao của các bệnh nhân (cm)
  4. weight: Cân nặng của các bệnh nhân (kg)
  5. aphi: Huyết áp tối đa đo được của các bệnh nhân
  6. aplo: Huyết áp tối thiểu đo được của các bệnh nhân
  7. cholesterol: Mức độ đánh giá cholesterol của các bệnh nhân (Bình thường - BT/ Ranh giới - RG/ Nguy cơ cao - NCC)
  8. gluc: Mức độ đánh giá Glucose của các bệnh nhân (Bình thường - BT/ Ranh giới - RG/ Nguy cơ cao - NCC)
  9. smoke: Bệnh nhân hút thuốc lá (Có - Y/ Không - N)
  10. alco: Bệnh nhân uống rượu bia (Có - Y/ Không - N)
  11. active: Bệnh nhân tập thể thao (Có - Y/ Không - N)
  12. cardio: Bệnh nhân bị bệnh tim mạch (Có - Y/ Không - N)
library(xlsx)
## Warning: package 'xlsx' was built under R version 4.2.3
setwd("C:/Users/HP/Documents/PTDLĐT/")
data <- read.xlsx("data.xlsx", sheetIndex = 1)
data
str(data)
## 'data.frame':    1000 obs. of  12 variables:
##  $ age        : num  62 40 60 40 64 58 50 62 58 61 ...
##  $ gender     : chr  "F" "F" "F" "F" ...
##  $ height     : num  165 165 151 172 168 154 168 176 150 166 ...
##  $ weight     : num  125 120 58 70 64 66 68 85 70 62 ...
##  $ aphi       : num  160 100 110 130 110 120 150 130 145 110 ...
##  $ aplo       : num  100 75 60 90 80 90 110 80 110 70 ...
##  $ cholesterol: chr  "BT" "NCC" "BT" "BT" ...
##  $ gluc       : chr  "BT" "NCC" "BT" "BT" ...
##  $ smoke      : chr  "Y" "Y" "Y" "N" ...
##  $ alco       : chr  "N" "Y" "Y" "Y" ...
##  $ active     : chr  "N" "N" "N" "N" ...
##  $ cardio     : chr  "N" "Y" "N" "Y" ...

Thông qua bảng dữ liệu, dữ liệu nghiên cứu gồm 1000 quan sát với 12 biến bao gồm 5 biến định lượng và 7 biến định tính.