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)
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
- 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%.
- 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.
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”)
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”)
Để đá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.
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.
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.
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%).
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.
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ữ.
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.
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%.
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.
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á.
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%.
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.
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.
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%.
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.
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.
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%.
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.
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.
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.
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ữ.
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.
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.
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%).
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 đó.
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á.
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á.
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.
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%).
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 đó.
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.
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 .
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.
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%).
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 đó.
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.
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.
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%.
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.
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.
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.
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.
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.
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
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%).
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).
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).
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.
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.
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.
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%).
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á.
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%).
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.
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%).
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.
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đ)
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.
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.
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đ)
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.
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.