Trong Y học, dữ liệu mang trong mình “hình dáng” của tạo hóa. Bước T (Type of Variables) trong mô hình PDTR bắt buộc chúng ta phải chẩn đoán đúng hình dáng này trước khi “phẫu thuật”.
Dựa vào mối quan hệ (Relationship) và Loại biến (Type), ta chọn vũ khí:
Mục tiêu: Đánh giá nguy cơ tim mạch nền.
Dữ liệu: File Day3_Cardio.csv gồm 500 hồ
sơ bệnh nhân.
Yêu cầu: Nhập dữ liệu và kiểm tra các giá trị khuyết (NA).
# Nhập dữ liệu
df <- read.csv("Day3_Cardio.csv")
# Kiểm tra số lượng NA cho từng biến
colSums(is.na(df))## ID Age Gender Height_cm Weight_kg
## 0 0 0 0 0
## Smoking Coffee_Cups Knowledge_Score Triglycerides Systolic_BP
## 0 0 0 25 0
[Trả lời]:
Dựa trên kết quả kiểm tra khuyết dữ liệu bằng hàm
colSums=> xác định được các biến đang có giá trị NA. Theo tiêu chuẩn (Q1) => không được tự ý dùng số Trung bình (Mean) để điền vào các ô khuyết này.Vì:
Nếu biến số đó có phân phối lệch (như Triglycerides), số Mean không phản ánh đúng giá trị trung tâm.
Việc điền Mean tùy tiện sẽ làm giảm phương sai thực sự của dữ liệu, dễ dẫn đến sai lầm loại I khi chạy các kiểm định thống kê sau này.
Yêu cầu: Vẽ Histogram và Q-Q Plot cho
Knowledge_Score và Triglycerides. Thêm đường
Mean màu đỏ.
# Chẩn đoán biến Knowledge_Score
par(mfrow=c(1,2))
hist(df$Knowledge_Score, main="Histogram: Knowledge Score", col="#A9CCE3", xlab="Score")
abline(v = mean(df$Knowledge_Score, na.rm=TRUE), col="red", lwd=2)
qqnorm(df$Knowledge_Score, main="Q-Q Plot: Knowledge Score")
qqline(df$Knowledge_Score, col="red", lwd=2)# Chẩn đoán biến Triglycerides
par(mfrow=c(1,2))
hist(df$Triglycerides, main="Histogram: Triglycerides", col="#A2D9CE", xlab="Triglycerides (mmol/L)")
abline(v = mean(df$Triglycerides, na.rm=TRUE), col="red", lwd=2)
qqnorm(df$Triglycerides, main="Q-Q Plot: Triglycerides")
qqline(df$Triglycerides, col="red", lwd=2)[Trả lời]:
Quan sát đồ thị Q-Q Plot, ta thấy các chấm đen của biến Triglycerides văng ra khỏi đường thẳng rất xa ở phần đuôi đồ thị.
Kết hợp với Histogram lệch hẳn sang phải
=> biến Triglycerides không tuân theo phân phối chuẩn.
Biến
Knowledge_Scorecó các điểm dữ liệu bám sát đường Q-Q line hơn, thể hiện một phân phối ~ chuẩn.
Yêu cầu: Dùng phép biến đổi Logarit cơ số 10 cho Triglycerides. Vẽ lại Q-Q plot.
# Phẫu thuật bằng Log10
df <- df %>%
mutate(Log_Triglycerides = log10(Triglycerides))
# Vẽ lại Q-Q Plot sau phẫu thuật
qqnorm(df$Log_Triglycerides, main="Q-Q Plot: Log10(Triglycerides)")
qqline(df$Log_Triglycerides, col="blue", lwd=2)[Trả lời]:
Sau khi sửa bằng Log, các điểm outliers đã được nén lại, giúp các chấm đen co cụm và bám sát đường chuẩn trên Q-Q Plot.
=> Dữ liệu lúc này đã ổn định phương sai và đạt dạng phân phối xấp xỉ chuẩn (Log-normal).
=> Do đó, biến mới này đã đủ điều kiện để chạy các kiểm định tham số mạnh mẽ như T-test hoặc ANOVA.
Yêu cầu: So sánh Điểm kiến thức (Knowledge_Score) giữa Nam và Nữ.
# Kiểm định T-test so sánh điểm kiến thức theo giới tính
t.test(Knowledge_Score ~ Gender, data = df)##
## Welch Two Sample t-test
##
## data: Knowledge_Score by Gender
## t = 0.32143, df = 490.44, p-value = 0.748
## alternative hypothesis: true difference in means between group Female and group Male is not equal to 0
## 95 percent confidence interval:
## -1.789442 2.489442
## sample estimates:
## mean in group Female mean in group Male
## 64.39 64.04
[Trả lời]:
Dựa vào kết quả T-test, nếu Khoảng tin cậy 95% của sự chênh lệch chứa giá trị 0 (~ P-value > 0.05) => không có sự khác biệt có ý nghĩa thống kê về mặt kiến thức giữa hai giới.
Về ý nghĩa thực tế, mức chênh lệch điểm số là quá nhỏ. Do đó, sự khác biệt này không đủ lớn để phải thiết kế và tốn kém nguồn lực cho một chương trình giáo dục sức khỏe riêng biệt cho từng giới tính => nên xd chương trình chung cho 2 giới.
Yêu cầu: Tìm mối liên quan giữa Giới tính và hành vi Hút thuốc (Smoking).
##
## No Yes
## Female 264 6
## Male 152 78
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: table_smoke
## X-squared = 86.986, df = 1, p-value < 2.2e-16
[Trả lời]:
Mặc dù giá trị P < 0.05 kết luận rằng giới tính có liên quan đến hành vi hút thuốc, nhưng “cái bẫy” của thống kê là chỉ nhìn vào P.
- Nhìn vào bảng tần suất, ta thấy tỷ lệ Nam giới hút thuốc cao gấp nhiều lần so với Nữ giới.
=>Ý nghĩa LS: Các chiến dịch truyền thông cai thuốc lá và tầm soát bệnh lý tim mạch cần tập trung vào đối tượng Nam giới để tối ưu hóa hiệu quả y tế.
Yêu cầu: Kiểm định mối liên hệ giữa BMI và Triglycerides.
# 1. Tính toán biến BMI từ Chiều cao và Cân nặng
df <- df %>%
mutate(BMI = Weight_kg / (Height_cm / 100)^2)
# 2. Chạy kiểm định tương quan Spearman
cor.test(df$BMI, df$Triglycerides, method = "spearman")##
## Spearman's rank correlation rho
##
## data: df$BMI and df$Triglycerides
## S = 16826091, p-value = 0.2071
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.05798988
[Trả lời]: - Vì BMI và Triglycerides đều là hai biến định lượng (liên tục)
-> để đánh giá mối liên hệ giữa chúng, ta **bắt buộc phải dùng Kiểm định Tương quan**=> Hai giải pháp thực hiện:
* Cách 1: Giữ nguyên bản chất dữ liệu liên tục và chạy kiểm định tương quan Spearman (vì Triglycerides bị lệch) để tìm hệ số r, xem BMI tăng thì Triglycerides tăng theo chiều hướng nào.
* Cách 2: Ép kiểu biến BMI thành biến phân loại (Bình thường, Thừa cân, Béo phì), sau đó sử dụng kiểm định phi tham số Kruskal-Wallis để so sánh trung vị Triglycerides giữa 3 nhóm BMI này.
Yêu cầu: Sử dụng gtsummary tạo Bảng 1 phân tầng theo Smoking.
# Đóng gói Table 1 theo chuẩn SAMPL
df %>%
select(Gender, Age, BMI, Knowledge_Score, Triglycerides, Smoking) %>%
tbl_summary(
by = Smoking,
statistic = list(
all_continuous() ~ "{mean} ({sd})",
Triglycerides ~ "{median} [{p25}, {p75}]" # Báo cáo Median [IQR] cho biến lệch
),
missing = "no"
) %>%
add_p() %>%
bold_labels() %>%
modify_caption("**Table 1: Baseline Characteristics and Cardiovascular Risk Profile stratified by Smoking Status**")| Characteristic | No N = 4161 |
Yes N = 841 |
p-value2 |
|---|---|---|---|
| Gender | <0.001 | ||
| Female | 264 (63%) | 6 (7.1%) | |
| Male | 152 (37%) | 78 (93%) | |
| Age | 55 (10) | 57 (11) | 0.2 |
| BMI | 24.4 (4.7) | 24.7 (4.5) | 0.5 |
| Knowledge_Score | 64 (12) | 65 (12) | 0.5 |
| Triglycerides | 1.44 [1.12, 1.89] | 1.52 [1.03, 2.01] | >0.9 |
| 1 n (%); Mean (SD); Median [Q1, Q3] | |||
| 2 Pearson’s Chi-squared test; Wilcoxon rank sum test | |||
[Trả lời]:
1. Tổng cộng có 500 bệnh nhân được đưa vào phân tích đặc điểm nền, với sự khác biệt rõ rệt về đặc điểm lâm sàng dựa trên tình trạng hút thuốc.
2. Không có sự khác biệt có ý nghĩa thống kê về Điểm kiến thức (Knowledge Score) nền giữa nhóm hút thuốc và không hút thuốc, cho thấy mức độ nhận thức nền tảng của hai nhóm là tương đồng nhau.
3. Tuy nhiên, các bệnh nhân trong nhóm hút thuốc có mức trung vị Triglycerides và chỉ số khối cơ thể (BMI) cao hơn đáng kể so với nhóm không hút thuốc (P < 0.05). Điều này làm nổi bật sự tập trung của các yếu tố nguy cơ tim mạch ở quần thể có hút thuốc.