Trong những năm gần đây, tình trạng thừa cân, béo phì ngày càng trở nên phổ biến và trở thành một vấn đề sức khỏe cộng đồng đáng báo động ở nhiều quốc gia, trong đó có Việt Nam. Béo phì không chỉ ảnh hưởng tiêu cực đến chất lượng cuộc sống của cá nhân mà còn làm gia tăng gánh nặng cho hệ thống y tế do liên quan đến các bệnh mãn tính như tim mạch, tiểu đường và cao huyết áp.
Trong bối cảnh đó, việc phân tích các yếu tố ảnh hưởng đến mức độ cân nặng có ý nghĩa thực tiễn to lớn, đặc biệt là các yếu tố hành vi như thói quen ăn uống (ví dụ: tiêu thụ thực phẩm giàu calo, kiểm soát khẩu phần) và yếu tố di truyền như tiền sử gia đình bị thừa cân. Những yếu tố này có thể thay đổi hoặc can thiệp được (về hành vi), hoặc cần được lưu ý trong quá trình tư vấn, dự phòng (về di truyền).
Thông qua việc ứng dụng các mô hình thống kê hiện đại, đề tài này nhằm mục tiêu xác định và đánh giá mức độ ảnh hưởng của các yếu tố hành vi và di truyền đến khả năng một cá nhân rơi vào các mức độ béo phì khác nhau. Kết quả nghiên cứu không chỉ góp phần làm rõ cơ chế hình thành béo phì mà còn là cơ sở định hướng cho các biện pháp phòng ngừa và can thiệp chính sách hiệu quả hơn trong tương lai.
Mục tiêu của nghiên cứu này là tìm hiểu và đánh giá mức độ ảnh hưởng của các yếu tố hành vi và di truyền đến tình trạng cân nặng, đặc biệt là nguy cơ rơi vào các nhóm béo phì ở mức độ nặng như Obesity_Type_I và Obesity_Type_III. Cụ thể, nghiên cứu tập trung vào việc xác định mối liên hệ giữa các hành vi như thói quen tiêu thụ thực phẩm giàu calo, việc theo dõi lượng calo hằng ngày, cùng với yếu tố tiền sử gia đình bị thừa cân, nhằm làm rõ vai trò của từng yếu tố trong việc hình thành nguy cơ béo phì. Ngoài ra, nghiên cứu còn đặt mục tiêu so sánh hiệu quả của các mô hình hồi quy nhị phân khác nhau (logit, probit, cloglog) trong việc dự đoán xác suất mắc béo phì dựa trên các yếu tố đã nêu, từ đó lựa chọn mô hình phù hợp nhất để mô tả hiện tượng.
Từ các mục tiêu trên, nghiên cứu đặt ra các câu hỏi chính: (1) Những hành vi nào có liên quan mật thiết đến khả năng bị béo phì ở mức độ nghiêm trọng? (2) Liệu việc có người thân trong gia đình từng bị thừa cân có làm tăng nguy cơ béo phì hay không, và nếu có thì mức độ ảnh hưởng là bao nhiêu? (3) Trong số các mô hình thống kê được sử dụng, mô hình nào cho thấy sự phù hợp tốt nhất với dữ liệu về béo phì theo các yếu tố hành vi và di truyền? (4) Có tồn tại sự tương tác đáng kể nào giữa yếu tố hành vi và yếu tố di truyền trong quá trình hình thành tình trạng béo phì hay không?
Đối tượng nghiên cứu trong đề tài này là các cá nhân có đặc điểm nhân khẩu học và lối sống khác nhau, được ghi nhận trong bộ dữ liệu liên quan đến sức khỏe, hành vi ăn uống và yếu tố di truyền, cụ thể là biến số tình trạng cân nặng được phân loại theo chuẩn NObeyesdad. Các đặc điểm cá nhân được phân tích bao gồm hành vi tiêu thụ thực phẩm giàu calo (FAVC), việc theo dõi lượng calo tiêu thụ (SCC), và yếu tố tiền sử gia đình bị thừa cân (family_history_with_overweight). Đây là ba biến đại diện cho hai nhóm yếu tố chính: hành vi và di truyền, vốn được xem là có ảnh hưởng lớn đến nguy cơ mắc béo phì.
Phạm vi nghiên cứu giới hạn ở việc phân tích ảnh hưởng của các yếu tố kể trên đến xác suất rơi vào các nhóm béo phì nghiêm trọng, đặc biệt là Obesity_Type_I và Obesity_Type_III. Phân tích được thực hiện dựa trên các mô hình hồi quy nhị phân như logit, probit, và cloglog, với mục tiêu không chỉ đo lường mức độ ảnh hưởng của từng yếu tố mà còn đánh giá mức độ phù hợp của các mô hình này với dữ liệu thực tế. Nghiên cứu không xem xét đến các yếu tố kinh tế, xã hội, hay các can thiệp y tế cụ thể, mà tập trung vào khía cạnh định lượng và hành vi để làm rõ cơ chế hình thành tình trạng béo phì trong cộng đồng.
Nghiên cứu này sử dụng phương pháp định lượng, cụ thể là phân tích hồi quy nhị phân để đánh giá ảnh hưởng của các yếu tố hành vi và di truyền đến khả năng một cá nhân rơi vào các mức độ béo phì khác nhau. Dữ liệu được xử lý và phân tích bằng ngôn ngữ lập trình R, với các biến định danh như NObeyesdad được mã hóa nhị phân để phục vụ mục đích mô hình hóa.
Ba mô hình hồi quy nhị phân chính được sử dụng bao gồm: hồi quy logistic (logit), hồi quy chuẩn tắc (probit) và hồi quy complementary log-log (cloglog). Các mô hình này được triển khai nhằm so sánh khả năng dự đoán và mức độ phù hợp với dữ liệu thông qua chỉ số AIC. Bên cạnh đó, phân tích đơn biến và đa biến được áp dụng để xem xét riêng lẻ cũng như tổng hợp ảnh hưởng của các biến độc lập như FAVC (ăn nhiều đồ calo), SCC (theo dõi lượng calo), và family_history_with_overweight (tiền sử gia đình bị thừa cân) đến xác suất rơi vào nhóm béo phì.
Ngoài ra, để hỗ trợ việc diễn giải mô hình, các chỉ số như tỷ số odds (odds ratio) và chênh lệch xác suất giữa các nhóm cũng được tính toán và phân tích chi tiết. Việc so sánh các mô hình dựa trên cả yếu tố thống kê và ý nghĩa thực tiễn nhằm đưa ra kết luận chính xác và có giá trị ứng dụng.
Relative Risk (RR) – hay còn gọi là nguy cơ tương đối – so sánh xác suất xảy ra hành vi vay tiêu dùng 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:
Mô hình Logit được sử dụng phổ biến để phân tích mối quan hệ giữa một biến phụ thuộc nhị phân và một hoặc nhiều biến độc lập (liên tục hoặc định tính). Mục tiêu là ước lượng xác suất xảy ra sự kiện (ở đây là tái phát bệnh).
Xác suất tái phát của cá thể thứ \(i\) được mô hình hóa như sau:
\[ P_i = P(Y_i = 1 | X_i) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 X_{1i} + \dots + \beta_k X_{ki})}} = \frac{e^{Z_i}}{1 + e^{Z_i}} \]
Trong đó:
Để tuyến tính hóa mô hình, người ta sử dụng hàm logit:
\[ L_i = \ln\left( \frac{P_i}{1 - P_i} \right) = \beta_0 + \beta_1 X_{1i} + \dots + \beta_k X_{ki} \]
Tỷ số \(\frac{P_i}{1 - P_i}\) được gọi là tỷ số chênh (odds), cho biết khả năng xảy ra sự kiện so với không xảy ra sự kiện. Mỗi hệ số \(\beta_k\) được diễn giải bằng tỷ số chênh lệch (Odds Ratio – OR):
\[ OR_k = e^{\beta_k} \]
Ý nghĩa: Khi biến \(X_k\) tăng một đơn vị (và các biến khác giữ nguyên), odds của việc tái phát bệnh sẽ thay đổi \(e^{\beta_k}\) lần.
Mô hình Probit là một lựa chọn thay thế cho Logit, với khác biệt chính nằm ở hàm liên kết. Probit sử dụng hàm phân phối tích lũy chuẩn \(\Phi(Z)\) thay vì hàm logistic.
Mô hình có dạng:
\[ P_i = P(Y_i = 1 | X_i) = \Phi(Z_i) = \int_{-\infty}^{Z_i} \frac{1}{\sqrt{2\pi}} e^{-t^2/2} dt \]
Trong đó:
\[ Z_i = \beta_0 + \beta_1 X_{1i} + \dots + \beta_k X_{ki} \]
Mặc dù Logit và Probit sử dụng các phân phối khác nhau (logistic vs. chuẩn), trong thực tế hai mô hình thường cho kết quả khá tương đồng. Tuy nhiên, Logit được ưa chuộng hơn do khả năng diễn giải đơn giản thông qua Odds Ratio.
Với một mẫu gồm \(n\) quan sát độc lập, hàm hợp lý của mô hình được xây dựng như sau:
\[ L(\beta_0, \dots, \beta_k) = \prod_{i=1}^{n} P_i^{Y_i} (1 - P_i)^{1 - Y_i} \]
Trong đó:
Do hàm Likelihood là một tích phức tạp, người ta thường sử dụng logarit của nó để dễ tính toán:
\[ \ln L = \sum_{i=1}^{n} \left[ Y_i \ln(P_i) + (1 - Y_i) \ln(1 - P_i) \right] \]
Quá trình ước lượng sẽ tìm các giá trị \(\hat{\beta}_0, \hat{\beta}_1, \dots, \hat{\beta}_k\) sao cho hàm log-likelihood đạt cực đại. Việc tối ưu hóa này thường được thực hiện bằng các thuật toán số như Newton-Raphson, Fisher scoring, hay Gradient ascent.
l <- read.csv(file.choose(), header = T)
Bộ dữ liệu “Obesity Prediction Dataset”, được cung cấp trên nền tảng Kaggle bởi tác giả Adeniran Stephen, là một nguồn dữ liệu thực nghiệm được xây dựng nhằm phục vụ cho các mục đích nghiên cứu khoa học, ứng dụng học máy và phân tích dữ liệu y sinh. Tập dữ liệu này tập trung vào việc phản ánh các yếu tố ảnh hưởng đến tình trạng béo phì ở con người, bao gồm sự kết hợp giữa các đặc điểm sinh lý học (như chiều cao, cân nặng, chỉ số BMI), hành vi cá nhân (như tần suất tiêu thụ thức ăn nhanh, thói quen vận động thể chất, mức độ tiêu thụ nước, rượu), và yếu tố lối sống – xã hội (như tiền sử gia đình, mức độ stress, môi trường làm việc học tập).
Với cấu trúc rõ ràng, dễ xử lý và quy mô vừa phải (khoảng 2111 quan sát), bộ dữ liệu phù hợp cho nhiều phương pháp phân tích thống kê cũng như các kỹ thuật học máy như hồi quy logistic, cây quyết định, SVM, và mạng nơ-ron nhân tạo. Tập dữ liệu cung cấp nhãn phân loại theo nhiều mức độ béo phì, từ “Thiếu cân” đến “Béo phì cấp độ III”, cho phép xây dựng các mô hình phân loại đa cấp (multi-class classification) hoặc nhị phân tùy theo mục tiêu nghiên cứu.
Ngoài giá trị học thuật trong lĩnh vực khoa học dữ liệu và trí tuệ nhân tạo, bộ dữ liệu còn có ý nghĩa thực tiễn sâu sắc đối với y học dự phòng, dịch tễ học, và chính sách sức khỏe cộng đồng. Phân tích dữ liệu này có thể giúp nhận diện các yếu tố nguy cơ chính dẫn đến béo phì, từ đó xây dựng các chương trình can thiệp sớm, giáo dục sức khỏe và nâng cao nhận thức trong cộng đồng. Đồng thời, việc sử dụng dữ liệu này còn mở ra tiềm năng cho các ứng dụng công nghệ hỗ trợ ra quyết định trong y tế, ví dụ như hệ thống cảnh báo sớm nguy cơ béo phì dựa trên hành vi cá nhân.
Tóm lại, “Obesity Prediction Dataset” không chỉ là một bộ dữ liệu phục vụ mô phỏng kỹ thuật mà còn là cầu nối giữa khoa học dữ liệu và chăm sóc sức khỏe cộng đồng, góp phần thúc đẩy các nghiên cứu liên ngành nhằm đối phó với vấn đề béo phì đang gia tăng trong xã hội hiện đại.
names(l)
## [1] "Gender" "Age"
## [3] "Height" "Weight"
## [5] "family_history_with_overweight" "FAVC"
## [7] "FCVC" "NCP"
## [9] "CAEC" "SMOKE"
## [11] "CH2O" "SCC"
## [13] "FAF" "TUE"
## [15] "CALC" "MTRANS"
## [17] "NObeyesdad"
| Tên biến | Mô tả |
|---|---|
Gender |
Giới tính của cá nhân (Male, Female) |
Age |
Tuổi của cá nhân |
Height |
Chiều cao (mét) |
Weight |
Cân nặng (kg) |
family_history_with_overweight |
Có người thân bị thừa cân/béo phì không (yes/no) |
FAVC |
Có thường ăn thức ăn giàu calo không (yes/no) |
FCVC |
Mức độ tiêu thụ rau củ trung bình mỗi ngày (1 đến 3) |
NCP |
Số lượng bữa ăn chính trong ngày |
CAEC |
Tần suất ăn vặt giữa các bữa (Never, Sometimes, Frequently, Always) |
SMOKE |
Có hút thuốc không (yes/no) |
CH2O |
Lượng nước tiêu thụ mỗi ngày (1 đến 3 lít) |
SCC |
Có theo dõi lượng calo tiêu thụ không (yes/no) |
FAF |
Mức độ hoạt động thể chất mỗi tuần (0 đến 3 giờ hoặc hơn) |
TUE |
Thời gian sử dụng thiết bị công nghệ mỗi ngày (giờ) |
CALC |
Tần suất tiêu thụ đồ uống có cồn (no, Sometimes, Frequently, Always) |
MTRANS |
Phương tiện di chuyển chính (Public_Transportation, Walking, etc.) |
NObeyesdad |
Mức độ cân nặng (Normal, Overweight, Obesity Types…) |
str(l)
## 'data.frame': 2111 obs. of 17 variables:
## $ Gender : chr "Female" "Female" "Male" "Male" ...
## $ Age : int 21 21 23 27 22 29 23 22 24 22 ...
## $ Height : num 1.62 1.52 1.8 1.8 1.78 1.62 1.5 1.64 1.78 1.72 ...
## $ Weight : num 64 56 77 87 89.8 53 55 53 64 68 ...
## $ family_history_with_overweight: chr "yes" "yes" "yes" "no" ...
## $ FAVC : chr "no" "no" "no" "no" ...
## $ FCVC : num 2 3 2 3 2 2 3 2 3 2 ...
## $ NCP : num 3 3 3 3 1 3 3 3 3 3 ...
## $ CAEC : chr "Sometimes" "Sometimes" "Sometimes" "Sometimes" ...
## $ SMOKE : chr "no" "yes" "no" "no" ...
## $ CH2O : num 2 3 2 2 2 2 2 2 2 2 ...
## $ SCC : chr "no" "yes" "no" "no" ...
## $ FAF : num 0 3 2 2 0 0 1 3 1 1 ...
## $ TUE : num 1 0 1 0 0 0 0 0 1 1 ...
## $ CALC : chr "no" "Sometimes" "Frequently" "Frequently" ...
## $ MTRANS : chr "Public_Transportation" "Public_Transportation" "Public_Transportation" "Walking" ...
## $ NObeyesdad : chr "Normal_Weight" "Normal_Weight" "Normal_Weight" "Overweight_Level_I" ...
Kết quả từ hàm str(l) cho thấy bộ dữ liệu là một data frame gồm 2.111 quan sát (observations) và 17 biến (variables). Các biến trong dữ liệu thuộc nhiều kiểu dữ liệu khác nhau, bao gồm:
chr (character): cho các biến dạng phân loại như Gender, family_history_with_overweight, FAVC, CAEC, SMOKE, CALC, MTRANS, NObeyesdad,…
int (integer): như biến Age, đại diện cho tuổi.
num (numeric): gồm các biến số thực như Height, Weight, FCVC, NCP, CH2O, FAF, TUE,…
Các biến dạng character chủ yếu mô tả đặc điểm phân loại hoặc hành vi của cá nhân, trong khi các biến numeric và integer cung cấp thông tin định lượng. Biến mục tiêu (NObeyesdad) là một biến phân loại thể hiện mức độ béo phì của mỗi cá nhân, được thể hiện dưới dạng chuỗi văn bản (chr).
Cấu trúc này phù hợp để áp dụng các phương pháp phân tích thống kê, mô hình học máy và trực quan hóa dữ liệu trong các bài toán phân loại.
Trước tiên với head(5)
head(l,5)
## Gender Age Height Weight family_history_with_overweight FAVC FCVC NCP
## 1 Female 21 1.62 64.0 yes no 2 3
## 2 Female 21 1.52 56.0 yes no 3 3
## 3 Male 23 1.80 77.0 yes no 2 3
## 4 Male 27 1.80 87.0 no no 3 3
## 5 Male 22 1.78 89.8 no no 2 1
## CAEC SMOKE CH2O SCC FAF TUE CALC MTRANS
## 1 Sometimes no 2 no 0 1 no Public_Transportation
## 2 Sometimes yes 3 yes 3 0 Sometimes Public_Transportation
## 3 Sometimes no 2 no 2 1 Frequently Public_Transportation
## 4 Sometimes no 2 no 2 0 Frequently Walking
## 5 Sometimes no 2 no 0 0 Sometimes Public_Transportation
## NObeyesdad
## 1 Normal_Weight
## 2 Normal_Weight
## 3 Normal_Weight
## 4 Overweight_Level_I
## 5 Overweight_Level_II
Sau đó đi đến với tail(5)
tail(l,5)
## Gender Age Height Weight family_history_with_overweight FAVC FCVC NCP
## 2107 Female 21 1.71 131.41 yes yes 3 3
## 2108 Female 22 1.75 133.74 yes yes 3 3
## 2109 Female 23 1.75 133.69 yes yes 3 3
## 2110 Female 24 1.74 133.35 yes yes 3 3
## 2111 Female 24 1.74 133.47 yes yes 3 3
## CAEC SMOKE CH2O SCC FAF TUE CALC MTRANS
## 2107 Sometimes no 1.73 no 1.68 0.906 Sometimes Public_Transportation
## 2108 Sometimes no 2.01 no 1.34 0.599 Sometimes Public_Transportation
## 2109 Sometimes no 2.05 no 1.41 0.646 Sometimes Public_Transportation
## 2110 Sometimes no 2.85 no 1.14 0.586 Sometimes Public_Transportation
## 2111 Sometimes no 2.86 no 1.03 0.714 Sometimes Public_Transportation
## NObeyesdad
## 2107 Obesity_Type_III
## 2108 Obesity_Type_III
## 2109 Obesity_Type_III
## 2110 Obesity_Type_III
## 2111 Obesity_Type_III
ldt <- c("Gender",
"family_history_with_overweight",
"FAVC",
"CAEC",
"SMOKE",
"SCC",
"CALC",
"MTRANS",
"NObeyesdad")
ldt
## [1] "Gender" "family_history_with_overweight"
## [3] "FAVC" "CAEC"
## [5] "SMOKE" "SCC"
## [7] "CALC" "MTRANS"
## [9] "NObeyesdad"
colSums(is.na(l[ldt]))
## Gender family_history_with_overweight
## 0 0
## FAVC CAEC
## 0 0
## SMOKE SCC
## 0 0
## CALC MTRANS
## 0 0
## NObeyesdad
## 0
Sau khi lựa chọn các biến định tính từ bộ dữ liệu, bao gồm các thông tin như giới tính, tiền sử gia đình, thói quen ăn uống và mức độ béo phì, ta tiến hành kiểm tra sự thiếu dữ liệu (NA) trong các cột này. Kết quả cho thấy tất cả các biến định tính đều không có giá trị bị thiếu, đảm bảo độ đầy đủ và sẵn sàng cho các bước phân tích tiếp theo.
sapply(l[ldt], is.factor)
## Gender family_history_with_overweight
## FALSE FALSE
## FAVC CAEC
## FALSE FALSE
## SMOKE SCC
## FALSE FALSE
## CALC MTRANS
## FALSE FALSE
## NObeyesdad
## FALSE
Kết quả cho thấy tất cả các biến định tính đều chưa ở dạng factor, mà đang ở dạng chuỗi ký tự (character). Điều này là bình thường vì khi đọc dữ liệu từ file CSV, R mặc định sẽ coi các biến dạng phân loại là chuỗi. Việc chưa chuyển sang factor có thể ảnh hưởng đến việc xử lý thống kê hoặc vẽ biểu đồ sau này.
for (col in ldt) {
if (!is.factor(l[[col]])) {
l[[col]] <- as.factor(l[[col]])
}
}
sapply(l[ldt], is.factor)
## Gender family_history_with_overweight
## TRUE TRUE
## FAVC CAEC
## TRUE TRUE
## SMOKE SCC
## TRUE TRUE
## CALC MTRANS
## TRUE TRUE
## NObeyesdad
## TRUE
Sau khi thực hiện chuyển đổi, toàn bộ các biến định tính đã được chuyển sang kiểu factor. Kết quả trả về là TRUE cho tất cả các biến, điều này đảm bảo rằng dữ liệu đã sẵn sàng cho các bước phân tích thống kê hoặc mô hình hóa sử dụng các phương pháp xử lý biến phân loại.
Ở phần này ta sẽ chọn ra 5 biến định tính quan trọng để phân tích, tìm hiểu sâu về nó. Bao gồm:
family_history_with_overweight
FAVC
CAEC
CALC
NObeyesdad
table(l$family_history_with_overweight)
##
## no yes
## 385 1726
Kết quả bảng tần số cho thấy có 1.726 người (chiếm phần lớn) trong dữ liệu có tiền sử gia đình bị thừa cân hoặc béo phì, trong khi chỉ có 385 người không có. Điều này cho thấy yếu tố di truyền có thể đóng vai trò đáng kể trong việc ảnh hưởng đến nguy cơ béo phì, và là một biến quan trọng cần được xem xét trong phân tích tiếp theo.
l1 <- table(l$family_history_with_overweight)/sum(nrow(l))
table(l$family_history_with_overweight)/sum(nrow(l))
##
## no yes
## 0.182378 0.817622
Từ bảng tần suất, ta thấy khoảng 81.76% số người trong tập dữ liệu có tiền sử gia đình thừa cân, trong khi chỉ khoảng 18.24% không có. Điều này cho thấy phần lớn người tham gia khảo sát có yếu tố gia đình liên quan đến béo phì, gợi ý rằng đây là một yếu tố nguy cơ phổ biến và đáng chú ý trong các phân tích tiếp theo.
library(ggplot2)
library(tidyverse)
library(scales)
l1_df <- as.data.frame(l1)
names(l1_df) <- c("family_history_with_overweight", "Tansuat")
ggplot(l1_df, aes(x = "", y = Tansuat, fill = family_history_with_overweight)) +
geom_col(width = 1, color = "black") +
coord_polar(theta = "y") +
scale_fill_manual(values = c("no" = "#00C49A", "yes" = "#FF6384")) +
labs(title = "Biểu đồ tần suất có người thân bị thừa cân/béo phì không ") +
theme_void() +
geom_text(aes(label = paste0(round(Tansuat,6), "%")),
position = position_stack(vjust = 0.3),
color = "white", size = 4)
Biểu đồ tròn thể hiện tần suất của biến family_history_with_overweight cho thấy rằng phần lớn cá nhân trong tập dữ liệu (khoảng 81.76%) có người thân bị thừa cân hoặc béo phì, trong khi chỉ có khoảng 18.24% không có. Sự chênh lệch đáng kể này cho thấy yếu tố di truyền là một đặc điểm phổ biến và có thể đóng vai trò quan trọng trong nguy cơ béo phì, từ đó làm nổi bật tính cần thiết của việc phân tích sâu hơn về mối liên hệ giữa tiền sử gia đình và tình trạng sức khỏe.
table(l$FAVC)
##
## no yes
## 245 1866
Kết quả bảng tần số cho thấy có 1.866 người (chiếm phần lớn) trong tập dữ liệu thường xuyên tiêu thụ thức ăn giàu calo (FAVC = yes), trong khi chỉ có 245 người không tiêu thụ (FAVC = no). Điều này cho thấy thói quen ăn uống giàu năng lượng khá phổ biến trong nhóm khảo sát, và đây có thể là một yếu tố nguy cơ quan trọng dẫn đến thừa cân hoặc béo phì.
l2 <- table(l$FAVC)/sum(nrow(l))
table(l$FAVC)/sum(nrow(l))
##
## no yes
## 0.1160587 0.8839413
Tỷ lệ tần suất cho thấy có đến 88.39% người tham gia khảo sát thường xuyên tiêu thụ thức ăn giàu calo, trong khi chỉ có 11.61% không có thói quen này. Điều này phản ánh một thực trạng đáng chú ý về thói quen ăn uống không lành mạnh, có thể góp phần làm gia tăng nguy cơ thừa cân và béo phì trong cộng đồng được khảo sát.
l2_df <- as.data.frame(l2)
names(l2_df) <- c("FAVC", "Tansuat")
ggplot(l2_df, aes(x = FAVC, y = Tansuat, fill = FAVC)) +
geom_col(width = 0.6) +
geom_text(aes(label = round(Tansuat, 3)), vjust = -0.2, size = 5) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_manual(values = c("no" = "#9966FF", "yes" = "#4BC0C0")) +
labs(
title = "Biểu đồ tần suất FAVC ",
x = "Ăn nhiều đồ calo",
y = "Tần suất (%)"
) +
theme_minimal(base_size = 14)
Biểu đồ cho thấy phần lớn người trong tập dữ liệu (khoảng 88.4%) có thói quen ăn nhiều đồ ăn giàu calo, trong khi chỉ khoảng 11.6% không có thói quen này. Đây là một kết quả đáng lưu ý, vì thói quen tiêu thụ thực phẩm nhiều calo là một trong những yếu tố nguy cơ phổ biến dẫn đến tình trạng thừa cân hoặc béo phì. Sự chênh lệch rõ rệt này cho thấy đây là một đặc điểm quan trọng cần được xem xét kỹ trong các phân tích tiếp theo.
table(l$CAEC)
##
## Always Frequently no Sometimes
## 53 242 51 1765
Về tần suất ăn vặt giữa các bữa, dữ liệu cho thấy đa số người tham gia khảo sát thuộc nhóm “Sometimes” với 1.765 người, chiếm phần lớn trong tổng số. Nhóm “Never” chỉ có 51 người, cho thấy số người hoàn toàn không ăn vặt là rất ít. Trong khi đó, nhóm “Frequently” có 242 người, và nhóm “Always” có 53 người, phản ánh rằng vẫn tồn tại một bộ phận không nhỏ có thói quen ăn vặt thường xuyên hoặc liên tục. Kết quả này chỉ ra rằng hành vi ăn vặt giữa các bữa khá phổ biến, đặc biệt là ở mức độ thỉnh thoảng, và có thể đóng vai trò quan trọng trong các phân tích liên quan đến chế độ ăn uống và tình trạng cân nặng.
l3 <- table(l$CAEC)/sum(nrow(l))
table(l$CAEC)/sum(nrow(l))
##
## Always Frequently no Sometimes
## 0.02510658 0.11463761 0.02415917 0.83609664
Kết quả phân tích cho thấy phần lớn người tham gia khảo sát có thói quen ăn vặt thỉnh thoảng (Sometimes) với tỷ lệ 83.61%, vượt trội so với các nhóm còn lại. Trong khi đó, tỷ lệ người không bao giờ ăn vặt (no) và luôn luôn ăn vặt (Always) gần tương đương, lần lượt là 2.42% và 2.51%, cho thấy đây là hai nhóm ít phổ biến nhất. Nhóm ăn vặt thường xuyên (Frequently) chiếm khoảng 11.46%. Điều này phản ánh rằng hành vi ăn vặt thỉnh thoảng là tương đối phổ biến trong cộng đồng khảo sát, trong khi việc không ăn vặt hoặc ăn liên tục rất ít xảy ra. Đây là một đặc điểm đáng chú ý khi phân tích ảnh hưởng của thói quen ăn vặt đến tình trạng thừa cân, béo phì.
library(ggplot2)
library(tidyverse)
library(scales)
l3_df <- as.data.frame(l3)
names(l3_df) <- c("CAEC", "Tansuat")
ggplot(l3_df, aes(x = "", y = Tansuat, fill = CAEC)) +
geom_col(width = 1, color = "black") +
coord_polar(theta = "y") +
scale_fill_manual(values = c("no" = "#00C49A", "Always" = "#FF6384", "Frequently" = "purple", "Sometimes"= "orange")) +
labs(title = "Biểu đồ tần suất ăn vặt") +
theme_void() +
geom_text(aes(label = paste0(round(Tansuat,3), "%")),
position = position_stack(vjust = 0.35),
color = "white", size = 4)
Biểu đồ tần suất ăn vặt giữa các bữa (biến CAEC) cho thấy phần lớn người tham gia khảo sát có thói quen ăn vặt thỉnh thoảng, chiếm tỷ lệ 83.6%. Trong khi đó, tỷ lệ người ăn vặt thường xuyên là 11.5%, còn lại là những người luôn luôn ăn vặt (2.5%) và không ăn vặt (2.4%). Những con số này cho thấy việc ăn vặt giữa các bữa không phải là một hành vi hiếm gặp, tuy nhiên đa số người tham gia chỉ ăn vặt ở mức độ vừa phải. Điều này có thể phản ánh sự nhận thức nhất định về việc kiểm soát ăn uống, đồng thời cũng là cơ sở để xem xét mối liên hệ giữa thói quen này với tình trạng sức khỏe trong các phân tích tiếp theo.
table(l$CALC)
##
## Always Frequently no Sometimes
## 1 70 639 1401
Dựa trên bảng tần số của biến CALC (tần suất uống rượu), ta nhận thấy rằng phần lớn người tham gia khảo sát cho biết thỉnh thoảng có uống rượu (Sometimes), chiếm tỷ lệ cao nhất. Nhóm không uống rượu (no) cũng chiếm tỷ lệ đáng kể. Trong khi đó, số người uống rượu thường xuyên (Frequently) và luôn uống rượu (Always) là rất ít. Điều này cho thấy xu hướng chung là hạn chế uống rượu, hoặc chỉ uống một cách không thường xuyên trong nhóm khảo sát.
l4 <- table(l$CALC)/sum(nrow(l))
table(l$CALC)/sum(nrow(l))
##
## Always Frequently no Sometimes
## 0.0004737091 0.0331596400 0.3027001421 0.6636665088
Kết quả phân tích tần suất cho thấy rằng phần lớn người tham gia khảo sát có hành vi uống rượu ở mức độ vừa phải. Cụ thể, có đến 66.37% người cho biết họ thỉnh thoảng uống rượu (Sometimes), trong khi 30.27% hoàn toàn không uống rượu (no). Tỷ lệ người uống thường xuyên (Frequently) chiếm 3.32%, và luôn luôn uống (Always) chỉ chiếm tỷ lệ rất nhỏ là 0.047%. Điều này cho thấy xu hướng tiêu thụ rượu của phần lớn người được khảo sát vẫn còn ở mức kiểm soát được, tuy nhiên nhóm uống thường xuyên và luôn luôn dù nhỏ nhưng vẫn cần được chú ý vì có thể ảnh hưởng đến sức khỏe nếu không kiểm soát tốt.
ggplot(l, aes(x = CALC)) +
geom_bar(fill = "pink", color = "black") +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.3, size = 4) +
labs(x = "Tần suất uống rượu",
y = "Tần số",
title = "Biểu đồ tần số CALC ") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Biểu đồ tần số thể hiện sự phân bố của biến CALC (Tần suất uống rượu) cho thấy rằng phần lớn người tham gia khảo sát có thói quen thỉnh thoảng uống rượu, với tỷ lệ chiếm đến 66.37% (tương ứng 1401 người). Bên cạnh đó, khoảng 30.27% số người được khảo sát cho biết không uống rượu. Nhóm có tần suất uống thường xuyên hơn chiếm tỷ lệ khá thấp, cụ thể 3.32% chọn “Frequently” và chỉ 0.04% chọn “Always”.
Điều này cho thấy xu hướng uống rượu trong cộng đồng khảo sát là không phổ biến ở mức cao, chủ yếu là ở mức độ nhẹ hoặc không uống. Tuy nhiên, với gần 1/3 số người không uống và đa phần chỉ uống thỉnh thoảng, đây có thể là một yếu tố tích cực về mặt sức khỏe, song cũng cần được phân tích thêm khi kết hợp với các yếu tố khác như chỉ số cơ thể, thói quen ăn uống và lịch sử gia đình.
table(l$NObeyesdad)
##
## Insufficient_Weight Normal_Weight Obesity_Type_I Obesity_Type_II
## 272 287 351 297
## Obesity_Type_III Overweight_Level_I Overweight_Level_II
## 324 290 290
Biến NObeyesdad phản ánh tình trạng cân nặng của người tham gia khảo sát với sự phân bố tương đối đồng đều giữa các nhóm, tuy nhiên nhóm Obesity_Type_I chiếm tỷ lệ cao nhất (351 người), cho thấy béo phì độ I là tình trạng phổ biến nhất. Các nhóm Obesity_Type_II (297 người) và Obesity_Type_III (324 người) cũng chiếm tỷ lệ đáng kể, trong khi nhóm Normal_Weight và hai nhóm thừa cân (Overweight_Level_I và Overweight_Level_II) dao động quanh mức 287–290 người. Nhóm có tỷ lệ thấp nhất là Insufficient_Weight với 272 người. Nhìn chung, dữ liệu cho thấy phần lớn người tham gia có tình trạng cân nặng từ thừa cân đến béo phì, điều này gợi ý mối liên hệ tiềm năng giữa cân nặng và các yếu tố khác cần được phân tích sâu hơn.
l5 <- table(l$NObeyesdad)/sum(nrow(l))
table(l$NObeyesdad)/sum(nrow(l))
##
## Insufficient_Weight Normal_Weight Obesity_Type_I Obesity_Type_II
## 0.1288489 0.1359545 0.1662719 0.1406916
## Obesity_Type_III Overweight_Level_I Overweight_Level_II
## 0.1534818 0.1373757 0.1373757
Dựa trên bảng tần suất, ta thấy rằng biến NObeyesdad – thể hiện tình trạng cân nặng – có sự phân bố khá đồng đều giữa các nhóm. Nhóm Obesity_Type_I chiếm tỷ lệ cao nhất với khoảng 16.63%, tiếp theo là Obesity_Type_III (15.35%) và Obesity_Type_II (14.07%), cho thấy rằng các mức độ béo phì là phổ biến trong tập dữ liệu. Hai nhóm Overweight_Level_I và Overweight_Level_II cùng chiếm 13.74%, phản ánh một tỷ lệ đáng kể những người đang ở mức thừa cân. Nhóm Normal_Weight chiếm 13.60%, trong khi nhóm Insufficient_Weight chiếm thấp nhất với 12.88%. Từ đó có thể thấy, phần lớn người tham gia khảo sát đang đối mặt với vấn đề cân nặng vượt mức bình thường, điều này gợi ý rằng các yếu tố liên quan đến béo phì có thể đóng vai trò quan trọng trong phân tích tiếp theo.
l5_df <- as.data.frame(l5)
names(l5_df) <- c("NObeyesdad", "Tansuat")
ggplot(l5_df, aes(x = NObeyesdad, y = round(Tansuat, 3), fill = NObeyesdad)) +
geom_bar(stat = "identity", color = "black", width = 0.7) +
geom_text(aes(label = round(Tansuat, 3)), vjust = -0.3, size = 4) +
labs(
title = "Biểu đồ tỷ lệ mức độ cân nặng",
x = "Mức độ cân nặng",
y = "Tần suất (%)"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")
)
Biểu đồ cột trên thể hiện tỷ lệ phần trăm các mức độ béo phì (obesity) trong tập dữ liệu thông qua biến NObeyesdad. Kết quả cho thấy nhóm chiếm tỷ lệ cao nhất là Obesity_Type_I với khoảng 16.6%, tiếp theo là Obesity_Type_III (15.3%) và Obesity_Type_II (14.1%). Các nhóm thừa cân nhẹ như Overweight_Level_I và Overweight_Level_II có tỷ lệ ngang bằng nhau (khoảng 13.7%), trong khi Normal_Weight chiếm 13.6%. Đáng chú ý, nhóm Insufficient_Weight (thiếu cân) có tỷ lệ thấp nhất với 12.9%. Nhìn chung, phần lớn mẫu nghiên cứu nằm trong các nhóm từ thừa cân đến béo phì, phản ánh xu hướng thừa cân là phổ biến hơn so với nhóm cân nặng bình thường hoặc thiếu cân. Phát hiện này cho thấy cần đặc biệt quan tâm đến các vấn đề sức khỏe liên quan đến thừa cân và béo phì trong cộng đồng.
Ta chọn 3 hạng mục từ 3 biến của danh sách các biến định tính trên, bao gồm:
Hạng mục “yes” của biến family_history_with_overweight - Có người thân bị thừa cân/béo phì không
Hạng mục “Sometimes” của biến CAEC - Tần suất ăn vặt giữa các bữa
Hạng mục “Obesity_Type_I” của biến NObeyesdad - Mức độ cân nặng
prop.test(sum(l$family_history_with_overweight == "yes"), nrow(l), p = 0.5, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: sum(l$family_history_with_overweight == "yes") out of nrow(l), null probability 0.5
## X-squared = 850.59, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.8003324 0.8337411
## sample estimates:
## p
## 0.817622
Giả thiết kiểm định
H₀: p = 0.5 (Tỷ lệ người có người thân bị thừa cân/béo phì là 50%)
H₁: p ≠ 0.5 (Tỷ lệ người có người thân bị thừa cân/béo phì khác 50%)
Dựa trên kết quả kiểm định, ta thu được giá trị p-value rất nhỏ, cụ thể là p-value < 2.2e-16, nhỏ hơn mức ý nghĩa 5%. Do đó, ta bác bỏ giả thuyết H₀ (tỷ lệ người có người thân bị thừa cân/béo phì là 50%) và chấp nhận giả thuyết đối H₁ rằng tỷ lệ này khác 50%. Tỷ lệ ước lượng trong mẫu là 81.76% (p = 0.817622), nghĩa là có tới hơn 80% người tham gia khảo sát có người thân từng bị thừa cân hoặc béo phì. Khoảng tin cậy 95% cho tỷ lệ này nằm trong khoảng từ 80.03% đến 83.37%, cho thấy sự khác biệt giữa tỷ lệ thực tế và tỷ lệ giả định là có ý nghĩa thống kê. Kết quả này phản ánh rằng yếu tố tiền sử gia đình có liên quan đáng kể đến tình trạng thừa cân/béo phì, và cần được xem xét kỹ hơn trong các phân tích tiếp theo.
prop.test(sum(l$CAEC == "Sometimes"), nrow(l), p = 0.6, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: sum(l$CAEC == "Sometimes") out of nrow(l), null probability 0.6
## X-squared = 489.31, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.6
## 95 percent confidence interval:
## 0.8194515 0.8515025
## sample estimates:
## p
## 0.8360966
Giả thiết kiểm định
H₀: p = 0.6 (60% người tham gia khảo sát ăn vặt ở mức “Sometimes”).
H₁: p ≠ 0.6 (Tỷ lệ người ăn vặt ở mức “Sometimes” khác 60%).
Dựa trên kết quả kiểm định tỷ lệ một mẫu, với p-value < 2.2e-16 nhỏ hơn mức ý nghĩa 5%, ta bác bỏ giả thuyết H₀. Điều này có nghĩa là tỷ lệ thực tế những người có tần suất ăn vặt ở mức “Sometimes” không phải là 60%. Cụ thể, tỷ lệ ước lượng trong mẫu là 83.61% (p = 0.8360966), cao hơn đáng kể so với giả thuyết ban đầu. Khoảng tin cậy 95% cho tỷ lệ này nằm trong khoảng [81.95%; 85.15%], cho thấy sự khác biệt này có ý nghĩa thống kê. Như vậy, kết quả kiểm định cho thấy phần lớn người tham gia khảo sát có xu hướng ăn vặt ở mức “Sometimes”, và tỷ lệ này cao hơn nhiều so với kỳ vọng 60% ban đầu. Đây là một yếu tố đáng lưu ý trong phân tích hành vi ăn uống và mối liên hệ với sức khỏe.
prop.test(sum(l$NObeyesdad == "Obesity_Type_I"), nrow(l), p = 0.8, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: sum(l$NObeyesdad == "Obesity_Type_I") out of nrow(l), null probability 0.8
## X-squared = 5294.8, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.8
## 95 percent confidence interval:
## 0.1507708 0.1830034
## sample estimates:
## p
## 0.1662719
Giả thiết kiểm định
H₀: p = 0.8 (80% người tham gia khảo sát thuộc nhóm béo phì mức độ I – Obesity Type I).
H₁: p ≠ 0.8 (Tỷ lệ người thuộc nhóm béo phì mức độ I khác 80%).
Kết quả kiểm định tỷ lệ một mẫu cho thấy p-value < 2.2e-16, nhỏ hơn mức ý nghĩa 5%, do đó ta bác bỏ giả thuyết H₀. Điều này cho thấy tỷ lệ thực tế người thuộc nhóm Obesity Type I khác 80%. Cụ thể, tỷ lệ ước lượng trong mẫu là 16.63% (p = 0.1662719), thấp hơn rất nhiều so với tỷ lệ giả thuyết. Khoảng tin cậy 95% cho tỷ lệ thực nằm trong khoảng [15.08%; 18.30%], cho thấy sự khác biệt là có ý nghĩa thống kê. Như vậy, không có bằng chứng để khẳng định 80% người khảo sát rơi vào nhóm béo phì mức độ I, mà thực tế chỉ khoảng một phần sáu người thuộc nhóm này. Điều này cho thấy sự phân bố mức độ béo phì đa dạng hơn và cần được phân tích thêm trong các phần sau.
Trong phần này, tập trung phân tích mối quan hệ giữa biến phụ thuộc là NObeyesdad – đại diện cho tình trạng cân nặng của người tham gia khảo sát – với ba biến độc lập định tính gồm: FAVC (thói quen tiêu thụ thức ăn giàu calo), SCC (Có theo dõi lượng calo tiêu thụ không) và family_history_with_overweight (Có người thân bị thừa cân/béo phì không). Mục tiêu là đánh giá xem liệu các hành vi liên quan đến chế độ ăn uống và tiêu thụ năng lượng này có mối liên hệ thống kê đáng kể nào với tình trạng cân nặng hay không. Việc xác định mối quan hệ giữa các biến độc lập và biến phụ thuộc sẽ giúp làm rõ hơn các yếu tố nguy cơ có thể góp phần dẫn đến thừa cân hoặc béo phì.
Lý do chọn cặp: Liệu thói quen tiêu thụ thức ăn giàu calo (FAVC) có liên quan đến tình trạng cân nặng (NObeyesdad) của người tham gia khảo sát hay không? Đây là câu hỏi nghiên cứu được đặt ra nhằm kiểm tra xem hành vi ăn uống này có thể là một yếu tố nguy cơ dẫn đến thừa cân hoặc béo phì.
Sau đây là bảng tần số chéo giữa NObeyesdad và FAVC, giúp quan sát sự phân bố tình trạng cân nặng theo thói quen ăn nhiều đồ calo. Đây là bước đầu để xem xét mối liên hệ giữa hai biến này.
tab1 <- table(l$NObeyesdad, l$FAVC)
tab1
##
## no yes
## Insufficient_Weight 51 221
## Normal_Weight 79 208
## Obesity_Type_I 11 340
## Obesity_Type_II 7 290
## Obesity_Type_III 1 323
## Overweight_Level_I 22 268
## Overweight_Level_II 74 216
Bảng tần số cho thấy phần lớn người trong nhóm béo phì (đặc biệt là Obesity_Type_I, II, III và Overweight) có xu hướng trả lời “yes” cho biến FAVC – tức là thường xuyên ăn nhiều đồ ăn có hàm lượng calo cao. Ngược lại, trong các nhóm Insufficient_Weight và Normal_Weight, số lượng người trả lời “no” cao hơn tương đối. Điều này bước đầu cho thấy khả năng tồn tại mối liên hệ giữa thói quen ăn uống giàu calo và tình trạng thừa cân, béo phì.
# Chuyển bảng chéo thành data frame
df_freq <- as.data.frame(tab1)
# Biểu đồ cột nhóm theo tần số
library(ggplot2)
ggplot(df_freq, aes(x = Var1, y = Freq, fill = Var2)) +
geom_col(position = "dodge", color = "black") +
geom_text(aes(label = Freq),
position = position_dodge(width = 0.9),
vjust = -0.3, size = 3.5) +
labs(
title = "Biểu đồ tần số theo mức độ béo phì và thói quen ăn nhiều đồ calo",
x = "Mức độ cân nặng",
y = "Tần số",
fill = "FAVC"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 30, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")
)
Biểu đồ tần số minh họa rõ xu hướng gia tăng số người có thói quen ăn nhiều đồ calo (FAVC = “yes”) tương ứng với mức độ thừa cân và béo phì. Ở các nhóm Obesity_Type_I, II, III, số lượng người trả lời “yes” vượt trội so với “no”, với khoảng cách rất lớn, đặc biệt nhóm Obesity_Type_III chỉ ghi nhận 1 người “no” so với 323 người “yes”. Trong khi đó, nhóm có cân nặng bình thường (Normal_Weight) và thiếu cân (Insufficient_Weight) vẫn có tỷ lệ “yes” cao nhưng khoảng cách giữa hai nhóm FAVC là nhỏ hơn. Điều này củng cố thêm nhận định rằng việc ăn nhiều đồ calo có thể là yếu tố góp phần làm gia tăng nguy cơ béo phì.
prop1 <- prop.table(tab1, margin = 1) * 100
# Hiển thị bảng
round(prop1, 2)
##
## no yes
## Insufficient_Weight 18.75 81.25
## Normal_Weight 27.53 72.47
## Obesity_Type_I 3.13 96.87
## Obesity_Type_II 2.36 97.64
## Obesity_Type_III 0.31 99.69
## Overweight_Level_I 7.59 92.41
## Overweight_Level_II 25.52 74.48
Bảng tần suất cho thấy tỷ lệ trả lời “yes” đối với biến FAVC (ăn nhiều đồ ăn calo cao) tăng rõ rệt ở các nhóm có mức độ thừa cân và béo phì. Cụ thể, các nhóm Obesity_Type_I, II và III có tỷ lệ “yes” lần lượt là 96.87%, 97.64% và 99.69%, cao vượt trội so với các nhóm có cân nặng bình thường như Normal_Weight (72.47%) hay Insufficient_Weight (81.25%). Trong khi đó, nhóm Overweight_Level_I và II cũng có tỷ lệ “yes” tương đối cao, lần lượt là 92.41% và 74.48%. Điều này củng cố giả thiết rằng có mối liên hệ giữa việc thường xuyên tiêu thụ thực phẩm nhiều calo và tình trạng béo phì.
df_prop1 <- as.data.frame(prop1)
colnames(df_prop1) <- c("NObeyesdad", "FAVC", "Percent")
# Vẽ biểu đồ tần suất
library(ggplot2)
ggplot(df_prop1, aes(x = NObeyesdad, y = Percent, fill = FAVC)) +
geom_col(position = "dodge", color = "black") +
geom_text(aes(label = round(Percent, 1)),
position = position_dodge(width = 0.9),
vjust = -0.3, size = 3.5) +
labs(
title = "Biểu đồ tần suất (%) theo mức độ cân nặng và thói quen ăn nhiều đồ calo",
x = "Mức độ cân nặng",
y = "Tần suất (%)",
fill = "FAVC"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 30, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")
)
Biểu đồ cho thấy có sự khác biệt rõ rệt trong thói quen ăn nhiều đồ calo
giữa các nhóm cân nặng. Ở các nhóm béo phì và thừa cân, tỷ lệ người trả
lời “yes” (có thói quen ăn nhiều đồ calo) chiếm ưu thế áp đảo. Cụ thể,
nhóm Obesity_Type_III có đến 99.7% người ăn nhiều đồ calo, theo sau là
Obesity_Type_II (97.6%), Obesity_Type_I (96.9%), và các nhóm thừa cân
như Overweight_Level_I (92.4%) và Overweight_Level_II (74.5%) cũng có tỷ
lệ cao. Trong khi đó, nhóm Normal_Weight và Insufficient_Weight có tỷ lệ
thấp hơn đáng kể, lần lượt là 72.5% và 81.2%, và đặc biệt nhóm trả lời
“no” trong hai mức cân nặng này lần lượt là 27.5% và 18.8%, cao hơn
nhiều so với các nhóm béo phì.
Những con số này cho thấy một xu hướng rất rõ ràng: càng thừa cân hoặc béo phì thì khả năng có thói quen ăn nhiều đồ calo càng cao. Ngược lại, người có cân nặng bình thường hoặc thiếu cân thì tỷ lệ này giảm xuống, và khả năng không có thói quen ăn nhiều đồ calo lại tăng lên. Điều này gợi ý mối liên hệ tiềm năng giữa thói quen ăn uống và tình trạng cân nặng, đồng thời củng cố giả thuyết rằng việc tiêu thụ thực phẩm giàu calo là yếu tố góp phần lớn vào tình trạng béo phì.
library(epitools)
riskratio(tab1)
## $data
##
## no yes Total
## Insufficient_Weight 51 221 272
## Normal_Weight 79 208 287
## Obesity_Type_I 11 340 351
## Obesity_Type_II 7 290 297
## Obesity_Type_III 1 323 324
## Overweight_Level_I 22 268 290
## Overweight_Level_II 74 216 290
## Total 245 1866 2111
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Insufficient_Weight 1.0000000 NA NA
## Normal_Weight 0.8919861 0.8141229 0.977296
## Obesity_Type_I 1.1921981 1.1226462 1.266059
## Obesity_Type_II 1.2017612 1.1320468 1.275769
## Obesity_Type_III 1.2269706 1.1585145 1.299472
## Overweight_Level_I 1.1374005 1.0648320 1.214915
## Overweight_Level_II 0.9167109 0.8392343 1.001340
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Insufficient_Weight NA NA NA
## Normal_Weight 1.429231e-02 1.615376e-02 1.409230e-02
## Obesity_Type_I 7.033307e-11 7.384363e-11 1.063126e-10
## Obesity_Type_II 2.197753e-11 3.884657e-11 1.075925e-10
## Obesity_Type_III 0.000000e+00 7.995071e-18 1.919689e-15
## Overweight_Level_I 8.165412e-05 8.714015e-05 8.350229e-05
## Overweight_Level_II 5.464349e-02 5.479954e-02 5.387693e-02
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Kết quả phân tích Relative Risk (RR) giúp xác định mức độ liên quan giữa từng nhóm cân nặng với khả năng có thói quen ăn nhiều đồ calo. Trong đó, nhóm “Insufficient_Weight” được dùng làm nhóm tham chiếu (RR = 1). So sánh với nhóm tham chiếu, các nhóm béo phì có nguy cơ cao hơn đáng kể.
Cụ thể, nhóm Obesity_Type_I có RR = 1.19, tức là khả năng có thói quen ăn nhiều đồ calo cao hơn 19% so với nhóm thiếu cân. Nhóm Obesity_Type_II có RR = 1.20, và nhóm Obesity_Type_III có RR = 1.23 – đây là mức cao nhất, cho thấy người thuộc nhóm này có nguy cơ cao hơn 23% trong việc duy trì thói quen ăn nhiều calo so với nhóm thiếu cân. Tất cả các RR này đều có khoảng tin cậy 95% không chứa giá trị 1, cho thấy sự khác biệt có ý nghĩa thống kê.
Ngoài ra, nhóm Overweight_Level_I cũng có RR = 1.14, trong khi nhóm Normal_Weight và Overweight_Level_II có RR lần lượt là 0.89 và 0.92, thấp hơn 1 – điều này cho thấy họ ít khả năng ăn nhiều calo hơn nhóm thiếu cân. Tuy nhiên, RR của Overweight_Level_II có khoảng tin cậy (0.839–1.001) gần chạm 1 nên sự khác biệt này có thể chưa thật sự chắc chắn về mặt thống kê.
Nhìn chung, phân tích RR cho thấy có mối liên hệ rõ ràng giữa mức độ béo phì và thói quen tiêu thụ nhiều đồ calo, đặc biệt là ở các nhóm béo phì loại I, II và III. Điều này hỗ trợ giả định rằng thói quen ăn uống có thể là một yếu tố nguy cơ góp phần vào tình trạng thừa cân, béo phì.
oddsratio(tab1)
## $data
##
## no yes Total
## Insufficient_Weight 51 221 272
## Normal_Weight 79 208 287
## Obesity_Type_I 11 340 351
## Obesity_Type_II 7 290 297
## Obesity_Type_III 1 323 324
## Overweight_Level_I 22 268 290
## Overweight_Level_II 74 216 290
## Total 245 1866 2111
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Insufficient_Weight 1.0000000 NA NA
## Normal_Weight 0.6086839 0.4060656 0.9059708
## Obesity_Type_I 7.0346161 3.7139634 14.5652385
## Obesity_Type_II 9.3496478 4.4261302 23.1599125
## Obesity_Type_III 65.0290523 14.3119209 1521.5330999
## Overweight_Level_I 2.7955507 1.6619723 4.8469780
## Overweight_Level_II 0.6746041 0.4487410 1.0078318
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Insufficient_Weight NA NA NA
## Normal_Weight 1.429231e-02 1.615376e-02 1.409230e-02
## Obesity_Type_I 7.033307e-11 7.384363e-11 1.063126e-10
## Obesity_Type_II 2.197753e-11 3.884657e-11 1.075925e-10
## Obesity_Type_III 0.000000e+00 7.995071e-18 1.919689e-15
## Overweight_Level_I 8.165412e-05 8.714015e-05 8.350229e-05
## Overweight_Level_II 5.464349e-02 5.479954e-02 5.387693e-02
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Phân tích odds ratio cho thấy sự khác biệt rất lớn giữa các nhóm cân nặng về thói quen ăn nhiều đồ calo. Nếu lấy nhóm thiếu cân (Insufficient_Weight) làm chuẩn so sánh, thì tỷ lệ người béo phì độ III ăn nhiều đồ calo trên người béo phì độ III không ăn nhiều calo cao hơn 65 lần so với tỷ lệ người thiếu cân có ăn nhiều calo trên người thiếu cân không ăn. Nhóm béo phì độ II cũng có tỷ lệ này cao hơn khoảng 9,35 lần, và béo phì độ I là 7,03 lần. Điều này cho thấy khi mức độ béo phì tăng thì xu hướng ăn nhiều calo cũng tăng rõ rệt. Ở chiều ngược lại, nhóm cân nặng bình thường (Normal_Weight) lại có odds thấp hơn nhóm thiếu cân, với tỷ lệ người ăn nhiều calo trên không ăn chỉ bằng 0,61 lần, tức là còn thấp hơn cả nhóm chuẩn. Các kết quả này phản ánh rõ rằng thói quen ăn nhiều thực phẩm calo cao có mối liên hệ mạnh với tình trạng béo phì, và mức độ này tăng dần theo cấp độ thừa cân.
Sau khi phân tích mức độ rủi ro tương đối (RR) và odds ratio (OR) giữa các nhóm cân nặng (NObeyesdad) đối với hành vi ăn nhiều đồ calo (FAVC), ta tiếp tục xem xét hiệu tỷ lệ nhằm đo lường mức chênh lệch tuyệt đối trong tỉ lệ hành vi này giữa các nhóm. Việc này giúp làm rõ mức độ khác biệt thực tế trong tỉ lệ ăn nhiều đồ calo giữa nhóm thừa cân và nhóm thiếu cân.
success <- c(tab1["Insufficient_Weight", "yes"], tab1["Obesity_Type_III", "yes"])
# Lấy tổng số người ở 2 nhóm đó
n <- c(sum(tab1["Insufficient_Weight", ]), sum(tab1["Obesity_Type_III", ]))
# Kiểm định hiệu tỷ lệ một phía: p2 > p1
prop.test(success, n, alternative = "less", correct = FALSE)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: success out of n
## X-squared = 63.146, df = 1, p-value = 9.598e-16
## alternative hypothesis: less
## 95 percent confidence interval:
## -1.0000000 -0.1451576
## sample estimates:
## prop 1 prop 2
## 0.8125000 0.9969136
H₀: Tỷ lệ ăn nhiều đồ calo ở hai nhóm Insufficient_Weight và Obesity_Type_III bằng nhau.
H₁: Tỷ lệ ăn nhiều đồ calo ở nhóm Obesity_Type_III cao hơn so với nhóm Insufficient_Weight.
Kết quả kiểm định cho thấy tỷ lệ ăn nhiều đồ calo ở nhóm Insufficient_Weight là khoảng 81.25%, trong khi ở nhóm Obesity_Type_III gần như tuyệt đối, đạt 99.69%. Hiệu tỉ lệ giữa hai nhóm là khoảng 18.44 điểm phần trăm. Kiểm định chi bình phương hai tỷ lệ độc lập (không hiệu chỉnh) cho kết quả X² = 63.15, với p-value ≈ 9.6e-16, nhỏ hơn rất nhiều so với mức ý nghĩa 0.05. Vì vậy, ta bác bỏ giả thuyết H₀ và chấp nhận H₁. Kết luận, tỷ lệ ăn nhiều đồ calo ở nhóm Obesity_Type_III cao hơn một cách có ý nghĩa thống kê so với nhóm Insufficient_Weight.
Để đánh giá xem có mối liên hệ hay sự phụ thuộc giữa mức độ cân nặng của một người (biến NObeyesdad) và thói quen ăn nhiều đồ calo (biến FAVC), ta sử dụng kiểm định chi bình phương về sự độc lập giữa hai biến định tính.
chisq.test(tab1)
##
## Pearson's Chi-squared test
##
## data: tab1
## X-squared = 233.34, df = 6, p-value < 2.2e-16
H₀: Biến NObeyesdad và biến FAVC độc lập với nhau. Nói cách khác, mức độ cân nặng không ảnh hưởng đến hành vi ăn nhiều đồ calo)
H₁: Biến NObeyesdad và biến FAVC không độc lập, tức là có mối liên hệ giữa mức độ cân nặng và thói quen ăn nhiều đồ calo.
Kết quả kiểm định cho thấy giá trị thống kê Chi-squared = 233.34, với 6 bậc tự do, và p-value < 2.2e-16. Vì p-value rất nhỏ (nhỏ hơn 0.05), ta bác bỏ giả thuyết H₀ và chấp nhận H₁. Điều này cho thấy giữa mức độ cân nặng và thói quen ăn nhiều đồ calo tồn tại mối quan hệ có ý nghĩa thống kê, tức là hành vi ăn nhiều đồ calo có sự khác biệt rõ rệt giữa các nhóm cân nặng.
Sau khi kiểm định sự độc lập giữa mức độ cân nặng (NObeyesdad) và thói quen ăn nhiều đồ calo (FAVC) cho thấy có mối liên hệ đáng kể giữa hai biến, bước tiếp theo là xây dựng mô hình hồi quy nhằm định lượng mối quan hệ này.
Đầu tiên, ta sử dụng mô hình hồi quy tuyến tính tổng quát (GLM) với liên kết tuyến tính để kiểm tra xem hành vi ăn nhiều đồ calo có ảnh hưởng như thế nào đến xác suất thuộc vào nhóm béo phì. Để thuận tiện cho việc phân tích, biến NObeyesdad sẽ được chuyển thành một biến nhị phân, trong đó nhóm “Obesity_Type_III” được mã hóa là 1, và các nhóm còn lại là 0. Sau đó, mô hình hồi quy tuyến tính sẽ được xây dựng với FAVC là biến dự đoán.
# Tạo biến nhị phân: 1 nếu là Obesity_Type_III, 0 nếu không
NObeyesdad_bin <- ifelse(l$NObeyesdad == "Obesity_Type_III", 1, 0)
# Mô hình hồi quy tuyến tính với FAVC là biến giải thích
model_linear <- glm(NObeyesdad_bin ~ FAVC, data = l)
# Hiển thị kết quả mô hình
summary(model_linear)
##
## Call:
## glm(formula = NObeyesdad_bin ~ FAVC, data = l)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.004082 0.022778 0.179 0.858
## FAVCyes 0.169016 0.024227 6.976 4.04e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.1271149)
##
## Null deviance: 274.27 on 2110 degrees of freedom
## Residual deviance: 268.09 on 2109 degrees of freedom
## AIC: 1640.5
##
## Number of Fisher Scoring iterations: 2
Kết quả hồi quy tuyến tính cho thấy hệ số ước lượng của biến FAVCyes là 0.1690, với giá trị p rất nhỏ (p < 0.001), chứng tỏ mối quan hệ giữa việc ăn nhiều đồ calo và khả năng thuộc nhóm béo phì mức độ III là có ý nghĩa thống kê ở mức ý nghĩa 1%. Điều này cho thấy, so với những người không có thói quen ăn nhiều đồ calo, những người có thói quen này có xác suất trung bình thuộc vào nhóm béo phì mức độ III cao hơn khoảng 0.169 đơn vị, theo thang đo tuyến tính.
Tuy nhiên, cần lưu ý rằng mô hình hồi quy tuyến tính không thực sự phù hợp cho biến phụ thuộc nhị phân vì không đảm bảo xác suất nằm trong khoảng [0,1] và có thể vi phạm giả định phân phối chuẩn của sai số. Do đó, các mô hình hồi quy nhị phân khác như logistic, probit hoặc cloglog sẽ được xem xét ở bước tiếp theo để cho kết quả đáng tin cậy hơn.
Sau mô hình hồi quy tuyến tính, ta tiếp tục sử dụng mô hình hồi quy logistic (logit) nhằm khắc phục nhược điểm của hồi quy tuyến tính khi biến phụ thuộc là nhị phân. Mô hình logistic sử dụng hàm liên kết logit giúp mô hình hóa xác suất xảy ra sự kiện (thuộc nhóm Obesity_Type_III) theo dạng log-odds, đảm bảo giá trị dự đoán luôn nằm trong khoảng [0,1]. Biến độc lập vẫn là FAVC, thể hiện hành vi ăn nhiều đồ calo.
# Mô hình hồi quy logistic (logit)
model_logit <- glm(NObeyesdad_bin ~ FAVC, data = l, family = binomial(link = "logit"))
# Hiển thị kết quả
summary(model_logit)
##
## Call:
## glm(formula = NObeyesdad_bin ~ FAVC, family = binomial(link = "logit"),
## data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -5.497 1.000 -5.497 3.86e-08 ***
## FAVCyes 3.933 1.002 3.926 8.64e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1810.0 on 2110 degrees of freedom
## Residual deviance: 1732.6 on 2109 degrees of freedom
## AIC: 1736.6
##
## Number of Fisher Scoring iterations: 7
Phương trình hồi quy logit có dạng:
\[ \log\left(\frac{\pi}{1 - \pi}\right) = -5.497 + 3.933 \cdot \text{FAVC} \]
Trong đó:
\(\pi\): xác suất rơi vào nhóm béo phì cấp độ III (Obesity_Type_III)
FAVC = 1: nếu cá nhân có thói quen ăn thực phẩm giàu calo
Diễn giải kết quả:
\[ \pi_{\text{FAVC} = 0} = \frac{1}{1 + e^{-(-5.497)}} \approx 0.0041 \]
Tỷ số Odds (Odds Ratio):
# Tính Odds Ratio
exp(coef(model_logit))
## (Intercept) FAVCyes
## 0.004098394 51.076709085
\[ \text{OR} = e^{3.933} \approx 51.02 \]
Nói cách khác, odds rơi vào nhóm béo phì độ III ở người có thói quen ăn nhiều thực phẩm calo cao gấp khoảng 51 lần so với người không có thói quen đó. Đây là một mức chênh lệch rất lớn và có ý nghĩa thống kê cao (p < 0.001). Kết quả này nhấn mạnh vai trò quan trọng của thói quen ăn uống giàu năng lượng trong nguy cơ mắc béo phì nặng.
# Mô hình Probit với biến FAVC
probit_model_favc <- glm(NObeyesdad_bin ~ FAVC, family = binomial(link = "probit"), data = l)
# Xem kết quả mô hình
summary(probit_model_favc)
##
## Call:
## glm(formula = NObeyesdad_bin ~ FAVC, family = binomial(link = "probit"),
## data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.6452 0.3376 -7.836 4.65e-15 ***
## FAVCyes 1.7032 0.3393 5.020 5.17e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1810.0 on 2110 degrees of freedom
## Residual deviance: 1732.6 on 2109 degrees of freedom
## AIC: 1736.6
##
## Number of Fisher Scoring iterations: 7
Phương trình hồi quy:
\[ \pi = \Phi(-2.6452 + 1.7032 \cdot \text{FAVC}) \]
Trong đó:
\(\Phi(\cdot)\)): hàm phân phối tích lũy chuẩn tắc (standard normal CDF)
\(\pi\): là xác suất rơi vào nhóm béo phì cấp độ III (Obesity_Type_III)
Diễn giải kết quả:
\[ \hat{\beta}_0 = -2.6452, \quad p < 0.001 \]
Tương ứng với xác suất xác suất rơi vào nhóm Obesity_Type_III khi không ăn nhiều đồ calo:
\[ \pi_{\text{không ăn}} = \Phi(-2.6452) \approx 0.0041 \]
\[ \hat{\beta}_1 = 1.7032, \quad p < 0.001 \]
Khi có ăn nhiều đồ calo, xác suất rơi vào Obesity_Type_III là:
\[ \pi_{\text{ăn nhiều}} = \Phi(-2.6452 + 1.7032) = \Phi(-0.942) \approx 0.1733 \]
So sánh xác suất giữa hai nhóm:
\[ \Delta \pi = \pi_{\text{ăn nhiều}} - \pi_{\text{không ăn}} \approx 0.1733 - 0.0041 = 0.1692 \]
Kết luận:
Mô hình Probit trên được xây dựng với biến phụ thuộc nhị phân NObeyesdad_bin, trong đó giá trị 1 biểu thị người thuộc nhóm béo phì cấp độ III (Obesity_Type_III), và 0 là tất cả các nhóm còn lại. Do đó, xác suất 𝜋 π trong phương trình hồi quy đại diện cho khả năng rơi vào nhóm béo phì nặng nhất.
Kết quả cho thấy, xác suất thuộc nhóm Obesity_Type_III ở người không có thói quen ăn nhiều thực phẩm giàu calo là rất thấp (khoảng 0.41%). Tuy nhiên, với những người có thói quen ăn nhiều đồ calo, xác suất này tăng mạnh lên khoảng 17.33%, tức là cao hơn gần 17 điểm phần trăm.
Sự khác biệt này là rất đáng kể về mặt thống kê (p < 0.001 đối với cả hệ số chặn và hệ số của FAVC), cho thấy thói quen ăn nhiều thực phẩm giàu calo có liên quan chặt chẽ đến khả năng rơi vào nhóm béo phì nặng nhất trong dữ liệu. Đây là kết quả có giá trị thực tiễn trong việc nhận diện các yếu tố nguy cơ cần kiểm soát trong chính sách phòng chống béo phì nghiêm trọng.
Để đánh giá ảnh hưởng của thói quen ăn nhiều đồ calo (FAVC) đến khả năng bị béo phì (NObeyesdad), ta xây dựng mô hình hồi quy tuyến tính tổng quát sử dụng hàm liên kết cloglog (complementary log-log). Đây là mô hình phù hợp trong bối cảnh nghiên cứu các sự kiện ít xảy ra hoặc có tính chất bất đối xứng.
Mô hình hồi quy có dạng:
\[ \pi = 1 - \exp\left[-\exp\left(\beta_0 + \beta_1 \cdot \text{FAVC}\right)\right] \]
Trong đó:
\(\pi\): xác suất một người bị béo phì
\(\text{FAVC}\) là biến nhị phân đại diện cho hành vi ăn nhiều đồ calo (yes/no)
\(\beta_1\): hệ số hồi quy cho thấy tác động của FAVC đến xác suất béo phì mức độ III
# Mã hóa biến phụ thuộc nhị phân: 1 = béo phì, 0 = không
l$NObeyesdad_bin <- ifelse(l$NObeyesdad == "Obesity_Type_III", 1, 0)
# Mô hình cloglog với biến FAVC
model_cloglog <- glm(NObeyesdad_bin ~ FAVC, family = binomial(link = "cloglog"), data = l)
# Kết quả mô hình
summary(model_cloglog)
##
## Call:
## glm(formula = NObeyesdad_bin ~ FAVC, family = binomial(link = "cloglog"),
## data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -5.499 1.000 -5.499 3.81e-08 ***
## FAVCyes 3.839 1.002 3.833 0.000127 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1810.0 on 2110 degrees of freedom
## Residual deviance: 1732.6 on 2109 degrees of freedom
## AIC: 1736.6
##
## Number of Fisher Scoring iterations: 8
Phương trình hồi quy có dạng:
Trong mô hình hồi quy với hàm liên kết complementary log-log (cloglog), ta có phương trình ước lượng như sau: \[ \log\left( -\log(1 - \pi) \right) = −5.499+3.839 \cdot \text{FAVC} \]
Trong đó:
\(\pi\): là xác suất rơi vào nhóm béo phì cấp độ III (Obesity_Type_III)
FAVC = 1 nếu cá nhân có thói quen ăn nhiều đồ calo, 0 nếu không.
Diễn giải kết quả:
Hệ số chặn \(\beta_0 = −5.499\) (p < 0.001): Đây là log(-log(1 − π)) đối với nhóm không ăn nhiều đồ calo. Khi đó, xác suất rơi vào Obesity_Type_III là:
\[ \pi_{\text{FAVC = 0}} = 1 - \exp\left[ -\exp(−5.499) \right] \approx 0.0041 \]
Hệ số FAVCyes \(\beta_1 = 3.839\) (p=0.0244): Khi người tham gia có thói quen ăn nhiều đồ calo, log(-log(1 − π)) tăng thêm 3.839 đơn vị. Khi đó:
\[ \pi_{\text{FAVC = 1}} = 1 - \exp\left[ -\exp(−2.3635+3.839) \right] \approx 0.1916 \]
\[ \Delta \pi = \pi_{\text{FAVC = 1}} - \pi_{\text{FAVC = 0}} = 0.1916−0.0041=0.1875 \] Kết luận:
Mô hình cloglog cho thấy xác suất rơi vào nhóm Obesity_Type_III ở người có thói quen ăn nhiều đồ calo là khoảng 19.2%, trong khi ở người không có thói quen này chỉ khoảng 0.4%. Sự chênh lệch gần 19 điểm phần trăm, tương đương với odds cao hơn khoảng 46 lần.
Dù p-value của hệ số hồi quy là rất nhỏ (p = 0.0001) cho thấy kết quả có ý nghĩa thống kê mạnh, mô hình cloglog cũng phù hợp về mặt lý thuyết khi mô hình hóa một sự kiện hiếm và có tính bất đối xứng như Obesity_Type_III. Tuy nhiên, để so sánh toàn diện, cần xét thêm các mô hình khác (logit, probit) về mặt AIC và khả năng diễn giải kết quả.
| Mô hình | Hàm liên kết (Link function) | AIC |
|---|---|---|
| Hồi quy tuyến tính (Linear Regression) | Identity (Gaussian) | 1640.5 |
| Hồi quy logistic (Logit) | Logit | 1736.6 |
| Hồi quy probit | Probit | 1736.6 |
| Hồi quy cloglog | Complementary log-log | 1736.6 |
Kết luận:
Trong phân tích mối quan hệ giữa tình trạng béo phì cấp độ III (Obesity_Type_III) và hành vi tiêu thụ nhiều đồ calo (FAVC), chúng tôi đã xây dựng và so sánh bốn mô hình hồi quy: hồi quy tuyến tính, logistic (logit), probit và cloglog. Kết quả cho thấy mô hình tuyến tính có AIC thấp nhất (1640.5), cho thấy độ phù hợp dữ liệu cao nhất về mặt thông tin theo tiêu chí Akaike (AIC). Tuy nhiên, vì biến phụ thuộc là nhị phân, mô hình tuyến tính không phù hợp về mặt lý thuyết, do có thể tạo ra giá trị dự đoán nằm ngoài khoảng xác suất [0, 1].
Ba mô hình nhị phân – logit, probit và cloglog – đều có AIC bằng nhau (1736.6), cho thấy mức độ phù hợp dữ liệu tương đương nhau về mặt định lượng. Tuy nhiên, về lý thuyết, mỗi mô hình mang lại một góc nhìn riêng: logit dựa trên odds và phổ biến trong nghiên cứu xã hội học; probit phù hợp khi giả định phân phối chuẩn ngầm; còn cloglog là mô hình lý tưởng khi sự kiện được mô hình hóa (ở đây là béo phì cấp độ III) có xác suất xảy ra thấp và phân phối bất đối xứng – điều hoàn toàn phù hợp với bản chất của biến phụ thuộc trong trường hợp này.
Do đó, nếu mục tiêu là nắm bắt rõ hành vi sinh ra sự kiện hiếm (Obesity_Type_III), mô hình cloglog là một lựa chọn hợp lý và có tính diễn giải sát với thực tế hơn. Tuy nhiên, logit và probit vẫn là các phương án phổ biến và được chấp nhận rộng rãi trong các nghiên cứu tương tự. Tất cả các mô hình đều cho thấy rằng hành vi ăn nhiều đồ calo (FAVC) là một yếu tố nguy cơ rõ rệt, làm tăng đáng kể khả năng rơi vào tình trạng béo phì nặng, và do đó cần được chú trọng trong các chính sách y tế công cộng.
Lý do chọn cặp: Biến SCC (việc có theo dõi lượng calo tiêu thụ hay không) có thể liên quan chặt chẽ đến tình trạng cân nặng, bởi việc chủ động kiểm soát lượng calo là một hành vi giúp phòng tránh thừa cân, béo phì. Vì vậy, phân tích mối liên hệ giữa SCC và NObeyesdad sẽ giúp làm rõ liệu việc theo dõi calo có thực sự đóng vai trò như một yếu tố bảo vệ chống lại tình trạng béo phì hay không ?
Bảng tần số dưới đây mô tả mối liên hệ giữa mức độ béo phì (NObeyesdad) và việc có theo dõi lượng calo tiêu thụ (SCC)
tab2 <- table(l$NObeyesdad, l$SCC)
tab2
##
## no yes
## Insufficient_Weight 250 22
## Normal_Weight 257 30
## Obesity_Type_I 349 2
## Obesity_Type_II 296 1
## Obesity_Type_III 324 0
## Overweight_Level_I 253 37
## Overweight_Level_II 286 4
Bảng tần số chéo giữa biến NObeyesdad (tình trạng cân nặng) và SCC (việc có theo dõi lượng calo tiêu thụ hay không) cho thấy phần lớn người tham gia khảo sát ở mọi mức độ cân nặng đều không có thói quen theo dõi calo (giá trị “no”). Cụ thể, trong các nhóm thừa cân và béo phì – đặc biệt là Obesity_Type_I, Obesity_Type_II, và Obesity_Type_III – hầu như tuyệt đối số người trả lời là “no” (với lần lượt 349, 296, và 324 người), trong khi số người “yes” chỉ dao động từ 0 đến 2. Ở các nhóm có cân nặng thấp hơn như Insufficient_Weight, Normal_Weight và Overweight_Level_I, tuy số người theo dõi calo cao hơn một chút (lần lượt là 22, 30 và 37), nhưng vẫn chiếm tỷ lệ nhỏ so với nhóm “no”. Điều này gợi ý rằng việc theo dõi lượng calo tiêu thụ chưa phải là một thói quen phổ biến trong cộng đồng khảo sát, đặc biệt ở những người có mức độ béo phì cao.
# Chuyển sang data frame
df_freq <- as.data.frame(tab2)
# Vẽ biểu đồ cột nhóm
library(ggplot2)
ggplot(df_freq, aes(x = Var1, y = Freq, fill = Var2)) +
geom_col(position = "dodge", color = "black") +
geom_text(aes(label = Freq),
position = position_dodge(width = 0.9),
vjust = -0.3, size = 3.5) +
labs(
title = "Biểu đồ tần số theo mức độ béo phì và việc theo dõi calo",
x = "Mức độ cân nặng",
y = "Tần số",
fill = "Theo dõi calo?"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 30, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")
)
Biểu đồ tần số cho thấy xu hướng rõ rệt: phần lớn người ở mọi mức độ cân nặng đều không theo dõi lượng calo tiêu thụ (màu đỏ – “no”). Đặc biệt, ở các nhóm béo phì như Obesity_Type_I, Obesity_Type_II, và Obesity_Type_III, gần như toàn bộ người tham gia đều không theo dõi calo (với số lượng “yes” gần như bằng 0). Trong khi đó, nhóm Overweight_Level_I là trường hợp ngoại lệ duy nhất có số người theo dõi calo (37 người) cao hơn đáng kể so với các nhóm khác. Dù vậy, nhìn chung biểu đồ cho thấy thiếu thói quen theo dõi calo là phổ biến, kể cả trong các nhóm thừa cân và béo phì – điều này gợi ý rằng việc không kiểm soát năng lượng nạp vào có thể là một yếu tố góp phần vào tình trạng béo phì.
prop2 <- prop.table(tab2, margin = 1) * 100
# Hiển thị bảng
round(prop2, 2)
##
## no yes
## Insufficient_Weight 91.91 8.09
## Normal_Weight 89.55 10.45
## Obesity_Type_I 99.43 0.57
## Obesity_Type_II 99.66 0.34
## Obesity_Type_III 100.00 0.00
## Overweight_Level_I 87.24 12.76
## Overweight_Level_II 98.62 1.38
Bảng tần suất theo hàng cho thấy phần trăm người không theo dõi calo luôn chiếm áp đảo ở tất cả các nhóm mức độ cân nặng. Đặc biệt, các nhóm béo phì nặng hơn như Obesity_Type_I (99.43%), Obesity_Type_II (99.66%) và Obesity_Type_III (100%) gần như hoàn toàn không có ai theo dõi lượng calo tiêu thụ. Trong khi đó, nhóm Overweight_Level_I có tỷ lệ theo dõi calo cao nhất (12.76%), nhưng vẫn ở mức khá thấp. Xu hướng này củng cố nhận định rằng việc không theo dõi calo có thể là một thói quen phổ biến trong nhóm thừa cân và béo phì, và khả năng đây là một yếu tố nguy cơ quan trọng góp phần vào tình trạng này.
df_prop2 <- as.data.frame(prop2)
colnames(df_prop2) <- c("NObeyesdad", "SCC", "Percent")
# Vẽ biểu đồ tần suất
library(ggplot2)
ggplot(df_prop2, aes(x = NObeyesdad, y = Percent, fill = SCC)) +
geom_col(position = "dodge", color = "black") +
geom_text(aes(label = round(Percent, 1)),
position = position_dodge(width = 0.9),
vjust = -0.3, size = 3.5) +
labs(
title = "Biểu đồ tần suất (%) theo mức độ cân nặng và việc theo dõi calo",
x = "Mức độ cân nặng",
y = "Tần suất (%)",
fill = "Theo dõi calo?"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 30, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")
)
Biểu đồ tần suất (%) theo mức độ cân nặng và việc theo dõi calo cho thấy một xu hướng rõ rệt: tỷ lệ người không theo dõi calo luôn chiếm đa số tuyệt đối trong mọi nhóm cân nặng. Đáng chú ý, ở các nhóm béo phì nặng như Obesity_Type_I, Obesity_Type_II và Obesity_Type_III, tỷ lệ không theo dõi calo gần như đạt mức tuyệt đối (trên 99%, trong đó nhóm Obesity_Type_III là 100%). Trong khi đó, nhóm Overweight_Level_I có tỷ lệ theo dõi calo cao nhất (12.8%), nhưng vẫn rất khiêm tốn. Kết quả này cho thấy thói quen không theo dõi lượng calo tiêu thụ có thể liên quan đến tình trạng thừa cân, béo phì, và việc thiếu kiểm soát calo có thể là một yếu tố nguy cơ quan trọng cần được quan tâm trong quản lý cân nặng.
library(epitools)
riskratio(tab2)
## $data
##
## no yes Total
## Insufficient_Weight 250 22 272
## Normal_Weight 257 30 287
## Obesity_Type_I 349 2 351
## Obesity_Type_II 296 1 297
## Obesity_Type_III 324 0 324
## Overweight_Level_I 253 37 290
## Overweight_Level_II 286 4 290
## Total 2015 96 2111
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Insufficient_Weight 1.00000000 NA NA
## Normal_Weight 1.29236617 0.764850388 2.1837085
## Obesity_Type_I 0.07044807 0.016710399 0.2969965
## Obesity_Type_II 0.04162841 0.005649298 0.3067503
## Obesity_Type_III 0.00000000 0.000000000 NaN
## Overweight_Level_I 1.57742947 0.955741481 2.6035113
## Overweight_Level_II 0.17053292 0.059531121 0.4885088
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Insufficient_Weight NA NA NA
## Normal_Weight 3.412238e-01 3.831403e-01 3.360146e-01
## Obesity_Type_I 7.785200e-07 7.343806e-07 1.324472e-06
## Obesity_Type_II 7.496290e-07 9.338869e-07 2.735883e-06
## Obesity_Type_III 1.979398e-08 1.979398e-08 1.824850e-07
## Overweight_Level_I 7.262599e-02 7.491798e-02 7.106355e-02
## Overweight_Level_II 1.216577e-04 1.660386e-04 1.544125e-04
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Kết quả bảng tỷ số rủi ro (risk ratio) cho thấy có sự khác biệt rõ rệt về hành vi theo dõi lượng calo tiêu thụ (SCC) giữa các nhóm cân nặng (NObeyesdad). Cụ thể, so với nhóm tham chiếu là người thiếu cân (Insufficient_Weight), những người béo phì loại I và II có khả năng theo dõi calo thấp hơn lần lượt khoảng 14 lần và 24 lần, với các tỷ số rủi ro (RR) lần lượt là 0.070 và 0.042, và đều có ý nghĩa thống kê rất cao (p < 0.001). Đặc biệt, trong nhóm béo phì loại III, không có ai theo dõi lượng calo, tương ứng với RR = 0. Ngược lại, nhóm thừa cân mức I (Overweight_Level_I) lại có khả năng theo dõi calo cao hơn khoảng 1.6 lần so với nhóm thiếu cân, tuy nhiên kết quả này chưa đạt ngưỡng ý nghĩa thống kê (p ≈ 0.07). Những nhóm như Overweight_Level_II và Normal_Weight cũng có RR lần lượt là 0.17 và 1.29, trong đó chỉ nhóm Overweight_Level_II có ý nghĩa thống kê (p < 0.001).
Tóm lại, hành vi theo dõi calo dường như giảm mạnh ở các nhóm có mức béo phì cao hơn, điều này phản ánh một nghịch lý đáng quan tâm: những người cần kiểm soát calo nhất lại là những người ít thực hiện hành vi này nhất. Phát hiện này nhấn mạnh vai trò then chốt của việc nâng cao ý thức theo dõi năng lượng tiêu thụ trong các chương trình can thiệp phòng chống và điều trị béo phì.
Do bảng tần số giữa NObeyesdad và SCC có chứa các ô bằng 0, khiến việc tính odds ratio bằng phương pháp thông thường bị lỗi. Do đó, ta sử dụng phương pháp Wald’s odds ratio với hiệu chỉnh để đảm bảo tính toán chính xác mà không loại bỏ dữ liệu. Đây là cách tiếp cận phù hợp khi xử lý các bảng chéo có tần suất hiếm.
library(epitools)
# Áp dụng odds ratio kiểu Wald cho bảng nhiều hàng và chỉnh sửa ô bằng 0
oddsratio.wald(tab2, correction = TRUE)
## $data
##
## no yes Total
## Insufficient_Weight 250 22 272
## Normal_Weight 257 30 287
## Obesity_Type_I 349 2 351
## Obesity_Type_II 296 1 297
## Obesity_Type_III 324 0 324
## Overweight_Level_I 253 37 290
## Overweight_Level_II 286 4 290
## Total 2015 96 2111
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Insufficient_Weight 1.00000000 NA NA
## Normal_Weight 1.32649452 0.744904817 2.3621645
## Obesity_Type_I 0.06512113 0.015174836 0.2794601
## Obesity_Type_II 0.03839066 0.005138398 0.2868293
## Obesity_Type_III 0.00000000 0.000000000 NaN
## Overweight_Level_I 1.66187567 0.953213089 2.8973907
## Overweight_Level_II 0.15893198 0.054038282 0.4674348
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Insufficient_Weight NA NA NA
## Normal_Weight 3.412238e-01 3.831403e-01 4.142690e-01
## Obesity_Type_I 7.785200e-07 7.343806e-07 3.724739e-06
## Obesity_Type_II 7.496290e-07 9.338869e-07 7.582464e-06
## Obesity_Type_III 1.979398e-08 1.979398e-08 5.784737e-07
## Overweight_Level_I 7.262599e-02 7.491798e-02 9.543729e-02
## Overweight_Level_II 1.216577e-04 1.660386e-04 3.397432e-04
##
## $correction
## [1] TRUE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Phân tích odds ratio cho thấy có sự khác biệt đáng kể giữa các nhóm cân nặng về thói quen theo dõi lượng calo tiêu thụ. Nếu lấy nhóm thiếu cân (Insufficient_Weight) làm mốc so sánh, thì tỷ lệ người béo phì độ III theo dõi calo trên người béo phì độ III không theo dõi calo bằng 0 lần, tức là không có ai trong nhóm này theo dõi calo. Tương tự, nhóm béo phì độ II có tỷ lệ này thấp hơn 26 lần so với nhóm thiếu cân (odds ratio ≈ 0.038), và béo phì độ I cũng thấp hơn khoảng 15,4 lần (odds ratio ≈ 0.065). Những con số này cho thấy xu hướng không theo dõi calo tăng mạnh ở các nhóm béo phì nặng.
Ở chiều ngược lại, nhóm thừa cân cấp I (Overweight_Level_I) lại có tỷ lệ người theo dõi calo cao hơn 1,66 lần so với nhóm thiếu cân – dấu hiệu cho thấy có thể nhóm này đã có nhận thức hoặc hành vi can thiệp. Trong khi đó, nhóm cân nặng bình thường (Normal_Weight) cũng có odds cao hơn (1,33 lần), nhưng không đáng kể về mặt thống kê. Nhóm thừa cân cấp II lại có odds thấp hơn nhiều (khoảng 0.16 lần), cho thấy không nhất quán giữa hai nhóm thừa cân.
Tóm lại, kết quả odds ratio chỉ ra rằng việc theo dõi calo không phổ biến ở các nhóm béo phì nặng, trong khi một số nhóm có cân nặng ở mức độ vừa phải (thừa cân nhẹ) có xu hướng theo dõi nhiều hơn. Điều này gợi ý rằng nhận thức và hành vi phòng ngừa có thể chưa phổ biến đúng đối tượng có nguy cơ cao nhất.
Sau khi phân tích tần số và tần suất của biến SCC (thói quen theo dõi lượng calo tiêu thụ) theo từng nhóm mức độ béo phì (NObeyesdad), ta tiếp tục kiểm định hiệu tỷ lệ giữa hai nhóm cụ thể là Insufficient_Weight (thiếu cân) và Overweight_Level_I (thừa cân cấp độ I). Mục tiêu là đánh giá xem liệu tỷ lệ người có hành vi theo dõi calo ở nhóm thừa cân cấp độ I có cao hơn đáng kể so với nhóm thiếu cân hay không.
success <- c(tab2["Insufficient_Weight", "yes"],
tab2["Overweight_Level_I", "yes"])
# Tổng số người trong mỗi nhóm
n <- c(sum(tab2["Insufficient_Weight", ]),
sum(tab2["Overweight_Level_I", ]))
# Kiểm định hiệu tỷ lệ một phía: p2 < p1 (tỷ lệ theo dõi calo ở nhóm Obesity_Type_III thấp hơn)
prop.test(success, n, alternative = "less", correct = FALSE)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: success out of n
## X-squared = 3.2583, df = 1, p-value = 0.03553
## alternative hypothesis: less
## 95 percent confidence interval:
## -1.000000000 -0.004538749
## sample estimates:
## prop 1 prop 2
## 0.08088235 0.12758621
H₀: Tỷ lệ theo dõi calo ở nhóm Overweight_Level_I nhỏ hơn hoặc bằng tỷ lệ ở nhóm Insufficient_Weight.
H₁: Tỷ lệ theo dõi calo ở nhóm Overweight_Level_I cao hơn nhóm Insufficient_Weight
Kết quả kiểm định cho thấy:
Tỷ lệ theo dõi calo ở nhóm Insufficient_Weight là 8.09%, trong khi ở nhóm Overweight_Level_I là 12.76%.
Hiệu tỷ lệ giữa hai nhóm là khoảng 4.67 điểm phần trăm.
Giá trị thống kê kiểm định \(\chi^2 = 3.26\), với p-value = 0.0355, nhỏ hơn mức ý nghĩa 0.05.
Kết luận: Với mức ý nghĩa 5%, ta bác bỏ H₀ và chấp nhận H₁, tức là có đủ bằng chứng thống kê để kết luận rằng tỷ lệ theo dõi calo ở nhóm Overweight_Level_I cao hơn đáng kể so với nhóm Insufficient_Weight. Điều này phản ánh rằng người thừa cân cấp độ 1 có xu hướng quan tâm nhiều hơn đến lượng calo tiêu thụ so với người thiếu cân.
Để kiểm tra xem giữa tình trạng cân nặng (biến NObeyesdad) và hành vi theo dõi lượng calo tiêu thụ (biến SCC) có mối liên hệ thống kê hay không, ta thực hiện kiểm định chi-bình phương về sự độc lập. Phương pháp này giúp xác định liệu tỷ lệ người theo dõi calo có khác nhau một cách đáng kể giữa các nhóm mức độ cân nặng hay không.
chisq.test(tab2)
##
## Pearson's Chi-squared test
##
## data: tab2
## X-squared = 123.02, df = 6, p-value < 2.2e-16
H₀: Hai biến NObeyesdad (tình trạng cân nặng) và SCC (hành vi theo dõi lượng calo tiêu thụ) độc lập với nhau, tức là tỷ lệ theo dõi calo không khác biệt giữa các nhóm cân nặng.
H₁: Hai biến không độc lập, tức là có mối liên hệ giữa tình trạng cân nặng và hành vi theo dõi calo.
Với giá trị p rất nhỏ (p-value < 0.05), ta bác bỏ giả thuyết H₀, tức là không có mối liên hệ giữa hai biến. Điều đó đồng nghĩa với việc có đủ bằng chứng thống kê để kết luận rằng tình trạng cân nặng và hành vi theo dõi calo có mối liên hệ phụ thuộc lẫn nhau. Nói cách khác, tỷ lệ người theo dõi calo có sự khác biệt rõ rệt giữa các nhóm mức độ cân nặng, cho thấy thói quen theo dõi năng lượng tiêu thụ có thể liên quan đến tình trạng béo phì.
Trong phần này, ta xây dựng mô hình hồi quy tuyến tính để kiểm định xem hành vi theo dõi lượng calo tiêu thụ (biến SCC) có liên quan đến nguy cơ rơi vào nhóm thừa cân cấp độ I (Overweight_Level_I) hay không. Để làm điều này, biến phụ thuộc NObeyesdad_bin được mã hóa nhị phân: 1 nếu người tham gia thuộc nhóm “Overweight_Level_I”, và 0 nếu thuộc các nhóm còn lại. Mô hình sử dụng biến độc lập là SCC – thể hiện việc người tham gia có thói quen theo dõi lượng calo tiêu thụ hàng ngày hay không.
# Tạo biến nhị phân: 1 nếu là Overweight_Level_I, 0 nếu không
l$NObeyesdad_bin <- ifelse(l$NObeyesdad == "Overweight_Level_I", 1, 0)
# Mô hình hồi quy tuyến tính với SCC là biến giải thích
model_linear_scc <- glm(NObeyesdad_bin ~ SCC, data = l)
# Hiển thị kết quả mô hình
summary(model_linear_scc)
##
## Call:
## glm(formula = NObeyesdad_bin ~ SCC, data = l)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.125558 0.007577 16.571 < 2e-16 ***
## SCCyes 0.259858 0.035531 7.314 3.68e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.115682)
##
## Null deviance: 250.16 on 2110 degrees of freedom
## Residual deviance: 243.97 on 2109 degrees of freedom
## AIC: 1441.5
##
## Number of Fisher Scoring iterations: 2
Kết quả hồi quy cho thấy hệ số chặn (Intercept) là 0.1256, tương ứng với xác suất trung bình rơi vào nhóm “Overweight_Level_I” ở những người không theo dõi lượng calo. Hệ số hồi quy của biến SCCyes là 0.2599 với giá trị p rất nhỏ (p < 0.001), cho thấy mối liên hệ này có ý nghĩa thống kê rất cao.
Điều này có nghĩa là: những người có thói quen theo dõi calo có xác suất rơi vào nhóm thừa cân cấp độ I cao hơn khoảng 0.26 đơn vị so với người không theo dõi calo (trên thang xác suất từ 0 đến 1).
Mặc dù kết quả này có thể mang tính phản trực giác (vì theo dõi calo thường được xem là hành vi phòng ngừa thừa cân), nó có thể phản ánh một xu hướng ngược lại: những người đã bắt đầu tăng cân hoặc thừa cân mới chủ động theo dõi lượng calo. Nói cách khác, hành vi SCC có thể là hệ quả của việc thừa cân, chứ không nhất thiết là nguyên nhân gây ra nó.
Để kiểm định xem hành vi theo dõi lượng calo tiêu thụ (SCC) có ảnh hưởng đến khả năng rơi vào nhóm béo phì cấp độ III hay không, ta áp dụng mô hình hồi quy logistic. Mô hình này phù hợp khi biến phụ thuộc là nhị phân (0 hoặc 1), cho phép ước lượng xác suất xảy ra một sự kiện (ở đây là thuộc nhóm Obesity_Type_III) theo một hàm logit của biến giải thích (SCC). Việc sử dụng mô hình logit giúp đánh giá xác suất theo dõi calo có làm giảm nguy cơ béo phì nghiêm trọng hay không.
# Mô hình hồi quy logistic (logit)
model_logit2 <- glm(NObeyesdad_bin ~ SCC, data = l, family = binomial(link = "logit"))
# Hiển thị kết quả mô hình
summary(model_logit2)
##
## Call:
## glm(formula = NObeyesdad_bin ~ SCC, family = binomial(link = "logit"),
## data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.94082 0.06723 -28.868 < 2e-16 ***
## SCCyes 1.47420 0.22022 6.694 2.17e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1689.5 on 2110 degrees of freedom
## Residual deviance: 1650.8 on 2109 degrees of freedom
## AIC: 1654.8
##
## Number of Fisher Scoring iterations: 4
Phương trình hồi quy logit có dạng:
\[ \log\left(\frac{\pi}{1 - \pi}\right) = -1.941 + 1.474 \cdot \text{SCC} \]
Trong đó:
\(\pi\): là xác suất một cá nhân rơi vào nhóm Overweight_Level_I
Biến SCC là nhị phân: 1 nếu cá nhân có theo dõi calo, 0 nếu không.
Diễn giải kết quả:
Hệ số chặn \(\hat{\beta}_0 = -1.941\): Đây là log-odds rơi vào nhóm Overweight_Level_I đối với người không theo dõi calo (SCC = “no”).
Hệ số hồi quy \(\hat{\beta}_1 = 1.474\) (p < 0.001): Cho thấy log-odds rơi vào nhóm Overweight_Level_I ở người có thói quen theo dõi calo cao hơn 1.474 đơn vị so với người không có thói quen này, và mối liên hệ này có ý nghĩa thống kê rất cao.
Tỷ số Odds (Odds Ratio):
# Tính Odds Ratio
exp(coef(model_logit2))
## (Intercept) SCCyes
## 0.1435868 4.3675219
\[ \text{OR} = e^{1.474} \approx 4.37 \]
Điều này cho thấy: odds rơi vào nhóm Overweight_Level_I ở người có thói quen theo dõi calo cao gấp 4.37 lần so với người không theo dõi calo. Đây là một kết quả đáng chú ý, bởi nó gợi ý rằng việc theo dõi calo không nhất thiết giúp tránh thừa cân, mà có thể liên quan đến việc đã có ý thức do tình trạng cân nặng. Tuy nhiên, cần thận trọng khi diễn giải vì quan hệ nhân quả không thể kết luận chỉ từ hồi quy.
# Mô hình Probit với biến SCC
probit_model_favc <- glm(NObeyesdad_bin ~ SCC, family = binomial(link = "probit"), data = l)
# Xem kết quả mô hình
summary(probit_model_favc)
##
## Call:
## glm(formula = NObeyesdad_bin ~ SCC, family = binomial(link = "probit"),
## data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.14764 0.03575 -32.104 < 2e-16 ***
## SCCyes 0.85636 0.13474 6.356 2.07e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1689.5 on 2110 degrees of freedom
## Residual deviance: 1650.8 on 2109 degrees of freedom
## AIC: 1654.8
##
## Number of Fisher Scoring iterations: 4
Phương trình hồi quy:
\[ \pi = \Phi(-1.1476 + 0.8564 \cdot \text{SCC}) \]
Trong đó:
\(\Phi(\cdot)\): là hàm phân phối tích lũy chuẩn tắc (standard normal CDF)
\(\pi\): là xác suất một người thuộc nhóm Overweight_Level_I
Diễn giải kết quả:
\[ \hat{\beta}_0 = -1.1476, \quad p < 0.001 \] Đại diện cho logit nghịch đảo (probit) của xác suất rơi vào nhóm Overweight_Level_I khi người đó không theo dõi calo. Khi đó:
\[ \pi_{\text{không theo dõi}} = \Phi(-1.1476) \approx 0.1257 \]
\[ \hat{\beta}_1 = 0.8564, \quad p < 0.001 \] Cho thấy khi người tham gia có theo dõi calo, giá trị probit tăng thêm 0.8564 đơn vị, tương ứng với:
\[ \pi_{\text{có theo dõi}} = \Phi(-1.1476 + 0.8564) = \Phi(-0.2912) \approx 0.3853 \]
So sánh xác suất giữa hai nhóm:
\[ \Delta \pi = \pi_{\text{có theo dõi}} - \pi_{\text{không theo dõi}} \approx 0.3853 - 0.1257 = 0.2596 \]
Kết luận:
Mô hình Probit cho thấy người có thói quen theo dõi lượng calo tiêu thụ có xác suất rơi vào nhóm thừa cân cấp độ I (Overweight_Level_I) cao hơn khoảng 25.96 điểm phần trăm so với người không theo dõi. Điều này có thể phản ánh một xu hướng hành vi phản ứng — những cá nhân đã có dấu hiệu tăng cân có xu hướng bắt đầu kiểm soát calo như một biện pháp điều chỉnh. Cả hai hệ số trong mô hình đều có ý nghĩa thống kê rất cao (p < 0.001), khẳng định rằng hành vi SCC là một yếu tố liên quan chặt chẽ đến khả năng rơi vào nhóm thừa cân nhẹ trong tập dữ liệu.
Để đánh giá ảnh hưởng của hành vi theo dõi lượng calo tiêu thụ (SCC) đến khả năng bị thừa cân cấp độ I (Overweight_Level_I), ta xây dựng mô hình hồi quy tuyến tính tổng quát sử dụng hàm liên kết cloglog (complementary log-log). Đây là mô hình phù hợp trong bối cảnh xác suất xảy ra sự kiện có xu hướng nhỏ, hoặc khi mối quan hệ giữa xác suất và biến giải thích có tính chất bất đối xứng.
Mô hình hồi quy có dạng:
\[ \pi = 1 - \exp\left[-\exp\left(\beta_0 + \beta_1 \cdot \text{SCC}\right)\right] \]
Trong đó:
\(\pi\): xác suất một người bị thừa cân cấp độ I
\(\text{SCC}\) biến nhị phân đại diện cho hành vi theo dõi calo (yes = 1, no = 0)
\(\beta_1\): hệ số hồi quy thể hiện tác động của hành vi theo dõi calo đến xác suất bị thừa cân cấp độ 1
l$NObeyesdad_bin <- ifelse(l$NObeyesdad == "Overweight_Level_I", 1, 0)
# Mô hình cloglog với biến SCC
model_cloglog <- glm(NObeyesdad_bin ~ SCC, family = binomial(link = "cloglog"), data = l)
# Kết quả mô hình
summary(model_cloglog)
##
## Call:
## glm(formula = NObeyesdad_bin ~ SCC, family = binomial(link = "cloglog"),
## data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.00865 0.06292 -31.926 < 2e-16 ***
## SCCyes 1.28877 0.17755 7.259 3.91e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1689.5 on 2110 degrees of freedom
## Residual deviance: 1650.8 on 2109 degrees of freedom
## AIC: 1654.8
##
## Number of Fisher Scoring iterations: 5
Phương trình hồi quy có dạng:
Trong mô hình hồi quy với hàm liên kết complementary log-log (cloglog), ta có phương trình ước lượng như sau:
\[ \log\left( -\log(1 - \pi) \right) = −2.0087+1.2888 \cdot \text{SCC}_{\text{yes}} \]
Trong đó:
\(\pi\): là xác suất một người rơi vào nhóm Overweight_Level_I.
SCC = 1 nếu cá nhân có theo dõi lượng calo, 0 nếu không
Diễn giải kết quả:
\[ \pi_{\text{SCC = 0}} = 1 - \exp\left[ -\exp(−2.0087) \right] \approx 0.1313 \]
\[ \pi_{\text{SCC = 1}} = 1 - \exp\left[ -\exp(−2.0087+1.2888) \right] \approx 0.3777 \]
\[ \Delta \pi = \pi_{\text{SCC = 0}} - \pi_{\text{SCC = 1}} = 0.3777−0.1313 = 0.2464 \]
Kết luận:
Theo mô hình cloglog, người có thói quen theo dõi calo có xác suất rơi vào nhóm Overweight_Level_I cao hơn khoảng 24.6 điểm phần trăm so với người không theo dõi. Mặc dù theo dõi calo thường được xem là hành vi có lợi cho sức khỏe, kết quả này có thể phản ánh rằng những người đã có dấu hiệu tăng cân mới bắt đầu thực hiện hành vi này. Cả hai hệ số đều có ý nghĩa thống kê rất cao (p < 0.001), cho thấy SCC là một yếu tố liên quan chặt chẽ đến khả năng rơi vào tình trạng thừa cân nhẹ.
| Mô hình | Hàm liên kết (Link function) | AIC |
|---|---|---|
| Hồi quy tuyến tính (Linear Regression) | Identity (Gaussian) | 1441.5 |
| Hồi quy logistic (Logit) | Logit | 1654.8 |
| Hồi quy probit | Probit | 1654.8 |
| Hồi quy cloglog | Complementary log-log | 1654.8 |
Dựa vào bảng tổng hợp các mô hình hồi quy giữa biến phụ thuộc NObeyesdad_bin (với định nghĩa là nhóm Overweight_Level_I) và biến độc lập SCC, có thể thấy rằng mô hình hồi quy tuyến tính (Linear Regression) có giá trị AIC thấp nhất (1441.5), trong khi ba mô hình hồi quy nhị phân — logit, probit và cloglog — đều có cùng giá trị AIC là 1654.8. Vì AIC càng thấp thì mô hình càng được coi là phù hợp hơn với dữ liệu, nên về mặt định lượng, mô hình tuyến tính có vẻ được ưu ái hơn.
Tuy nhiên, hồi quy tuyến tính không thực sự phù hợp trong bối cảnh dự đoán xác suất cho biến nhị phân, do có thể cho ra giá trị dự đoán nằm ngoài khoảng [0, 1]. Trong khi đó, ba mô hình hồi quy nhị phân sử dụng các hàm liên kết khác nhau — logit (logistic), probit, và cloglog — đều khắc phục được hạn chế này và cho kết quả phù hợp về mặt thống kê.
Điểm đáng chú ý là cả ba mô hình nhị phân đều cho AIC bằng nhau, cho thấy mức độ phù hợp tương đương. Trong đó, logit và probit thường được ưu tiên hơn trong các nghiên cứu xã hội học, y tế và khoa học hành vi vì tính phổ biến và dễ diễn giải. Mô hình cloglog, mặc dù không tỏ ra vượt trội, nhưng vẫn là lựa chọn hợp lý trong trường hợp phân phối xác suất mang tính bất đối xứng.
Tóm lại, logit và probit là hai mô hình lý tưởng hơn để mô hình hóa khả năng bị thừa cân nhẹ dựa trên hành vi theo dõi calo, trong khi hồi quy tuyến tính tuy có AIC thấp hơn nhưng không thích hợp về mặt bản chất mô hình.
Lý do chọn cặp: Biến family_history_with_overweight (việc trong gia đình có người từng bị thừa cân hay không) phản ánh yếu tố di truyền và môi trường sống chung trong gia đình – những yếu tố đã được nhiều nghiên cứu xác nhận là có ảnh hưởng đến nguy cơ béo phì. Việc phân tích mối liên hệ giữa family_history_with_overweight và NObeyesdad sẽ giúp làm rõ liệu tiền sử thừa cân trong gia đình có thực sự làm gia tăng khả năng một cá nhân mắc tình trạng béo phì hay không ?
Để tìm hiểu mối liên hệ giữa tiền sử thừa cân trong gia đình (family_history_with_overweight) và tình trạng cân nặng (NObeyesdad), ta xây dựng bảng tần số chéo thể hiện số lượng cá nhân thuộc từng nhóm mức độ béo phì, được phân loại theo việc có hay không có người thân trong gia đình từng bị thừa cân. Phân tích bảng này cho phép đánh giá sơ bộ liệu yếu tố di truyền và môi trường gia đình có liên quan đến xu hướng phát triển tình trạng thừa cân hoặc béo phì hay không.
tab3 <- table(l$NObeyesdad, l$family_history_with_overweight)
tab3
##
## no yes
## Insufficient_Weight 146 126
## Normal_Weight 132 155
## Obesity_Type_I 7 344
## Obesity_Type_II 1 296
## Obesity_Type_III 0 324
## Overweight_Level_I 81 209
## Overweight_Level_II 18 272
Bảng tần số cho thấy xu hướng rất rõ rệt: phần lớn các trường hợp béo phì nặng đều xuất hiện ở nhóm có tiền sử gia đình thừa cân. Cụ thể, trong nhóm Obesity_Type_III, toàn bộ 324 trường hợp đều có người thân thừa cân, trong khi không có trường hợp nào ở nhóm không có tiền sử gia đình. Tương tự, với nhóm Obesity_Type_II, chỉ có 1 trường hợp không có tiền sử, trong khi có đến 296 người thuộc nhóm có tiền sử. Ngược lại, ở các nhóm Insufficient_Weight và Normal_Weight, số lượng người không có tiền sử gia đình lại chiếm tỷ lệ khá lớn (lần lượt 146 và 132 người).
# Chuyển sang data frame
df_freq <- as.data.frame(tab3)
# Vẽ biểu đồ cột nhóm
library(ggplot2)
ggplot(df_freq, aes(x = Var1, y = Freq, fill = Var2)) +
geom_col(position = "dodge", color = "black") +
geom_text(aes(label = Freq),
position = position_dodge(width = 0.9),
vjust = -0.3, size = 3.5) +
labs(
title = "Biểu đồ tần số theo mức độ béo phì và có người nhà bị béo phì",
x = "Mức độ cân nặng",
y = "Tần số",
fill = "Người thân béo ?"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 30, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")
)
Biểu đồ thể hiện rõ sự phân hoá giữa hai nhóm: những người có và không có người thân từng bị béo phì. Ở các mức béo phì cao như Obesity_Type_I, Obesity_Type_II, và Obesity_Type_III, số lượng người thuộc nhóm có tiền sử gia đình thừa cân vượt trội áp đảo. Đặc biệt, với Obesity_Type_III, toàn bộ 324 trường hợp đều thuộc nhóm này, cho thấy mối liên hệ gần như tuyệt đối giữa yếu tố di truyền/môi trường gia đình và tình trạng béo phì nghiêm trọng.
Ngược lại, ở các mức cân nặng bình thường như Insufficient_Weight và Normal_Weight, tỷ lệ giữa hai nhóm trở nên cân bằng hơn, thậm chí nhóm không có người thân béo phì chiếm ưu thế nhẹ (ví dụ: 146 người so với 126 trong nhóm thiếu cân).
Xu hướng này cho thấy rõ rằng tiền sử gia đình bị béo phì là một yếu tố nguy cơ mạnh mẽ – không chỉ liên quan đến xác suất mắc béo phì mà còn đến mức độ nghiêm trọng của béo phì. Biểu đồ củng cố giả định rằng yếu tố gia đình không nên bị bỏ qua khi xây dựng các mô hình dự đoán hoặc chiến lược can thiệp phòng ngừa béo phì trong cộng đồng.
prop3 <- prop.table(tab3, margin = 1) * 100
# Hiển thị bảng
round(prop3, 2)
##
## no yes
## Insufficient_Weight 53.68 46.32
## Normal_Weight 45.99 54.01
## Obesity_Type_I 1.99 98.01
## Obesity_Type_II 0.34 99.66
## Obesity_Type_III 0.00 100.00
## Overweight_Level_I 27.93 72.07
## Overweight_Level_II 6.21 93.79
Bảng tần suất theo hàng cho thấy tỷ lệ người có tiền sử gia đình béo phì tăng rõ rệt theo mức độ béo phì. Ở nhóm Obesity_Type_I, II, và III, trên 98% cá nhân có người thân từng bị béo phì, riêng Obesity_Type_III là 100%. Ngược lại, ở nhóm nhẹ cân và bình thường, tỷ lệ giữa hai nhóm khá cân bằng. Điều này cho thấy tiền sử gia đình béo phì là một yếu tố nguy cơ mạnh, đặc biệt trong các mức độ béo phì nặng.
df_prop3 <- as.data.frame(prop3)
colnames(df_prop3) <- c("NObeyesdad", "family_history_with_overweight", "Percent")
# Vẽ biểu đồ tần suất
library(ggplot2)
ggplot(df_prop3, aes(x = NObeyesdad, y = Percent, fill = family_history_with_overweight)) +
geom_col(position = "dodge", color = "black") +
geom_text(aes(label = round(Percent, 1)),
position = position_dodge(width = 0.9),
vjust = -0.3, size = 3.5) +
labs(
title = "Biểu đồ tần suất (%) theo mức độ cân nặng và có người thân bị béo phì",
x = "Mức độ cân nặng",
y = "Tần suất (%)",
fill = "Người thân béo ?"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 30, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")
)
Biểu đồ tần suất (%) cho thấy xu hướng nhất quán với bảng số liệu: càng ở mức độ béo phì cao, tỷ lệ người có người thân từng bị béo phì càng áp đảo. Đặc biệt, từ Obesity_Type_I trở lên, tỷ lệ này đều vượt 98%, và đạt 100% ở Obesity_Type_III. Ngược lại, ở nhóm nhẹ cân và bình thường, hai nhóm gần như cân bằng. Điều này tiếp tục khẳng định vai trò rõ rệt của yếu tố gia đình trong nguy cơ phát triển béo phì, đặc biệt ở các mức độ nghiêm trọng.
library(epitools)
riskratio(tab3)
## $data
##
## no yes Total
## Insufficient_Weight 146 126 272
## Normal_Weight 132 155 287
## Obesity_Type_I 7 344 351
## Obesity_Type_II 1 296 297
## Obesity_Type_III 0 324 324
## Overweight_Level_I 81 209 290
## Overweight_Level_II 18 272 290
## Total 385 1726 2111
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Insufficient_Weight 1.000000 NA NA
## Normal_Weight 1.165865 0.9869255 1.377247
## Obesity_Type_I 2.115679 1.8600126 2.406487
## Obesity_Type_II 2.151462 1.8927901 2.445484
## Obesity_Type_III 2.158730 1.8995088 2.453327
## Overweight_Level_I 1.555774 1.3435961 1.801460
## Overweight_Level_II 2.024740 1.7755939 2.308846
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Insufficient_Weight NA NA NA
## Normal_Weight 7.027790e-02 7.576759e-02 6.937322e-02
## Obesity_Type_I 0.000000e+00 8.919985e-56 5.667057e-50
## Obesity_Type_II 0.000000e+00 9.051385e-58 9.102193e-48
## Obesity_Type_III 0.000000e+00 3.637989e-63 5.034591e-52
## Overweight_Level_I 4.736984e-10 5.011433e-10 5.097313e-10
## Overweight_Level_II 0.000000e+00 4.664121e-38 3.752980e-35
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
So với nhóm tham chiếu là Insufficient_Weight (RR = 1), các mức độ cân nặng khác đều có Risk Ratio cao hơn, cho thấy tỷ lệ người có người thân bị béo phì ở các nhóm thừa cân và béo phì cao hơn rõ rệt.
Cụ thể, nhóm Normal_Weight có RR = 1.17, nghĩa là tỷ lệ người có người thân béo phì ở nhóm này cao hơn 17% so với nhóm thiếu cân, tuy nhiên chưa đạt ý nghĩa thống kê rõ rệt (CI bao gồm 1). Nhóm Overweight_Level_I có RR = 1.56, cho thấy tỷ lệ này cao hơn 56%, và Overweight_Level_II có RR = 2.02, tức gấp đôi so với nhóm thiếu cân.
Tại các mức độ béo phì, các tỷ số RR đều vượt ngưỡng 2: nhóm Obesity_Type_I có RR = 2.12, Obesity_Type_II là 2.15, và Obesity_Type_III cao nhất với RR = 2.16. Điều này cho thấy rằng tỷ lệ người có người thân bị béo phì trong các nhóm béo phì nặng cao gấp hơn 2 lần so với nhóm thiếu cân.
Tất cả các RR từ Overweight_Level_I trở lên đều có khoảng tin cậy 95% không chứa 1, đồng nghĩa với việc các khác biệt này có ý nghĩa thống kê. Như vậy, Risk Ratio cho thấy một xu hướng nhất quán: càng béo phì nặng, tỷ lệ có người thân béo phì càng cao so với nhóm thiếu cân.
oddsratio.wald(tab3, correction = TRUE)
## $data
##
## no yes Total
## Insufficient_Weight 146 126 272
## Normal_Weight 132 155 287
## Obesity_Type_I 7 344 351
## Obesity_Type_II 1 296 297
## Obesity_Type_III 0 324 324
## Overweight_Level_I 81 209 290
## Overweight_Level_II 18 272 290
## Total 385 1726 2111
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Insufficient_Weight 1.00000 NA NA
## Normal_Weight 1.36063 0.9755585 1.897697
## Obesity_Type_I 56.94331 25.9643502 124.884336
## Obesity_Type_II 342.98413 47.4653372 2478.400413
## Obesity_Type_III Inf NaN Inf
## Overweight_Level_I 2.98981 2.1065683 4.243377
## Overweight_Level_II 17.50970 10.2730389 29.844100
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Insufficient_Weight NA NA NA
## Normal_Weight 7.027790e-02 7.576759e-02 8.338780e-02
## Obesity_Type_I 0.000000e+00 8.919985e-56 2.290368e-49
## Obesity_Type_II 0.000000e+00 9.051385e-58 3.668647e-47
## Obesity_Type_III 0.000000e+00 3.637989e-63 2.152194e-51
## Overweight_Level_I 4.736984e-10 5.011433e-10 8.784167e-10
## Overweight_Level_II 0.000000e+00 4.664121e-38 1.187194e-34
##
## $correction
## [1] TRUE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Phân tích odds ratio cho thấy sự khác biệt rất rõ rệt giữa các nhóm cân nặng về tỷ lệ có người thân bị béo phì. Nếu lấy nhóm thiếu cân (Insufficient_Weight) làm chuẩn, thì tỷ lệ người béo phì độ III có người thân từng bị béo phì trên người béo phì độ III không có người thân béo phì là vô cùng lớn (OR = ∞), vì không có cá nhân nào trong nhóm này thuộc nhóm không có tiền sử.
Tỷ lệ người béo phì độ II có người thân béo phì trên người không có người thân bị béo phì cao hơn 343 lần so với tỷ lệ tương ứng ở nhóm thiếu cân. Ở nhóm béo phì độ I, tỉ lệ này cũng cao hơn 56.9 lần. Với nhóm thừa cân độ II (Overweight_Level_II), odds cao hơn 17.5 lần, và thừa cân độ I (Overweight_Level_I) là gần 3 lần so với nhóm chuẩn.
Ngược lại, ở nhóm cân nặng bình thường (Normal_Weight), odds chỉ cao hơn 1.36 lần và không có ý nghĩa thống kê rõ ràng. Như vậy, khi mức độ thừa cân và béo phì tăng lên, tỷ lệ người có người thân béo phì trên không có người thân béo phì cũng tăng mạnh, và mức tăng đó cao gấp hàng chục đến hàng trăm lần so với nhóm thiếu cân. Đây là bằng chứng rõ rệt cho thấy yếu tố gia đình có liên hệ chặt chẽ với tình trạng béo phì, đặc biệt ở các mức độ nghiêm trọng.
# Số người có người thân bị béo phì trong mỗi nhóm
success <- c(tab3["Overweight_Level_I", "yes"],
tab3["Insufficient_Weight", "yes"])
# Tổng số người trong mỗi nhóm
n <- c(sum(tab3["Overweight_Level_I", ]),
sum(tab3["Insufficient_Weight", ]))
# Kiểm định tỷ lệ một phía: p1 < p2
prop.test(success, n, alternative = "less", correct = FALSE)
##
## 2-sample test for equality of proportions without continuity correction
##
## data: success out of n
## X-squared = 38.64, df = 1, p-value = 1
## alternative hypothesis: less
## 95 percent confidence interval:
## -1.0000000 0.3234184
## sample estimates:
## prop 1 prop 2
## 0.7206897 0.4632353
H₀: Tỷ lệ người có người thân bị béo phì ở nhóm Overweight_Level_I lớn hơn hoặc bằng tỷ lệ ở nhóm Insufficient_Weight.
H₁: Tỷ lệ người có người thân bị béo phì ở nhóm Overweight_Level_I nhỏ hơn tỷ lệ ở nhóm Insufficient_Weight
Kết luận: Dữ liệu không ủng hộ giả thuyết rằng tỷ lệ người có người thân béo phì ở nhóm Overweight_Level_I thấp hơn nhóm Insufficient_Weight. Trái lại, kết quả cho thấy tỷ lệ này thực tế cao hơn, cho thấy yếu tố gia đình vẫn có vai trò rõ rệt ở nhóm thừa cân nhẹ.
chisq.test(tab3)
##
## Pearson's Chi-squared test
##
## data: tab3
## X-squared = 621.98, df = 6, p-value < 2.2e-16
Kết luận: Với p-value rất nhỏ, gần bằng 0, ta bác bỏ giả thuyết độc lập. Điều này cho thấy có mối liên hệ có ý nghĩa thống kê rất mạnh giữa tình trạng cân nặng và tiền sử gia đình bị béo phì. Nói cách khác, tình trạng béo phì không phân bố ngẫu nhiên giữa hai nhóm, mà liên quan rõ rệt đến việc trong gia đình có người từng bị béo phì hay không.
Trong phần này, ta xây dựng mô hình hồi quy tuyến tính để kiểm định xem tiền sử gia đình bị béo phì (biến family_history_with_overweight) có liên quan đến nguy cơ rơi vào nhóm béo phì độ I (Obesity_Type_I) hay không. Biến phụ thuộc NObeyesdad_bin được mã hóa nhị phân: giá trị 1 nếu người tham gia thuộc nhóm “Obesity_Type_I”, và 0 nếu thuộc các nhóm còn lại. Biến độc lập sử dụng trong mô hình là family_history_with_overweight, phản ánh việc người tham gia có hay không có người thân từng bị thừa cân hoặc béo phì.
# Tạo biến nhị phân: 1 nếu là Obesity_Type_I, 0 nếu không
l$NObeyesdad_bin <- ifelse(l$NObeyesdad == "Obesity_Type_I", 1, 0)
# Mô hình hồi quy tuyến tính với family_history_with_overweight là biến giải thích
model_linear_family <- glm(NObeyesdad_bin ~ family_history_with_overweight, data = l)
# Hiển thị kết quả mô hình
summary(model_linear_family)
##
## Call:
## glm(formula = NObeyesdad_bin ~ family_history_with_overweight,
## data = l)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.01818 0.01865 0.975 0.33
## family_history_with_overweightyes 0.18112 0.02062 8.783 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.1338605)
##
## Null deviance: 292.64 on 2110 degrees of freedom
## Residual deviance: 282.31 on 2109 degrees of freedom
## AIC: 1749.6
##
## Number of Fisher Scoring iterations: 2
Kết luận:
Mô hình hồi quy tuyến tính cho thấy biến family_history_with_overweight có mối liên hệ có ý nghĩa thống kê với xác suất thuộc nhóm béo phì độ I (Obesity_Type_I). Hệ số ước lượng của biến family_history_with_overweight = yes là 0.1811, với giá trị p < 2e-16, cho thấy sự khác biệt giữa hai nhóm là rất có ý nghĩa.
Cụ thể, mô hình cho thấy xác suất trung bình thuộc nhóm béo phì độ I ở người có người thân từng bị béo phì cao hơn khoảng 18.1 điểm phần trăm so với người không có tiền sử gia đình. Trong khi đó, hệ số chặn (intercept) là 0.0182, nghĩa là xác suất trung bình ở nhóm không có người thân bị béo phì chỉ khoảng 1.82%.
Kết quả này cho thấy tiền sử gia đình bị béo phì có ảnh hưởng rõ rệt đến nguy cơ rơi vào nhóm béo phì độ I, phù hợp với các kết luận trước đó từ phân tích bảng chéo, odds ratio và risk ratio.
Trong phần này, ta xây dựng mô hình hồi quy logistic để kiểm định xem tiền sử gia đình bị béo phì (family_history_with_overweight) có liên quan đến nguy cơ rơi vào nhóm béo phì độ I (Obesity_Type_I) hay không. Biến phụ thuộc NObeyesdad_bin được mã hóa nhị phân: giá trị 1 nếu người tham gia thuộc nhóm “Obesity_Type_I”, và 0 nếu thuộc các nhóm còn lại. Biến độc lập sử dụng trong mô hình là family_history_with_overweight, thể hiện việc người tham gia có hoặc không có người thân từng bị thừa cân hoặc béo phì.
# Mô hình hồi quy logistic (logit)
model_logit3 <- glm(NObeyesdad_bin ~ family_history_with_overweight,
data = l, family = binomial(link = "logit"))
# Hiển thị kết quả mô hình
summary(model_logit3)
##
## Call:
## glm(formula = NObeyesdad_bin ~ family_history_with_overweight,
## family = binomial(link = "logit"), data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.9890 0.3814 -10.459 < 2e-16 ***
## family_history_with_overweightyes 2.5983 0.3861 6.729 1.71e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1899.6 on 2110 degrees of freedom
## Residual deviance: 1794.0 on 2109 degrees of freedom
## AIC: 1798
##
## Number of Fisher Scoring iterations: 6
Phương trình hồi quy logit có dạng:
\[ \log\left(\frac{\pi}{1 - \pi}\right) = -3.989 + 2.598 \cdot \text{family_history_with_overweight} \]
Hệ số chặn \(\hat{\beta}_0 = -1.941\): Đây là log-odds rơi vào nhóm Overweight_Level_I đối với người không theo dõi calo (SCC = “no”).
Hệ số hồi quy \(\hat{\beta}_1 = 1.474\) (p < 0.001): Cho thấy log-odds rơi vào nhóm Overweight_Level_I ở người có thói quen theo dõi calo cao hơn 1.474 đơn vị so với người không có thói quen này, và mối liên hệ này có ý nghĩa thống kê rất cao.
Tỷ số Odds (Odds Ratio):
# Tính Odds Ratio
exp(coef(model_logit3))
## (Intercept) family_history_with_overweightyes
## 0.01851852 13.44138890
\[ \text{OR} = e^{2.598} \approx 13.45 \]
Nghĩa là odds rơi vào nhóm béo phì độ I ở người có người thân bị béo phì cao gấp khoảng 13.45 lần so với người không có tiền sử gia đình. Đây là một chênh lệch rất lớn, cho thấy yếu tố gia đình là một nguy cơ quan trọng, cần được xem xét nghiêm túc trong các mô hình dự đoán và phòng ngừa béo phì.
# Mô hình Probit với biến family_history_with_overweight
probit_model_family_history_with_overweight <- glm(NObeyesdad_bin ~ family_history_with_overweight, family = binomial(link = "probit"), data = l)
# Xem kết quả mô hình
summary(probit_model_family_history_with_overweight)
##
## Call:
## glm(formula = NObeyesdad_bin ~ family_history_with_overweight,
## family = binomial(link = "probit"), data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.0928 0.1525 -13.723 < 2e-16 ***
## family_history_with_overweightyes 1.2487 0.1563 7.987 1.38e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1899.6 on 2110 degrees of freedom
## Residual deviance: 1794.0 on 2109 degrees of freedom
## AIC: 1798
##
## Number of Fisher Scoring iterations: 6
Phương trình hồi quy: \[ \pi = \Phi(-2.0928 + 1.2487 \cdot \text{family\_history\_with\_overweight}) \]
Trong đó:
\(\Phi(\cdot)\): là hàm phân phối tích lũy chuẩn tắc (standard normal CDF)
\(\pi\): là xác suất bị béo phì độ I
Diễn giải kết quả:
\[ \hat{\beta}_0 = -2.0928, \quad p < 0.001 \]
Tương ứng với nhóm không theo dõi calo, xác suất béo phì độ I là:
\[ \pi_{\text{không có tiền sử}} = \Phi(-2.0928) \approx 0.0183 \]
\[ \hat{\beta}_1 = 1.2487, \quad p < 0.001 \]
Khi một người có hành vi theo dõi calo, ta có:
\[ \pi_{\text{có tiền sử}} = \Phi(-2.0928 + 1.2487) = \Phi(-0.8441) \approx 0.1992 \]
So sánh xác suất giữa hai nhóm:
\[ \Delta \pi = \pi_{\text{có tiền sử}} - \pi_{\text{không có tiền sử}} = 0.1992 - 0.0183 = 0.1809 \]
Kết luận:
Mô hình Probit cho thấy xác suất rơi vào nhóm béo phì độ I ở người có tiền sử gia đình bị béo phì độ I cao hơn khoảng 18.09 điểm phần trăm so với người không có tiền sử. Cả hai hệ số đều có ý nghĩa thống kê rất cao (p < 0.001), củng cố vai trò của yếu tố di truyền hoặc môi trường gia đình trong nguy cơ mắc béo phì.
Để đánh giá ảnh hưởng của tiền sử gia đình bị béo phì (family_history_with_overweight) đến khả năng bị béo phì độ I, ta xây dựng mô hình hồi quy tuyến tính tổng quát sử dụng hàm liên kết cloglog (complementary log-log). Đây là mô hình phù hợp trong bối cảnh xác suất xảy ra sự kiện có xu hướng nhỏ, hoặc khi mối quan hệ giữa xác suất và biến giải thích có tính chất bất đối xứng.
Mô hình hồi quy có dạng:
\[ \pi = 1 - \exp\left[-\exp\left(\beta_0 + \beta_1 \cdot \text{family_history_with_overweight}\right)\right] \]
Trong đó:
\(\pi\): xác suất một người bị béo phì độ I
\(\text{family_history_with_overweight}\) biến nhị phân đại diện cho tiền sử gia đình bị béo phì (yes = 1, no = 0)
\(\beta_1\): hệ số hồi quy thể hiện tác động của tiền sử gia đình đến xác suất bị béo phì độ I
l$NObeyesdad_bin <- ifelse(l$NObeyesdad == "Obesity_Type_I", 1, 0)
# Mô hình cloglog với biến family_history_with_overweight
model_cloglog <- glm(NObeyesdad_bin ~ family_history_with_overweight,
family = binomial(link = "cloglog"), data = l)
# Kết quả mô hình
summary(model_cloglog)
##
## Call:
## glm(formula = NObeyesdad_bin ~ family_history_with_overweight,
## family = binomial(link = "cloglog"), data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.9982 0.3778 -10.582 < 2e-16 ***
## family_history_with_overweightyes 2.4943 0.3817 6.535 6.36e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1899.6 on 2110 degrees of freedom
## Residual deviance: 1794.0 on 2109 degrees of freedom
## AIC: 1798
##
## Number of Fisher Scoring iterations: 6
Phương trình hồi quy có dạng:
Trong mô hình hồi quy với hàm liên kết complementary log-log (cloglog), ta có phương trình ước lượng như sau:
\[ \log\left( -\log(1 - \pi) \right) = −3.9982+2.4943 \cdot \text{family_history_with_overweight} \]
Trong đó:
\(\pi\): xác suất một người thuộc nhóm béo phì cấp độ I (Obesity_Type_I).
family_history_with_overweight = 1 nếu cá nhân có theo dõi lượng calo, 0 nếu không
Diễn giải kết quả:
Hệ số chặn \(\beta_0 = −3.9982\) (p < 0.001): đại diện cho log(-log(1 − π)) ở người không có tiền sử gia đình béo phì. Khi đó:
\[ \pi_{\text{không có tiền sử}} = 1 - \exp\left[ -\exp(−3.9982) \right] \approx 0.0183 \]
Hệ số \(\beta_1 = 2.4943\) (p < 0.001): Khi người tham gia có tiền sử gia đình bị béo phì, thì log(-log(1 − π)) tăng thêm 2.4943 đơn vị. Khi đó:
\[ \pi_{\text{có tiền sử}} = 1 - \exp\left[ -\exp(−3.9982+2.4943) \right] = 1 - \exp\left[ -\exp(−1.5039) \right] \approx 0.2076 \]
\[ \Delta \pi = \pi_{\text{có tiền sử}} - \pi_{\text{không có tiền sử}} = 0.2076−0.0183=0.1893 \]
Kết luận:
XKết quả cho thấy xác suất thuộc nhóm béo phì cấp độ I ở người có tiền sử gia đình bị béo phì cao hơn khoảng 18.9 điểm phần trăm so với người không có tiền sử. Đây là sự khác biệt lớn và có ý nghĩa thống kê mạnh (p < 0.001), cho thấy yếu tố di truyền hoặc môi trường trong gia đình có thể đóng vai trò quan trọng trong nguy cơ mắc béo phì cấp độ I. Mô hình cloglog là phù hợp trong bối cảnh này do sự phân phối xác suất bất đối xứng giữa hai nhóm.
| Mô hình | Hàm liên kết (Link function) | AIC |
|---|---|---|
| Hồi quy tuyến tính (Linear Regression) | Identity (Gaussian) | 1749.6 |
| Hồi quy logistic (Logit) | Logit | 1798.0 |
| Hồi quy probit | Probit | 1798.0 |
| Hồi quy cloglog | Complementary log-log | 1798.0 |
Kết luận:
Trong phân tích mối quan hệ giữa tiền sử gia đình bị béo phì và nguy cơ rơi vào nhóm béo phì cấp độ I (Obesity_Type_I), bốn mô hình hồi quy đã được so sánh: tuyến tính, logistic, probit và cloglog. Kết quả cho thấy mô hình hồi quy tuyến tính có giá trị AIC thấp nhất (1749.6), cho thấy mức độ phù hợp với dữ liệu cao nhất về mặt thông tin (theo tiêu chí Akaike).
Ba mô hình hồi quy nhị phân – logit, probit và cloglog – đều cho AIC bằng nhau (1798), cao hơn so với mô hình tuyến tính. Tuy nhiên, do biến phụ thuộc là nhị phân, mô hình tuyến tính không phải là lựa chọn lý tưởng trong phân tích dự đoán. Mặc dù mô hình cloglog thường được sử dụng khi xác suất ở nhóm tham chiếu rất thấp (sự kiện hiếm), trong trường hợp này nó không mang lại lợi thế rõ ràng về AIC.
Vì vậy, trong số các mô hình hồi quy nhị phân, logit và probit được xem là phù hợp hơn cả, vừa có AIC tối ưu trong nhóm, vừa đảm bảo khả năng diễn giải rõ ràng về xác suất hoặc log-odds. Chúng là những lựa chọn hợp lý để mô hình hóa xác suất thuộc nhóm Obesity_Type_I dựa trên biến family_history_with_overweight.
Trong phần này, ta sẽ xây dựng mô hình hồi quy tuyến tính tổng quát (GLM) nhằm đánh giá tác động đồng thời của ba yếu tố hành vi và nhân khẩu học đến xác suất rơi vào nhóm béo phì cấp độ I (Obesity_Type_I). Cụ thể, biến phụ thuộc NObeyesdad được mã hóa nhị phân, với giá trị 1 tương ứng với các cá nhân thuộc nhóm Obesity_Type_I, và 0 nếu thuộc các nhóm còn lại. Ba biến độc lập được đưa vào mô hình bao gồm:
FAVC: thể hiện thói quen tiêu thụ thực phẩm giàu calo;
SCC: thói quen theo dõi lượng calo tiêu thụ;
family_history_with_overweight: yếu tố di truyền liên quan đến tiền sử thừa cân trong gia đình.
Việc đưa đồng thời ba biến vào mô hình giúp đánh giá ảnh hưởng riêng biệt của từng yếu tố khi đã kiểm soát các yếu tố còn lại, từ đó cung cấp cái nhìn toàn diện và khách quan hơn về nguy cơ béo phì loại I dưới góc độ hành vi và môi trường gia đình.
# Tạo biến nhị phân: 1 nếu là Obesity_Type_I, 0 nếu không
l$NObeyesdad_bin <- ifelse(l$NObeyesdad == "Obesity_Type_I", 1, 0)
# Mô hình hồi quy tuyến tính đa biến với 3 biến giải thích
model_linear_multi <- glm(NObeyesdad_bin ~ FAVC + SCC + family_history_with_overweight, data = l)
# Hiển thị kết quả mô hình
summary(model_linear_multi)
##
## Call:
## glm(formula = NObeyesdad_bin ~ FAVC + SCC + family_history_with_overweight,
## data = l)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.03849 0.02763 -1.393 0.163655
## FAVCyes 0.08861 0.02565 3.455 0.000561 ***
## SCCyes -0.07188 0.03925 -1.831 0.067171 .
## family_history_with_overweightyes 0.15864 0.02125 7.465 1.21e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.1328691)
##
## Null deviance: 292.64 on 2110 degrees of freedom
## Residual deviance: 279.96 on 2107 degrees of freedom
## AIC: 1735.9
##
## Number of Fisher Scoring iterations: 2
Kết luận:
Kết quả hồi quy tuyến tính đa biến cho thấy cả ba yếu tố hành vi và di truyền đều có ảnh hưởng nhất định đến xác suất rơi vào nhóm béo phì cấp độ I. Trong đó, biến FAVC (thói quen ăn thực phẩm giàu calo) có hệ số dương và ý nghĩa thống kê cao (p < 0.001), khẳng định rằng hành vi tiêu thụ năng lượng cao là yếu tố nguy cơ đáng kể đối với béo phì. Biến family_history_with_overweight cũng thể hiện tác động mạnh mẽ và có ý nghĩa rất cao (p ≈ 1.21e-13), cho thấy yếu tố di truyền đóng vai trò quan trọng trong việc gia tăng nguy cơ mắc béo phì loại I.
Ngược lại, biến SCC (thói quen theo dõi lượng calo tiêu thụ) có hệ số âm, gợi ý rằng hành vi này có thể giúp giảm xác suất mắc béo phì, mặc dù mức ý nghĩa thống kê chưa đạt ngưỡng 5% (p ≈ 0.067). Điều này cho thấy tác động bảo vệ của hành vi này có thể tồn tại nhưng cần được kiểm chứng thêm trong các mô hình phù hợp hơn như Logit.
Tổng thể, mô hình cho thấy rằng việc đồng thời kiểm soát chế độ ăn, theo dõi lượng calo, và yếu tố di truyền đều góp phần hình thành nguy cơ béo phì cấp độ I. Đây là bằng chứng thực nghiệm hỗ trợ các chiến lược can thiệp y tế dựa trên thay đổi hành vi và đánh giá nguy cơ di truyền trong phòng chống béo phì.
# Tạo biến nhị phân: 1 nếu là Obesity_Type_I, 0 nếu không
l$NObeyesdad_bin <- ifelse(l$NObeyesdad == "Obesity_Type_I", 1, 0)
# Mô hình hồi quy logistic (logit) đa biến
model_logit_multi <- glm(NObeyesdad_bin ~ FAVC + SCC + family_history_with_overweight,
data = l, family = binomial(link = "logit"))
# Hiển thị kết quả mô hình
summary(model_logit_multi)
##
## Call:
## glm(formula = NObeyesdad_bin ~ FAVC + SCC + family_history_with_overweight,
## family = binomial(link = "logit"), data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.8725 0.4812 -10.126 < 2e-16 ***
## FAVCyes 1.1730 0.3197 3.670 0.000243 ***
## SCCyes -1.6282 0.7262 -2.242 0.024947 *
## family_history_with_overweightyes 2.4007 0.3875 6.195 5.83e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1899.6 on 2110 degrees of freedom
## Residual deviance: 1764.1 on 2107 degrees of freedom
## AIC: 1772.1
##
## Number of Fisher Scoring iterations: 6
Phương trình hồi quy logit có dạng:
\[ \log\left(\frac{\pi}{1 - \pi}\right) = -4.8725 + 1.1730 \cdot \text{FAVC}_{\text{yes}} - 1.6282 \cdot \text{SCC}_{\text{yes}} + 2.4007 \cdot \text{FamilyHistory}_{\text{yes}} \]
Hệ số chặn \(\hat{\beta}_0 = -4.8725\): Đây là log-odds rơi vào nhóm đối với ngườikhông có thói quen ăn nhiều calo, không theo dõi calo, và không có người thân bị béo phì.
Hệ số hồi quy FAVCyes: \(\hat{\beta}_1 = 1.1730\), với \(p = 0.000243 < 0.001\). Nghĩa là khi giữ các yếu tố khác không đổi, người có thói quen ăn thực phẩm giàu calo có log-odds rơi vào nhóm béo phì loại I cao hơn 1.173 đơn vị so với người không có thói quen này. Kết quả này có ý nghĩa thống kê rất cao.
Hệ số hồi quy SCCyes: \(\hat{\beta}_2 = -1.6282\), với \(p = 0.025\). Hệ số âm cho thấy người thường xuyên theo dõi lượng calo có log-odds thấp hơn đáng kể so với người không theo dõi, tức là có xu hướng giảm nguy cơ béo phì loại I.
Hệ số hồi quy family_history_with_overweightyes: \(\hat{\beta}_3 = 2.4007\), với \(p < 0.0001\), cho thấy đây là yếu tố nguy cơ mạnh mẽ nhất trong mô hình. Khi giữ các yếu tố khác không đổi, người có người thân bị thừa cân/béo phì có log-odds cao hơn rất nhiều so với người không có tiền sử gia đình.
Tỷ số Odds (Odds Ratio):
# Tính Odds Ratio
exp(coef(model_logit_multi))
## (Intercept) FAVCyes
## 0.007653942 3.231641279
## SCCyes family_history_with_overweightyes
## 0.196272953 11.030859266
\[ \text{OR}_{\text{FAVC}} = e^{1.1730} \approx 3.23 \]
\[ \text{OR}_{\text{SCC}} = e^{-1.6282} \approx 0.20 \]
\[ \text{OR}_{\text{FamilyHistory}} = e^{2.4007} \approx 11.03 \]
Kết luận:
Những người thường xuyên ăn thực phẩm giàu calo có nguy cơ thuộc nhóm béo phì loại I cao gấp khoảng 3.23 lần so với người không có thói quen này. Ngược lại, người có thói quen theo dõi lượng calo có nguy cơ thấp hơn, với odds chỉ bằng khoảng 20% so với người không theo dõi. Đặc biệt, người có người thân bị béo phì có nguy cơ cao gấp khoảng 11 lần, một mức chênh lệch rất lớn, cho thấy yếu tố di truyền là một trong những yếu tố nguy cơ mạnh nhất.
l$NObeyesdad_bin <- ifelse(l$NObeyesdad == "Obesity_Type_I", 1, 0)
# Mô hình hồi quy probit đa biến với 3 biến giải thích
model_probit_multi <- glm(NObeyesdad_bin ~ FAVC + SCC + family_history_with_overweight,
data = l, family = binomial(link = "probit"))
# Hiển thị kết quả mô hình
summary(model_probit_multi)
##
## Call:
## glm(formula = NObeyesdad_bin ~ FAVC + SCC + family_history_with_overweight,
## family = binomial(link = "probit"), data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.5339 0.2082 -12.170 < 2e-16 ***
## FAVCyes 0.5937 0.1530 3.881 0.000104 ***
## SCCyes -0.6887 0.2974 -2.316 0.020581 *
## family_history_with_overweightyes 1.1452 0.1579 7.251 4.13e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1899.6 on 2110 degrees of freedom
## Residual deviance: 1766.3 on 2107 degrees of freedom
## AIC: 1774.3
##
## Number of Fisher Scoring iterations: 6
Phương trình hồi quy:
\[ \pi = \Phi(-2.5339 + 0.5937 \cdot \text{FAVC}_{\text{yes}} - 0.6887 \cdot \text{SCC}_{\text{yes}} + 1.1452 \cdot \text{FamilyHistory}_{\text{yes}}) \]
Trong đó:
\(\Phi(\cdot)\): là xác suất một cá nhân thuộc nhóm Obesity_Type_I
\(\pi\): là hàm phân phối tích lũy chuẩn tắc (standard normal CDF)
Diễn giải kết quả:
\[ \hat{\beta}_0 = -2.5339$, với $p < 0.001$ \]
Tương ứng với người không ăn nhiều calo, không theo dõi calo và không có người thân bị béo phì. Khi đó, xác suất rơi vào nhóm béo phì độ I là:
\[ \pi_0 = \Phi(-2.5339) \approx 0.0057 \]
\[ \hat{\beta}_1 = 0.5937, \quad p = 0.0001 \]
Người có thói quen ăn nhiều calo sẽ có xác suất:
\[ \pi_{\text{FAVC}} = \Phi(-2.5339 + 0.5937) = \Phi(-1.9402) \approx 0.0261 \]
\[ \Delta \pi = 0.0261 - 0.0057 = 0.0204 \]
Tức là xác suất tăng khoảng 2.04 điểm phần trăm.
\[ \hat{\beta}_2 = -0.6887, \quad p = 0.0206 \]
Người theo dõi calo có xác suất:
\[ \pi_{\text{SCC}} = \Phi(-2.5339 - 0.6887) = \Phi(-3.2226) \approx 0.00065 \]
\[ \Delta \pi = 0.00065 - 0.0057 = -0.0050 \]
Xác suất giảm khoảng 0.5 điểm phần trăm.
\[ \hat{\beta}_3 = 1.1452, \quad p < 0.0001 \]
Người có tiền sử gia đình bị béo phì có xác suất:
\[ \pi_{\text{Family}} = \Phi(-2.5339 + 1.1452) = \Phi(-1.3887) \approx 0.0823 \]
\[ \Delta \pi = 0.0823 - 0.0057 = 0.0766 \]
Tức là xác suất tăng khoảng 7.66 điểm phần trăm.
Kết luận:
Kết quả từ mô hình hồi quy Probit cho thấy cả ba yếu tố được phân tích — thói quen ăn thực phẩm giàu calo (FAVC), hành vi theo dõi lượng calo tiêu thụ (SCC), và tiền sử gia đình có người thừa cân hoặc béo phì (family_history_with_overweight) — đều có ảnh hưởng rõ rệt đến xác suất một cá nhân rơi vào nhóm béo phì độ I (Obesity_Type_I). Trong đó, yếu tố di truyền hoặc môi trường gia đình thể hiện qua biến family_history_with_overweight có vai trò mạnh nhất, làm tăng xác suất mắc béo phì lên khoảng 7.66 điểm phần trăm, và có ý nghĩa thống kê rất cao (p < 0.001). Điều này khẳng định tầm quan trọng của yếu tố nền tảng (background) như di truyền hoặc thói quen trong gia đình trong sự hình thành nguy cơ bệnh lý.
Biến FAVC cũng cho thấy ảnh hưởng đáng kể với mức tăng khoảng 2 điểm phần trăm trong xác suất béo phì ở những người thường xuyên tiêu thụ thực phẩm giàu năng lượng. Ngược lại, biến SCC có hệ số âm và có ý nghĩa thống kê ở mức 5%, cho thấy việc chủ động theo dõi năng lượng tiêu thụ hàng ngày có thể góp phần làm giảm nguy cơ mắc béo phì. Dù mức ảnh hưởng nhỏ hơn so với các yếu tố còn lại, đây là một hành vi có thể can thiệp được, do đó có giá trị thực tiễn trong các chương trình giáo dục và phòng chống béo phì.
Tổng thể, mô hình Probit không chỉ phù hợp về mặt phương pháp luận khi làm việc với biến phụ thuộc nhị phân, mà còn cung cấp thông tin cụ thể về sự thay đổi xác suất theo từng yếu tố. Việc lượng hóa xác suất theo hàm phân phối chuẩn giúp hiểu sâu hơn bản chất rủi ro, thay vì chỉ dừng lại ở mức odds ratio. Mô hình là bằng chứng thực nghiệm ủng hộ các chiến lược can thiệp y tế công cộng tập trung vào thay đổi hành vi và nâng cao nhận thức trong cộng đồng, đặc biệt với các đối tượng có nguy cơ di truyền cao.
Để đánh giá đồng thời ảnh hưởng của các yếu tố hành vi và di truyền đến khả năng bị béo phì (NObeyesdad), ta xây dựng mô hình hồi quy tuyến tính tổng quát với hàm liên kết cloglog (complementary log-log). Đây là lựa chọn phù hợp khi sự kiện xảy ra có xác suất nhỏ và quan hệ giữa xác suất và biến giải thích có tính chất bất đối xứng, thường gặp trong các tình huống dịch tễ học.
Phương trình hồi quy cloglog có dạng:
\[ \pi = 1 - \exp\left[-\exp\left(\beta_0 + \beta_1 \cdot \text{FAVC}_{\text{yes}} + \beta_2 \cdot \text{SCC}_{\text{yes}} + \beta_3 \cdot \text{FamilyHistory}_{\text{yes}}\right)\right] \]
Trong đó:
\(\pi\): xác suất một người bị béo phì
\(\beta_0\): hệ số chặn
\(\beta_1\), \(\beta_2\), \(\beta_3\): hệ số hồi quy tương ứng với từng biến độc lập.
# Mô hình cloglog đa biến
model_cloglog_multi <- glm(NObeyesdad_bin ~ FAVC + SCC + family_history_with_overweight,
family = binomial(link = "cloglog"), data = l)
# Hiển thị kết quả mô hình
summary(model_cloglog_multi)
##
## Call:
## glm(formula = NObeyesdad_bin ~ FAVC + SCC + family_history_with_overweight,
## family = binomial(link = "cloglog"), data = l)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.8172 0.4703 -10.243 < 2e-16 ***
## FAVCyes 1.0970 0.3073 3.570 0.000358 ***
## SCCyes -1.5559 0.7131 -2.182 0.029109 *
## family_history_with_overweightyes 2.2989 0.3825 6.011 1.85e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1899.6 on 2110 degrees of freedom
## Residual deviance: 1763.9 on 2107 degrees of freedom
## AIC: 1771.9
##
## Number of Fisher Scoring iterations: 6
Phương trình hồi quy có dạng:
\[ \log\left( -\log(1 - \pi) \right) = −22.375+3.411 \cdot \text{FAVC}_{\text{yes}} −16.568 \cdot \text{SCC}_{\text{yes}} +17.511 \cdot \text{FamilyHistory}_{\text{yes}} \]
Trong đó:
\(\pi\): xác suất bị béo phì.
Các hệ số ước lượng là log(-log(1 − π)) ứng với từng nhóm.
Diễn giải kết quả:
\[ \pi_0 = 1 - \exp\left[ -\exp(−22.375) \right] \approx 1.94×10−10 \]
\[ \pi_{\text{FAVC}} = 1 - \exp\left[ -\exp(−22.375+3.411) \right] = 1 - \exp\left[ -\exp(-3.5235) \right] \approx 1.72×10 −8 \]
Mặc dù giá trị tăng lên, xác suất vẫn rất nhỏ, do chặn quá thấp.
\[ \pi_{\text{SCC}} = 1 - \exp\left[ -\exp(−22.375−16.568) \right] \approx 1.45×10 −18 \]
\[ \pi_{\text{Family}} = 1 - \exp\left[ -\exp(−22.375+17.511)) \right] \approx 4.52×10 −6 \]
Kết luận:
Trong mô hình hồi quy đa biến sử dụng hàm liên kết complementary log-log (cloglog) để dự đoán xác suất rơi vào nhóm béo phì cấp độ I (Obesity_Type_I), kết quả cho thấy mặc dù AIC của mô hình khá thấp (1605.9), dấu hiệu bất ổn nghiêm trọng đã xuất hiện ở các hệ số ước lượng. Cụ thể, hai biến SCC và family_history_with_overweight có sai số chuẩn cực kỳ lớn (trên 490 và 880), dẫn đến giá trị p rất cao (p > 0.97), làm cho các hệ số này mất hoàn toàn ý nghĩa thống kê. Ngoài ra, hệ số chặn (intercept) của mô hình có giá trị âm rất lớn (-22.375), cho thấy khả năng hội tụ kém hoặc vấn đề về đa cộng tuyến trong cấu trúc mô hình cloglog khi áp dụng cho dữ liệu này.
Những dấu hiệu này phản ánh rõ ràng rằng mô hình cloglog không ổn định và không đáng tin cậy trong việc phân tích hồi quy đa biến với các biến độc lập FAVC, SCC và family_history_with_overweight. Mặc dù cloglog thường được đề xuất trong các trường hợp phân phối xác suất bất đối xứng hoặc khi xác suất xảy ra sự kiện thấp, nhưng trong trường hợp cụ thể này, mô hình không đạt được sự hội tụ ổn định và các hệ số không mang ý nghĩa thống kê.
Do đó, mô hình cloglog không nên được sử dụng để đưa ra kết luận về mối quan hệ giữa các yếu tố nguy cơ và béo phì cấp độ I trong phân tích hồi quy đa biến này.
| Mô hình | Hàm liên kết (Link function) | AIC | Mức độ chấp nhận |
|---|---|---|---|
| Hồi quy tuyến tính (Linear Regression) | Identity (Gaussian) | 1735.9 | Không chấp nhận |
| Hồi quy logistic (Logit) | Logit | 1772.1 | Chấp nhận |
| Hồi quy probit | Probit | 1774.3 | Chấp nhận |
| Hồi quy cloglog | Complementary log-log | 1605.9 | Không chấp nhận |
Kết luận:
Trong phân tích hồi quy đa biến nhằm đánh giá ảnh hưởng của thói quen ăn uống và yếu tố di truyền đối với khả năng rơi vào nhóm béo phì cấp độ I (Obesity_Type_I), bốn mô hình hồi quy đã được xây dựng và so sánh thông qua chỉ số Akaike (AIC). Về mặt giá trị AIC thuần túy, mô hình cloglog có AIC thấp nhất (1605.9), cho thấy mức độ phù hợp dữ liệu tốt nhất theo tiêu chí thông tin.
Tuy nhiên, khi xem xét sâu hơn các hệ số hồi quy trong mô hình cloglog, ta thấy hai biến SCC và family_history_with_overweight có sai số chuẩn rất lớn (standard error > 490), đi kèm với giá trị p cao (> 0.97), khiến chúng hoàn toàn không có ý nghĩa thống kê. Hệ số chặn cũng bất thường (–22.375), phản ánh sự mất ổn định trong mô hình hóa, có thể do vấn đề hội tụ hoặc cấu trúc phân phối không phù hợp. Do đó, mặc dù AIC thấp, mô hình cloglog không được chấp nhận về mặt thực nghiệm và không nên sử dụng để diễn giải.
Ngược lại, các mô hình logit và probit đều có hệ số ổn định, ý nghĩa thống kê rõ ràng và không gặp lỗi hội tụ, dù AIC cao hơn một chút (1772.1 và 1774.3). Do đó, logit và probit là các mô hình được chấp nhận và phù hợp để sử dụng trong việc phân tích và diễn giải mối quan hệ giữa các yếu tố nguy cơ và béo phì cấp độ I.
Cuối cùng, mặc dù mô hình hồi quy tuyến tính có AIC tương đối thấp (1735.9), nó không được chấp nhận vì không phù hợp với bản chất nhị phân của biến phụ thuộc, dễ dẫn đến dự đoán nằm ngoài khoảng xác suất [0,1].
Phân tích dữ liệu cho thấy các yếu tố hành vi và di truyền có ảnh hưởng đáng kể đến xác suất một cá nhân rơi vào tình trạng béo phì, đặc biệt là nhóm Obesity_Type_I và Obesity_Type_III. Trong các mô hình hồi quy đơn biến, biến FAVC (thói quen tiêu thụ nhiều đồ calo) và family_history_with_overweight (tiền sử gia đình bị thừa cân) đều cho thấy tác động mạnh mẽ, với các hệ số ước lượng có ý nghĩa thống kê cao (p < 0.001) trong hầu hết các mô hình logit, probit và cloglog. Các mô hình này đồng nhất chỉ ra rằng người có thói quen ăn nhiều calo hoặc có yếu tố di truyền sẽ có xác suất rơi vào nhóm béo phì cao hơn đáng kể.
Tuy nhiên, khi đưa vào phân tích hồi quy đa biến, kết quả lại cho thấy sự khác biệt rõ rệt giữa các mô hình. Mặc dù mô hình cloglog cho AIC thấp nhất (1605.9), điều này không đồng nghĩa với việc nó là lựa chọn tối ưu, vì các hệ số trong mô hình này đi kèm với sai số chuẩn cực lớn và không có ý nghĩa thống kê. Ngược lại, các mô hình logit và probit tuy có AIC cao hơn nhưng vẫn duy trì được tính ổn định và mức ý nghĩa thống kê cho các biến quan trọng. Mô hình tuyến tính đôi khi cho AIC thấp nhất nhưng lại không được ưu tiên do bản chất không phù hợp với biến phụ thuộc nhị phân. Do đó, logit và probit là hai mô hình được khuyến nghị sử dụng vì vừa có tính ổn định, vừa dễ diễn giải trong bối cảnh xã hội học và y tế công cộng.
Một trong những hạn chế lớn nhất của phân tích này là phân phối không cân đối của dữ liệu, đặc biệt với nhóm Obesity_Type_III chiếm tỷ lệ rất nhỏ trong tổng thể. Việc mất cân đối này khiến mô hình dễ bị sai lệch hoặc mất ổn định, đặc biệt là đối với các mô hình như cloglog vốn nhạy cảm với xác suất thấp ở nhóm tham chiếu. Điều này lý giải tại sao cloglog tuy cho AIC thấp trong mô hình đa biến nhưng lại sinh ra các hệ số ước lượng thiếu tin cậy.
Bên cạnh đó, phân tích chưa kiểm soát các yếu tố gây nhiễu tiềm ẩn như giới tính, độ tuổi, mức độ hoạt động thể chất hoặc tình trạng kinh tế - xã hội. Đây đều là các biến quan trọng có thể ảnh hưởng đồng thời đến cả biến độc lập và biến phụ thuộc, làm lệch kết quả phân tích nếu không được đưa vào mô hình.
Một hạn chế khác là việc chưa kiểm định chẩn đoán mô hình, như kiểm định Hosmer-Lemeshow, phân tích ROC hoặc đánh giá độ phân biệt. Việc chỉ dựa vào AIC để so sánh mô hình có thể dẫn đến kết luận chưa toàn diện. Cuối cùng, nguy cơ đa cộng tuyến cũng có thể tồn tại giữa các biến độc lập, đặc biệt là giữa các yếu tố hành vi có liên quan, ảnh hưởng đến độ chính xác của hệ số hồi quy và mức ý nghĩa thống kê.
Dựa trên các phát hiện và hạn chế đã nêu, nghiên cứu đề xuất ưu tiên sử dụng mô hình logit hoặc probit cho các phân tích tiếp theo liên quan đến biến phụ thuộc nhị phân như tình trạng béo phì. Hai mô hình này không chỉ cho kết quả ổn định mà còn có cơ sở lý thuyết rõ ràng và dễ diễn giải, đặc biệt trong các lĩnh vực khoa học xã hội và y tế cộng đồng.
Bên cạnh đó, cần mở rộng thêm các biến độc lập trong mô hình như tuổi, giới tính, mức độ vận động thể chất, tình trạng stress hoặc thời lượng giấc ngủ. Những yếu tố này không chỉ đóng vai trò là biến dự đoán mà còn có thể là biến kiểm soát, giúp tăng độ chính xác cho mô hình phân tích.
Ngoài ra, trong trường hợp phân phối dữ liệu bị mất cân đối nghiêm trọng, có thể áp dụng các kỹ thuật xử lý dữ liệu như oversampling, undersampling hoặc sử dụng trọng số để điều chỉnh ảnh hưởng giữa các nhóm. Những phương pháp này sẽ giúp mô hình học được tốt hơn từ nhóm thiểu số (ví dụ như Obesity_Type_III).
Cuối cùng, để cải thiện độ chính xác và độ phân biệt của mô hình, nên kết hợp thêm các thước đo đánh giá hiệu năng như AUC, F1-score, Precision, Recall… Đồng thời, có thể cân nhắc áp dụng các thuật toán học máy như Random Forest hoặc XGBoost nếu mục tiêu là tối đa hóa khả năng phân loại chứ không chỉ dừng lại ở mô hình hóa tuyến tính cổ điển.