library(tidyverse)
library(DT)
library(scales)
library(psych)
library(knitr)
library(kableExtra)
library(DescTools)
library(epitools)
library(AER)
library(dplyr)
Em xin cam đoan rằng đề tài tiểu luận môn Phân tích dữ liệu định tính với đề tài “Phân tích các yếu tố ảnh hưởng đến bệnh cao huyết áp” là kết quả nghiên cứu nghiêm túc của em, được thực hiện dưới sự hướng dẫn khoa học và tận tình của Thầy/ThS. Trần Mạnh Tường.
Toàn bộ nội dung trong bài tiểu luận được xây dựng dựa trên quá trình thu thập, xử lý và phân tích dữ liệu một cách khách quan, trung thực, có dẫn nguồn rõ ràng đối với các tài liệu tham khảo và bám sát nội dung bài giảng. Các số liệu được sử dụng trong bài có xuất xứ cụ thể, đảm bảo tính minh bạch và chính xác. Kết quả nghiên cứu được trình bày hoàn toàn là công trình do tác giả trực tiếp thực hiện, không sao chép từ bất kỳ nguồn nào khác.
Em xin hoàn toàn chịu trách nhiệm trước nhà trường và giảng viên hướng dẫn về tính trung thực, khách quan và bản quyền nội dung của bài tiểu luận này. Nếu có bất kỳ vi phạm nào liên quan đến lời cam đoan trên, em xin hoàn toàn chịu trách nhiệm trước quy định của nhà trường..
Trước hết, em xin bày tỏ lòng biết ơn sâu sắc đến Thầy Th.S Trần Mạnh Tường đã tận tình hướng dẫn, định hướng và đưa ra những góp ý quý báu trong suốt quá trình học tập và thực hiện đề tài tiểu luận. Nhờ sự chỉ dẫn tận tâm của Thầy, em đã có cơ hội vận dụng những kiến thức lý thuyết vào thực tiễn một cách hiệu quả và bài bản.
Em cũng xin chân thành cảm ơn quý Thầy, Cô khoa Khoa Học Dữ Liệu, trường Đại học Tài chính – Marketing, đã giảng dạy nhiệt huyết và truyền đạt những kiến thức chuyên môn quý báu về kinh tế, tài chính. Chính những nền tảng kiến thức này đã giúp em có cơ sở vững chắc để triển khai và hoàn thiện bài tiểu luận.
Môn học Phân tích dữ liệu định tính là một môn học bổ ích, giàu tính thực tiễn và mang lại cho em một góc nhìn rộng hơn về cách tiếp cận, phân tích và xử lý các dữ liệu kinh tế – xã hội trong và ngoài nước. Tuy nhiên, với vốn hiểu biết còn hạn chế và kinh nghiệm thực tế chưa nhiều, chắc chắn bài làm không tránh khỏi những thiếu sót. Kính mong quý Thầy, Cô thông cảm và đóng góp ý kiến để em có thể hoàn thiện bài tiểu luận một cách tốt nhất.
Trong bối cảnh hiện nay, khi tốc độ đô thị hóa và nhịp sống hiện đại ngày càng gia tăng, các bệnh lý không lây – đặc biệt là bệnh cao huyết áp – đang trở thành một trong những mối đe dọa nghiêm trọng đối với sức khỏe cộng đồng. Theo Tổ chức Y tế Thế giới (WHO), cao huyết áp là “kẻ giết người thầm lặng” do diễn tiến âm thầm nhưng để lại hậu quả nghiêm trọng, làm gia tăng nguy cơ đột quỵ, suy tim, bệnh thận và tử vong sớm. Tại Việt Nam, tỷ lệ người mắc bệnh cao huyết áp ngày càng tăng, đặc biệt ở nhóm người trẻ tuổi, do lối sống thiếu khoa học, căng thẳng tâm lý và các yếu tố môi trường.
Xuất phát từ mối quan tâm sâu sắc đến sức khỏe con người và tính cấp thiết trong việc nâng cao nhận thức cộng đồng, tác giả quyết định lựa chọn đề tài “Phân tích các yếu tố ảnh hưởng đến bệnh cao huyết áp” nhằm tìm hiểu rõ hơn về các nguyên nhân chủ yếu tác động đến căn bệnh này, từ đó góp phần cung cấp thêm góc nhìn khoa học phục vụ công tác phòng ngừa và kiểm soát bệnh.
Thông qua việc ứng dụng các phương pháp phân tích dữ liệu định tính, tác giả mong muốn không chỉ làm rõ mối quan hệ giữa các yếu tố như chỉ số BMI, thói quen hút thuốc, tiền sử bệnh lý, hay thói quen vận động… với nguy cơ mắc bệnh cao huyết áp, mà còn nâng cao khả năng vận dụng kiến thức vào thực tiễn nghiên cứu trong lĩnh vực y tế – xã hội.
Mục tiêu chính của đề tài là xác định và phân tích các yếu tố có thể tác động đến nguy cơ mắc bệnh cao huyết áp ở người trưởng thành. Cụ thể, nhóm nghiên cứu tập trung làm rõ mối quan hệ giữa các biến số như chỉ số khối cơ thể (BMI), thói quen hút thuốc, tiền sử huyết áp trong gia đình, mức độ căng thẳng tinh thần, chế độ ăn uống và lối sống sinh hoạt với xác suất mắc bệnh. Thông qua việc ứng dụng phương pháp phân tích dữ liệu định tính, nhóm mong muốn đánh giá mức độ ảnh hưởng của từng yếu tố, từ đó đưa ra những gợi ý có giá trị thực tiễn nhằm nâng cao nhận thức cộng đồng và hỗ trợ công tác phòng chống cao huyết áp.
Xuất phát từ các mục tiêu trên, đề tài tập trung giải quyết một số câu hỏi nghiên cứu quan trọng: (1) Những yếu tố nào có ảnh hưởng rõ rệt đến khả năng mắc bệnh cao huyết áp? (2) Trong số các yếu tố được phân tích, yếu tố nào đóng vai trò nổi bật và có tác động mạnh nhất đến nguy cơ mắc bệnh? (3) Mối quan hệ giữa từng yếu tố (chẳng hạn như BMI, hút thuốc, tiền sử bệnh…) và khả năng mắc bệnh cao huyết áp thể hiện như thế nào? Và cuối cùng, (4) dữ liệu thu thập và phân tích có thể đưa ra những hàm ý thực tiễn gì trong việc phòng ngừa và kiểm soát căn bệnh này trong cộng đồng?
Đối tượng nghiên cứu là những cá nhân có nguy cơ hoặc đang mắc bệnh cao huyết áp, đặc biệt tập trung vào nhóm người trưởng thành trong độ tuổi lao động. Các yếu tố được khảo sát xoay quanh đặc điểm nhân khẩu học chỉ số sức khỏe như chỉ số BMI, tình trạng hút thuốc lá, tiền sử bệnh lý về huyết áp trong gia đình, thói quen sinh hoạt…. Những đặc điểm này được lựa chọn nhằm phản ánh một cách cụ thể và thực tiễn các yếu tố có khả năng tác động đến tình trạng huyết áp của một cá nhân trong bối cảnh xã hội hiện đại. Việc lựa chọn đối tượng nghiên cứu như trên giúp đề tài hướng đến mục tiêu đánh giá tổng quan các yếu tố nguy cơ phổ biến, đồng thời đề xuất một số hàm ý mang tính ứng dụng trong công tác phòng ngừa và kiểm soát bệnh cao huyết áp trong cộng đồng.
Về không gian: Nghiên cứu sử dụng dữ liệu khảo sát từ khách hàng phạm vi trong một nước. Về thời gian: Dữ liệu được thu thập và xử lý trong năm 2025, phản ánh thực trạng sức khỏe cá nhân trong bối cảnh hiện tại.
Trong nghiên cứu này, phương pháp định lượng được sử dụng nhằm phân tích mối quan hệ giữa các yếu tố như chỉ số sức khỏe như chỉ số BMI, tình trạng hút thuốc lá, tiền sử bệnh lý về huyết áp trong gia đình, thói quen sinh hoạt… và quyết định vay tiêu dùng của khách hàng.
Đầu tiên, dữ liệu được xử lý và trình bày thông qua thống kê mô tả đơn biến và phân tích bảng tần số để làm rõ đặc điểm tổng quan của mẫu nghiên cứu. Tiếp theo, kiểm định Chi-bình phương được áp dụng nhằm xác định mối liên hệ giữa từng biến độc lập và biến phụ thuộc (quyết định vay). Những biến có ý nghĩa thống kê sẽ được chọn đưa vào phân tích hồi quy nhị phân bằng bốn mô hình: (1) Hồi quy logistic, (2) Hồi quy probit, (3) Hồi quy cloglog, và (4) Mô hình xác suất tuyến tính (LPM). Mỗi mô hình đều được triển khai theo hai bước: phân tích đơn biến và đa biến. Kết quả hồi quy được trình bày dưới dạng hệ số ước lượng, sai số chuẩn, giá trị p và độ tin cậy, qua đó đánh giá hướng và mức độ ảnh hưởng của từng biến độc lập đến xác suất vay. Sau cùng, để so sánh hiệu quả giữa các mô hình, nghiên cứu sử dụng các tiêu chí đánh giá gồm chỉ số AIC (Akaike Information Criterion), đường cong ROC (Receiver Operating Characteristic) và ma trận nhầm lẫn.
Ngoài mục lục, danh mục chữ viết tắt, danh mục hình ảnh và bảng biểu, phụ lục cùng tài liệu tham khảo đề tài được chia thành ba chương chính:
Chương 1: GIỚI THIỆU NGHIÊN CỨU
Trình bày bối cảnh, lý do chọn đề tài, mục tiêu và câu hỏi nghiên cứu, đối tượng phạm vi nghiên cứu, phương pháp và kết cấu của đề tài.
Chương 2: Cơ sở lý thuyết và phương pháp nghiên cứu
Tổng hợp các khái niệm, lý thuyết liên quan đến bệnh cao huyết áp và đặc điểm nhân khẩu học. Trình bày các phương pháp thống kê và mô hình định lượng được sử dụng trong phân tích.
Chương 3: Kết quả nghiên cứu
Phân tích dữ liệu thực nghiệm, trình bày kết quả từ các phương pháp thống kê và mô hình hồi quy, đánh giá mức độ ảnh hưởng của các yếu tố, và đề xuất một số khuyến nghị thực tiễn.
Bệnh cao huyết áp (tăng huyết áp) là một tình trạng y tế mãn tính trong đó áp lực máu tác động lên thành động mạch duy trì ở mức cao hơn bình thường trong một thời gian dài. Đây là một trong những bệnh lý không lây phổ biến nhất trên toàn cầu, được xem là yếu tố nguy cơ hàng đầu dẫn đến các biến chứng tim mạch nghiêm trọng như đột quỵ, nhồi máu cơ tim, suy thận và thậm chí tử vong nếu không được kiểm soát kịp thời. Cao huyết áp thường diễn tiến âm thầm, không có triệu chứng rõ rệt, vì vậy còn được gọi là “kẻ giết người thầm lặng”.
Việc phát hiện và kiểm soát bệnh cao huyết áp không chỉ là vấn đề y tế cá nhân mà còn là mối quan tâm sức khỏe cộng đồng. Các nghiên cứu y học và xã hội học chỉ ra rằng nguy cơ mắc cao huyết áp không chỉ xuất phát từ yếu tố sinh học hay di truyền, mà còn chịu ảnh hưởng đáng kể bởi những yếu tố hành vi và nhân khẩu học. Những yếu tố như giới tính, độ tuổi, chỉ số khối cơ thể (BMI), thói quen hút thuốc lá, tình trạng căng thẳng tinh thần và tiền sử bệnh lý gia đình đóng vai trò quan trọng trong việc làm thay đổi huyết áp của một cá nhân theo thời gian.
Trong nghiên cứu này, nhóm tập trung phân tích một số yếu tố nhân khẩu học và hành vi được xem là có mối liên hệ chặt chẽ với nguy cơ mắc bệnh cao huyết áp, bao gồm:
Chỉ số khối cơ thể (BMI): Là chỉ số phản ánh mức độ béo phì, có liên quan trực tiếp đến nguy cơ cao huyết áp. Người có chỉ số BMI cao (thừa cân, béo phì) thường có nguy cơ mắc bệnh cao hơn.
Tình trạng hút thuốc (smoke): Hút thuốc lá làm co mạch và tăng huyết áp tạm thời, nếu kéo dài sẽ gây tổn thương mạch máu và làm tăng nguy cơ tăng huyết áp mạn tính.
Tiền sử bệnh huyết áp (history): Yếu tố di truyền và môi trường gia đình có ảnh hưởng đến khả năng mắc bệnh, đặc biệt nếu trong gia đình có người thân từng bị cao huyết áp.
Mức độ vận động thể chất: Người thường xuyên vận động sẽ có sức khỏe tốt hơn, từ đó giảm nguy cơ mắc bệnh cao huyết áp
Việc xem xét các yếu tố trên trong mối tương quan với tình trạng huyết áp giúp nâng cao hiệu quả chẩn đoán sớm, can thiệp đúng đối tượng và xây dựng các chính sách y tế cộng đồng phù hợp với từng nhóm dân cư có nguy cơ cao. Đây cũng là nền tảng để tăng cường hoạt động tuyên truyền, thay đổi hành vi sức khỏe và hỗ trợ người dân nâng cao chất lượng cuộc sống một cách bền vững.
Mô hình hồi quy nhị phân là công cụ phổ biến được sử dụng để phân tích và dự báo xác suất xảy ra của một sự kiện nhị phân, trong đó biến phụ thuộc chỉ nhận giá trị 0 hoặc 1. Trong bối cảnh nghiên cứu này, biến phụ thuộc là hành vi vay tiêu dùng của khách hàng (1 = có mắc bệnh, 0 = không mắc bệnh). Mục tiêu của các mô hình hồi quy nhị phân là ước lượng xác suất xảy ra sự kiện \(Y=1\) dựa trên các biến độc lập \(X_1, X_2, \dots, X_k\).
Dạng tổng quát của mô hình:
\[ P(Y = 1|X) = G(X\beta) \]
Trong đó:
Sử dụng hàm logistic:
\[ P(Y=1|X) = \frac{e^{X\beta}}{1 + e^{X\beta}} \]
Hàm logit giữ xác suất trong khoảng (0,1) và hệ số \(\beta\) được diễn giải thông qua log(Odds Ratio).
Sử dụng hàm phân phối tích lũy chuẩn hóa:
\[ P(Y=1|X) = \Phi(X\beta) \]
Phù hợp trong các trường hợp dữ liệu giả định có phân phối chuẩn ở sai số.
Sử dụng hàm:
\[ P(Y=1|X) = 1 - e^{-e^{X\beta}} \]
Phù hợp khi xác suất xảy ra sự kiện gần bằng 0 hoặc gần bằng 1.
Mô hình xác suất tuyến tính là một trường hợp đặc biệt của Mô hình Tuyến tính Tổng quát (Generalized Linear Model - GLM), trong đó hàm liên kết là hàm đồng nhất (identity link function). Công thức mô hình được biểu diễn như sau:
\[ P(Y = 1 \mid X) = X\beta \]
Trong đó:
Mô hình này cho phép diễn giải trực tiếp xác suất xảy ra sự kiện \(Y = 1\) như một hàm tuyến tính của các biến giải thích \(X\).
Ưu điểm của mô hình này là đơn giản, dễ ước lượng bằng phương pháp OLS và dễ diễn giải. Tuy nhiên, vì giá trị dự báo có thể nằm ngoài khoảng [0, 1], mô hình này thường không đảm bảo ý nghĩa xác suất. Điều này dẫn đến vi phạm giả định và độ chính xác thấp khi dự đoán hành vi nhị phân.
Trong GLM, mô hình xác suất tuyến tính vẫn được sử dụng như một bước tham chiếu ban đầu để so sánh với các mô hình logit, probit hoặc cloglog.
Các mô hình nhị phân như logit, probit và cloglog đều được ước lượng bằng phương pháp ước lượng hợp lý tối đa (MLE). Đây là phương pháp tìm giá trị tham số \(\beta\) sao cho xác suất tạo ra dữ liệu quan sát là cao nhất. Trong GLMs, hàm hợp lý được xây dựng dựa trên phân phối nhị thức và tối ưu hóa bằng các thuật toán như Newton-Raphson.
Trong các mô hình hồi quy nhị phân thuộc họ GLM như logit, probit và cloglog, tham số \(\beta\) không được ước lượng bằng phương pháp bình phương tối thiểu như trong hồi quy tuyến tính cổ điển, mà thay vào đó sử dụng phương pháp ước lượng hợp lý tối đa (Maximum Likelihood Estimation - MLE).
Phương pháp MLE tìm tập giá trị của \(\beta\) sao cho hàm hợp lý (likelihood function) đạt cực đại – nghĩa là, khả năng tạo ra bộ dữ liệu quan sát từ mô hình là cao nhất. Hàm hợp lý trong trường hợp nhị phân dựa trên phân phối nhị thức:
\[ L(\beta) = \prod_{i=1}^{n} [P_i]^{y_i} [1 - P_i]^{1 - y_i}, \quad \text{trong đó } P_i = G(X_i\beta) \]
Để đơn giản hóa tính toán, ta lấy log của hàm hợp lý để có log-likelihood:
\[ \log L(\beta) = \sum_{i=1}^{n} \left[ y_i \log P_i + (1 - y_i) \log(1 - P_i) \right] \]
Giải bài toán tối đa hóa log-likelihood bằng các thuật toán số học như Newton-Raphson hoặc Fisher Scoring, ta thu được ước lượng \(\hat{\beta}\).
Relative Risk (RR) – hay còn gọi là nguy cơ tương đối – so sánh xác suất xảy ra bệnh cao huyết áp giữa hai nhóm:
\[ RR = \frac{P_1}{P_0} \]
Trong đó:
Diễn giải:
Odds Ratio (OR) đo lường tỷ lệ odds (khả năng xảy ra so với không xảy ra) giữa hai nhóm:
\[ OR = \frac{P_1 / (1 - P_1)}{P_0 / (1 - P_0)} = \frac{P_1 (1 - P_0)}{P_0 (1 - P_1)} \]
Trong mô hình hồi quy logistic, kết quả hồi quy chính là log(OR):
\[ \log(OR) = X\beta \]
Diễn giải:
Bộ dữ liệu “Hypertension Risk Prediction Dataset” này được thiết kế để giúp các nhà nghiên cứu, nhà khoa học dữ liệu và những người đam mê chăm sóc sức khỏe phân tích các yếu tố nguy cơ liên quan đến tăng huyết áp (huyết áp cao) . Bộ dữ liệu bao gồm 1.985 quan sát và 9 biến có ý nghĩa được tạo ra dựa trên thông tin chi tiết lâm sàng và mô hình dữ liệu y tế công cộng.
library(xlsx)
## Warning: package 'xlsx' was built under R version 4.3.3
library(dplyr)
library(ggplot2)
library(gmodels)
## Warning: package 'gmodels' was built under R version 4.3.3
## Registered S3 method overwritten by 'gdata':
## method from
## reorder.factor DescTools
data <- read.xlsx(file = "C:/Users/PC_Dell/Downloads/hypertension_dataset.xlsx", sheetIndex = 1, header = T)
Cấu trúc bộ dữ liệu
library(data.table)
##
## Attaching package: 'data.table'
## The following object is masked from 'package:DescTools':
##
## %like%
## The following objects are masked from 'package:lubridate':
##
## hour, isoweek, mday, minute, month, quarter, second, wday, week,
## yday, year
## The following objects are masked from 'package:dplyr':
##
## between, first, last
## The following object is masked from 'package:purrr':
##
## transpose
data.table(data)
## Age Salt_Intake BP_History BMI Medication Family_History
## 1: 32 11.7 Normal Normal None No
## 2: 78 9.5 Normal Normal None No
## 3: 38 10.0 Hypertension Normal ACE Inhibitor No
## 4: 20 10.8 Hypertension Normal Beta Blocker Yes
## 5: 47 7.2 Normal Normal None No
## ---
## 1981: 51 11.8 Normal Normal Other No
## 1982: 61 6.0 Normal Underweight None No
## 1983: 29 6.2 Normal Normal None No
## 1984: 19 8.5 Hypertension Normal None No
## 1985: 42 9.1 Normal Overweight Diuretic Yes
## Exercise_Level Smoking_Status Has_Hypertension
## 1: Low Non-Smoker No
## 2: Moderate Non-Smoker No
## 3: Low Non-Smoker Yes
## 4: High Non-Smoker Yes
## 5: High Non-Smoker No
## ---
## 1981: Low Non-Smoker No
## 1982: Low Smoker No
## 1983: Moderate Non-Smoker No
## 1984: High Non-Smoker No
## 1985: Moderate Smoker Yes
Bộ dữ liệu bao gồm 1.985 quan sát (observations) và 9 biến (variables), phản ánh thông tin sức khỏe và các yếu tố lối sống có liên quan đến nguy cơ cao huyết áp ở người trưởng thành từ 18 đến 84 tuổi.
Age: Tuổi của đối tượng khảo sát, là biến định lượng dạng số thực
Salt_Intake: Lượng muối tiêu thụ hàng ngày (tính bằng gam) – một yếu tố chính gây ra huyết áp cao
BP_History: Tiền sử huyết áp (“Normal”: Bình thường ,“Hypertension”: cao huyết áp, “Prehypertension”: tiền tăng huyết áp),
BMI: Phân loại tình trạng thể trọng (“Underweight”: gầy , “Normal”: Bình thường, “Overweight”: Thừa cân)
Medication: Loại thuốc đang sử dụng
Family_History: Tiền sử gia đình mắc cao huyết áp hay không (“Yes”: CÓ/ “No”: KHÔNG)
Exercise_Level: Mức độ vận động thể chất (“Low”, “Moderate”, “High”) lần lượt là “thấp”, “đều đặn”, “cao”
Smoking_Status: Tình trạng hút thuốc (“Non-Smoker”: không hút thuốc, “Smoker”:Có hút thuốc)
Has_Hypertension: biến phụ thuộc (“Yes”: CÓ/“No”: KHÔNG), biểu thị đối tượng có mắc cao huyết áp hay không.
# Kiểm tra số lượng NA trong mỗi cột định tính
na_counts <- sapply(data, function(x) sum(is.na(x)))
na_counts
## Age Salt_Intake BP_History BMI
## 0 0 0 0
## Medication Family_History Exercise_Level Smoking_Status
## 0 0 0 0
## Has_Hypertension
## 0
Nhận xét - Kết quả thu được cho thấy rằng tất cả các cột định tính đều không có giá trị thiếu (NA) vì số lượng NA trong các cột đều hiển thị là 0
# Chuyển các biến định tính sang factor
data$BP_History <- as.factor(data$BP_History)
data$BMI <- as.factor(data$BMI)
data$Medication <- as.factor(data$Medication)
data$Family_History <- as.factor(data$Family_History)
data$Exercise_Level <- as.factor(data$Exercise_Level)
data$Smoking_Status <- as.factor(data$Smoking_Status)
data$Has_Hypertension <- as.factor(data$Has_Hypertension)
Kiểm tra lại cấu trúc dữ liệu sau khi chuyển đổi
str(data)
## 'data.frame': 1985 obs. of 9 variables:
## $ Age : num 32 78 38 20 47 55 77 39 76 77 ...
## $ Salt_Intake : num 11.7 9.5 10 10.8 7.2 7.4 8.5 13.7 5 9.3 ...
## $ BP_History : Factor w/ 3 levels "Hypertension",..: 2 2 1 1 2 3 2 2 1 1 ...
## $ BMI : Factor w/ 3 levels "Normal","Overweight",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ Medication : Factor w/ 5 levels "ACE Inhibitor",..: 4 4 1 2 4 3 1 4 4 4 ...
## $ Family_History : Factor w/ 2 levels "No","Yes": 1 1 1 2 1 1 2 2 2 1 ...
## $ Exercise_Level : Factor w/ 3 levels "High","Low","Moderate": 2 3 2 1 1 3 2 3 1 1 ...
## $ Smoking_Status : Factor w/ 2 levels "Non-Smoker","Smoker": 1 1 1 1 1 1 2 1 1 1 ...
## $ Has_Hypertension: Factor w/ 2 levels "No","Yes": 1 1 2 2 1 1 2 1 2 2 ...
Giải thích:
sapply(data, class): Áp dụng hàm class() cho từng cột để kiểm tra kiểu dữ liệu. Kết quả trả về là một vector hiển thị tên cột và loại dữ liệu tương ứng.
Kết quả là “factor” cho tất cả các cột → chuyển đổi thành công.
sapply(data, class)
## Age Salt_Intake BP_History BMI
## "numeric" "numeric" "factor" "factor"
## Medication Family_History Exercise_Level Smoking_Status
## "factor" "factor" "factor" "factor"
## Has_Hypertension
## "factor"
Nhận xét : Kết quả thu được toàn bộ các biến định tính đã được chuyển đổi thành dạng factor.
Quy trình nghiên cứu được tác giả xây dựng theo các bước logic và tuần tự nhằm đảm bảo tính hệ thống, độ tin cậy và cơ sở khoa học trong phân tích dữ liệu. Cụ thể bao gồm các bước sau:
library(DiagrammeR)
## Warning: package 'DiagrammeR' was built under R version 4.3.3
DiagrammeR::grViz("
digraph research_flow {
graph [rankdir = TB]
node [shape = rectangle, style = filled, color = lightblue, fontname = Helvetica, fontsize = 12]
A [label = 'Bước 1: Thống kê mô tả\n(Dữ liệu đơn biến)']
B [label = 'Bước 2: Kiểm định Chi-square\n(Giữa biến phụ thuộc và độc lập)']
C [label = 'Bước 3: Phân tích cặp biến\n(Bảng tần số, biểu đồ, RR & OR)']
D [label = 'Bước 4: Ước lượng mô hình nhị phân\n(Logit, Probit, Cloglog, GLM)']
E [label = 'Bước 5: So sánh mô hình\n(AIC, ROC)']
F [label = 'Bước 6: Đề xuất chính sách\n(Dựa trên kết quả mô hình)']
A -> B -> C -> D -> E -> F
}
")
Bước 1: Thu thập và xử lý dữ liệu
Tác giả sử dụng tập dữ liệu được rút trích từ kaggle.com. Từ đó, tác giả lựa chọn các biến phù hợp với mục tiêu nghiên cứu:
Sau khi xác định biến, tác giả tiến hành làm sạch dữ liệu, mã hóa và chuyển đổi các biến định tính về định dạng phù hợp (factor) để phục vụ phân tích.
Bước 2: Thống kê mô tả đơn biến
Tác giả tiến hành thống kê tần suất và tỷ lệ phần trăm cho từng biến nhằm mô tả đặc điểm tổng quát của dữ liệu. Kết quả được minh họa thông qua biểu đồ cột và biểu đồ tròn nhằm trực quan hóa đặc điểm nhân khẩu học của khách hàng.
Bước 3: Kiểm định Chi-bình phương
Ở bước này, tác giả sử dụng kiểm định Chi-square để kiểm tra mối liên hệ thống kê giữa biến phụ thuộc loan và từng biến độc lập. Những biến có giá trị p < 0.05 được xem là có mối quan hệ có ý nghĩa thống kê với hành vi vay tiêu dùng, từ đó được đưa vào các phân tích sâu hơn.
Bước 4: Phân tích mối quan hệ giữa cặp biến
Với mỗi cặp biến có mối liên hệ, tác giả thực hiện các bước:
Lập bảng tần số chéo để mô tả phân phối chung.
Vẽ biểu đồ cột phân nhóm để so sánh trực quan.
Thực hiện kiểm định tỷ lệ giữa các nhóm.
Tính toán hai chỉ số quan trọng: Relative Risk (RR) và Odds Ratio (OR) nhằm lượng hóa mức độ ảnh hưởng của các yếu tố đến việc mắc bệnh cao huyết áp
Bước 5: Ước lượng mô hình hồi quy nhị phân
Tác giả tiến hành xây dựng và ước lượng 4 mô hình hồi quy nhị phân nhằm phân tích tác động của các biến nhân khẩu học đến hành vi vay tiêu dùng:
Hồi quy Logistic (Logit)
Hồi quy Probit
Hồi quy Complementary log-log (Cloglog)
Mô hình xác suất tuyến tính (LMP)
Việc ước lượng các mô hình này được thực hiện bằng phương pháp ước lượng hợp lý tối đa (Maximum Likelihood Estimation – MLE).
Bước 6: Đánh giá và lựa chọn mô hình phù hợp
Tác giả sử dụng các tiêu chí đánh giá mô hình bao gồm:
Chỉ số AIC (Akaike Information Criterion)
Đường cong ROC và diện tích dưới đường cong (AUC)
Dựa trên kết quả đánh giá, mô hình tốt nhất sẽ được lựa chọn để diễn giải và đề xuất chính sách.
Bước 7: Kết luận và khuyến nghị
Tác giả tổng hợp các kết quả định tính và định lượng, từ đó rút ra các kết luận chính về mối quan hệ giữa các đặc điểm nhân khẩu học và tình trạng mắc bệnh cao huyết áp. Trên cơ sở đó, nghiên cứu đưa ra các khuyến nghị thực tiễn cho tổ chức y tế và người dân nhằm cải thiện sức khỏe cộng đồng.
THỐNG KÊ TẦN SỐ, TẦN SUẤT cho biến Mắc cao huyết áp
level_freq <- table(data$Has_Hypertension)
level_percent <- prop.table(level_freq) * 100
data.frame(Has_Hypertension = names(level_freq),
Frequency = as.numeric(level_freq),
Percentage = round(as.numeric(level_percent), 1))
## Has_Hypertension Frequency Percentage
## 1 No 953 48
## 2 Yes 1032 52
Trực quan hoá
# Load thư viện
library(ggplot2)
library(RColorBrewer) # dùng cho palette màu
# Hàm tái sử dụng để xử lý và vẽ biểu đồ
plot_pie <- function(data, var, title) {
tab <- table(data[[var]])
df <- as.data.frame(tab)
colnames(df) <- c("Category", "Frequency")
df$Percentage <- df$Frequency / sum(df$Frequency) * 100
df$Label <- paste0(round(df$Percentage, 1), "%")
ggplot(df, aes(x = "", y = Percentage, fill = Category)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") +
theme_void() +
geom_text(aes(label = Label), position = position_stack(vjust = 0.5), size = 5) +
labs(title = title, fill = var) +
scale_fill_brewer(palette = "Pastel1")
}
plot_pie(data, "Has_Hypertension", "Phân bố tình trạng măc cao huyết áp")
Nhận xét
Trong bộ dữ liệu gồm các cá nhân từ 18 đến 84 tuổi đến khám bệnh, nhóm có chẩn đoán tăng huyết áp chiếm 52% (1.032 trường hợp), cao hơn so với nhóm không mắc, chiếm 48% (953 trường hợp). Điều này cho thấy tỷ lệ hiện mắc tăng huyết áp trong quần thể bệnh nhân được ghi nhận là khá cao và có xu hướng nhỉnh hơn so với nhóm không mắc, phản ánh tính phổ biến của bệnh lý này trong dữ liệu nghiên cứu.
THỐNG KÊ TẦN SỐ, TẦN SUẤT
affect_freq <- table(data$BMI)
affect_percent <- prop.table(affect_freq) * 100
data.frame(Affects = names(affect_freq),
Frequency = as.numeric(affect_freq),
Percentage = round(as.numeric(affect_percent), 1))
## Affects Frequency Percentage
## 1 Normal 703 35.4
## 2 Overweight 1182 59.5
## 3 Underweight 100 5.0
Trực quan hóa
plot_pie(data, "BMI", "THỂ TRẠNG")
Nhận xét
Biểu đồ mô tả phân bố thể trạng (BMI) của các bệnh nhân đến khám cho thấy, 59,8% bệnh nhân có chỉ số BMI nằm trong ngưỡng bình thường, trong khi 35,3% thuộc nhóm thừa cân (overweight) và 4,9% thiếu cân (underweight).
Trong trường hợp này ta lập bảng tần số giữa hai biến Thể Trạng và MẮC CAO HUYẾT ÁP của bệnh nhân tham gia khảo sát . Bảng tần số giúp chúng ta hiểu rõ hơn sự khác nhau theo 2 nhóm.
table_caohuyetap_bmi <- table(data$Has_Hypertension, data$BMI)
addmargins(table_caohuyetap_bmi)
##
## Normal Overweight Underweight Sum
## No 368 532 53 953
## Yes 335 650 47 1032
## Sum 703 1182 100 1985
Kết quả bảng tần số chéo cho thấy nhóm Overweight có số lượng bệnh nhân mắc tăng huyết áp cao nhất (650 trường hợp) và cũng là nhóm có số người không mắc tăng huyết áp lớn nhất (532 trường hợp), phản ánh rằng thừa cân chiếm tỷ trọng cao trong cả hai nhóm nhưng đặc biệt liên quan đến tỷ lệ mắc cao hơn.
Nhóm Normal BMI có phân bố tương đối cân bằng giữa người mắc (335) và không mắc (368), cho thấy mức cân nặng bình thường không loại trừ hoàn toàn nguy cơ tăng huyết áp.
Nhóm Underweight có số lượng ít nhất (53 không mắc; 47 mắc), đồng thời tỷ lệ mắc và không mắc gần tương đương, nhưng do quy mô mẫu nhỏ nên mức độ khái quát cần được cân nhắc.
Phát hiện này đặt ra yêu cầu cần kiểm định mối liên hệ thống kê giữa hai biến này bằng các phương pháp như kiểm định Chi-squared hoặc mô hình hồi quy logistic, nhằm đánh giá xem giới tính có ảnh hưởng độc lập đến nguy cơ mắc cao huyết áp hay không khi kiểm soát các yếu tố khác.
# Bảng chéo
table_caohuyetap_bmi <- table(data$Has_Hypertension, data$BMI)
# Chuyển thành data frame để dùng với ggplot
df_plot <- as.data.frame(table_caohuyetap_bmi)
colnames(df_plot) <- c("Has_Hypertension", "BMI", "Count")
# Biểu đồ
ggplot(df_plot, aes(x = BMI, y = Count, fill = Has_Hypertension)) +
geom_col(position = "dodge") +
labs(title = "Tình trạng mắc cao huyết áp theo giới tính",
x = "Thể Trạng (BMI)",
y = "Số lượng Mắc Cao Huyết Áp",
fill = "Cao Huyết Áp") +
theme_minimal()
Biểu đồ trên thể hiện mối quan hệ giữa tình trạng BMI (thể trạng) và tình trạng mắc cao huyết áp trong mẫu dữ liệu thu thập từ nhóm bệnh nhân độ tuổi 18–84. Kết quả cho thấy:
Nhóm Overweight (thừa cân) chiếm tỷ trọng lớn nhất và có số lượng người mắc cao huyết áp cao hơn rõ rệt so với nhóm không mắc (khoảng 650 so với 532 trường hợp). Điều này gợi ý rằng tình trạng thừa cân có thể là một yếu tố liên quan chặt chẽ đến nguy cơ mắc cao huyết áp.
Nhóm Normal BMI (cân nặng bình thường) có số lượng người không mắc cao huyết áp (368) nhỉnh hơn so với nhóm mắc (335), nhưng sự chênh lệch không đáng kể. Điều này cho thấy ngay cả trong nhóm có cân nặng bình thường, nguy cơ cao huyết áp vẫn tồn tại ở mức đáng kể.
Nhóm Underweight (thiếu cân) có quy mô mẫu nhỏ nhất và tỷ lệ mắc – không mắc gần như tương đương (47 so với 53), đồng thời thấp hơn rất nhiều so với hai nhóm còn lại.
Biểu đồ làm nổi bật xu hướng rằng thừa cân có liên quan đến tỷ lệ mắc cao huyết áp cao hơn trong quần thể nghiên cứu, trong khi nhóm thiếu cân chiếm tỷ lệ rất nhỏ, có thể không đủ lớn để rút ra kết luận mạnh mẽ về mối liên hệ giữa thiếu cân và cao huyết áp.
install.packages("epitools", repos = "http://cran.rstudio.com")
## Warning: package 'epitools' is in use and will not be installed
library(epitools)
Trong phần này, tôi sẽ thực hiện tính Relative Risk nhằm phân tích sự ảnh hưởng của 3 nhóm thể trạng lên khả năng mắc bệnh cao huyết áp của các bệnh nhân tham gia khảo sát. Chúng ta sẽ tính toán Nguy cơ tương đối (RR), lấy nhóm Normal (Bình Thường) làm nhóm tham chiếu.
# Tạo bảng tần số
tab <- matrix(c(334,368, # Normal: Yes, No
650,532, # Overweight: Yes, No
47,53), # Underweight: Yes, No
nrow=3, byrow=TRUE)
# Đặt tên hàng và cột
rownames(tab) <- c("Normal", "Overweight", "Underweight")
colnames(tab) <- c("Yes", "No")
# Tính Risk Ratio
rr_result <- riskratio(tab, rev="columns")
# Xem kết quả
print(rr_result)
## $data
## No Yes Total
## Normal 368 334 702
## Overweight 532 650 1182
## Underweight 53 47 100
## Total 953 1031 1984
##
## $measure
## NA
## risk ratio with 95% C.I. estimate lower upper
## Normal 1.0000000 NA NA
## Overweight 1.1558102 1.0529395 1.268731
## Underweight 0.9878443 0.7910661 1.233571
##
## $p.value
## NA
## two-sided midp.exact fisher.exact chi.square
## Normal NA NA NA
## Overweight 0.001864242 0.001935219 0.001841859
## Underweight 0.915293741 1.000000000 0.913715645
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Phân tích Risk Ratio (RR) khẳng định quan sát trên khi nhóm thừa cân có RR = 1,115 (95% CI: 1,052 – 1,268; p ≈ 0,0018), nghĩa là nguy cơ mắc cao huyết áp ở nhóm này cao hơn khoảng 15,6% so với nhóm bình thường và sự khác biệt này có ý nghĩa thống kê. Ngược lại, nhóm thiếu cân có RR = 0,987 (95% CI: 0,792 – 1,237; p ≈ 0,91), thể hiện nguy cơ mắc tương đương nhóm bình thường và không đạt được mức ý nghĩa thống kê.
Kết quả trên củng cố giả thuyết rằng thừa cân là một yếu tố nguy cơ quan trọng đối với sự xuất hiện cao huyết áp. Trong khi đó, thiếu cân dường như không làm thay đổi đáng kể nguy cơ mắc bệnh. Những phát hiện này phù hợp với nhiều nghiên cứu dịch tễ học trước đây, vốn đã chỉ ra mối liên hệ giữa tình trạng thừa cân, béo phì và sự gia tăng tỷ lệ mắc các bệnh lý tim mạch, đặc biệt là cao huyết áp.
or_result <- oddsratio(tab, rev="columns")
# Xem kết quả
print(or_result)
## $data
## No Yes Total
## Normal 368 334 702
## Overweight 532 650 1182
## Underweight 53 47 100
## Total 953 1031 1984
##
## $measure
## NA
## odds ratio with 95% C.I. estimate lower upper
## Normal 1.0000000 NA NA
## Overweight 1.3458995 1.1161231 1.623679
## Underweight 0.9774286 0.6401855 1.488354
##
## $p.value
## NA
## two-sided midp.exact fisher.exact chi.square
## Normal NA NA NA
## Overweight 0.001864242 0.001935219 0.001841859
## Underweight 0.915293741 1.000000000 0.913715645
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Phân tích Odds Ratio (OR) nhằm so sánh khả năng mắc cao huyết áp giữa các nhóm Thể Trạng, với nhóm Normal được chọn làm nhóm tham chiếu.
Nhận xét
Kết quả phân tích Odds Ratio (OR) chỉ ra rằng nhóm thừa cân có khả năng mắc cao huyết áp cao hơn nhóm bình thường với OR = 1,345 (95% CI: 1,116 – 1,623; p ≈ 0,001). Điều này đồng nghĩa với việc những người thuộc nhóm thừa cân có odds mắc cao huyết áp lớn hơn khoảng 32% so với nhóm bình thường, và sự khác biệt này mang ý nghĩa thống kê.
Ngược lại, nhóm thiếu cân có OR = 0,981 (95% CI: 0,791 – 1,233; p ≈ 0,91), thể hiện rằng odds mắc cao huyết áp ở nhóm này tương đương với nhóm bình thường và không có sự khác biệt có ý nghĩa thống kê.
Kết quả này củng cố nhận định rằng thừa cân là một yếu tố liên quan mạnh đến sự gia tăng khả năng mắc cao huyết áp, trong khi tình trạng thiếu cân không cho thấy ảnh hưởng đáng kể. Xu hướng này phù hợp với nhiều nghiên cứu dịch tễ học trước đây, vốn đã chỉ ra rằng tích lũy mỡ cơ thể, đặc biệt là mỡ nội tạng, có vai trò quan trọng trong việc làm tăng nguy cơ tăng huyết áp thông qua các cơ chế liên quan đến rối loạn chuyển hóa và điều hòa mạch máu.
Chúng ta sử dụng kiểm định Chi bình phương để kiểm tra giả thuyết về tính độc lập giữa BMI và khả năng mắc bệnh.
Giả thuyết kiểm định:
H₀ (Giả thuyết không) : BMI và mắc cao huyết áp là hai biến độc lập.
H₁ (Giả thuyết đối): BMI và mắc cao huyết áp là hai biến phụ thuộc.
# Kiểm định Chi bình phương
chisq.test(table_caohuyetap_bmi)
##
## Pearson's Chi-squared test
##
## data: table_caohuyetap_bmi
## X-squared = 10.562, df = 2, p-value = 0.005088
Kết quả kiểm định
\[ \chi^2 = 10.562,\quad df = 2,\quad p\text{-value} = 0.005088 \]
Kết quả kiểm định Pearson’s Chi-squared test cho bảng chéo giữa BMI và tình trạng cao huyết áp cho thấy giá trị thống kê = 10.562 với 2 bậc tự do và giá trị p = 0.005088. Vì p < 0.05, có thể bác bỏ giả thuyết không (H₀) rằng BMI và tình trạng cao huyết áp là độc lập. Điều này hàm ý rằng có mối liên hệ có ý nghĩa thống kê giữa chỉ số BMI và khả năng mắc cao huyết áp trong quần thể được phân tích.
Sau khi thực hiện các kiểm định thống kê nhằm đánh giá mối liên hệ giữa bmi và khả năng mắc cao huyết áp, kết quả cho thấy THỪA CÂN có ảnh hưởng rõ rệt đến nguy cơ mắc cao huyết áp. Tuy nhiên, để hiểu rõ hơn về mức độ ảnh hưởng của từng yếu tố cũng như xây dựng một mô hình dự đoán khả năng mắc cao huyết áp, nghiên cứu tiếp tục triển khai phân tích hồi quy tuyến tính.
Việc sử dụng mô hình hồi quy giúp định lượng mối liên hệ giữa biến phụ thuộc (mắc cao huyết áp hay không) với các biến độc lập (bmi, tuổi, tiền sử huyết áp, tình trạng hút thuốc,…). Qua đó, ta có thể xác định được yếu tố nào là nguy cơ đáng kể đối với mắc cao huyết áp, cũng như dự đoán khả năng mắc cao huyết áp của một bệnh nhân dựa trên đặc điểm lâm sàng ban đầu.
Để xây dựng mô hình, chúng ta sẽ đặt nhóm Normal làm mức tham chiếu để các hệ số có thể được diễn giải một cách hợp lý.
# Đặt lại nhóm tham chiếu
data$BMI <- relevel(data$BMI, ref = "Normal")
data$Hypertension_bin <- ifelse(data$Has_Hypertension == "Yes", 1, 0)# Chạy lại mô hình hồi quy
model_ref_bio <- glm(Hypertension_bin ~ BMI, data = data)
summary(model_ref_bio)
##
## Call:
## glm(formula = Hypertension_bin ~ BMI, data = data)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.476529 0.018807 25.338 < 2e-16 ***
## BMIOverweight 0.073386 0.023750 3.090 0.00203 **
## BMIUnderweight -0.006529 0.053294 -0.123 0.90251
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.2486517)
##
## Null deviance: 495.46 on 1984 degrees of freedom
## Residual deviance: 492.83 on 1982 degrees of freedom
## AIC: 2875.7
##
## Number of Fisher Scoring iterations: 2
Phương trình ước lượng:
\[ \hat{Y} = 0.476529 + 0.073386 \times BMI_{Overweight} - 0.006529 \times BMI_{Underweight} \]
Trong đó:
\(\hat{Y}\): giá trị trung bình biến Hypertension_bin (xấp xỉ xác suất mắc cao huyết áp).
\(BMI_{Overweight}\) và \(BMI_{Underweight}\): biến giả (dummy variables), với nhóm tham chiếu là Normal.
| Biểu hiện | Hệ số | Giải thích |
|---|---|---|
| (Intercept) | 0.476529 | Nhóm Normal có xác suất mắc cao huyết áp khoảng 47.9%. |
| BMIOverweight | +0.073386 | Nhóm Overweight có xác suất mắc cao huyết áp cao hơn 7% so với nhóm Normal (p = 0.003). |
| BMIUnderweight | -0.006529 | Nhóm Underweight không khác biệt đáng kể so với nhóm Normal (p = 0.902). |
Mô hình hồi quy Logistic là mô hình hồi quy nhị phân phổ biến nhất. Nó thuộc họ GLM với hai đặc điểm chính:
Mô hình giả định rằng logit của xác suất thành công \((\pi = P(Y = 1 \mid \mathbf{X}))\) là một hàm tuyến tính của các biến độc lập:
\[ \text{logit}(\pi) = \log\left(\frac{\pi}{1 - \pi}\right) = \beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k \]
Hàm ngược của nó – hàm logistic – cho phép tính toán xác suất:
\[ \pi = \frac{\exp(\beta_0 + \cdots + \beta_k X_k)}{1 + \exp(\beta_0 + \cdots + \beta_k X_k)} \]
Hàm này luôn tạo ra giá trị \(\pi\) trong khoảng (0, 1) và có dạng hình chữ S.
# Mô hình hồi quy logistic với biến bmi
model_logit_bmi <- glm(Hypertension_bin ~ BMI, family = binomial(link = "logit"), data = data)
# Xem kết quả
summary(model_logit_bmi)
##
## Call:
## glm(formula = Hypertension_bin ~ BMI, family = binomial(link = "logit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.09395 0.07551 -1.244 0.21344
## BMIOverweight 0.29428 0.09550 3.081 0.00206 **
## BMIUnderweight -0.02619 0.21412 -0.122 0.90264
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2738.1 on 1982 degrees of freedom
## AIC: 2744.1
##
## Number of Fisher Scoring iterations: 3
Mô hình hồi quy Logit là một dạng của hồi quy logistic, sử dụng hàm liên kết logit:
\[ \text{logit}(\pi) = \log\left(\frac{\pi}{1 - \pi}\right) \]
Từ kết quả mô hình, ta thu được phương trình hồi quy logit:
\[ \log\left(\frac{\pi}{1 - \pi}\right) = -0.09395 + 0.29428 \cdot \text{Overweight} -0.02619 \cdot \text{Underweight} \]
| Nhóm BMI | Hệ số (log-odds) | p-value | Odds Ratio (\(e^{\beta}\)) | Giải thích |
|---|---|---|---|---|
| (Intercept) | -0.09395 | 0.213 | 0.91 | Nhóm tham chiếu là Bình thường (Normal weight), odds mắc tăng huyết áp cơ bản ~0.91 (không khác biệt có ý nghĩa). |
| Overweight | +0.29428 | 0.002** | 1.34 | Nhóm thừa cân có odds mắc tăng huyết áp cao hơn 1.34 lần so với nhóm bình thường (p = 0.002, có ý nghĩa thống kê). |
| Underweight | -0.02619 | 0.903 | 0.97 | Nhóm thiếu cân không có sự khác biệt đáng kể về odds mắc tăng huyết áp so với nhóm bình thường (p = 0.903). |
Tỷ số Odds (Odds Ratio)
# Tính Odds Ratio
exp(coef(model_logit_bmi))
## (Intercept) BMIOverweight BMIUnderweight
## 0.9103261 1.3421614 0.9741481
Nhận xét
Phân tích hồi quy logistic được thực hiện nhằm đánh giá ảnh hưởng của tình trạng BMI đến khả năng mắc cao huyết áp. Kết quả cho thấy hệ số ước lượng cho biến BMIOverweight là 0.294 (p = 0.002), cho thấy sự khác biệt có ý nghĩa thống kê giữa nhóm thừa cân và nhóm BMI bình thường (tham chiếu). Cụ thể, nhóm thừa cân có log-odds mắc cao huyết áp cao hơn đáng kể. Khi chuyển đổi sang odds ratio, ta có exp(0.294)≈1.34, nghĩa là nhóm thừa cân có nguy cơ mắc cao huyết áp cao hơn khoảng 34% so với nhóm BMI bình thường.
Đối với biến BMIUnderweight, hệ số ước lượng là -0.026 (p = 0.903), không có ý nghĩa thống kê. Điều này cho thấy nhóm thiếu cân không khác biệt rõ rệt về nguy cơ mắc cao huyết áp so với nhóm bình thường.
Mô hình có giá trị AIC = 2744.1, phản ánh mức độ phù hợp chấp nhận được đối với dữ liệu đơn biến.
Kết quả này khẳng định thừa cân là một yếu tố nguy cơ đáng kể liên quan đến khả năng mắc cao huyết áp, trong khi thiếu cân không có ảnh hưởng rõ rệt.
Phân tích mối liên hệ giữa bmi và khả năng mắc cao huyết áp, sử dụng mô hình Probit, nhằm so sánh với mô hình Logit đã thực hiện trước đó.
Mô hình hồi quy Probit là một dạng mô hình hồi quy nhị phân, tương tự như Logistic, nhưng sử dụng hàm liên kết dựa trên phân phối chuẩn tắc tích lũy thay vì hàm logit.
Thành phần ngẫu nhiên: Biến phản hồi \(Y \in \{0, 1\}\) tuân theo phân phối Bernoulli (hoặc Binomial).
Mô hình sử dụng hàm liên kết Probit, là nghịch đảo của hàm phân phối tích lũy (CDF) chuẩn:
\[ g(\pi) = \Phi^{-1}(\pi) \]
trong đó \(\Phi^{-1}\) là nghịch đảo của hàm phân phối chuẩn chuẩn hóa (mean = 0, std = 1).
Dạng mô hình:
\[ \Phi^{-1}(\pi) = \beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k \]
\[ \pi = \Phi(\beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k) \]
Diễn giải:
Mô hình Probit giả định tồn tại một biến tiềm ẩn \(Z \sim \mathcal{N}(0, 1)\), và xác suất xảy ra sự kiện \(Y = 1\) là xác suất mà biến tiềm ẩn vượt ngưỡng.
Vì sử dụng phân phối chuẩn, Probit có nền tảng lý thuyết sâu hơn về xác suất tiềm ẩn, đặc biệt trong các mô hình kinh tế lượng.
So sánh với Logistic:
Cả hai mô hình đều phù hợp cho dữ liệu nhị phân.
Probit thường được sử dụng khi cần giả định tính chuẩn của sai số.
Sự khác biệt chính nằm ở hình dạng hàm liên kết: Logistic có đuôi dày hơn (phân phối Logistic có phân phối chuẩn hóa tương tự chuẩn, nhưng biến thiên lớn hơn).
Biểu diễn hình chữ S:
Cũng như mô hình logit, mô hình Probit tạo ra xác suất \(\pi \in (0, 1)\) và có đồ thị dạng hàm chữ S (sigmoid), nhưng dốc và tốc độ hội tụ khác so với logit.
# Mô hình Probit
probit_model_bmi <- glm(Hypertension_bin ~ BMI, family = binomial(link = "probit"), data = data)
# Xem kết quả mô hình
summary(probit_model_bmi)
##
## Call:
## glm(formula = Hypertension_bin ~ BMI, family = binomial(link = "probit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.05887 0.04730 -1.245 0.21330
## BMIOverweight 0.18431 0.05978 3.083 0.00205 **
## BMIUnderweight -0.01640 0.13408 -0.122 0.90263
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2738.1 on 1982 degrees of freedom
## AIC: 2744.1
##
## Number of Fisher Scoring iterations: 3
\[ g(\pi) = \Phi^{-1}(\pi) \]
\[ g(\pi) = \Phi^{-1}(\pi) \]
Từ kết quả mô hình:
\[ \pi = \Phi\left(-0.05887 + 0.18431 \cdot \text{BMIOverweight} - 0.01640 \cdot \text{BMIUnderweight}\right) \]
Khi BMI tăng từ bình thường sang thừa cân, xác suất mắc cao huyết áp tăng thêm: \[ \Phi(-0.05887 + 0.18431) - \Phi(-0.05887) = \Phi(0.12544) - \Phi(-0.05887) \approx 0.5499 - 0.4765 = 0.0734 \] → Nhóm thừa cân có xác suất mắc cao huyết áp cao hơn khoảng 7.3% so với nhóm bình thường (có ý nghĩa thống kê).
Diễn giải hệ số
| Biến | Hệ số (Estimate) | p-value | Giải thích |
|---|---|---|---|
| (Intercept) | -0.05887 | 0.213 | Nhóm BMI bình thường (tham chiếu) có xác suất mắc cao huyết áp khoảng \(\Phi(-0.05887) \approx 47.7\%\). Không có ý nghĩa thống kê. |
| BMIOverweight | +0.18431 | 0.002 | Nhóm thừa cân có xác suất mắc cao huyết áp khoảng \(\Phi(-0.05887+0.18431) \approx 54.8\%\), tăng ~7.1 điểm % so với nhóm bình thường (p < 0.01). |
| BMIUnderweight | -0.01640 | 0.903 | Nhóm thiếu cân có xác suất mắc cao huyết áp gần tương đương nhóm bình thường (≈47%), không có ý nghĩa thống kê. |
Nhận xét
Bảng tổng hợp kết quả ba mô hình hồi quy
| Mô hình | Hệ số chặn \(\hat{\beta}_0\) | Hệ số BMIOverweight \(\hat{\beta}_1\) | Giá trị p (BMIOverweight) | AIC | Diễn giải đáng chú ý |
|---|---|---|---|---|---|
| GLM | 0.4765 | 0.0734 | 0.00206 | 2744.1 | Thừa cân làm tăng xác suất mắc cao huyết áp khoảng 7.3% |
| Logit | -0.09395 | 0.29428 | 0.00206 | 2744.1 | OR = \(e^{0.29428} \approx 1.34\) (nguy cơ cao hơn ~34%) |
| Probit | -0.05887 | 0.18431 | 0.00205 | 2744.1 | \(\Phi(0.1254) - \Phi(-0.0589) \approx 7.3\%\) |
Cả ba mô hình đều cho thấy nhóm thừa cân (BMIOverweight) có ảnh hưởng có ý nghĩa thống kê (p ≈ 0.002) đến nguy cơ mắc cao huyết áp, với mức tăng xác suất khoảng 7.3% so với nhóm BMI bình thường.
AIC bằng nhau (2744.1) cho Logit và Probit, cho thấy chúng phù hợp tương đương và đều tốt hơn LPM (GLM tuyến tính) về mặt lý thuyết.
Trong ứng dụng thực tiễn:
Logit được ưu tiên vì dễ diễn giải: người thừa cân có odds mắc cao huyết áp cao hơn khoảng 1.34 lần so với người bình thường.
Probit mô tả tương tự nhưng cần dùng phân phối chuẩn tích lũy để giải thích.
Do đó, mô hình Logit là lựa chọn thích hợp để báo cáo kết quả trong nghiên cứu này.
Trong phần này, chúng ta sẽ phân tích mối liên hệ giữa tình trạng hút thuốc của bệnh nhân và khả năng mắc cao huyết áp ung thư tuyến giáp biệt hóa sau điều trị. Biến độc lập là Smoking (có hoặc không hút thuốc) và biến phụ thuộc là Hypertension (có hoặc không mắc cao huyết áp).
tab_smoking <- table(data$Smoking_Status)
tab_smoking
##
## Non-Smoker Smoker
## 1417 568
barplot(tab_smoking,
main = "Biểu đồ tần số tình trạng hút thuốc",
xlab = "Tình trạng hút thuốc",
ylab = "Tần số",
col = c("lightcyan", "lightcoral"),
border = "white",
ylim = c(0, max(tab_smoking) + 40)) -> bp_smoking
text(x = bp_smoking, y = tab_smoking + 15, labels = tab_smoking)
# Tạo dataframe từ bảng tần số
smoking_freq <- as.data.frame(tab_smoking)
colnames(smoking_freq) <- c("Smoking", "Frequency")
# Tính phần trăm
smoking_freq$Percentage <- smoking_freq$Frequency / sum(smoking_freq$Frequency) * 100
# Tạo nhãn
smoking_freq$Label <- paste0(round(smoking_freq$Percentage, 1), "%")
# Vẽ biểu đồ tròn
ggplot(smoking_freq, aes(x = "", y = Percentage, fill = Smoking)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") +
theme_void() +
geom_text(aes(label = Label), position = position_stack(vjust = 0.5), size = 5) +
labs(title = "Phân bố tình trạng hút thuốc của các bệnh nhân") +
scale_fill_manual(values = c("No" = "lightcyan", "Yes" = "lightcoral"))
## Warning: No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
## No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
## No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
Trong phần này, chúng ta sẽ phân tích mối liên hệ giữa tình trạng hút thuốc của bệnh nhân và khả năng mắc bệnh cao huyết áp. Biến độc lập là Smoking_Status (có hoặc không hút thuốc) và biến phụ thuộc là Has_Hypertension (có hoặc không bị cao huyết áp).
tab_smoking <- table(data$Smoking_Status)
tab_smoking
##
## Non-Smoker Smoker
## 1417 568
Kết quả trên sẽ được trực quan hóa bằng biểu đồ cột để so sánh số lượng giữa hai nhóm.
barplot(tab_smoking,
main = "Biểu đồ tần số tình trạng hút thuốc",
xlab = "Tình trạng hút thuốc",
ylab = "Tần số",
col = c("blue", "lightcoral"),
border = "white",
ylim = c(0, max(tab_smoking) + 40)) -> bp_smoking
text(x = bp_smoking, y = tab_smoking + 15, labels = tab_smoking)
Thông qua bảng tần số và biểu đồ, ta thấy rằng trong tổng số 1985 bệnh nhân, có 1417 người không hút thuốc (Non-Smoker), cao gần gấp 2,5 lần so với nhóm hút thuốc . Trong khi đó, số bệnh nhân có hút thuốc (Smoker) là 568 người. Tiếp theo, chúng ta sẽ tính tỷ lệ phần trăm và vẽ biểu đồ tròn để thể hiện rõ hơn sự chênh lệch về mặt tương đối giữa hai nhóm.
Trực quan hóa
plot_pie(data, "Smoking_Status", "Phân Loại Tình Trạng Hút Thuốc")
biểu đồ tròn thể hiện tỷ lệ phần trăm: nhóm Non-Smoker chiếm 71,4%, trong khi nhóm Smoker chiếm 28,6%. Điều này cho thấy phần lớn đối tượng trong nghiên cứu không hút thuốc, phản ánh xu hướng hạn chế hành vi hút thuốc trong quần thể khảo sát. Sự chênh lệch lớn này cho thấy thói quen hút thuốc không phải là một đặc điểm phổ biến trong nhóm bệnh nhân được khảo sát. Tuy nhiên, điều quan trọng là phải phân tích xem liệu nhóm thiểu số này có nguy cơ mắc cao huyết áp cao hơn hay không.
Chúng ta sẽ lập bảng tần số chéo giữa hai biến Smoking và Has_Hypertension để xem xét mối quan hệ sơ bộ giữa chúng.
# Đổi tên levels của biến Smoking
data$Smoking <- factor(data$Smoking_Status, levels = c("Non-Smoker", "Smoker"),
labels = c("Không hút thuốc", "Hút thuốc"))
# Tạo lại bảng tần số
table_Hypertension_smoking <- table(data$Smoking, data$Has_Hypertension)
table_Hypertension_smoking
##
## No Yes
## Không hút thuốc 793 624
## Hút thuốc 160 408
Bảng tần số chéo cho thấy:
Trong nhóm không hút thuốc (No): có 793 người không mắc cao huyết áp và 624 người mắc cao huyết áp. Trong nhóm có hút thuốc (Yes): có 160 người không mắc cao huyết áp và 408 người mắc cao huyết áp.
Một quan sát ban đầu đáng chú ý là ở nhóm hút thuốc, số ca mắc cao huyết áp (408) gần cao hơn gấp gần 3 lần so với số ca không mắc cao huyết áp (160). . Điều này gợi ý rằng tỷ lệ mắc bệnh ở nhóm bệnh nhân hút thuốc có thể cao hơn.
Để làm rõ hơn nhận định trên, chúng ta sẽ sử dụng biểu đồ cột nhóm.
# Chuyển bảng tần số thành data frame đúng chiều
df_plot_smoking <- as.data.frame(table_Hypertension_smoking)
colnames(df_plot_smoking) <- c("Smoking_Status", "Has_Hypertension", "Count")
# Vẽ biểu đồ
library(ggplot2)
ggplot(df_plot_smoking, aes(x = Smoking_Status, y = Count, fill = Has_Hypertension)) +
geom_col(position = "dodge") +
labs(title = "Tình trạng cao huyết theo tình trạng hút thuốc",
x = "Tình trạng hút thuốc",
y = "Số lượng bệnh nhân",
fill = "Tình trạng mắc bệnh cao huyết áp") +
theme_minimal() +
scale_fill_manual(values = c("No" = "skyblue", "Yes" = "salmon"))
Biểu đồ cột trực quan hóa một cách rõ ràng sự khác biệt đã nêu:
Ở nhóm không hút thuốc: Cột “Không mắc cao huyết áp” (màu xanh) cao hơn cột “mắc cao huyết áp” (màu hồng).
Ở nhóm có hút thuốc: Cột “mắc cao huyết áp” (màu hồng) cao hơn rất nhiều so với cột “Không mắc cao huyết áp” (màu xanh).
Biểu đồ củng cố mạnh mẽ giả thuyết rằng việc hút thuốc có liên quan đến nguy cơ mắc cao huyết áp cao hơn. Bệnh nhân hút thuốc dường như có tỷ lệ mắc cao huyết áp cao gấp 250%, trong khi tỷ lệ này ở người không hút thuốc thấp hơn đáng kể.
Tiếp theo, chúng ta tính toán Nguy cơ tương đối (Relative Risk - RR) để định lượng mức độ ảnh hưởng của việc hút thuốc đến khả năng mắc cao huyết áp. Nhóm không hút thuốc sẽ được coi là nhóm phơi nhiễm gốc (baseline).
riskratio(table_Hypertension_smoking)
## $data
##
## No Yes Total
## Không hút thuốc 793 624 1417
## Hút thuốc 160 408 568
## Total 953 1032 1985
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Không hút thuốc 1.000000 NA NA
## Hút thuốc 1.631162 1.508637 1.763638
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Không hút thuốc NA NA NA
## Hút thuốc 0 8.212484e-30 3.971194e-29
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Dựa trên bảng tần số đã được giải thích rõ ở phần trước tôi sẽ tính toán Relative Risk trong đó biến độc lập là tình trạng hút thuốc và phụ thuộc là khả năng mắc cao huyết áp. Nhóm tham chiếu là bệnh nhân không hút thuốc và không bị mắc cao huyết áp. Và nhóm đối tượng cần quan tâm là bệnh nhân đang trong tình trạng hút thuốc và bị mắc cao huyết áp.
Phân tích Risk Ratio (RR) giữa tình trạng hút thuốc và nguy cơ mắc cao huyết áp
Bảng tần số
| Nhóm hút thuốc | Cao huyết áp (Yes) | Không cao huyết áp (No) | Tổng |
|---|---|---|---|
| Không hút thuốc | 624 | 793 | 1417 |
| Hút thuốc | 408 | 160 | 568 |
| Tổng | 1032 | 953 | 1985 |
Công thức tính nguy cơ (Risk)
\[ \text{Risk} = \frac{\text{Số ca mắc (Yes)}}{\text{Tổng số trong nhóm}} \]
\[\text{Risk}_{\text{Không hút thuốc}} = \frac{624}{1417} \approx 0.4403\] \[\text{Risk}_{\text{Hút thuốc}} = \frac{408}{568} \approx 0.7183\]
Công thức tính Risk Ratio (RR)
\[ RR = \frac{\text{Risk}_{\text{Hút thuốc}}}{\text{Risk}_{\text{Không hút thuốc}}} \]
\[ RR = \frac{0.7183}{0.4403} \approx 1.63 \]
Nhận xét:
Tỷ lệ mắc cao huyết áp ở nhóm hút thuốc là 408/568 ≈ 71,8%, cao hơn đáng kể so với nhóm không hút thuốc (624/1417 ≈ 44,1%).
Risk Ratio (RR) = 1,63; 95% CI: [1,51 – 1,76]; p < 0,001: → Điều này chứng minh rằng nhóm hút thuốc có nguy cơ mắc cao huyết áp cao gấp khoảng 1,63 lần so với nhóm không hút thuốc, và kết quả có ý nghĩa thống kê rất mạnh (p gần bằng 0).
Khoảng tin cậy (CI) không bao gồm 1, cho thấy mối liên hệ này ổn định và đáng tin cậy.
Kết luận từ các kiểm định:
| mắc cao huyết áp | midp.exact | fisher.exact | chi.square |
|---|---|---|---|
| No | NA | NA | NA |
| Yes | 0 | 0 8.212484e-30 | 3.971194e-29 |
Các giá trị p-value từ cả ba phương pháp kiểm định (Mid-p exact, Fisher exact, và Chi-square) đều rất nhỏ (p < 0.001). Điều này bác bỏ giả thuyết không (H₀: không có mối liên hệ giữa hút thuốc và mắc cao huyết áp) và khẳng định rằng có một mối liên hệ có ý nghĩa thống kê rất mạnh mẽ giữa hai biến này.
oddsratio(table_Hypertension_smoking, conf.level = 0.95)
## $data
##
## No Yes Total
## Không hút thuốc 793 624 1417
## Hút thuốc 160 408 568
## Total 953 1032 1985
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Không hút thuốc 1.000000 NA NA
## Hút thuốc 3.237094 2.626336 4.005022
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Không hút thuốc NA NA NA
## Hút thuốc 0 8.212484e-30 3.971194e-29
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Công thức tính Odds
\[ \text{Odds} = \frac{\text{Số ca mắc (Yes)}}{\text{Số ca không mắc (No)}} \]
Công thức tính Odds Ratio (OR)
\[ \text{Odds} = \frac{\text{Odds Hút thuốc}}{\text{Odds không Hút thuốc}} \]
Nhận xét: Kết quả cho thấy Tỷ số chênh (OR) là 3.237 Điều này có nghĩa là “odds” (tỷ lệ giữa xác suất xảy ra và không xảy ra) của việc mắc cao huyết áp ở nhóm bệnh nhân hút thuốc cao gấp 3.237 lần so với “odds” mắc cao huyết áp ở nhóm bệnh nhân không hút thuốc. Kết quả này có ý nghĩa thống kê cao (p-value < 0.001), cho thấy hút thuốc là một yếu tố nguy cơ có liên quan mạnh mẽ đến khả năng mắc cao huyết áp trong bộ dữ liệu nghiên cứu.
Chúng ta sử dụng kiểm định Chi bình phương để kiểm tra giả thuyết về tính độc lập giữa tình trạng hút thuốc và khả năng mắc cao huyết áp.
Giả thuyết kiểm định:
# Kiểm định Chi bình phương
chisq.test(table_Hypertension_smoking)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table_Hypertension_smoking
## X-squared = 124.38, df = 1, p-value < 2.2e-16
Kết quả cho thấy giá trị thống kê chi bình phương là 124.38 với 1 bậc tự do, và giá trị p tương ứng là < 2.2 × 10⁻¹. Với p-value nhỏ hơn rất nhiều so với ngưỡng ý nghĩa thông thường (α = 0.05), ta có thể bác bỏ giả thuyết không, rằng hai biến này độc lập với nhau. Điều này chứng tỏ tồn tại mối liên hệ có ý nghĩa thống kê giữa tình trạng hút thuốc và khả năng mắc cao huyết áp. Cụ thể, những người hút thuốc có xu hướng mắc cao huyết áp với tỷ lệ cao hơn so với những người không hút thuốc. Phát hiện này phù hợp với các nghiên cứu y học trước đây, vốn đã chỉ ra rằng việc hút thuốc làm gia tăng nguy cơ rối loạn chức năng mạch máu, dẫn đến tăng huyết áp và các biến chứng tim mạch liên quan.
Để so sánh trực tiếp tỷ lệ mắc cao huyết áp giữa hai nhóm, chúng ta tiến hành kiểm định hiệu hai tỷ lệ.
Gọi p1 là tỷ lệ mắc cao huyết áp ở nhóm hút thuốc, p2 là tỷ lệ mắc cao huyết áp ở nhóm không hút thuốc.
Giả thuyết kiểm định:
H₀: p1 - p2 = 0 (Tỷ lệ mắc cao huyết áp ở hai nhóm là như nhau).
H₁: p1 - p2 > 0 (Tỷ lệ mắc cao huyết áp ở nhóm hút thuốc cao hơn nhóm không hút thuốc).
# Số ca mắc cao huyết áp ở nhóm hút thuốc và không hút thuốc
success_smoking <- c(408, 624)
# Tổng số bệnh nhân trong mỗi nhóm
n_smoking <- c(568, 1417)
# Kiểm định hiệu tỷ lệ một phía
prop.test(success_smoking, n_smoking, alternative = "greater", correct = FALSE)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: success_smoking out of n_smoking
## X-squared = 125.49, df = 1, p-value < 2.2e-16
## alternative hypothesis: greater
## 95 percent confidence interval:
## 0.24007 1.00000
## sample estimates:
## prop 1 prop 2
## 0.7183099 0.4403670
Nhận xét kết quả kiểm định hai tỷ lệ
Kết quả kiểm định hai tỷ lệ độc lập (two-sample proportion test) cho thấy:
Với \(p\)-value nhỏ hơn rất nhiều so với mức ý nghĩa \(\alpha = 0.05\), ta bác bỏ giả thuyết không \((H_0: p_1 - p_2 = 0)\) và chấp nhận giả thuyết đối \((H_1: p_1 - p_2 > 0)\).
Điều này cho thấy tỷ lệ mắc cao huyết áp ở nhóm hút thuốc \((p_1 = 71.83\%)\) cao hơn một cách có ý nghĩa thống kê so với nhóm không hút thuốc \((p_2 = 44.04\%)\).
Khoảng tin cậy 95% cho hiệu tỷ lệ \((p_1 - p_2)\) nằm trong khoảng \([0.240; 1.000]\), xác nhận rằng sự chênh lệch này là dương và có ý nghĩa thống kê.
Kết luận: Hành vi hút thuốc có liên quan chặt chẽ đến việc gia tăng nguy cơ mắc cao huyết áp.
Chúng ta sẽ xây dựng mô hình hồi quy tuyến tính để xem xét ảnh hưởng của việc hút thuốc đến xác suất mắc cao huyết áp.
# Biến nhị phân Hypertension đã được tạo ở phần trước
Hypertension_bin <- ifelse(data$Has_Hypertension == "Yes", 1, 0)
# Xây dựng mô hình hồi quy tuyến tính
hqtt_model_smoking <- glm(Hypertension_bin ~ Smoking, data = data)
# Hiển thị kết quả
summary(hqtt_model_smoking)
##
## Call:
## glm(formula = Hypertension_bin ~ Smoking, data = data)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.44037 0.01285 34.26 <2e-16 ***
## SmokingHút thuốc 0.27794 0.02403 11.57 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.2340598)
##
## Null deviance: 495.46 on 1984 degrees of freedom
## Residual deviance: 464.14 on 1983 degrees of freedom
## AIC: 2754.6
##
## Number of Fisher Scoring iterations: 2
Nhận xét
Kết quả mô hình hồi quy tuyến tính cho thấy hệ số của biến Smoking (đang hút thuốc) là 0.27794, với p-value rất nhỏ (p < 0.001). Điều này có nghĩa là, so với người không hút thuốc, người có hút thuốc có xác suất mắc cao huyết áp cao hơn trung bình là khoảng 27.7%. Hệ số chặn (0.44037) chính là xác suất mắc cao huyết áp ước tính cho nhóm không hút thuốc.
Mặc dù mô hình này dễ diễn giải, OLS không phải mô hình chuẩn cho dữ liệu nhị phân nên sẽ những hạn chế lý thuyết khi áp dụng cho biến phụ thuộc nhị phân . Do đó, chúng ta sẽ xem xét các mô hình phù hợp hơn như Logit và Probit.
Mô hình hồi quy Logistic được áp dụng để mô hình hóa log của tỷ số chênh (log-odds) của việc mắc cao huyết áp.
# Mô hình hồi quy logistic với biến Smoking
model_logit_smoking <- glm(Hypertension_bin ~ Smoking, family = binomial(link = "logit"), data = data)
# Xem kết quả
summary(model_logit_smoking)
##
## Call:
## glm(formula = Hypertension_bin ~ Smoking, family = binomial(link = "logit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.23967 0.05351 -4.479 7.51e-06 ***
## SmokingHút thuốc 1.17577 0.10754 10.933 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2619.6 on 1983 degrees of freedom
## AIC: 2623.6
##
## Number of Fisher Scoring iterations: 4
Phân tích kết quả Phương trình hồi quy Logit có dạng: \[ \log\left(\frac{\pi}{1 - \pi}\right) = -0.23967 + 1.17577 \cdot \text{Hút thuốc} \]
Hệ số chặn \(\hat{\beta}_0 = -0.23967\): Đây là log-odds mắc cao huyết áp của một bệnh nhân không hút thuốc.
Hệ số hồi quy \(\hat{\beta}_1 = 1.17577\) (p < 0.001): Cho thấy log-odds mắc cao huyết áp ở người hút thuốc cao hơn 1.17577 đơn vị so với người không hút thuốc.
Tỷ số Odds (Odds Ratio):
# Tính Odds Ratio
exp(coef(model_logit_smoking))
## (Intercept) SmokingHút thuốc
## 0.7868852 3.2406250
\[
\text{OR} = e^{1.17577 } \approx 3.2406250
\] Kết quả này cho thấy “odds” măc cao huyết áp ở người hút thuốc
cao gấp 3.24 lần so với người không hút thuốc, hoàn
toàn phù hợp với kết quả từ hàm oddsratio trước đó, mức độ
chênh lệch không quá lớn.
Chúng ta tiếp tục với mô hình Probit, sử dụng hàm phân phối tích lũy chuẩn.
# Mô hình Probit với biến Smoking
probit_model_smoking <- glm(Hypertension_bin ~ Smoking, family = binomial(link = "probit"), data = data)
# Xem kết quả mô hình
summary(probit_model_smoking)
##
## Call:
## glm(formula = Hypertension_bin ~ Smoking, family = binomial(link = "probit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.15004 0.03343 -4.488 7.19e-06 ***
## SmokingHút thuốc 0.72787 0.06514 11.174 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2619.6 on 1983 degrees of freedom
## AIC: 2623.6
##
## Number of Fisher Scoring iterations: 4
Để đánh giá ảnh hưởng của hành vi hút thuốc đến khả năng mắc bệnh cao huyết áp, mô hình hồi quy Probit được xây dựng với biến phụ thuộc là Has_Hypertenison (0: Không mắc cao huyết áp, 1: có mắc cao huyết ấp) và biến độc lập là Smoking (0: không hút thuốc – nhóm tham chiếu, 1: hút thuốc).
Phương trình hồi quy ước lượng như sau:
\[ \pi = \Phi(-0.15004 + 0.72787 \cdot \text{Smoking}) \]
Trong đó: - \(\Phi(\cdot)\): hàm phân phối tích lũy chuẩn tắc (standard normal CDF). - \(\pi\): xác suất mắc bệnh cao huyết áp
Diễn giải kết quả - Hệ số chặn
\(\beta_0 = -0.15004\), p <
0.001:
Đại diện cho xác suất mắc cao huyết áp ở nhóm không hút
thuốc:
\[ \pi_{\text{không hút}} = \Phi(-0.15004) \approx 0.440 \]
\[ \pi_{\text{hút thuốc}} = \Phi(-0.15004 + 0.72787) = \Phi(0.578) \approx 0.718 \]
So sánh xác suất giữa 2 nhóm
\[ \Delta \pi = \pi_{\text{hút thuốc}} - \pi_{\text{không hút}} \approx 0.718 - 0.440 = 0.278 \]
Kết luận
Mô hình Probit cho thấy người hút thuốc có xác suất mắc cao huyết áp cao hơn khoảng 27.8% so với người không hút thuốc. Cả hai hệ số đều có ý nghĩa thống kê rất cao (p < 0.001), khẳng định rằng hành vi hút thuốc là một yếu tố nguy cơ đáng kể trong sự xuất hiện cao huyết áp, cần được lưu ý trong công tác theo dõi và quản lý sức khỏe.
Mô hình hồi quy cloglog là một dạng mô hình hồi quy nhị phân, sử dụng hàm liên kết bất đối xứng để mô tả mối quan hệ giữa xác suất xảy ra của biến phụ thuộc và các biến độc lập. Hàm liên kết cloglog được định nghĩa như sau:
\[ g(\pi) = \log(-\log(1 - \pi)) \]
Trong đó: - \(\pi = \Pr(Y = 1 \mid X)\) là xác suất xảy ra của hiện tượng quan tâm (ví dụ: mắc cao huyết áp bệnh). - \(g(\pi)\) là hàm liên kết theo cloglog.
Khi áp dụng mô hình hồi quy, ta có phương trình:
\[ \log(-\log(1 - \pi)) = \beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k \]
Giải ngược để tính xác suất:
\[ \pi = 1 - \exp\left( -\exp(\eta) \right), \quad \text{trong đó } \eta = \beta_0 + \sum_{j=1}^{k} \beta_j X_j \]
Đặc điểm của mô hình cloglog
model_cloglog <- glm(Hypertension_bin ~ Smoking, family = binomial(link = "cloglog"), data = data)
summary(model_cloglog)
##
## Call:
## glm(formula = Hypertension_bin ~ Smoking, family = binomial(link = "cloglog"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.54391 0.04060 -13.40 <2e-16 ***
## SmokingHút thuốc 0.78052 0.06667 11.71 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2619.6 on 1983 degrees of freedom
## AIC: 2623.6
##
## Number of Fisher Scoring iterations: 4
Trong mô hình hồi quy nhị phân với hàm liên kết complementary log-log (cloglog):
\[ g(\pi) = \log(-\log(1 - \pi)) = \beta_0 + \beta_1 \cdot \text{Smoking} \]
Ta thu được phương trình ước lượng:
\[ \log(-\log(1 - \pi)) = -0.54391 + 0.78052 \cdot \text{Smoking} \]
Trong đó: - \(\text{Smoking} = 1\) nếu bệnh nhân hút thuốc, và \(= 0\) nếu không hút thuốc. - Biến phụ thuộc \(\pi\) là xác suất mắc bệnh.
Diễn giải kết quả:
\[ \pi_{\text{không hút thuốc}} = 1 - \exp\left( -\exp(-0.54391) \right) \approx 0.440 \]
\[ \pi_{\text{hút thuốc}} = 1 - \exp\left( -\exp(−0.5439 + 0.7805) \right) \approx 0.718 \]
Kết luận:
Mô hình cloglog cho thấy hút thuốc là một yếu tố nguy cơ đáng kể đối với cao huyết áp (p < 0.001). Xác suất mắc bệnh ở nhóm hút thuốc (71.8%) cao gần 1.63 lần so với nhóm không hút thuốc(44%), và sự khác biệt này có ý nghĩa thống kê mạnh..
Mô hình cloglog là lựa chọn phù hợp vì phân phối xác suất xảy ra sự kiện (mắc cao huyết áp) có tính chất bất đối xứng.
Bảng tổng hợp 4 mô hình
\[ \begin{array}{|l|l|c|} \hline \textbf{Mô hình} & \textbf{Hàm liên kết (Link function)} & \textbf{AIC} \\ \hline \text{Hồi quy tuyến tính (Linear Regression)} & \text{Identity (Gaussian)} & 2754.6 \\ \hline \text{Hồi quy logistic (Logit)} & \text{Logit} & 2623.6 \\ \hline \text{Hồi quy probit} & \text{Probit} & 2623.6 \\ \hline \text{Hồi quy cloglog} & \text{Complementary log-log} & 2623.6 \\ \hline \end{array} \]
Đánh giá
Trong phân tích mối liên hệ giữa hành vi hút thuốc và khả năng mắc cao huyết áp, tác giả xây dựng và so sánh bốn mô hình: tuyến tính, logit, probit và cloglog.
Mô hình tuyến tính có AIC cao nhất (2754.6), phản ánh mức độ phù hợp thấp hơn đáng kể so với ba mô hình nhị phân.
Ba mô hình logit, probit và cloglog có AIC bằng nhau (2623.6), cho thấy mức độ phù hợp tốt hơn đáng kể.
Dù AIC tương đương, mỗi mô hình có thế mạnh riêng:
Logit thuận tiện khi muốn diễn giải bằng Odds Ratio (OR) – một chỉ số phổ biến trong y tế.
Probit phù hợp khi giả định phân phối chuẩn tiềm ẩn.
Cloglog hiệu quả hơn khi hiện tượng nghiên cứu có phân phối bất đối xứng (ví dụ: bệnh ít gặp hoặc nguy cơ không đối xứng).
Trong nghiên cứu này, cả ba mô hình nhị phân đều cho thấy hút thuốc làm tăng xác suất mắc cao huyết áp một cách có ý nghĩa thống kê (p < 0.001). Nếu ưu tiên khả năng giải thích lâm sàng thông qua OR, logit là lựa chọn thích hợp. Nếu cần mô hình hóa hiện tượng nguy cơ không đối xứng, cloglog có thể là phương án hợp lý hơn.
Trong phần này, chúng ta sẽ phân tích mối liên hệ giữa đặc điểm tiền sử gia đình mắc cao huyết áp của bệnh nhân ( hay ) và khả năng mắc cao huyết áp cao huyết áp biệt hóa . Biến độc lập là Family_History và biến phụ thuộc là Has_Hypertension.
Đầu tiên, chúng ta sẽ lập bảng tần số cho biến Family_History để hiểu rõ sự phân bố của nhóm bệnh nhân có tiền sử gia đình mắc cao huyết áp trong tập dữ liệu.
tab_Family_History <- table(data$Family_History)
tab_Family_History
##
## No Yes
## 1000 985
Kết quả sẽ được trực quan hóa bằng biểu đồ cột để dễ dàng so sánh số lượng giữa hai nhóm.
barplot(tab_Family_History,
main = "Biểu đồ tần số tính của tiền sử gia đình mắc cao huyết áp",
xlab = "Tính chất tiền sử gia đình mắc cao huyết áp",
ylab = "Tần số",
col = c("khaki", "olivedrab"),
border = "white",
ylim = c(0, max(tab_Family_History) + 40)) -> bp_Family_History
text(x = bp_Family_History, y = tab_Family_History + 15, labels = tab_Family_History)
Thông qua bảng tần số và biểu đồ, ta thấy rằng trong tổng số 1985 bệnh nhân, có 985 người có tiền sử gia đình mắc cao huyết áp (Yes). Trong khi đó, số bệnh nhân không có tiền sử gia đình mắc cao huyết áp (No) là 1000 người.
Tiếp theo, chúng ta sẽ tính tỷ lệ phần trăm và vẽ biểu đồ tròn để thể hiện rõ hơn sự chênh lệch về mặt tương đối giữa hai nhóm.
# Thay đổi nhãn
data$Family_History <- ifelse(data$Family_History == "Yes", "Có", "Không")
# Đảm bảo biến vẫn là factor
data$Family_History <- factor(data$Family_History, levels = c("Không", "Có"))
# Kiểm tra kết quả
table(data$Family_History)
##
## Không Có
## 1000 985
plot_pie(data, "Family_History", "Phân Loại Tiền Sử Gia Đình măc cao huyết áp")
Biểu đồ tròn cho thấy một cách trực quan rằng nhóm bệnh nhân có tiền sử gia đình mắc cao huyết áp chiếm đến 49.6% trong mẫu nghiên cứu, trong khi nhóm không có tiền sử gia đình mắc cao huyết áp chiếm 50.4%. Điều này cho thấy tiền sử gia đình mắc cao huyết áp là trường hợp ít phổ biến hơn. Phân tích tiếp theo sẽ làm rõ liệu đặc điểm này có ảnh hưởng đến nguy cơ mắc cao huyết áp hay không.
Chúng ta sẽ lập bảng tần số chéo giữa hai biến Family_History và Has_Hypertension để xem xét mối quan hệ sơ bộ giữa chúng.
table_Hypertension_Family_History <- table(data$Family_History, data$Has_Hypertension)
table_Hypertension_Family_History
##
## No Yes
## Không 620 380
## Có 333 652
Bảng tần số chéo cho thấy:
Điều này cho thấy tình trạng tiền sử gia đình mắc cao huyết áp có thể liên quan đến nguy cơ mắc cao huyết áp cao hơn so với tiền sử gia đình mắc cao huyết áp . Tuy nhiên, cần thực hiện kiểm định thống kê để xác định mức độ ý nghĩa của mối liên hệ này.
Để làm rõ hơn nhận định trên, chúng ta sẽ sử dụng biểu đồ cột nhóm.
# Tạo bảng tần số chéo
table_Hypertension_Family_History <- table(data$Family_History, data$Has_Hypertension)
# Chuyển bảng chéo thành data frame
df_plot_Family_History <- as.data.frame(table_Hypertension_Family_History)
colnames(df_plot_Family_History) <- c("Family_History", "Has_Hypertension", "Count")
# Vẽ biểu đồ
ggplot(df_plot_Family_History, aes(x = Family_History, y = Count, fill = Has_Hypertension)) +
geom_col(position = "dodge") +
labs(title = "Tình trạng mắc cao huyết áp theo tính của tiền sử gia đình mắc cao huyết áp",
x = "Tính chất tiền sử gia đình mắc cao huyết áp (Family_History)",
y = "Số lượng bệnh nhân",
fill = "Mắc cao huyết áp") +
theme_minimal() +
scale_fill_manual(values = c("No" = "skyblue", "Yes" = "salmon"))
Tiếp theo, chúng ta tính toán Nguy cơ tương đối (Relative Risk - RR) để định lượng mức độ ảnh hưởng của tính đến khả năng mắc cao huyết áp. Nhóm có tiền sử gia đình mắc cao huyết áp sẽ được coi là nhóm tham chiếu.
riskratio(table_Hypertension_Family_History)
## $data
##
## No Yes Total
## Không 620 380 1000
## Có 333 652 985
## Total 953 1032 1985
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Không 1.000000 NA NA
## Có 1.741918 1.59059 1.907643
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Không NA NA NA
## Có 0 1.65228e-36 3.06871e-36
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét:
1. Cách tính Risk Ratio (RR)
RR được tính bằng công thức:
\[ RR = \frac{\text{Tỷ lệ mắc bệnh ở nhóm phơi nhiễm}}{\text{Tỷ lệ mắc bệnh ở nhóm không phơi nhiễm}} \]
\[ p_{\text{Có}} = \frac{652}{985} \approx 0.662 \]
\[ p_{\text{Không}} = \frac{380}{1000} = 0.380 \]
⇒ RR:
\[ RR = \frac{0.662}{0.380} \approx 1.742 \]
Nhận xét kết quả
Kết quả phân tích cho thấy:
Kết luận từ các kiểm định:
| Family_History | midp.exact | fisher.exact | chi.square |
|---|---|---|---|
| không | NA | NA | NA |
| có | 0 | 1.65228e-36 | 3.06871e-36 |
Dựa trên kết quả kiểm định giữa tính chất tiền sử gia đình mắc cao huyết áp (Family_History) và khả năng mắc cao huyết áp bệnh, ta thấy rằng ở nhóm tiền sử gia đình mắc cao huyết áp (có), các giá trị p từ cả ba phương pháp kiểm định mid-p exact, Fisher exact và Chi-square đều rất nhỏ, nhỏ hơn nhiều so với ngưỡng ý nghĩa 0.05. Điều này cho thấy mối liên hệ giữa tính chất tiền sử gia đình mắc cao huyết áp và khả năng mắc cao huyết áp bệnh là có ý nghĩa thống kê. Nói cách khác, tính chất của tiền sử gia đình mắc cao huyết áp có thể là một yếu tố nguy cơ làm tăng khả năng mắc cao huyết áp.
Tương tự, chúng ta sẽ tính Tỷ số chênh (Odds Ratio - OR).
oddsratio(table_Hypertension_Family_History, conf.level = 0.95)
## $data
##
## No Yes Total
## Không 620 380 1000
## Có 333 652 985
## Total 953 1032 1985
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Không 1.000000 NA NA
## Có 3.191925 2.658208 3.838499
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Không NA NA NA
## Có 0 1.65228e-36 3.06871e-36
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
OR được tính bằng công thức:
\[ OR = \frac{\dfrac{a}{b}}{\dfrac{c}{d}} = \frac{a \times d}{b \times c} \]
Trong đó:
Khi đó:
\[ OR = \frac{652 \times 620}{333 \times 380} \approx 3.19 \]
Chúng ta sử dụng kiểm định Chi bình phương để kiểm tra giả thuyết về tính độc lập giữa tính và khả năng mắc cao huyết áp.
Giả thuyết kiểm định:
H₀ (Giả thuyết không): Tính chất Tiền sử gia đình và khả năng mắc cao huyết áp là hai biến độc lập (không có mối liên hệ). H₁ (Giả thuyết đối): Tính chất tiền sử gia đình mắc cao huyết áp và khả năng mắc cao huyết áp là hai biến phụ thuộc (có mối liên hệ).
# Kiểm định Chi bình phương
chisq.test(table_Hypertension_Family_History)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table_Hypertension_Family_History
## X-squared = 156.89, df = 1, p-value < 2.2e-16
Nhận xét
Kết quả kiểm định Chi bình phương Pearson với hiệu chỉnh liên tục của Yates cho giá trị thống kê X-squared là 156.89, với bậc tự do là 1. Giá trị p-value tương ứng là 2.2e-16, một giá trị cực kỳ nhỏ.
Do p-value nhỏ hơn rất nhiều so với mức ý nghĩa thông thường (α = 0.05), chúng ta bác bỏ giả thuyết không (H₀). Điều này cung cấp bằng chứng thống kê mạnh mẽ để kết luận rằng có một mối liên hệ phụ thuộc rất rõ ràng giữa việc tiền sử gia đình mắc cao huyết áp là hay và khả năng mắc cao huyết áp bệnh.
Để so sánh trực tiếp tỷ lệ mắc cao huyết áp giữa hai nhóm, chúng ta tiến hành kiểm định hiệu hai tỷ lệ. Gọi p1 là tỷ lệ mắc cao huyết áp ở nhóm có tiền sử gia đình mắc bệnh , p2 là tỷ lệ mắc cao huyết áp ở nhóm không có tiền sử gia đình mắc bệnh .
Giả thuyết kiểm định:
H₀: p1 - p2 = 0 (Tỷ lệ mắc cao huyết áp ở hai nhóm là như nhau). H₁: p1 - p2 > 0 (Tỷ lệ mắc cao huyết áp ở nhóm có tiền sử gia đình mắc bệnh cao hơn nhóm còn lại ).
# Số ca mắc cao huyết áp ở nhóm và
success_Family_History <- c(652, 380)
# Tổng số bệnh nhân trong mỗi nhóm
n_Family_History <- c(985, 1000)
# Kiểm định hiệu tỷ lệ một phía
prop.test(success_Family_History, n_Family_History, alternative = "greater", correct = FALSE)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: success_Family_History out of n_Family_History
## X-squared = 158.02, df = 1, p-value < 2.2e-16
## alternative hypothesis: greater
## 95 percent confidence interval:
## 0.2465441 1.0000000
## sample estimates:
## prop 1 prop 2
## 0.6619289 0.3800000
Kết quả kiểm định hai tỷ lệ cho thấy tỷ lệ mắc cao huyết áp ở nhóm bệnh nhân có tiền sử gia đình mắc cao huyết áp (p₁ = 66.2%) cao hơn rõ rệt so với nhóm có tiền sử gia đình mắc cao huyết áp (p₂ = 38%). Giá trị p rất nhỏ (\(p = 2.2 \times 10^{-16}\)) cho thấy sự khác biệt này có ý nghĩa thống kê ở mức ý nghĩa 5%.
Bác bỏ giả thuyết \(H_0\), kết luận rằng tỷ lệ mắc cao huyết áp ở nhóm có tiền sử gia đình cao hơn một cách có ý nghĩa thống kê so với nhóm không có tiền sử.
Chúng ta xây dựng mô hình hồi quy tuyến tính để xem xét ảnh hưởng của tính chất tiền sử gia đình mắc cao huyết áp đến xác suất mắc cao huyết áp.
# Biến nhị phân Has_Hypertension_bin đã được tạo ở phần trước
Has_Hypertension_bin <- ifelse(data$Has_Hypertension == "Yes", 1, 0)
# Xây dựng mô hình hồi quy tuyến tính
hqtt_model_Family_History <- glm(Has_Hypertension_bin ~ Family_History, data = data)
# Hiển thị kết quả
summary(hqtt_model_Family_History)
##
## Call:
## glm(formula = Has_Hypertension_bin ~ Family_History, data = data)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.38000 0.01516 25.06 <2e-16 ***
## Family_HistoryCó 0.28193 0.02153 13.10 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.2299659)
##
## Null deviance: 495.46 on 1984 degrees of freedom
## Residual deviance: 456.02 on 1983 degrees of freedom
## AIC: 2719.6
##
## Number of Fisher Scoring iterations: 2
Kết quả hồi quy tuyến tính: Ảnh hưởng của tiền sử gia đình đến khả năng mắc cao huyết áp
Kết quả mô hình hồi quy tuyến tính:
Hệ số chặn (Intercept) = 0.38000, p < 2e-16
Đại diện cho xác suất mắc cao huyết áp ở nhóm không có tiền sử
gia đình mắc bệnh, khoảng 38.0%.
Hệ số Family_HistoryCó = 0.28193, p < 2e-16
Nhóm có tiền sử gia đình mắc bệnh có xác suất mắc cao
huyết áp tăng thêm 28.2 điểm phần trăm so với nhóm
không có tiền sử.
Xác suất dự đoán cho nhóm này là: \[
p_{\text{ có}} = 0.38000 + 0.28193 = 0.66193 \approx 66.2\%
\]
Ý nghĩa thống kê: p-value rất nhỏ (< 0.001), chứng tỏ mối quan hệ giữa tiền sử gia đình và khả năng mắc cao huyết áp rất có ý nghĩa thống kê.
Mô hình hồi quy Logistic được áp dụng để mô hình hóa log của tỷ số chênh (log-odds) của việc mắc cao huyết áp.
# Mô hình hồi quy logistic với biến Family_History
model_logit_Family_History <- glm(Has_Hypertension_bin ~ Family_History, family = binomial(link = "logit"), data = data)
# Xem kết quả
summary(model_logit_Family_History)
##
## Call:
## glm(formula = Has_Hypertension_bin ~ Family_History, family = binomial(link = "logit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.48955 0.06515 -7.514 5.73e-14 ***
## Family_HistoryCó 1.16145 0.09371 12.394 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2588.4 on 1983 degrees of freedom
## AIC: 2592.4
##
## Number of Fisher Scoring iterations: 4
exp(coef(model_logit_Family_History))
## (Intercept) Family_HistoryCó
## 0.6129032 3.1945630
Dựa trên kết quả, phương trình hồi quy logistic ước lượng khả năng mắc cao huyết áp bệnh (Has_Hypertension_bin) theo đặc điểm tiền sử gia đình mắc cao huyết áp (Family_History) như sau:
\[ \log\left( \frac{P(\text{mắc cao huyết áp})}{1 - P(\text{mắc cao huyết áp})} \right) = -0.48955 + 1.16145 \times \text{Family_History}_{\text{Yes}} \]
Nhận xét:
Hệ số hồi quy \(1.16145\) cho nhóm tiền sử gia đình mắc cao huyết áp (Yes) có ý nghĩa thống kê rất cao (p-value rất bé)), cho thấy sự khác biệt có ý nghĩa giữa hai nhóm. Cụ thể, khả năng mắc cao huyết áp bệnh ở bệnh nhân có tiền sử gia đình mắc cao huyết áp cao hơn đáng kể so với bệnh nhân không có tiền sử gia đình mắc cao huyết áp .
\[ \pi_{\text{Không}} = \frac{e^{-0.4896}}{1 + e^{-0.4896}} \approx 0.613 \] tương đương 61.3%
\[ \pi_{\text{Có}} = \frac{e^{-0.4896 + 1.1615}}{1 + e^{-0.4896 + 1.1615}} \approx 0.805 \] tương đương 80.5%
\[ \text{OR} = e^{1.1615} \approx 3.19 \]
→ Những người có tiền sử gia đình mắc bệnh có odds mắc cao huyết áp cao hơn khoảng 3.19 lần so với nhóm không có tiền sử gia đình.
Kết luận:
Tiền sử gia đình là một yếu tố nguy cơ quan trọng, có ảnh hưởng đáng kể và có ý nghĩa thống kê mạnh mẽ đến khả năng mắc cao huyết áp. Những cá nhân có tiền sử gia đình mắc bệnh cần được quan tâm và theo dõi nhiều hơn trong các chương trình phòng ngừa.
# Mô hình Probit với biến Family_History
probit_model_Family_History <- glm(Has_Hypertension_bin ~ Family_History, family = binomial(link = "probit"), data = data)
# Xem kết quả mô hình
summary(probit_model_Family_History)
##
## Call:
## glm(formula = Has_Hypertension_bin ~ Family_History, family = binomial(link = "probit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.30548 0.04031 -7.578 3.51e-14 ***
## Family_HistoryCó 0.72321 0.05766 12.543 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2588.4 on 1983 degrees of freedom
## AIC: 2592.4
##
## Number of Fisher Scoring iterations: 4
Mô hình hồi quy Probit được sử dụng để phân tích mối liên hệ giữa tiền sử gia đình (Family_History) và xác suất mắc cao huyết áp. Phương trình hồi quy ước lượng:
\[ \Phi^{-1}(\pi) = -0.3055 + 0.7232 \times \text{Family\_HistoryCó} \]
Trong đó:
\(\pi\) là xác suất mắc cao huyết áp.
\(\Phi^{-1}(\pi)\) là hàm nghịch đảo của phân phối chuẩn tích lũy (CDF chuẩn tắc).
Nhóm tham chiếu: “Không có tiền sử gia đình” (Family_History = Không).
Khi không có tiền sử gia đình:
\[ \pi_{\text{Không}} = \Phi(-0.3055) \approx 0.380 \]
\[ \pi_{\text{Có}} = \Phi(-0.3055 + 0.7232) = \Phi(0.4177) \approx 0.662 \]
\[ \Delta\pi = \pi_{\text{Có}} - \pi_{\text{Không}} \approx 0.662 - 0.380 = 0.282 \]
→ Những người có tiền sử gia đình mắc bệnh có xác suất mắc cao huyết áp cao hơn khoảng 28.2 phần trăm so với nhóm không có tiền sử.
Kết luận:
Tiền sử gia đình là một yếu tố nguy cơ quan trọng và có ý nghĩa thống kê mạnh (p < 0.001), làm tăng đáng kể khả năng mắc cao huyết áp. Mô hình Probit cho phép ước lượng trực tiếp xác suất, phù hợp khi giả định phân phối chuẩn cho biến tiềm ẩn.
# Mô hình cloglog với biến Family_History
cloglog_model_Family_History <- glm(Has_Hypertension_bin ~ Family_History, family = binomial(link = "cloglog"), data = data)
# Xem kết quả mô hình
summary(cloglog_model_Family_History)
##
## Call:
## glm(formula = Has_Hypertension_bin ~ Family_History, family = binomial(link = "cloglog"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.73807 0.05179 -14.25 <2e-16 ***
## Family_HistoryCó 0.81919 0.06612 12.39 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2588.4 on 1983 degrees of freedom
## AIC: 2592.4
##
## Number of Fisher Scoring iterations: 5
Kết quả hồi quy cloglog cho biến Family_History
Mô hình hồi quy nhị phân với hàm liên kết complementary log-log (cloglog) được sử dụng để đánh giá ảnh hưởng của tiền sử gia đình (Family_History) đến xác suất mắc cao huyết áp. Phương trình ước lượng:
\[ \log\left(-\log(1 - \pi)\right) = -0.7381 + 0.8192 \times \text{Family\_HistoryCó} \]
Trong đó:
\(\pi\) là xác suất mắc cao huyết áp.
Nhóm tham chiếu: “Không có tiền sử gia đình” (Family_History = Không).
Khi không có tiền sử gia đình:
\[ \pi_{\text{Không}} = 1 - \exp\left[-\exp(-0.7381)\right] \approx 0.380 \]
\[ \pi_{\text{Có}} = 1 - \exp\left[-\exp(-0.7381 + 0.8192)\right] \approx 0.662 \]
\[ \Delta\pi = \pi_{\text{Có}} - \pi_{\text{Không}} \approx 0.662 - 0.380 = 0.282 \]
→ Nhóm có tiền sử gia đình mắc bệnh có xác suất bị cao huyết áp cao hơn khoảng 28.2 điểm phần trăm so với nhóm không có tiền sử.
Kết luận:
Tiền sử gia đình có tác động rõ rệt và có ý nghĩa thống kê rất mạnh (p < 0.001) đến nguy cơ mắc cao huyết áp. Hàm liên kết cloglog phù hợp khi xác suất xảy ra sự kiện mang tính bất đối xứng, và kết quả mô hình này cũng nhất quán với các mô hình Logit và Probit.
Bảng tổng hợp 4 mô hình | Mô hình | Hệ số (Estimate) | P-value | AIC | Diễn giải | | ——————————- | —————- | ————- | —— | ————————————————————————— | | Hồi quy tuyến tính (Linear) | 0.2819 | <2e-16 *** | 2719.6 | Không phù hợp cho biến phụ thuộc nhị phân, chỉ mang tính minh họa | | Logistic regression (logit) | 1.1615 | <2e-16 *** | 2592.4 | Mô hình chuẩn cho dữ liệu nhị phân, dễ diễn giải qua Odds Ratio | | Probit regression | 0.7232 | <2e-16 *** | 2592.4 | Giả định phân phối chuẩn, kết quả tương tự logit | | Complementary log-log (cloglog) | 0.8192 | <2e-16 *** | 2592.4 | Phù hợp nếu biến sự kiện hiếm, nhưng ở đây tần suất cao nên không cần thiết |
Nhận xét
Cả 4 mô hình đều cho thấy Family_History (tiền sử gia đình) có tác động tích cực và có ý nghĩa thống kê cao (p < 0.001) đến khả năng mắc cao huyết áp.
Linear regression tuy cho hệ số có ý nghĩa nhưng không phù hợp về mặt lý thuyết vì biến phụ thuộc là nhị phân.
Logistic regression (logit) là lựa chọn hợp lý nhất: có AIC thấp nhất (2592.4), kết quả rõ ràng, dễ diễn giải qua Odds Ratio (OR ≈ 3.19).
Probit regression cho kết quả tương tự logit và có thể sử dụng thay thế khi muốn giả định phân phối chuẩn.
Cloglog regression thích hợp trong trường hợp sự kiện hiếm, nhưng ở đây tỷ lệ mắc cao huyết áp không hiếm → cloglog không có lợi thế rõ rệt.
THỐNG KÊ TẦN SỐ, TẦN SUẤT
affect_freq <- table(data$Exercise_Level)
affect_percent <- prop.table(affect_freq) * 100
data.frame(Affects = names(affect_freq),
Frequency = as.numeric(affect_freq),
Percentage = round(as.numeric(affect_percent), 1))
## Affects Frequency Percentage
## 1 High 391 19.7
## 2 Low 936 47.2
## 3 Moderate 658 33.1
Trực quan hóa
plot_pie(data, "Exercise_Level", "Phân Loại Mức Độ Vận Động")
tab_Ex<- table(data$Exercise_Level)
tab_Ex
##
## High Low Moderate
## 391 936 658
barplot(tab_Ex,
main = "Biểu đồ tần số mức độ vận động",
xlab = "mức độ vận động",
ylab = "Tần số",
col = c("skyblue", "lightgreen", "lightcoral"),
border = "white",
ylim = c(0, max(tab_Ex) + 40)) -> bp_Exercise_Level
text(x = bp_Exercise_Level, y = tab_Ex + 15, labels = tab_Ex)
Bảng dịch thuật
| Mức độ vận động (tiếng Anh) | Tiếng Việt tương ứng |
|---|---|
| HIGH | Vận động cao |
| Moderate | Vận động bình thường |
| Low | Ít vận động |
Nhận xét
Nhóm ít vận động (Low) chiếm tỷ lệ cao nhất với 47,2% (936 người), cho thấy gần một nửa số đối tượng khảo sát có thói quen vận động hạn chế.
Nhóm vận động trung bình (Moderate) chiếm 33,1% (658 người), phản ánh một bộ phận đáng kể có mức vận động ở mức vừa phải.
Nhóm vận động cao (High) chỉ chiếm 19,7% (391 người), cho thấy tỷ lệ duy trì thói quen vận động tích cực trong cộng đồng nghiên cứu còn khá thấp.
Kết quả này cho thấy đa số đối tượng không đạt được mức vận động cao, điều này có thể liên quan đến nguy cơ gia tăng các bệnh lý mạn tính, đặc biệt là cao huyết áp. Việc nâng cao nhận thức và khuyến khích lối sống năng động hơn là cần thiết để cải thiện sức khỏe tim mạch trong quần thể này.
Chúng ta sẽ lập bảng tần số chéo giữa hai biến Exercise_Level và Has_Hypertension để xem xét mối quan hệ sơ bộ giữa chúng.
# Bảng tần số chéo giữa tiền sử huyết áp và mắc cao huyết áp
table_Hypertension_Exercise_Level <- table(data$Exercise_Level, data$Has_Hypertension)
# Thêm hàng và cột tổng
addmargins(table_Hypertension_Exercise_Level)
##
## No Yes Sum
## High 178 213 391
## Low 464 472 936
## Moderate 311 347 658
## Sum 953 1032 1985
Hight: 391 bệnh nhân, có 213 ca mắc cao huyết áp
Low: 936 bệnh nhân, 472 ca mắc cao huyết áp
Moderate: 658 bệnh nhân, 347 ca mắc cao huyết áp
Để làm rõ hơn nhận định mức độ vận động có liên quan đến bệnh cao huyết áp , chúng ta sẽ sử dụng biểu đồ cột nhóm.
# Chuyển bảng chéo thành data frame
df_plot_Exercise_Level <- as.data.frame(table_Hypertension_Exercise_Level)
colnames(df_plot_Exercise_Level) <- c("Exercise_Level", "Has_Hypertension", "Count")
# Đảm bảo thứ tự tiền sử huyết áp theo lâm sàng
df_plot_Exercise_Level$Exercise_Level <- factor(df_plot_Exercise_Level$Exercise_Level,
levels = c("High", "Moderate",
"Low"))
# Vẽ biểu đồ cột tỷ lệ
library(ggplot2)
ggplot(df_plot_Exercise_Level, aes(x = Exercise_Level, y = Count, fill = Has_Hypertension)) +
geom_col(position = "fill") + # tỷ lệ phần trăm theo cột
scale_y_continuous(labels = scales::percent_format()) +
scale_fill_manual(values = c("No" = "lightblue", "Yes" = "pink"),
labels = c("Không mắc cao huyết áp", "mắc cao huyết áp")) +
labs(title = "Tỷ lệ mắc cao huyết áp theo tiền sử huyết áp điều trị",
x = "mức độ vận động thể chất",
y = "Tỷ lệ (%)",
fill = "Tình trạng mắc cao huyết áp") +
theme_minimal(base_size = 13) +
theme(axis.text.x = element_text(angle = 25, hjust = 1))
Kết quả phân tích cho thấy tỷ lệ mắc cao huyết áp tăng dần theo mức độ vận động thể chất: nhóm vận động thấp có tỷ lệ cao huyết áp khoảng 50.4% (472/936), nhóm vận động trung bình là 52.7% (347/658), trong khi nhóm vận động cao đạt 54.5% (213/391).
Hiện tượng này không hoàn toàn phù hợp với giả thuyết phổ biến rằng vận động thường xuyên giúp giảm nguy cơ cao huyết áp. Nguyên nhân có thể bao gồm:
Cường độ vận động: vận động quá mức hoặc thiếu phục hồi có thể làm tăng đáp ứng thần kinh giao cảm và dẫn đến huyết áp cao hơn.
Phân bố tuổi và giới: nếu nhóm vận động cao có tỷ lệ nam giới hoặc người lớn tuổi cao hơn, nguy cơ tăng huyết áp cũng sẽ tăng theo.
Do đó, kết quả này cần được xem xét thận trọng. Để khẳng định mối quan hệ thực sự, cần phân tích sâu hơn bằng các mô hình hồi quy đa biến để kiểm soát các biến nhiễu như tuổi, giới, BMI, tiền sử gia đình và hút thuốc.
Chúng ta sẽ tính toán Nguy cơ tương đối (RR), lấy nhóm High làm nhóm tham chiếu.
riskratio(table_Hypertension_Exercise_Level)
## $data
##
## No Yes Total
## High 178 213 391
## Low 464 472 936
## Moderate 311 347 658
## Total 953 1032 1985
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## High 1.0000000 NA NA
## Low 0.9256852 0.8287161 1.034001
## Moderate 0.9680566 0.8620798 1.087061
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## High NA NA NA
## Low 0.1791991 0.1853514 0.1785202
## Moderate 0.5858372 0.6088444 0.5848650
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Kết quả phân tích cho thấy:
Nhóm Low có RR = 0.926 (KTC 95%: 0.829 – 1.034, p ≈ 0.18), tức nguy cơ mắc cao huyết áp thấp hơn khoảng 7.4% so với nhóm vận động cao (High), nhưng sự khác biệt không có ý nghĩa thống kê (p > 0.05).
Nhóm Moderate có RR = 0.968 (KTC 95%: 0.862 – 1.087, p ≈ 0.59), sự khác biệt so với nhóm High rất nhỏ và cũng không có ý nghĩa thống kê.
Kết luận: Không tìm thấy bằng chứng thống kê cho thấy mức độ vận động thể chất (Low hoặc Moderate) làm thay đổi nguy cơ mắc cao huyết áp so với nhóm vận động cao. Điều này có thể chịu ảnh hưởng bởi các yếu tố gây nhiễu khác
oddsratio(table_Hypertension_Exercise_Level)
## $data
##
## No Yes Total
## High 178 213 391
## Low 464 472 936
## Moderate 311 347 658
## Total 953 1032 1985
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## High 1.0000000 NA NA
## Low 0.8502878 0.6705946 1.077231
## Moderate 0.9325529 0.7250605 1.198703
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## High NA NA NA
## Low 0.1791991 0.1853514 0.1785202
## Moderate 0.5858372 0.6088444 0.5848650
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Phân tích Odds Ratio (OR) nhằm so sánh khả năng mắc cao huyết áp bệnh giữa các nhóm mức độ vận động thể chất, với nhóm high được chọn làm nhóm tham chiếu.
Kết quả phân tích:
Nhóm Low có OR = 0.85 (KTC 95%: 0.671 – 1.077, p ≈ 0.18), cho thấy odds mắc cao huyết áp thấp hơn khoảng 15% so với nhóm vận động cao (High), nhưng sự khác biệt không có ý nghĩa thống kê (p > 0.05).
Nhóm Moderate có OR = 0.93 (KTC 95%: 0.725 – 1.199, p ≈ 0.59), sự khác biệt so với nhóm High rất nhỏ và cũng không có ý nghĩa thống kê.
Kết luận: Không có bằng chứng thống kê cho thấy mức độ vận động thể chất (Low hoặc Moderate) ảnh hưởng đáng kể đến odds mắc cao huyết áp so với nhóm vận động cao.
Do đó, để tiếp tục tìm kiếm các yếu tố liên quan chặt chẽ hơn đến biến phụ thuộc, tôi sẽ chuyển sang phân tích các biến khác
Trong phần này, chúng ta sẽ phân tích mối liên hệ giữa loại thuốc bệnh nhân đang sử dụng và khả năng mắc cao huyết. Biến độc lập là Medication (với các loại thuốc: None: Không, Other, Diuretic, Beta Blocker, ACE Inhibitor) và biến phụ thuộc là Has_Hypertension (có hoặc không mắc cao huyết áp).
Đầu tiên, chúng ta sẽ lập bảng tần số cho biến Medication để hiểu rõ sự phân bố của các nhóm bệnh nhân theo loại thuốc điều trị.
tab_Medication <- table(data$Medication)
tab_Medication
##
## ACE Inhibitor Beta Blocker Diuretic None Other
## 323 412 245 799 206
Kết quả trên sẽ được trực quan hóa bằng biểu đồ cột để so sánh số lượng giữa các nhóm.
barplot(tab_Medication,
main = "Biểu đồ tần số các loại thuốc",
xlab = "Loai thuốc sử dụng",
ylab = "Tần số",
col = c("skyblue", "lightgreen", "lightcoral", "plum"),
border = "white",
ylim = c(0, max(tab_Medication) + 40)) -> bp_Medication
text(x = bp_Medication, y = tab_Medication + 20, labels = tab_Medication)
Nhận xét
Thông qua bảng tần số và biểu đồ, ta thấy rằng trong tổng số 1985 bệnh nhân:
Nhóm không sử dụng thuốc (None) chiếm tỷ lệ lớn nhất (799 trường hợp), cho thấy phần lớn đối tượng khảo sát chưa hoặc không điều trị bằng các loại thuốc này.
Trong các nhóm dùng thuốc, Beta Blocker là loại được sử dụng phổ biến nhất (412 trường hợp), tiếp theo là ACE Inhibitor (323), Diuretic (245) và nhóm thuốc khác (Other: 206).
Phân bố này gợi ý rằng điều trị bằng thuốc hạ huyết áp chưa đồng đều; phần lớn người tham gia chưa can thiệp bằng thuốc hoặc đang ở giai đoạn tiền điều trị.
Tiếp theo, chúng ta sẽ tính tỷ lệ phần trăm và vẽ biểu đồ tròn để thể hiện rõ hơn sự phân bố tương đối giữa các nhóm.
plot_pie(data, "Medication", "Phân Loại Thuốc đang sử dụng")
Biểu đồ hình tròn thể hiện rõ sự phân bố các tiền sử huyết áp điều trị của bệnh nhân cao huyết áp. Trong đó:
Nhóm “None” chiếm tỷ lệ cao nhất (40.3%), phản ánh rằng phần lớn đối tượng khảo sát chưa hoặc không điều trị bằng thuốc hạ huyết áp.
Trong nhóm sử dụng thuốc, Beta Blocker (20.8%) là loại được dùng nhiều nhất, tiếp theo là ACE Inhibitor (16.3%) và Diuretic (12.3%).
Nhóm thuốc khác (Other: 10.4%) chiếm tỷ lệ thấp, cho thấy ít người sử dụng các loại thuốc ngoài ba nhóm chính trên.
Nhìn chung, đa số bệnh nhân có sử dụng thuốc và cũng có khá nhiều người không sử dụng thuốc
Chúng ta sẽ lập bảng tần số chéo giữa hai biến Medication và Has_Hypertension để xem xét mối quan hệ sơ bộ giữa chúng.
# Bảng tần số chéo giữa tiền sử huyết áp và mắc cao huyết áp
table_caohuyetap_Medication <- table(data$Medication, data$Has_Hypertension)
# Thêm hàng và cột tổng
addmargins(table_caohuyetap_Medication)
##
## No Yes Sum
## ACE Inhibitor 162 161 323
## Beta Blocker 198 214 412
## Diuretic 106 139 245
## None 387 412 799
## Other 100 106 206
## Sum 953 1032 1985
Nhận xét
Phân bố tỷ lệ cao huyết áp theo nhóm thuốc
Nhóm Beta Blocker và Diuretic có tỷ lệ người mắc cao huyết áp (Yes/Sum) tương đối cao (≈ 52% và 57%).
Nhóm ACE Inhibitor gần như cân bằng (≈ 50%).
Nhóm None (không dùng thuốc) vẫn có tỷ lệ mắc cao (≈ 51%), cho thấy một bộ phận lớn người chưa điều trị nhưng vẫn đang trong tình trạng tăng huyết áp.
Nhóm Other có tỷ lệ tương tự (≈ 51%).
Để làm rõ hơn nhận định trên, chúng ta sẽ sử dụng biểu đồ cột nhóm.
# Chuyển bảng chéo thành data frame
df_plot_Medication <- as.data.frame(table_caohuyetap_Medication)
colnames(df_plot_Medication) <- c("Medication", "Has_Hypertension", "Count")
# Đảm bảo thứ tự tiền sử huyết áp theo lâm sàng
df_plot_Medication$Medication <- factor(df_plot_Medication$Medication,
levels = c("ACE Inhibitor", "Beta Blocke",
"Diuretic", "None", "Other"))
# Vẽ biểu đồ cột tỷ lệ
library(ggplot2)
ggplot(df_plot_Medication, aes(x = Medication, y = Count, fill = Has_Hypertension)) +
geom_col(position = "fill") + # tỷ lệ phần trăm theo cột
scale_y_continuous(labels = scales::percent_format()) +
scale_fill_manual(values = c("No" = "lightblue", "Yes" = "pink"),
labels = c("Không mắc cao huyết áp", "mắc cao huyết áp")) +
labs(title = "Tỷ lệ mắc cao huyết áp theo tiền sử huyết áp điều trị",
x = "Loại thuốc sử dụng",
y = "Tỷ lệ (%)",
fill = "Tình trạng mắc cao huyết áp") +
theme_minimal(base_size = 13) +
theme(axis.text.x = element_text(angle = 25, hjust = 1))
Biểu đồ cho thấy tỷ lệ mắc cao huyết áp của các bệnh nhân sử dụng thuốc xoay quanh mức 50%. Cụ thể:
Đáng chú ý, nhóm Diuretic có tỷ lệ mắc cao huyết áp cao nhất trong các loại thuốc. Và nhóm sử dụng thuốc ACE Inhibitor có tỷ lệ mắc bệnh thấp nhất
Chúng ta sẽ tính toán Nguy cơ tương đối (RR), lấy nhóm ACE Inhibitor làm nhóm tham chiếu.
riskratio(table_caohuyetap_Medication)
## $data
##
## No Yes Total
## ACE Inhibitor 162 161 323
## Beta Blocker 198 214 412
## Diuretic 106 139 245
## None 387 412 799
## Other 100 106 206
## Total 953 1032 1985
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## ACE Inhibitor 1.000000 NA NA
## Beta Blocker 1.042061 0.9027545 1.202865
## Diuretic 1.138218 0.9751053 1.328615
## None 1.034492 0.9098497 1.176209
## Other 1.032322 0.8692564 1.225978
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## ACE Inhibitor NA NA NA
## Beta Blocker 0.5735937 0.6030279 0.5725314
## Diuretic 0.1043914 0.1076337 0.1033157
## None 0.6026652 0.6443691 0.6019404
## Other 0.7189603 0.7223335 0.7178046
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Trong nghiên cứu này, nhóm ACE Inhibitor được chọn làm nhóm tham chiếu để đánh giá nguy cơ mắc cao huyết áp bệnh ở các nhóm đáp ứng điều trị khác nhau. Việc phân tích tỉ số nguy cơ (Relative Risk – RR) cho phép so sánh khả năng mắc cao huyết áp giữa các nhóm một cách trực quan và có ý nghĩa thống kê.
Nhóm Beta Blocker:
RR = 1.04 (95% CI: 0.90–1.20), p ≈ 0.57.
Nguy cơ mắc cao huyết áp cao hơn khoảng 4% so với nhóm ACE Inhibitor, nhưng không có ý nghĩa thống kê.
Nhóm Diuretic:
RR = 1.14 (95% CI: 0.98–1.33), p ≈ 0.10.
Nguy cơ cao hơn 14% so với ACE Inhibitor. Mặc dù xu hướng tăng rõ hơn, nhưng vẫn chưa đạt ý nghĩa thống kê (p > 0.05).
Nhóm None (không dùng thuốc):
RR = 1.03 (95% CI: 0.91–1.18), p ≈ 0.60.
Nguy cơ gần như không khác biệt so với ACE Inhibitor.
Nhóm Other:
RR = 1.03 (95% CI: 0.87–1.23), p ≈ 0.72.
Nguy cơ tương tự nhóm ACE Inhibitor và không có ý nghĩa thống kê.
oddsratio(table_caohuyetap_Medication)
## $data
##
## No Yes Total
## ACE Inhibitor 162 161 323
## Beta Blocker 198 214 412
## Diuretic 106 139 245
## None 387 412 799
## Other 100 106 206
## Total 953 1032 1985
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## ACE Inhibitor 1.000000 NA NA
## Beta Blocker 1.087368 0.8122338 1.456085
## Diuretic 1.318547 0.9444570 1.843942
## None 1.071139 0.8269012 1.387668
## Other 1.066390 0.7513407 1.514189
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## ACE Inhibitor NA NA NA
## Beta Blocker 0.5735937 0.6030279 0.5725314
## Diuretic 0.1043914 0.1076337 0.1033157
## None 0.6026652 0.6443691 0.6019404
## Other 0.7189603 0.7223335 0.7178046
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Phân tích Odds Ratio (OR) nhằm so sánh khả năng mắc cao huyết áp bệnh giữa các nhóm thuốc khác nhau, với nhóm ACE Inhibitor được chọn làm nhóm tham chiếu.
Nhóm Beta Blocker RR = 1.04 (95% CI: 0.90–1.20), p ≈ 0.57.
OR = 1.09 (95% CI: 0.81–1.46), p ≈ 0.57.
Cả RR và OR đều cho thấy nguy cơ cao huyết áp cao hơn khoảng 4–9% so với ACE Inhibitor, nhưng không có ý nghĩa thống kê.
Nhóm Diuretic RR = 1.14 (95% CI: 0.98–1.33), p ≈ 0.10.
OR = 1.32 (95% CI: 0.94–1.84), p ≈ 0.10.
Có xu hướng tăng nguy cơ cao huyết áp nhiều nhất (14–32%), nhưng chưa đạt ý nghĩa thống kê (p > 0.05).
Nhóm None (không dùng thuốc) RR = 1.03 (95% CI: 0.91–1.18), p ≈ 0.60.
OR = 1.07 (95% CI: 0.83–1.39), p ≈ 0.60.
Nguy cơ gần như tương đương với nhóm ACE Inhibitor.
Nhóm Other RR = 1.03 (95% CI: 0.87–1.23), p ≈ 0.72.
OR = 1.07 (95% CI: 0.75–1.51), p ≈ 0.72.
Không có sự khác biệt có ý nghĩa thống kê.
Kết Luận
Phân tích ban đầu cho thấy không có sự khác biệt có ý nghĩa thống kê về tỷ lệ mắc cao huyết áp giữa các nhóm thuốc (p > 0.05 ở tất cả các nhóm). Điều này cho thấy loại thuốc hiện tại có thể không phải là yếu tố dự báo chính trong bộ dữ liệu này.
Do đó, để tiếp tục tìm kiếm các yếu tố liên quan chặt chẽ hơn đến biến phụ thuộc, tôi sẽ chuyển sang phân tích các biến khác
Trong phần này, chúng ta sẽ phân tích mối liên hệ giữa tiền sử huyết áp của bệnh nhân và khả năng cao huyết áp. Biến độc lập là BP_History (với 3 mức độ: “Normal”: Bình thường ,“Hypertension”: cao huyết áp, “Prehypertension”: tiền tăng huyết áp) và biến phụ thuộc là Has_Hypertension (có hoặc không cao huyết áp).
Đầu tiên, chúng ta sẽ lập bảng tần số cho biến BP_History để hiểu rõ sự phân bố của các nhóm bệnh nhân theo tiền sử huyết áp điều trị.
tab_BP_History <- table(data$BP_History)
tab_BP_History
##
## Hypertension Normal Prehypertension
## 569 796 620
Kết quả trên sẽ được trực quan hóa bằng biểu đồ cột để so sánh số lượng giữa các nhóm.
barplot(tab_BP_History,
main = "Biểu đồ tần số tiền sử huyết áp ",
xlab = "tiền sử huyết áp",
ylab = "Tần số",
col = c("skyblue", "lightgreen", "lightcoral", "plum"),
border = "white",
ylim = c(0, max(tab_BP_History) + 40)) -> bp_BP_History
text(x = bp_BP_History, y = tab_BP_History + 15, labels = tab_BP_History)
Bảng dịch thuật
| tiền sử huyết áp (tiếng Anh) | Tiếng Việt tương ứng |
|---|---|
| Hypertension | tiền sử huyết áp cao |
| Normal | Bình thường |
| Prehypertension | tiền tăng huyết áp |
plot_pie(data, "BP_History", "Phân Loại tiền sử huyết áp")
Nhận xét
Kết quả phân bố tình trạng huyết áp cho thấy trong tổng số mẫu khảo sát, 40,1% đối tượng có huyết áp bình thường (569 người), trong khi 31,2% rơi vào nhóm tiền tăng huyết áp (620 người) và 28,7% (569 người) đã mắc tăng huyết áp. Tỷ lệ tiền tăng huyết áp khá cao, phản ánh một bộ phận đáng kể dân số đang ở giai đoạn nguy cơ, có khả năng tiến triển thành tăng huyết áp thực sự nếu không có các biện pháp can thiệp kịp thời về lối sống và dinh dưỡng. Số người đã bị tăng huyết áp (gần 1/3 mẫu nghiên cứu) cũng là một con số đáng lưu ý, cho thấy vấn đề này là một thách thức sức khỏe cộng đồng.
Tiếp theo, chúng ta sẽ tính tỷ lệ phần trăm và vẽ biểu đồ tròn để thể hiện rõ hơn sự phân bố tương đối giữa các nhóm.
Chúng ta sẽ lập bảng tần số chéo giữa hai biến BP_History và Has_Hypertension để xem xét mối quan hệ sơ bộ giữa chúng.
# Bảng tần số chéo giữa tiền sử huyết áp và cao huyết áp
table_caohuyetap_BP_History <- table(data$BP_History, data$Has_Hypertension)
# Thêm hàng và cột tổng
addmargins(table_caohuyetap_BP_History)
##
## No Yes Sum
## Hypertension 41 528 569
## Normal 510 286 796
## Prehypertension 402 218 620
## Sum 953 1032 1985
Hypertension (tiền sử cao huyết áp) : 569 bệnh nhân, có đến 528 ca cao huyết áp → nguy cơ rất cao.
Normal: 796 bệnh nhân, 286 ca cao huyết áp → nguy cơ trung bình.
Prehypertension: 620 bệnh nhân, 218 ca cao huyết áp → nguy cơ trung bình.
Structural Incomplete: 91 bệnh nhân, 89 ca cao huyết áp → nguy cơ rất cao.
Kết luận: tiền sử huyết áp điều trị liên quan rõ rệt đến khả năng cao huyết áp.
Để làm rõ hơn nhận định trên, chúng ta sẽ sử dụng biểu đồ cột nhóm.
# Chuyển bảng chéo thành data frame
df_plot_BP_History <- as.data.frame(table_caohuyetap_BP_History)
colnames(df_plot_BP_History) <- c("BP_History", "Has_Hypertension", "Count")
# Đảm bảo thứ tự tiền sử huyết áp theo lâm sàng
df_plot_BP_History$BP_History <- factor(df_plot_BP_History$BP_History,
levels = c("Hypertension", "Normal",
"Prehypertension"))
# Vẽ biểu đồ cột tỷ lệ
library(ggplot2)
ggplot(df_plot_BP_History, aes(x = BP_History, y = Count, fill = Has_Hypertension)) +
geom_col(position = "fill") + # tỷ lệ phần trăm theo cột
scale_y_continuous(labels = scales::percent_format()) +
scale_fill_manual(values = c("No" = "lightblue", "Yes" = "pink"),
labels = c("Không cao huyết áp", "cao huyết áp")) +
labs(title = "Tỷ lệ cao huyết áp theo tiền sử huyết áp điều trị",
x = "tiền sử huyết áp điều trị",
y = "Tỷ lệ (%)",
fill = "Tình trạng cao huyết áp") +
theme_minimal(base_size = 13) +
theme(axis.text.x = element_text(angle = 25, hjust = 1))
Biểu đồ cho thấy tỷ lệ cao huyết áp bệnh tăng dần theo tiền sử huyết áp điều trị. Cụ thể:
Nhóm Hypertension ( tiền sử huyết áp cao) gần như sẽ mắc bệnh cao huyết áp
Nhóm Normal có tỷ lệ mắc bệnh cao huyết áp khoảng 35%.
Nhóm Prehypertension (tiền tăng huyết áp) có tỷ lệ mắc bệnh cao huyết áp khoảng 35%.
Đáng chú ý, nhóm Hypertension có tỷ lệ cao huyết áp gần như tuyệt đối.
Điều này cho thấy tiền sử huyết áp có liên quan rõ rệt đến nguy cơ mắc bệnh cao huyết áp, trong đó tiền sử tăng huyết áp là yếu tố nguy cơ cao nhất.
Chúng ta sẽ tính toán Nguy cơ tương đối (RR), lấy nhóm Hypertension làm nhóm tham chiếu.
riskratio(table_caohuyetap_BP_History)
## $data
##
## No Yes Total
## Hypertension 41 528 569
## Normal 510 286 796
## Prehypertension 402 218 620
## Total 953 1032 1985
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Hypertension 1.0000000 NA NA
## Normal 0.3871964 0.3519120 0.4260186
## Prehypertension 0.3789162 0.3396787 0.4226861
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Hypertension NA NA NA
## Normal 0 1.134512e-111 6.141558e-99
## Prehypertension 0 4.564659e-104 1.101697e-93
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Trong nghiên cứu này, nhóm Hypertension được chọn làm nhóm tham chiếu để đánh giá nguy cơ cao huyết áp bệnh ở các nhóm tiền sử huyết áp. Việc phân tích tỉ số nguy cơ (Relative Risk – RR) cho phép so sánh khả năng cao huyết áp giữa các nhóm một cách trực quan và có ý nghĩa thống kê.
Nhóm Hypertension (tăng huyết áp)
Được chọn làm nhóm tham chiếu với RR = 1.00.
Đây là nhóm có tỷ lệ biến phụ thuộc (Yes) cao nhất (528/569 ≈ 92,8%).
Nhóm Normal (huyết áp bình thường)
Có RR = 0.387 (95% CI: 0.352 – 0.426), nghĩa là nguy cơ mắc bệnh cao huyết áp ở nhóm này chỉ bằng khoảng 38,7% so với nhóm tiền sử huyết áp cao.
Giá trị p rất nhỏ (p < 2.2e-16), cho thấy sự khác biệt có ý nghĩa thống kê cao.
Nhóm Prehypertension (tiền tăng huyết áp)
Có RR = 0.379 (95% CI: 0.340 – 0.423), tương đương với nguy cơ mắc bệnh chỉ bằng 37,9% so với nhóm tiền sử huyết áp cao.
P-value cũng cực kỳ nhỏ (p < 2.2e-16), chứng tỏ sự khác biệt có ý nghĩa thống kê mạnh mẽ.
Tổng thể, Kết quả cho thấy nhóm tăng huyết áp có xác suất xảy ra biến phụ thuộc cao vượt trội so với hai nhóm còn lại. Cả nhóm huyết áp bình thường và tiền tăng huyết áp đều có nguy cơ thấp hơn đáng kể, với mức giảm khoảng 62% so với nhóm tăng huyết áp. Sự khác biệt này có ý nghĩa thống kê rất cao (p-value cực nhỏ), chứng tỏ trạng thái huyết áp là một yếu tố quan trọng ảnh hưởng đến biến phụ thuộc.
oddsratio(table_caohuyetap_BP_History)
## $data
##
## No Yes Total
## Hypertension 41 528 569
## Normal 510 286 796
## Prehypertension 402 218 620
## Total 953 1032 1985
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Hypertension 1.00000000 NA NA
## Normal 0.04382381 0.03047540 0.06141565
## Prehypertension 0.04240178 0.02925768 0.05997314
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Hypertension NA NA NA
## Normal 0 1.134512e-111 6.141558e-99
## Prehypertension 0 4.564659e-104 1.101697e-93
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Phân tích Odds Ratio (OR) nhằm so sánh khả năng cao huyết áp bệnh giữa các nhóm tiền sử huyết áp điều trị, với nhóm Hypertension được chọn làm nhóm tham chiếu.
Hypertension (tiền sử huyết áp cao): Là nhóm tham chiếu (OR = 1.00).
Normal (huyết áp bình thường): OR = 0.0438 (95% CI: 0.0305–0.0614), p < 2.2e-16. Nhóm này có khả năng bị cao huyết áp thấp hơn đáng kể, chỉ khoảng 4,4% so với nhóm tăng huyết áp.
Prehypertension (tiền tăng huyết áp): OR = 0.0424 (95% CI: 0.0293–0.0600), p < 2.2e-16. Nhóm tiền tăng huyết áp cũng có khả năng mắc bệnh thấp hơn nhiều, chỉ bằng khoảng 4,2% so với nhóm tăng huyết áp.
Kết luận tổng thể: Những người hiện đang ở tình trạng tăng huyết áp có xác suất mắc bệnh cao huyết áp vượt trội so với hai nhóm còn lại. Hai nhóm “bình thường” và “tiền tăng huyết áp” có nguy cơ thấp hơn rất nhiều (chỉ khoảng 4% so với nhóm tăng huyết áp). Sự khác biệt này có ý nghĩa thống kê mạnh (p < 0.001).
Chúng ta sử dụng kiểm định Chi bình phương để kiểm tra giả thuyết về tính độc lập giữa tiền sử huyết áp và khả năng cao huyết áp.
Giả thuyết kiểm định:
H₀ (Giả thuyết không): tiền sử huyết áp và khả năn mắc bệnh cao huyết áp là hai biến độc lập. H₁ (Giả thuyết đối): tiền sử huyết áp và khả năn mắ bệnh cao huyết áp là hai biến phụ thuộc.
# Kiểm định Chi bình phương
chisq.test(table_caohuyetap_BP_History)
##
## Pearson's Chi-squared test
##
## data: table_caohuyetap_BP_History
## X-squared = 532.16, df = 2, p-value < 2.2e-16
Kết quả kiểm định
\[ \chi^2 = 532.16,\quad df = 2,\quad p\text{-value} < 2.2 \times 10^{-16} \]
Diễn giải
Giá trị p rất nhỏ (gần bằng 0), cho thấy có đủ bằng chứng để bác bỏ giả thuyết \(H_0\) với mức ý nghĩa 5%. Điều này chứng tỏ rằng tiền sử huyết áp có mối liên hệ có ý nghĩa thống kê với khả năng mắc bệnh cao huyết áp.
Nói cách khác, khả năng mắc bệnh cao huyết áp phụ thuộc đáng kể vào tiền sử huyết áp, từ đó củng cố vai trò của việc theo dõi sát và phân tầng nguy cơ dựa trên tiền sử huyết áp.
####3.6.6. Mô hình hồi quy cho dữ liệu nhị phân
Để xây dựng mô hình, chúng ta sẽ đặt nhóm Normal làm mức tham chiếu để các hệ số có thể được diễn giải một cách hợp lý.
# Đặt lại nhóm tham chiếu
data$BP_History <- relevel(data$BP_History, ref = "Normal")
# Chạy lại mô hình hồi quy
model_ref_bio <- glm(Has_Hypertension_bin ~ BP_History, data = data)
summary(model_ref_bio)
##
## Call:
## glm(formula = Has_Hypertension_bin ~ BP_History, data = data)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.359296 0.015161 23.699 <2e-16 ***
## BP_HistoryHypertension 0.568647 0.023482 24.216 <2e-16 ***
## BP_HistoryPrehypertension -0.007684 0.022912 -0.335 0.737
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.1829643)
##
## Null deviance: 495.46 on 1984 degrees of freedom
## Residual deviance: 362.64 on 1982 degrees of freedom
## AIC: 2266.7
##
## Number of Fisher Scoring iterations: 2
Phương trình hồi quy tuyến tính
\[ \hat{Y} = 0.359296 + 0.568647 \cdot \text{Hypertension } -0.007684 \cdot \text{Prehypertension} \]
Trong đó:
| Biểu hiện (BP_History) | Hệ số | Giải thích |
|---|---|---|
| \(\text{(Intercept)}\) (Normal) | 0.3593 | Nhóm Normal có xác suất mắc cao huyết áp khoảng 35.9%. |
| Hypertension | +0.5686 | Nhóm Hypertension có xác suất mắc cao huyết áp cao hơn 56.9 điểm % so với nhóm Normal (p < 0.001), tức khoảng 92.8%. |
| Prehypertension | –0.0077 | Nhóm Prehypertension có xác suất mắc cao huyết áp gần như tương đương với nhóm Normal (p = 0.737), khoảng 35.2%. |
Xét mô hình hồi quy logistic với biến phụ thuộc là khả năng mắc bệnh cao huyết áp và biến độc lập là tiền sử huyết áp (BP_History), với nhóm tham chiếu là Biochemical Incomplete.
# Mô hình hồi quy logistic với biến BP_History
model_logit_BP_History <- glm(Has_Hypertension_bin ~ BP_History, family = binomial(link = "logit"), data = data)
summary(model_logit_BP_History)
##
## Call:
## glm(formula = Has_Hypertension_bin ~ BP_History, family = binomial(link = "logit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.57842 0.07387 -7.83 4.88e-15 ***
## BP_HistoryHypertension 3.13394 0.17816 17.59 < 2e-16 ***
## BP_HistoryPrehypertension -0.03354 0.11195 -0.30 0.764
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2138.3 on 1982 degrees of freedom
## AIC: 2144.3
##
## Number of Fisher Scoring iterations: 5
exp(coef(model_logit_BP_History))
## (Intercept) BP_HistoryHypertension BP_HistoryPrehypertension
## 0.5607843 22.9643527 0.9670181
Tỷ số Odds (Odds Ratio)
\[ \log\left( \frac{\hat{p}}{1 - \hat{p}} \right) = -0.57842 +3.1339 \cdot \text{Hypertension} - 0.0335 \cdot \text{Prehypertension} \]
Diễn giải hệ số hồi quy
| Biểu hiện (BP_History) | Hệ số (log-odds) | Giải thích |
|---|---|---|
| \(\text{(Intercept)}\) – Normal | –0.5784 | Nhóm Normal có log-odds mắc cao huyết áp là –0.5784, tương đương xác suất khoảng 56.1%. |
| Hypertension | +3.1339 | Nhóm Hypertension có log-odds cao hơn đáng kể so với Normal (p < 0.001). Odds tăng gấp \(e^{3.1339} \approx 22.96\) lần, xác suất mắc cao huyết áp ~97.8%. |
| Prehypertension | –0.0335 | Nhóm Prehypertension có log-odds gần như tương đương nhóm Normal (p = 0.764), odds ratio ≈ 0.97, xác suất ~54.3%. |
Nhận xét
Mô hình cho thấy tiền sử huyết áp là yếu tố dự báo mạnh mẽ cho khả năng mắc bệnh cao huyết áp.
Nhóm Hypertension có nguy cơ hiện mắc cao huyết áp rất cao, với odds tăng gấp khoảng 23 lần so với nhóm Normal (p < 0.001).
Nhóm Prehypertension không có sự khác biệt đáng kể so với nhóm Normal (p = 0.764), cho thấy giai đoạn tiền tăng huyết áp chưa làm tăng xác suất mắc cao huyết áp rõ rệt trong mô hình này.
Kết luận: Mô hình logistic khẳng định rằng tiền sử đã bị tăng huyết áp là yếu tố liên quan mạnh nhất đến khả năng hiện mắc cao huyết áp.
Áp dụng mô hình hồi quy Probit để phân tích mối quan hệ giữa tiền sử huyết áp (BP_History) và khả năng mắc bệnh cao huyết áp (Has_Hypertension_bin), trong đó nhóm tham chiếu là Normal.
# Mô hình Probit với biến BP_History
probit_model_BP_History <- glm(Has_Hypertension_bin ~ BP_History, family = binomial(link = "probit"), data = data)
summary(probit_model_BP_History)
##
## Call:
## glm(formula = Has_Hypertension_bin ~ BP_History, family = binomial(link = "probit"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.36034 0.04549 -7.922 2.34e-15 ***
## BP_HistoryHypertension 1.82099 0.09113 19.983 < 2e-16 ***
## BP_HistoryPrehypertension -0.02063 0.06885 -0.300 0.764
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2138.3 on 1982 degrees of freedom
## AIC: 2144.3
##
## Number of Fisher Scoring iterations: 5
\[ \Phi^{-1}(\hat{p}) = -0.36034 + 1.82099 \cdot \text{Hypertension} - 0.02063 \cdot \text{Prehypertension} \]
Trong đó:
\[\Phi^{-1}(\hat{p})\] là hàm nghịch đảo phân phối chuẩn tích lũy của xác suất mắc bệnh cao huyết áp.
Các biến là biến giả (dummy) tương ứng với các nhóm so với nhóm tham chiếu là Normal.
Diễn giải hệ số hồi quy
| Nhóm (BP_History) | Hệ số (Estimate) | Giải thích |
|---|---|---|
| (Intercept) | -0.36034 | Đây là giá trị z-score (ngưỡng phân phối chuẩn) của logit cho nhóm tham chiếu (Normal). Xác suất tương ứng khoảng \(Φ(-0.36034) ≈ 0.36\) (tức 36%). |
| Hypertension | +1.82099 | Nhóm Hypertension có z-score tăng thêm 1.82 so với nhóm tham chiếu (p < 0.001), tương ứng xác suất mắc cao huyết áp rất cao (ước tính \(Φ(-0.36034 + 1.82099) ≈ 0.87\), tức 87%). |
| Prehypertension | -0.02063 | Nhóm Prehypertension không khác biệt đáng kể so với nhóm tham chiếu (p = 0.764), xác suất ước tính gần như tương đương (≈ 36%). |
Nhận xét
Mô hình probit xác nhận rõ ràng rằng tiền sử huyết áp cao là một yếu tố dự đoán mạnh mẽ cho khả năng mắc bệnh cao huyết áp.
AIC = 2144.3, bằng với mô hình logistic, cho thấy mức độ phù hợp tương đương.
Kết quả hoàn toàn nhất quán với mô hình logistic, cho thấy độ tin cậy cao trong việc khẳng định mối liên hệ giữa tiền sử huyết áp và mắc bệnh cao huyết áp.
Mô hình hồi quy Cloglog được sử dụng để dự đoán xác suất mắc bệnh cao huyết áp (Has_Hypertension_bin) dựa trên mức độ đáp ứng (BP_History) sau điều trị. Mô hình đặc biệt phù hợp trong trường hợp biến phụ thuộc có phân phối bất cân xứng (tức là xác suất sự kiện xảy ra gần 0 hoặc gần 1).
# Mô hình cloglog với biến BP_History
cloglog_model_BP_History <- glm(Has_Hypertension_bin ~ BP_History, family = binomial(link = "cloglog"), data = data)
summary(cloglog_model_BP_History)
##
## Call:
## glm(formula = Has_Hypertension_bin ~ BP_History, family = binomial(link = "cloglog"),
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.80926 0.05962 -13.573 <2e-16 ***
## BP_HistoryHypertension 1.77636 0.08262 21.501 <2e-16 ***
## BP_HistoryPrehypertension -0.02714 0.09063 -0.299 0.765
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 2138.3 on 1982 degrees of freedom
## AIC: 2144.3
##
## Number of Fisher Scoring iterations: 5
\[ \log(-\log(1 - \hat{p})) = -0.80926 + 1.77636 \cdot \text{Hypertension} - 0.02714\cdot \text{Prehypertension} \]
Diễn giải hệ số hồi quy
| Nhóm (BP_History) | Hệ số (Estimate) | Giải thích |
|---|---|---|
| (Intercept) | -0.80926 | Đây là log(-log(1-p)) của nhóm tham chiếu (Normal). Tương ứng xác suất mắc cao huyết áp khoảng \(p ≈ 0.31\) (31%). |
| Hypertension | +1.77636 | Nhóm Hypertension làm tăng đáng kể log(-log(1-p)) (p < 0.001), xác suất ước tính tăng lên khoảng 87%. |
| Prehypertension | -0.02714 | Nhóm Prehypertension không khác biệt đáng kể với nhóm tham chiếu (p = 0.765), xác suất gần như không thay đổi (≈ 31%). |
Nhận xét
Tương tự như các mô hình hồi quy nhị phân khác (logistic và probit), mô hình cloglog xác nhận rằng tiền sử huyết áp là yếu tố ảnh hưởng mạnh đến nguy cơ mắc bệnh cao huyết áp.
Nhóm Hypertension là yếu tố dự báo mạnh nhất, tăng xác suất mắc cao huyết áp từ 31% (Normal) → ~87%.
AIC = 2144.3, bằng với logit và probit, cho thấy mức độ phù hợp tương tự.
Dù hàm liên kết khác, kết quả nhất quán với các mô hình trước, cho thấy tính ổn định và đáng tin cậy của biến BP_History trong tiên lượng bệnh.
Bảng tổng hợp chỉ số AIC của 4 mô hình hồi quy
| Mô hình | Hàm liên kết (Link function) | AIC | Phù hợp với dữ liệu nhị phân? |
|---|---|---|---|
| Linear Probability Model (LPM) | Không có (mô hình tuyến tính thông thường) | 2266.7 | ❌ Không phù hợp |
| Logit | \(\log\left(\frac{p}{1 - p}\right)\) | 2144.3 | ✅ Phù hợp |
| Probit | \(\Phi^{-1}(p)\) | 2144.3 | ✅ Phù hợp |
| Cloglog | \(\log(-\log(1 - p))\) | 2144.3 | ✅ Phù hợp |
Trong việc phân tích mối quan hệ giữa BP_History và khả năng mắc cao huyết áp, tất cả các mô hình đều cho cùng một kết luận: tiền sử huyết áp cao là yếu tố dự báo mạnh mẽ cho nguy cơ mắc bệnh.
Khi so sánh AIC, Mô hình hồi quy tuyến tính có AIC cao (2266.7) và không phù hợp cho biến phụ thuộc nhị phân. Ba mô hình Logit, Probit và Cloglog đều có AIC thấp hơn (2144.3), cho thấy mức độ phù hợp vượt trội.
Mặc dù Logit, Probit và Cloglog có AIC bằng nhau, Logit là lựa chọn ưu tiên trong phân tích lâm sàng, vì:
Dễ diễn giải thông qua Tỷ số chênh (Odds Ratio).
Cho phép kết luận rõ ràng: Nhóm có tiền sử Hypertension có odds mắc cao huyết áp cao gấp ~23 lần so với nhóm tham chiếu (Normal), với ý nghĩa thống kê rất cao (p < 0.001).
Do đó, Logit là mô hình được khuyến nghị để trình bày và báo cáo kết quả trong nghiên cứu này
Sau khi đã thực hiện các phân tích đơn biến và nhận thấy rằng các yếu tố BMI, Smoking_Status, Family_History và BP_History đều có mối liên hệ với khả năng mắc bệnh co huyết áp (Has_Hypertension), bước tiếp theo là xây dựng một mô hình hồi quy đa biến.
Mục tiêu:
Mục tiêu của phân tích đa biến là để đánh giá tác động đồng thời của nhiều biến độc lập lên một biến phụ thuộc. Điều này cho phép chúng ta:
# Linear Probability Model
model_lpm <- lm(Hypertension_bin ~ BMI + Smoking_Status + BP_History + Family_History, data = data)
summary(model_lpm)
##
## Call:
## lm(formula = Hypertension_bin ~ BMI + Smoking_Status + BP_History +
## Family_History, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.73265 -0.29374 -0.09307 0.27740 0.90693
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.307e-02 2.062e-02 4.514 6.75e-06 ***
## BMIOverweight 6.844e-02 1.823e-02 3.755 0.000179 ***
## BMIUnderweight 3.670e-02 4.094e-02 0.897 0.370065
## Smoking_StatusSmoker 2.758e-01 1.901e-02 14.507 < 2e-16 ***
## BP_HistoryHypertension 5.711e-01 2.102e-02 27.173 < 2e-16 ***
## BP_HistoryPrehypertension 8.947e-05 2.051e-02 0.004 0.996520
## Family_HistoryCó 2.853e-01 1.719e-02 16.600 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3827 on 1978 degrees of freedom
## Multiple R-squared: 0.4154, Adjusted R-squared: 0.4137
## F-statistic: 234.3 on 6 and 1978 DF, p-value: < 2.2e-16
\[ \hat{\pi} = 0.66420 + 0.06844 \cdot \text{BMI}_\text{Overweight} + 0.03670 \cdot \text{BMI}_\text{Underweight} + 0.27581 \cdot \text{Smoking_Status}_\text{Smoker} - 0.57114 \cdot \text{BP_History}_\text{Normall} \\ - 0.57105 \cdot \text{BP_History}_\text{Prehypertension} + 0.28528 \cdot \text{Family_History}_\text{Yes} \]
Mô hình hồi quy tuyến tính được sử dụng nhằm dự đoán xác suất tái phát \(\hat{\pi}\) của bệnh nhân dựa trên các yếu tố: giới tính, hút thuốc, tiền sử xạ trị, ổ tổn thương và đáp ứng điều trị.
Biến phụ thuộc: Hypertension_bin (biến nhị phân:
có/không tái phát).
Biến độc lập: BMI, Smoking_Status,
BP_History, Family_History.
mô hình giải thích được khoảng 41.5% biến thiên của biến phụ thuộc (Hypertension_bin). Kiểm định F CHO THẤY mô hình có ý nghĩa thống kê toàn cục, tức ít nhất một biến độc lập có ảnh hưởng đáng kể đến khả năng mắc cao huyết áp.
BMIOverweight: Hệ số dương (0.06844, p < 0.001) → thừa cân làm tăng xác suất mắc cao huyết áp khoảng 6.8 điểm % so với BMI bình thường.
BMIUnderweight: Không có ý nghĩa thống kê (p = 0.37).
Smoking_StatusSmoker: Hệ số 0.27581 (p < 0.001) → người hút thuốc có xác suất mắc cao huyết áp cao hơn 27.6%.
BP_History:
Normal: Hệ số -0.57114 (p < 0.001) → nhóm huyết áp bình thường có xác suất mắc cao huyết áp thấp hơn 57.1 điểm % so với nhóm tham chiếu (Hypertension).
Prehypertension: Tương tự, hệ số -0.57105 (p < 0.001) → nhóm tiền tăng huyết áp cũng giảm xác suất tương tự.
Family_HistoryYes: Hệ số 0.28528 (p < 0.001) → tiền sử gia đình mắc bệnh tăng huyết áp làm tăng xác suất mắc cao huyết áp thêm 28.5%.
Mô hình hồi quy tuyến tính (LPM) cho thấy các yếu tố thừa cân, hút thuốc, tiền sử huyết áp, và tiền sử gia đình đều có ảnh hưởng đáng kể đến xác suất mắc cao huyết áp.
Tuy nhiên, do biến phụ thuộc là nhị phân, LPM không phải là mô hình tối ưu: nó có thể dự báo xác suất ngoài khoảng [0,1] và vi phạm giả định phân phối chuẩn của sai số
Cần tiếp tục so sánh với các mô hình nhị phân như logit, probit, và cloglog để xác định mô hình phù hợp hơn.
# Logit
model_logit <- glm(Hypertension_bin ~ BMI + Smoking_Status + BP_History + Family_History,
family = binomial(link = "logit"), data = data)
summary(model_logit)
##
## Call:
## glm(formula = Hypertension_bin ~ BMI + Smoking_Status + BP_History +
## Family_History, family = binomial(link = "logit"), data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.598346 0.167167 -15.543 < 2e-16 ***
## BMIOverweight 0.467596 0.129269 3.617 0.000298 ***
## BMIUnderweight 0.248343 0.286458 0.867 0.385972
## Smoking_StatusSmoker 1.878064 0.143594 13.079 < 2e-16 ***
## BP_HistoryHypertension 3.961422 0.207258 19.113 < 2e-16 ***
## BP_HistoryPrehypertension 0.006073 0.130423 0.047 0.962859
## Family_HistoryCó 1.979471 0.136064 14.548 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 1698.4 on 1978 degrees of freedom
## AIC: 1712.4
##
## Number of Fisher Scoring iterations: 5
Mô hình hồi quy logistic (logit) được sử dụng nhằm dự đoán xác suất
tái phát \(\pi\) của bệnh nhân tuyến
giáp biệt hóa, với biến phụ thuộc nhị phân Hypertension_bin
(0: không tái phát, 1: tái phát).
Các biến độc lập được đưa vào mô hình gồm:
BMI (Thể Trạng),Smoking_Status (hút thuốc hay không),BP_History (tiền sử huyết áp),Family_History (gia đình có mắc bệnh không),→ Mô hình logit cải thiện đáng kể so với mô hình rỗng, thể hiện qua deviance giảm mạnh. AIC thấp cho thấy mức độ phù hợp tương đối tốt với dữ liệu nhị phân.
Mô hình logit có dạng tổng quát:
\[ \log\left(\frac{\pi}{1 - \pi}\right) = \beta_0 + \beta_1 \cdot \text{BMI} + \beta_2 \cdot \text{Smoking\_Status} + \beta_3 \cdot \text{BP\_History} + \beta_4 \cdot \text{Family\_History} \]
Thay các hệ số ước lượng:
\[ \log\left(\frac{\pi}{1 - \pi}\right) = 1.3631 + 0.4676 \cdot \text{BMI}_{Overweight} + 0.2483 \cdot \text{BMI}_{Underweight} + 1.8781 \cdot \text{Smoking\_Status}_{Smoker} - 3.9614 \cdot \text{BP\_History}_{Normal} - 3.9553 \cdot \text{BP\_History}_{Prehypertension} + 1.9795 \cdot \text{Family\_History}_{Yes} \]
| Biến | Hệ số \(\beta\) | OR (odds ratio) | Giá trị p | Ý nghĩa thống kê | Diễn giải ý nghĩa |
|---|---|---|---|---|---|
| (Intercept) | 1.3631 | 3.908 | < 0.001 | Có | Xác suất cơ bản mắc cao huyết áp tương đối cao ở nhóm tham chiếu. |
| BMIOverweight | 0.4676 | 1.596 | 0.000298 | Có | Người thừa cân có odds mắc cao huyết áp cao hơn ~1.6 lần so với nhóm BMI bình thường. |
| BMIUnderweight | 0.2483 | 1.282 | 0.386 | Không | Ảnh hưởng không đáng kể. |
| Smoking_StatusSmoker | 1.8781 | 6.539 | < 2e-16 | Có | Người hút thuốc có odds mắc cao huyết áp cao gấp ~6.5 lần so với người không hút. |
| BP_HistoryNormal | -3.9614 | 0.019 | < 2e-16 | Có | Người có tiền sử huyết áp bình thường có odds mắc cao huyết áp thấp hơn rất nhiều (~98%) so với nhóm tham chiếu (Hypertension). |
| BP_HistoryPrehypertension | -3.9553 | 0.019 | < 2e-16 | Có | Người tiền tăng huyết áp cũng có odds thấp tương tự (~98% thấp hơn nhóm Hypertension). |
| Family_HistoryYes | 1.9795 | 7.237 | < 2e-16 | Có | Có tiền sử gia đình mắc bệnh làm tăng odds mắc cao huyết áp ~7.2 lần. |
Ghi chú:
- \(\text{OR} = e^{\beta}\)
- Giá trị p < 0.05 → Có ý nghĩa thống kê
# Probit
model_probit <- glm(Hypertension_bin ~ BMI + Smoking_Status + BP_History + Family_History,
family = binomial(link = "probit"), data = data)
summary(model_probit)
##
## Call:
## glm(formula = Hypertension_bin ~ BMI + Smoking_Status + BP_History +
## Family_History, family = binomial(link = "probit"), data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.506336 0.091012 -16.551 < 2e-16 ***
## BMIOverweight 0.272890 0.074668 3.655 0.000257 ***
## BMIUnderweight 0.106949 0.165618 0.646 0.518436
## Smoking_StatusSmoker 1.095287 0.080880 13.542 < 2e-16 ***
## BP_HistoryHypertension 2.314644 0.110888 20.874 < 2e-16 ***
## BP_HistoryPrehypertension -0.006321 0.076520 -0.083 0.934167
## Family_HistoryCó 1.146317 0.074754 15.335 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 1691.6 on 1978 degrees of freedom
## AIC: 1705.6
##
## Number of Fisher Scoring iterations: 6
Mô hình hồi quy Probit có dạng:
\[ \Phi^{-1}(\pi) = 0.80831 + 0.27289 \cdot \text{BMI}_{Overweight} + 0.10695 \cdot \text{BMI}_{Underweight} + 1.09529 \cdot \text{Smoking\_Status}_{Smoker} - 2.31464 \cdot \text{BP\_History}_{Normal} - 2.32096 \cdot \text{BP\_History}_{Prehypertension} + 1.14632 \cdot \text{Family\_History}_{Yes} \]
Trong đó: - \(\Phi^{-1}(\pi)\) là hàm nghịch đảo của hàm phân phối chuẩn tích lũy, đặc trưng cho mô hình Probit. - \(\pi\) là xác suất mắc cao huyết áp.
| Biến | Hệ số \(\beta\) | Giá trị p | Ý nghĩa thống kê | Diễn giải ý nghĩa |
|---|---|---|---|---|
| (Intercept) | 0.80831 | < 0.001 | Có | Nhóm tham chiếu có log-probit dương → xác suất cơ bản khá cao. |
| BMIOverweight | 0.27289 | 0.000257 | Có | Người thừa cân có xác suất mắc cao huyết áp cao hơn nhóm BMI bình thường. |
| BMIUnderweight | 0.10695 | 0.518 | Không | Ảnh hưởng không đáng kể. |
| Smoking_StatusSmoker | 1.09529 | < 2e-16 | Có | Người hút thuốc có xác suất mắc cao huyết áp cao hơn đáng kể. |
| BP_HistoryNormal | -2.31464 | < 2e-16 | Có | Nhóm huyết áp bình thường có xác suất mắc thấp hơn nhiều so với nhóm tăng huyết áp. |
| BP_HistoryPrehypertension | -2.32096 | < 2e-16 | Có | Nhóm tiền tăng huyết áp cũng có xác suất thấp hơn đáng kể. |
| Family_HistoryYes | 1.14632 | < 2e-16 | Có | Có tiền sử gia đình làm tăng xác suất mắc cao huyết áp. |
# Cloglog
model_cloglog <- glm(Hypertension_bin ~ BMI + Smoking_Status + BP_History + Family_History,
family = binomial(link = "cloglog"), data = data)
summary(model_cloglog)
##
## Call:
## glm(formula = Hypertension_bin ~ BMI + Smoking_Status + BP_History +
## Family_History, family = binomial(link = "cloglog"), data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.25067 0.12339 -18.241 < 2e-16 ***
## BMIOverweight 0.29497 0.08774 3.362 0.000774 ***
## BMIUnderweight 0.11984 0.19590 0.612 0.540702
## Smoking_StatusSmoker 1.26412 0.09210 13.725 < 2e-16 ***
## BP_HistoryHypertension 2.56855 0.12764 20.123 < 2e-16 ***
## BP_HistoryPrehypertension -0.03704 0.09485 -0.391 0.696131
## Family_HistoryCó 1.41020 0.09884 14.268 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2748.6 on 1984 degrees of freedom
## Residual deviance: 1685.1 on 1978 degrees of freedom
## AIC: 1699.1
##
## Number of Fisher Scoring iterations: 6
Mô hình hồi quy Cloglog có dạng:
\[ \log\left(-\log(1 - \pi)\right) = 0.31787 + 0.29497 \cdot \text{BMI}_{Overweight} + 0.11984 \cdot \text{BMI}_{Underweight} + 1.26412 \cdot \text{Smoking\_Status}_{Smoker} - 2.56855 \cdot \text{BP\_History}_{Normal} - 2.60559 \cdot \text{BP\_History}_{Prehypertension} + 1.41020 \cdot \text{Family\_History}_{Yes} \]
Trong đó: - \(\pi\) là xác suất mắc cao huyết áp. - Hàm liên kết là \(g(\pi) = \log(-\log(1 - \pi))\).
| Biến | Hệ số \(\beta\) | Giá trị p | Ý nghĩa thống kê | Diễn giải ý nghĩa |
|---|---|---|---|---|
| (Intercept) | 0.31787 | 0.00109 | Có | Xác suất cơ bản của nhóm tham chiếu khá cao. |
| BMIOverweight | 0.29497 | 0.00077 | Có | Người thừa cân có xác suất mắc cao huyết áp cao hơn đáng kể. |
| BMIUnderweight | 0.11984 | 0.541 | Không | Ảnh hưởng không đáng kể. |
| Smoking_StatusSmoker | 1.26412 | < 2e-16 | Có | Người hút thuốc có nguy cơ mắc bệnh cao hơn nhiều. |
| BP_HistoryNormal | -2.56855 | < 2e-16 | Có | Huyết áp bình thường làm giảm mạnh nguy cơ mắc cao huyết áp. |
| BP_HistoryPrehypertension | -2.60559 | < 2e-16 | Có | Tiền tăng huyết áp cũng giảm nguy cơ đáng kể. |
| Family_HistoryYes | 1.41020 | < 2e-16 | Có | Có tiền sử gia đình mắc bệnh làm tăng mạnh nguy cơ mắc cao huyết áp. |
Chỉ số Akaike Information Criterion (AIC) là một tiêu chí phổ biến để so sánh chất lượng giữa các mô hình thống kê. AIC đo lường sự đánh đổi giữa độ phù hợp và độ phức tạp của mô hình. Mô hình có AIC càng thấp được xem là phù hợp hơn với dữ liệu (ở cùng một tập biến giải thích).
# So sánh AIC
aic_values <- data.frame(
Mô_hình = c("LPM", "Logit", "Probit", "Cloglog"),
AIC = c(AIC(model_lpm), AIC(model_logit), AIC(model_probit), AIC(model_cloglog))
)
print(aic_values)
## Mô_hình AIC
## 1 LPM 1828.510
## 2 Logit 1712.377
## 3 Probit 1705.560
## 4 Cloglog 1699.130
Bảng AIC của các mô hình
| Mô hình | AIC | Nhận xét về độ phù hợp |
|---|---|---|
| LPM | 1828.510 | Phù hợp tương đối |
| Logit | 1712.377 | Phù hợp tương đối |
| Probit | 1705.560 | Phù hợp tương tự Logit |
| Cloglog | 1699.130 | ✅ Tốt nhất (AIC thấp nhất trong các mô hình nhị phân) |
Lưu ý: Mô hình LPM (Linear Probability Model) là mô hình hồi quy tuyến tính, không thuộc họ phân phối nhị thức nên AIC có thể âm và không trực tiếp so sánh được với các mô hình logit, probit, cloglog.
Kết luận:
Đường cong ROC (Receiver Operating Characteristic) là một công cụ trực quan hóa hiệu quả phân loại của mô hình bằng cách mô tả mối quan hệ giữa tỷ lệ dương đúng (True Positive Rate - TPR) và tỷ lệ dương giả (False Positive Rate - FPR) tại các ngưỡng phân loại khác nhau. ROC đặc biệt hữu ích trong bối cảnh dữ liệu mất cân đối, ví dụ như trường hợp tỷ lệ khách hàng “vay” nhỏ hơn nhiều so với “không vay”.
Chỉ số AUC (Area Under the Curve) – tức diện tích dưới đường cong ROC – là thước đo tổng quát để đánh giá chất lượng mô hình. Giá trị AUC nằm trong khoảng từ 0 đến 1, trong đó:
AUC = 0.5: Mô hình không có khả năng phân biệt, tương đương với đoán ngẫu nhiên.
0.7 ≤ AUC < 0.8: Mô hình có chất lượng phân loại khá.
0.8 ≤ AUC < 0.9: Mô hình có chất lượng tốt.
AUC ≥ 0.9: Mô hình phân loại rất tốt.
So sánh giữa các mô hình hồi quy nhị phân như Logit, Probit và Complementary Log-log (Cloglog) thông qua chỉ số AUC giúp xác định mô hình nào có hiệu suất phân loại cao hơn, từ đó hỗ trợ lựa chọn mô hình phù hợp nhất để dự báo hành vi vay tiêu dùng của khách hàng.
# Cài đặt gói
if (!require(pROC)) install.packages("pROC", dependencies = TRUE)
## Loading required package: pROC
## Warning: package 'pROC' was built under R version 4.3.3
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following object is masked from 'package:gmodels':
##
## ci
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
library(pROC)
# Huấn luyện mô hình cloglog
model_cloglog <- glm(
formula = Hypertension_bin ~ BMI + Smoking_Status + BP_History +
Family_History,
family = binomial(link = "cloglog"),
data = data
)
# Tính xác suất dự đoán từ mô hình cloglog
predicted_probs_cloglog <- predict(model_cloglog, type = "response")
# Vẽ đường cong ROC và tính AUC, loại bỏ cảnh báo
suppressWarnings({
roc_cloglog <- roc(
response = data$Has_Hypertension,
predictor = predicted_probs_cloglog,
levels = c("No", "Yes"),
direction = "<"
)
})
# Vẽ biểu đồ ROC
plot(roc_cloglog, col = "#1f77b4", lwd = 2, main = "ROC Curve - Cloglog Model")
# Hiển thị AUC
auc_cloglog <- auc(roc_cloglog)
print(paste("AUC:", round(auc_cloglog, 4)))
## [1] "AUC: 0.8732"
model_logit <- glm(Hypertension_bin ~ BMI + Smoking_Status + BP_History +
Family_History, family = binomial(link = "logit"), data = data)
model_probit <- glm(Hypertension_bin ~ BMI + Smoking_Status + BP_History +
Family_History, family = binomial(link = "probit"), data = data)
model_cloglog <- glm(Hypertension_bin ~ BMI + Smoking_Status + BP_History +
Family_History, family = binomial(link = "cloglog"), data = data)
# Dự đoán xác suất
pred_logit <- predict(model_logit, type = "response")
pred_probit <- predict(model_probit, type = "response")
pred_cloglog <- predict(model_cloglog, type = "response")
# Tạo ROC cho từng mô hình và loại bỏ cảnh báo
suppressWarnings({
roc_logit <- roc(response = data$Has_Hypertension, predictor = pred_logit, levels = c("No", "Yes"), direction = "<")
roc_probit <- roc(response = data$Has_Hypertension, predictor = pred_probit, levels = c("No", "Yes"), direction = "<")
roc_cloglog <- roc(response = data$Has_Hypertension, predictor = pred_cloglog, levels = c("No", "Yes"), direction = "<")
})
# Vẽ ROC đầu tiên
plot(roc_logit, col = "#d95f02", lwd = 2, main = "So sánh ROC: Logit - Probit - Cloglog", legacy.axes = TRUE)
# Vẽ các ROC tiếp theo
lines(roc_probit, col = "#7570b3", lwd = 2)
lines(roc_cloglog, col = "#e7298a", lwd = 2)
# Thêm chú thích (legend)
legend("bottomright", legend = c(
paste("Logit (AUC =", round(auc(roc_logit), 3), ")"),
paste("Probit (AUC =", round(auc(roc_probit), 3), ")"),
paste("Cloglog (AUC =", round(auc(roc_cloglog), 3), ")")
),
col = c("#d95f02", "#7570b3", "#e7298a"),
lwd = 2, cex = 0.8, box.lwd = 0
)
Đánh giá hiệu suất mô hình bằng ROC và AUC
Ba mô hình hồi quy nhị phân (Logit, Probit, Cloglog) được xây dựng để dự đoán khả năng mắc cao huyết áp dựa trên các biến độc lập: BMI, tình trạng hút thuốc, tiền sử huyết áp, và tiền sử gia đình.
Biểu đồ ROC cho thấy cả ba mô hình đều có AUC = 0.873, chứng tỏ khả năng phân loại tương đương và mức độ dự đoán rất tốt.
Các đường ROC gần như trùng khít, cho thấy việc lựa chọn Logit, Probit hay Cloglog không tạo ra sự khác biệt đáng kể về hiệu suất phân loại.
Mặc dù Probit và Cloglog đạt AIC thấp hơn Logit, nhưng trong thực tiễn:
Kết luận: - Cả ba mô hình đều đạt AUC cao (0.873), thể hiện khả năng dự đoán mạnh. - Logit được khuyến nghị sử dụng vì: - Dễ diễn giải. - Phù hợp với chuẩn báo cáo trong các nghiên cứu y học. - Đem lại hiệu suất phân loại tương đương với Probit và Cloglog.
Nghiên cứu này đã tập trung phân tích các yếu tố ảnh hưởng đến nguy cơ mắc bệnh cao huyết áp ở người trưởng thành bằng cách ứng dụng các phương pháp phân tích dữ liệu định lượng trên bộ dữ liệu “Hypertension Risk Prediction Dataset”. Thông qua việc triển khai các mô hình hồi quy nhị phân bao gồm Logit, Probit và Cloglog, nghiên cứu đã xác định được mức độ tác động của các yếu tố như chỉ số khối cơ thể (BMI), thói quen hút thuốc, tiền sử huyết áp và tiền sử gia đình đến xác suất mắc bệnh cao huyết áp.
Kết quả phân tích cho thấy các yếu tố như BMI (đặc biệt ở nhóm thừa cân), tình trạng hút thuốc, tiền sử huyết áp và tiền sử gia đình đều có ảnh hưởng thống kê đáng kể đến nguy cơ mắc bệnh. Trong đó, hút thuốc và tiền sử huyết áp nổi bật là hai yếu tố có tác động mạnh nhất. Cụ thể, mô hình Logit chỉ ra rằng những người hút thuốc có odds ratio (OR) cao gấp 6.5 lần và những người có tiền sử gia đình mắc bệnh cao huyết áp có OR cao gấp 7.2 lần so với nhóm không có các đặc điểm này, cho thấy nguy cơ mắc bệnh tăng lên đáng kể.
Về hiệu quả dự đoán, nghiên cứu đã so sánh các mô hình thông qua các chỉ số như AIC và đường cong ROC. Mô hình Cloglog đạt AIC thấp nhất (1699.13), chứng tỏ đây là mô hình phù hợp nhất trong việc dự đoán nguy cơ mắc bệnh cao huyết áp trong bộ dữ liệu này. Các mô hình Logit (AIC = 1712.38) và Probit (AIC = 1705.56) cũng cho thấy hiệu suất tốt, với chỉ số AUC đạt 0.873 trên đường cong ROC, phản ánh khả năng phân loại chính xác cao của cả ba mô hình. Điều này khẳng định rằng các yếu tố được chọn trong nghiên cứu có giá trị dự đoán mạnh mẽ đối với nguy cơ mắc bệnh.
Từ các kết quả trên, có thể kết luận rằng việc kiểm soát các yếu tố hành vi như hút thuốc và duy trì chỉ số BMI ở mức bình thường đóng vai trò quan trọng trong việc giảm thiểu nguy cơ mắc bệnh cao huyết áp. Đồng thời, tiền sử huyết áp và tiền sử gia đình là những yếu tố không thể thay đổi nhưng cần được lưu ý để phát hiện và can thiệp sớm.
Dựa trên những phát hiện từ nghiên cứu, dưới đây là một số kiến nghị của tác giả nhằm nâng cao hiệu quả phòng ngừa và kiểm soát bệnh cao huyết áp trong cộng đồng:
Tăng cường nhận thức cộng đồng: Các cơ quan y tế và tổ chức xã hội cần đẩy mạnh các chương trình giáo dục sức khỏe, tập trung vào việc nâng cao nhận thức về tác hại của hút thuốc và tầm quan trọng của việc duy trì BMI ở mức hợp lý. Các chiến dịch truyền thông nên sử dụng dữ liệu khoa học để khuyến khích thay đổi lối sống lành mạnh.
Khuyến khích sàng lọc định kỳ: Người trưởng thành, đặc biệt là những người có tiền sử gia đình mắc bệnh cao huyết áp hoặc thuộc nhóm nguy cơ cao (như người hút thuốc, thừa cân), nên được khuyến khích kiểm tra huyết áp định kỳ. Các cơ sở y tế cần tạo điều kiện thuận lợi để tăng khả năng tiếp cận dịch vụ này.
Triển khai chương trình can thiệp hành vi: Cần xây dựng và triển khai các chương trình hỗ trợ cai nghiện thuốc lá, tư vấn dinh dưỡng và khuyến khích hoạt động thể chất. Những can thiệp này không chỉ giúp giảm nguy cơ cao huyết áp mà còn cải thiện sức khỏe tổng thể của cộng đồng.
Mở rộng nghiên cứu và cải thiện dữ liệu: Để có cái nhìn sâu sắc hơn, các nghiên cứu trong tương lai nên mở rộng phạm vi dữ liệu, bao gồm các yếu tố bổ sung như mức độ căng thẳng, chế độ ăn uống và thói quen vận động. Điều này sẽ giúp tăng cường độ chính xác và tính ứng dụng của các mô hình dự đoán.
Ứng dụng công nghệ dự đoán trong y tế: Các mô hình hồi quy nhị phân như Cloglog, Logit và Probit có thể được tích hợp vào hệ thống y tế để dự đoán nguy cơ mắc bệnh cao huyết áp cho từng cá nhân. Điều này hỗ trợ các chuyên gia y tế trong việc đưa ra các biện pháp can thiệp kịp thời và cá nhân hóa.