NHIỆM VỤ 4,5,6

1. Giới thiệu về dữ liệu

1.1 Nguồn dữ liệu

Dữ liệu được thu thập từ Kaggle, một nền tảng về chia sẻ bộ dữ liệu và cuộc thi khoa học dữ liệu. Bộ dữ liệu có tên là Stroke Prediction Dataset.

1.2 Bối cảnh và mục đích của dữ liệu

Theo Tổ chức Y tế Thế giới (WHO), đột quỵ (stroke) là nguyên nhân gây tử vong đứng thứ hai trên toàn cầu, chiếm khoảng 11% tổng số ca tử vong. Dữ liệu này được xây dựng với mục đích dự đoán khả năng một bệnh nhân có bị đột quỵ hay không, dựa trên các thông tin nhân khẩu học, tình trạng sức khỏe và lối sống của bệnh nhân.

Mỗi dòng trong bộ dữ liệu tương ứng với thông tin của một bệnh nhân.

1.3 Đặc điểm dữ liệu:

Để thuận tiện cho việc phân tích, bộ dữ liệu sẽ được gán với tên stroke_data.

stroke_data <- read.csv(file.choose(), header = T, na.strings = c("N/A", "", "NA"))
head(stroke_data)
id gender age hypertension heart_disease ever_married work_type Residence_type avg_glucose_level bmi smoking_status stroke
9046 Male 67 0 1 Yes Private Urban 228.69 36.6 formerly smoked 1
51676 Female 61 0 0 Yes Self-employed Rural 202.21 NA never smoked 1
31112 Male 80 0 1 Yes Private Rural 105.92 32.5 never smoked 1
60182 Female 49 0 0 Yes Private Urban 171.23 34.4 smokes 1
1665 Female 79 1 0 Yes Self-employed Rural 174.12 24.0 never smoked 1
56669 Male 81 0 0 Yes Private Urban 186.21 29.0 formerly smoked 1

Một số thông tin về dữ liệu:

Cấu trúc của dữ liệu
'data.frame':   5110 obs. of  12 variables:
 $ id               : int  9046 51676 31112 60182 1665 56669 53882 10434 27419 60491 ...
 $ gender           : chr  "Male" "Female" "Male" "Female" ...
 $ age              : num  67 61 80 49 79 81 74 69 59 78 ...
 $ hypertension     : int  0 0 0 0 1 0 1 0 0 0 ...
 $ heart_disease    : int  1 0 1 0 0 0 1 0 0 0 ...
 $ ever_married     : chr  "Yes" "Yes" "Yes" "Yes" ...
 $ work_type        : chr  "Private" "Self-employed" "Private" "Private" ...
 $ Residence_type   : chr  "Urban" "Rural" "Rural" "Urban" ...
 $ avg_glucose_level: num  229 202 106 171 174 ...
 $ bmi              : num  36.6 NA 32.5 34.4 24 29 27.4 22.8 NA 24.2 ...
 $ smoking_status   : chr  "formerly smoked" "never smoked" "never smoked" "smokes" ...
 $ stroke           : int  1 1 1 1 1 1 1 1 1 1 ...

Đặc điểm về dữ liệu:

  • Tổng số quan sát: 5110 quan sát.

  • Tổng số biến: 12 biến.

  • Biến định danh: id.

  • Số lượng biến định lượng:

    • age: Tuổi của bệnh nhân (theo năm).

    • avg_glucose_level: Nồng độ đường huyết trung bình của bệnh nhân.

    • bmi: Chỉ số khối cơ thể (Body Mass Index).

  • Tổng số biến định tính:

    • gender: Giới tính của bệnh nhân: “Male”, “Female”, hoặc “Other”.

    • hypertension: Tăng huyết áp: 0 = không có, 1 = có.

    • heart_disease: Bệnh tim: 0 = không có, 1 = có.

    • ever_married: Tình trạng hôn nhân: “Yes” hoặc “No”.

    • work_type: Loại công việc: “children”, “Govt_job”, “Never_worked”, “Private”, “Self-employed”.

    • Residence_type: Khu vực sinh sống: “Urban” hoặc “Rural”.

    • smoking_status: Tình trạng hút thuốc: “formerly smoked”, “never smoked”, “smokes”, hoặc “Unknown”.

    • stroke: Kết quả đột quỵ: 1 nếu đã từng bị, 0 nếu chưa.

1.4 Thực hiện kiểm tra dữ liệu

KIỂM TRA GIÁ TRỊ NA

na_table <- data.frame(
  Variable = names(stroke_data),
  Missing_Values = colSums(is.na(stroke_data))
)

kable(na_table, caption = "Số lượng giá trị thiếu (NA) theo từng biến", row.names = FALSE)
Số lượng giá trị thiếu (NA) theo từng biến
Variable Missing_Values
id 0
gender 0
age 0
hypertension 0
heart_disease 0
ever_married 0
work_type 0
Residence_type 0
avg_glucose_level 0
bmi 201
smoking_status 0
stroke 0

Kiểm tra giá trị thiếu (NA) cho thấy rằng biến bmi có tổng cộng 201 giá trị NA, trong khi tất cả các biến còn lại không có giá trị thiếu nào. Để xử lý các giá trị thiếu, một phương pháp thông thường là loại bỏ các quan sát chứa NA. Tuy nhiên, vì bài phân tích hiện tại chỉ tập trung vào các biến định tính, trong khi bmi là một biến định lượng, nên việc loại bỏ các quan sát chứa NA ở biến này không cần thiết. Giữ lại các quan sát này sẽ không ảnh hưởng đến kết quả phân tích định tính, đồng thời đảm bảo độ đầy đủ và tính chuẩn của dữ liệu đầu vào.

KIỂM TRA GIÁ TRỊ unknown

unknown_table_1 <- data.frame(sapply(stroke_data, function(col) sum(tolower(as.character(col)) == "unknown", na.rm = TRUE)))

kable(unknown_table_1, caption = "Số lượng giá trị 'unknown' theo từng biến")
Số lượng giá trị ‘unknown’ theo từng biến
sapply.stroke_data..function.col..sum.tolower.as.character.col……
id 0
gender 0
age 0
hypertension 0
heart_disease 0
ever_married 0
work_type 0
Residence_type 0
avg_glucose_level 0
bmi 0
smoking_status 1544
stroke 0

Kết quả kiểm tra cho thấy biến định tính smoking_status có tổng cộng 1544 giá trị “unknown”. Để đảm bảo tính trực quan và độ chính xác trong phân tích, đặc biệt là khi trực quan hóa dữ liệu, ta sẽ loại bỏ các quan sát chứa giá trị “unknown” ở biến này. Việc này giúp tránh sai lệch do các giá trị không rõ ràng, đồng thời giúp hình ảnh trực quan rõ ràng, dễ hiểu hơn.

stroke_data <- stroke_data[ tolower(stroke_data$smoking_status) != "unknown", ]

Thực hiện kiểm tra lại dữ liệu:

unknown_table_2 <- data.frame(sapply(stroke_data, function(col) sum(tolower(as.character(col)) == "unknown", na.rm = TRUE)))

kable(unknown_table_2, caption = "Số lượng giá trị 'unknown' theo từng biến")
Số lượng giá trị ‘unknown’ theo từng biến
sapply.stroke_data..function.col..sum.tolower.as.character.col……
id 0
gender 0
age 0
hypertension 0
heart_disease 0
ever_married 0
work_type 0
Residence_type 0
avg_glucose_level 0
bmi 0
smoking_status 0
stroke 0

Sau khi loại bỏ, dữ liệu còn lại sẽ được sử dụng cho các bước phân tích và trực quan tiếp theo.

1.5 Thực hiện mã hóa cho các biến định tính

Như đã trình bày ở phần 1.3 về Cấu trúc của dữ liệu, các biến định tính trong bộ dữ liệu đều có kiểu dữ liệu là ‘chr’. Vì thế, để thuận tiện cho việc phân tích, sẽ thực hiện mã hóa các biến định tính về dạng factor.

stroke_data[c("gender", "hypertension", "heart_desease", "ever_married", "work_type", "residence_type", "smoking_status", "stroke")] <- 
  lapply(stroke_data[c("gender", "hypertension", "heart_disease", "ever_married", "work_type", "Residence_type", "smoking_status", "stroke")], as.factor)

2. Phân tích mô tả các biến định tính

Trong phạm vi bài phân tích này, mục tiêu là tập trung vào việc khảo sát và trình bày đặc điểm của các biến định tính trong bộ dữ liệu. Do đó, để đảm bảo tính tập trung và phù hợp với mục tiêu nghiên cứu, dữ liệu sẽ được lọc để chỉ giữ lại các biến có kiểu định tính. Các biến định lượng sẽ không được đưa vào phân tích trong bài viết này. Việc này giúp quá trình mô tả, trực quan hóa và phân tích mối liên hệ giữa các biến định tính trở nên rõ ràng và hiệu quả hơn.

data_categorical <- stroke_data[, c("gender", "hypertension", "heart_desease", "ever_married", "work_type", "residence_type", "smoking_status", "stroke")]

2.1 Biến về giới tính

2.1.1 Thống kê tần số và tần suất

Về tần số

gender_table <- table(data_categorical$gender)
print(gender_table)
## 
## Female   Male  Other 
##   2158   1407      1

Biến giới tính (gender) bao gồm ba nhóm giá trị: “Female”, “Male” và “Other”. Trong đó, nhóm “Female” chiếm số lượng lớn nhất với 2.158 quan sát, tiếp theo là nhóm “Male” với 1.407 quan sát, và cuối cùng là nhóm “Other” chỉ có 1 quan sát duy nhất.

Về tần suất

gender_prop_table <- prop.table(table(data_categorical$gender)) * 100
print(gender_prop_table)
## 
##      Female        Male       Other 
## 60.51598430 39.45597308  0.02804262

Biến giới tính (gender) cho thấy phần lớn người tham gia là nữ (60.52%), tiếp theo là nam (39.46%), trong khi nhóm Other chỉ chiếm 0.03%, gần như không đáng kể. Dữ liệu cho thấy sự mất cân đối giới tính, với tỷ lệ nữ cao hơn đáng kể so với nam.

Biểu đồ minh họa cho tần số và tần suất

#Gộp tần số và tần suất thành một dataframe 
gender_df <- data.frame(
  Gender = names(gender_table),
  Frequency = as.vector(gender_table),
  Percentage = round(as.vector(gender_prop_table), 2))

#Vẽ biểu đồ tần số
plot_freq_gender <- ggplot(gender_df, aes(x = Gender, y = Frequency, fill = Gender)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = Frequency), vjust = -0.5) +
  labs(title = "Biểu đồ tần số giới tính", x = "Giới tính", y = "Tần số") +
  theme_minimal()

#Vẽ biểu đồ tần suất
plot_prop_gender <- ggplot(gender_df, aes(x = "", y = Percentage, fill = Gender)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(label = paste0(Percentage, "%")), 
            position = position_stack(vjust = 0.5)) +
  labs(title = "Biểu đồ tần suất giới tính (Pie Chart)", x = NULL, y = NULL) +
  theme_void()

#Gộp 2 biểu đồ
plot_freq_gender + plot_prop_gender

Biến giới tính trong dữ liệu gồm ba nhóm: Female, Male và Other. Kết quả cho thấy nhóm Female chiếm tỷ lệ lớn nhất với 60,52%, tương ứng 2.158 quan sát, trong khi nhóm Male chiếm 39,46% với 1.407 quan sát. Nhóm Other chỉ chiếm 0,03% với 1 quan sát duy nhất, rất nhỏ và không đáng kể. Điều này cho thấy sự mất cân bằng giới tính trong mẫu, với số lượng nữ nhiều hơn nam.

2.1.2 Ước lượng khoảng và kiểm định giả thuyết

Đối tượng quan tâm cho biến gender là giới tính nữ FEMALE.

Ước lượng khoảng

prop.test( gender_table["Female"], sum(gender_table))
## 
##  1-sample proportions test with continuity correction
## 
## data:  gender_table["Female"] out of sum(gender_table), null probability 0.5
## X-squared = 157.32, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.5888702 0.6212212
## sample estimates:
##         p 
## 0.6051598

Kết quả kiểm định tỉ lệ một mẫu cho thấy tỉ lệ nữ trong mẫu là khoảng 60,52% với khoảng tin cậy 95% nằm trong khoảng từ 58,89% đến 62,12%. Giá trị p-value rất nhỏ (< 2.2e-16) cho thấy tỉ lệ nữ khác biệt có ý nghĩa thống kê so với tỉ lệ giả định 50%. Điều này khẳng định rằng trong mẫu nghiên cứu, nữ giới chiếm ưu thế rõ rệt so với nam giới.

Kiểm định giả thuyết

Giả thuyết kiểm định:

  • \(H_0\): \(p\) ≥ 0.60 (tỉ lệ nữ lớn hơn hoặc bằng 60%)

  • \(H_1\): \(p\) < 0.60 (tỉ lệ nữ nhỏ hơn 60%)

prop.test(gender_table["Female"], sum(gender_table),p = 0.60, alternative = "less", correct = TRUE)
## 
##  1-sample proportions test with continuity correction
## 
## data:  gender_table["Female"] out of sum(gender_table), null probability 0.6
## X-squared = 0.37438, df = 1, p-value = 0.7297
## alternative hypothesis: true p is less than 0.6
## 95 percent confidence interval:
##  0.0000000 0.6186788
## sample estimates:
##         p 
## 0.6051598

Kết quả kiểm định cho thấy:

  • Tỉ lệ nữ quan sát trong mẫu là khoảng 60,52%.

  • Giá trị p-value = 0.7297 lớn hơn mức ý nghĩa 0.05, do đó không đủ bằng chứng để bác bỏ giả thuyết \(H_0\).

  • Khoảng tin cậy 95% cho tỉ lệ nữ nằm trong khoảng từ 0% đến 61,87%.

=> Kết luận rằng: Dữ liệu không cho thấy tỉ lệ nữ trong mẫu nhỏ hơn 60%. Nói cách khác, ta có thể chấp nhận rằng tỉ lệ nữ trong tổng thể là lớn hơn 60%.

2.2 Biến về việc tăng huyết áp

2.2.1. Thống kê tần số và tần suất

Về tần số

hypertension_table <- table(data_categorical$hypertension)
print(hypertension_table)
## 
##    0    1 
## 3120  446

Có tổng cộng 3120 quan sát không bị tăng huyết áp và 446 quan sát có tăng huyết áp. Điều này cho thấy số lượng người không tăng huyết áp chiếm đa số rõ rệt so với nhóm có tăng huyết áp trong dữ liệu.

Về tần suất

hypertension_prop_table <- prop.table(table(data_categorical$hypertension)) * 100
print(hypertension_prop_table)
## 
##        0        1 
## 87.49299 12.50701

Phần lớn mẫu nghiên cứu, chiếm tới khoảng 87.5% (3120/3566), không mắc tình trạng tăng huyết áp. Ngược lại, chỉ có khoảng 12.5% số quan sát bị tăng huyết áp. Điều này cho thấy trong dữ liệu, đa số người tham gia không bị ảnh hưởng bởi bệnh lý tăng huyết áp, làm biến này phân bố khá lệch về nhóm không bị bệnh.

Biểu đồ minh họa cho tần số và tần suất

#Gộp tần số và tần suất thành một dataframe 
hypertension_df <- data.frame(
  Hypertension = names(hypertension_table),
  Frequency = as.vector(hypertension_table),
  Percentage = round(as.vector(hypertension_prop_table), 2))

#Vẽ biểu đồ tần số
plot_freq_hypertension <- ggplot(hypertension_df, aes(x = Hypertension, y = Frequency, fill = Hypertension)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = Frequency), vjust = -0.5) +
  labs(title = "Biểu đồ tần số tình trạng tăng huyết áp", x = "Tăng huyết áp", y = "Tần số") +
  theme_minimal()

#Vẽ biểu đồ tần suất
plot_prop_hypertension <- ggplot(hypertension_df, aes(x = "", y = Percentage, fill = Hypertension)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(label = paste0(Percentage, "%")), 
            position = position_stack(vjust = 0.5)) +
  labs(title = "Biểu đồ tần suất tình trạng tăng huyết áp (Pie Chart)", x = NULL, y = NULL) +
  theme_void()

#Gộp 2 biểu đồ
plot_freq_hypertension + plot_prop_hypertension

Dữ liệu về biến tình trạng tăng huyết áp cho thấy đa số người tham gia (3120 quan sát) không bị tăng huyết áp, chỉ một phần nhỏ (446 quan sát) có tình trạng tăng huyết áp. Điều này phản ánh sự phân bố không đều, với nhóm không tăng huyết áp chiếm ưu thế trong mẫu nghiên cứu.

2.2.2 Ước lượng khoảng và kiểm định giả thuyết

Đối tượng quan tâm cho biến hypertension là tình trạng không tăng huyết áp 0.

Ước lượng khoảng

prop.test(hypertension_table["0"], sum(hypertension_table))
## 
##  1-sample proportions test with continuity correction
## 
## data:  hypertension_table["0"] out of sum(hypertension_table), null probability 0.5
## X-squared = 2003.6, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.8635222 0.8855202
## sample estimates:
##         p 
## 0.8749299

Khoảng ước lượng 95% cho tỉ lệ người không bị tăng huyết áp trong mẫu nằm trong khoảng từ 86,35% đến 88,55%, cho thấy nhóm này chiếm ưu thế rõ rệt trong dữ liệu nghiên cứu.

Kiểm định giả thuyết

Giả thuyết kiểm định:

  • \(H_0\): \(p\) ≤ 0.9 (tỷ lệ người không bị tăng huyết áp nhỏ hơn 90%)

  • \(H_1\): \(p\) > 0.9 (tỷ lệ người không bị tăng huyết áp lớn hơn 90%)

prop.test(hypertension_table["0"], sum(hypertension_table),p = 0.90, alternative = "greater", correct = TRUE)
## 
##  1-sample proportions test with continuity correction
## 
## data:  hypertension_table["0"] out of sum(hypertension_table), null probability 0.9
## X-squared = 24.625, df = 1, p-value = 1
## alternative hypothesis: true p is greater than 0.9
## 95 percent confidence interval:
##  0.8653885 1.0000000
## sample estimates:
##         p 
## 0.8749299

Kết quả kiểm định cho thấy:

  • Tỉ lệ người không bị tăng huyết áp trong mẫu là khoảng 87,49%.

  • Giá trị p-value = 1 lớn hơn mức ý nghĩa 0.05, do đó không đủ bằng chứng để bác bỏ giả thuyết H₀.

  • Khoảng tin cậy 95% cho tỉ lệ người không bị tăng huyết áp nằm trong khoảng từ 86,54% đến 100%.

=> Kết luận rằng: Dữ liệu không cho thấy tỉ lệ người không bị tăng huyết áp lớn hơn 90%. Nói cách khác, ta có thể chấp nhận rằng tỉ lệ này không vượt quá 90% trong tổng thể.

2.3 Biến về bệnh tim

2.3.1 Thống kê về tần số và tần suất

Về tần số

heart_desease_table <- table(data_categorical$heart_desease)
print(heart_desease_table)
## 
##    0    1 
## 3338  228

Biến tình trạng bệnh tim cho thấy có 3.338 người không mắc bệnh tim và 228 người có mắc bệnh. Như vậy, phần lớn đối tượng trong mẫu không có vấn đề về tim mạch, cho thấy tỷ lệ mắc bệnh tim trong dữ liệu là tương đối thấp.

Về tần suất

heart_desease_prop_table <- prop.table(table(data_categorical$heart_desease)) * 100
print(heart_desease_prop_table)
## 
##         0         1 
## 93.606282  6.393718

Tần suất biến tình trạng bệnh tim cho thấy khoảng 93,61% đối tượng không mắc bệnh tim, trong khi chỉ có khoảng 6,39% đối tượng mắc bệnh. Điều này cho thấy phần lớn mẫu khảo sát khỏe mạnh về mặt tim mạch, với tỷ lệ người mắc bệnh tim khá thấp.

Biểu đồ minh họa cho tần số và tần suất

# Gộp tần số và tần suất thành một dataframe 
heart_desease_df <- data.frame(
  "Heart_desease" = names(heart_desease_table),
  Frequency = as.vector(heart_desease_table),
  Percentage = round(as.vector(heart_desease_prop_table), 2)
)

# Vẽ biểu đồ tần số
plot_freq_heart_desease <- ggplot(heart_desease_df, aes(x = Heart_desease, y = Frequency, fill = Heart_desease)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = Frequency), vjust = -0.5) +
  labs(title = "Biểu đồ tần số bệnh tim mạch", x = "Bệnh tim mạch", y = "Tần số") +
  theme_minimal()

# Vẽ biểu đồ tần suất
plot_prop_heart_desease <- ggplot(heart_desease_df, aes(x = "", y = Percentage, fill = Heart_desease)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(label = paste0(Percentage, "%")), 
            position = position_stack(vjust = 0.5)) +
  labs(title = "Biểu đồ tần suất bệnh tim mạch (Pie Chart)", x = NULL, y = NULL) +
  theme_void()

# Gộp 2 biểu đồ
plot_freq_heart_desease + plot_prop_heart_desease

Trong tổng số 3566 quan sát, có 3338 người không bị bệnh tim, chiếm khoảng 93.6% mẫu, trong khi chỉ có 228 người mắc bệnh tim, chiếm khoảng 6.4%. Điều này cho thấy đa số người trong dữ liệu không có tình trạng bệnh tim, nhóm bệnh tim chiếm tỷ lệ rất nhỏ, phản ánh sự phân bố không đều của biến này trong mẫu nghiên cứu.

2.3.2 Ước lượng khoảng và kiểm định giả thuyết

Đối tượng quan tâm cho biến heart_desease là tình trạng bị bệnh tim 1.

Ước lượng khoảng

prop.test(heart_desease_table["1"], sum(heart_desease_table))
## 
##  1-sample proportions test with continuity correction
## 
## data:  heart_desease_table["1"] out of sum(heart_desease_table), null probability 0.5
## X-squared = 2710.6, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.05623569 0.07259351
## sample estimates:
##          p 
## 0.06393718

Khoảng ước lượng 95% cho tỷ lệ người mắc bệnh tim trong mẫu nghiên cứu nằm trong khoảng từ 5.62% đến 7.26%, cho thấy tỷ lệ này là khá thấp và phản ánh rõ ràng rằng nhóm không mắc bệnh tim chiếm đa số trong dữ liệu.

Kiểm định giả thuyết

Giả thuyết kiểm định:

  • \(H_0\): \(p\) ≤ 0.06 (tỷ lệ người bị bệnh tim nhỏ hơn 6%)

  • \(H_1\): \(p\) > 0.6 (tỷ lệ người bị bệnh tim lớn hơn 6%)

prop.test(heart_desease_table["1"], sum(heart_desease_table),p = 0.06, alternative = "greater", correct = TRUE)
## 
##  1-sample proportions test with continuity correction
## 
## data:  heart_desease_table["1"] out of sum(heart_desease_table), null probability 0.06
## X-squared = 0.91154, df = 1, p-value = 0.1699
## alternative hypothesis: true p is greater than 0.06
## 95 percent confidence interval:
##  0.05739045 1.00000000
## sample estimates:
##          p 
## 0.06393718

Kết quả kiểm định cho thấy:

  • Tỉ lệ người bị bệnh tim quan sát trong mẫu là khoảng 6.39%.

  • Giá trị p-value = 0.1699 lớn hơn mức ý nghĩa 0.05, do đó không đủ bằng chứng để bác bỏ giả thuyết \(H_0\).

  • Khoảng tin cậy 95% cho tỉ lệ người bị bệnh tim nằm trong khoảng từ 5.74% đến 100%.

=> Kết luận rằng: Dữ liệu không cho thấy tỉ lệ người bị bệnh tim trong mẫu lớn hơn 6%. Nói cách khác, ta có thể chấp nhận rằng tỉ lệ người bị bệnh tim trong tổng thể là nhỏ hơn hoặc bằng 6%.

2.4 Biến về tình trạng hôn nhân

2.4.1 Thống kê về tần số và tần suất

Về tần số

ever_married_table <- table(data_categorical$ever_married)
print(ever_married_table)
## 
##   No  Yes 
##  856 2710

Tình trạng hôn nhân trong mẫu nghiên cứu gồm 856 người chưa kết hôn và 2710 người đã kết hôn. Điều này cho thấy đa số người tham gia khảo sát đều đã lập gia đình, phản ánh một tỷ lệ lớn người có trạng thái hôn nhân ổn định trong mẫu dữ liệu.

Về tần suất

ever_married_prop_table <- prop.table(table(data_categorical$ever_married)) * 100
print(ever_married_prop_table)
## 
##       No      Yes 
## 24.00449 75.99551

Tỷ lệ người chưa kết hôn trong mẫu là khoảng 24%, trong khi người đã kết hôn chiếm gần 76%. Điều này cho thấy phần lớn đối tượng nghiên cứu có trạng thái hôn nhân đã ổn định, với số lượng người đã kết hôn áp đảo so với nhóm chưa kết hôn.

Biểu đồ minh họa cho tần số và tần suất

# Gộp tần số và tần suất thành một dataframe 
ever_married_df <- data.frame(
  "Ever_married" = names(ever_married_table),
  Frequency = as.vector(ever_married_table),
  Percentage = round(as.vector(ever_married_prop_table), 2)
)

# Vẽ biểu đồ tần số
plot_freq_ever_married <- ggplot(ever_married_df, aes(x = Ever_married, y = Frequency, fill = Ever_married)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = Frequency), vjust = -0.5) +
  labs(title = "Biểu đồ tần số tình trạng hôn nhân", x = "Tình trạng hôn nhân", y = "Tần số") +
  theme_minimal()

# Vẽ biểu đồ tần suất
plot_prop_ever_married <- ggplot(ever_married_df, aes(x = "", y = Percentage, fill = Ever_married)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(label = paste0(Percentage, "%")), 
            position = position_stack(vjust = 0.5)) +
  labs(title = "Biểu đồ tần suất tình trạng hôn nhân (Pie Chart)", x = NULL, y = NULL) +
  theme_void()

# Gộp 2 biểu đồ
plot_freq_ever_married + plot_prop_ever_married

Biến tình trạng hôn nhân trong mẫu dữ liệu cho thấy có 2.710 quan sát thuộc nhóm đã từng kết hôn, chiếm tỷ lệ khoảng 76% tổng số mẫu. Trong khi đó, nhóm chưa từng kết hôn gồm 856 quan sát, chiếm khoảng 24%. Tỷ lệ này phản ánh rằng phần lớn người tham gia khảo sát hoặc được ghi nhận trong dữ liệu đã có kinh nghiệm kết hôn.

2.4.2 Ước lượng khoảng và kiểm định giả thuyết

Đối tượng quan tâm cho biến ever_married là đã kết hôn YES.

Ước lượng khoảng

prop.test(ever_married_table["Yes"], sum(ever_married_table))
## 
##  1-sample proportions test with continuity correction
## 
## data:  ever_married_table["Yes"] out of sum(ever_married_table), null probability 0.5
## X-squared = 962.87, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.7455189 0.7738263
## sample estimates:
##         p 
## 0.7599551

Kết quả kiểm định tỉ lệ cho thấy tỷ lệ người từng kết hôn trong mẫu là khoảng 75,99%. Khoảng tin cậy 95% cho tỷ lệ này nằm trong khoảng từ 74,55% đến 77,38%, cho thấy mức độ chính xác khá cao của ước lượng. Điều này khẳng định rằng tỷ lệ người từng kết hôn trong tổng thể rất có thể nằm trong khoảng giá trị này với độ tin cậy 95%.

Kiểm định giả thuyết

Giả thuyết kiểm định:

  • \(H_0\): \(p\) ≥ 0.80 (tỷ lệ người đã kết hôn lớn hơn 80%)

  • \(H_1\): \(p\) < 0.80 (tỷ lệ người đã kết hôn nhỏ hơn 80%)

prop.test(ever_married_table["Yes"], sum(ever_married_table), p = 0.80, alternative = "less", correct = TRUE)
## 
##  1-sample proportions test with continuity correction
## 
## data:  ever_married_table["Yes"] out of sum(ever_married_table), null probability 0.8
## X-squared = 35.49, df = 1, p-value = 1.282e-09
## alternative hypothesis: true p is less than 0.8
## 95 percent confidence interval:
##  0.0000000 0.7716576
## sample estimates:
##         p 
## 0.7599551

Kết quả kiểm định cho thấy:

  • Tỉ lệ người đã kết hôn quan sát trong mẫu là khoảng 75.99%.

  • Giá trị p-value = 1.282e-09 nhỏ hơn mức ý nghĩa 0.05, do đó có đủ bằng chứng để bác bỏ giả thuyết \(H_0\).

  • Khoảng tin cậy 95% cho tỉ lệ người đã kết hôn nằm trong khoảng từ 0% đến 77.17%.

=> Kết luận rằng: Dữ liệu cho thấy tỉ lệ người đã kết hôn trong mẫu nhỏ hơn 80%. Nói cách khác, ta có thể chấp nhận rằng tỉ lệ người đã kết hôn trong tổng thể là nhỏ hơn 80%.

2.5 Biến về loại công việc

2.5.1 Thống kê về tần số và tần suất

Về tần số

work_type_table <- table(data_categorical$work_type)
print(work_type_table)
## 
##      children      Govt_job  Never_worked       Private Self-employed 
##            69           535            14          2285           663

Biến loại công việc trong dữ liệu gồm 5 nhóm chính với số lượng quan sát khác nhau. Nhóm Private (làm việc trong khu vực tư nhân) chiếm đa số với 2285 người, tiếp theo là nhóm Self-employed (tự doanh) với 663 người. Nhóm Govt_job (công việc nhà nước) có 535 người, trong khi nhóm children (trẻ em, chưa đi làm) và Never_worked (chưa từng làm việc) có số lượng rất ít, lần lượt là 69 và 14 người. Điều này cho thấy đa số mẫu tập trung vào nhóm làm việc trong khu vực tư nhân, phản ánh đặc điểm nghề nghiệp đa dạng nhưng trọng tâm là lao động chính thức và tự doanh.

Về tần suất

work_type_prop_table <- prop.table(table(data_categorical$work_type)) * 100
print(work_type_prop_table)
## 
##      children      Govt_job  Never_worked       Private Self-employed 
##     1.9349411    15.0028043     0.3925967    64.0773976    18.5922602

Biến loại công việc cho thấy sự phân bố không đồng đều giữa các nhóm. Trong tổng thể mẫu, nhóm làm việc trong khu vực tư nhân chiếm tỷ lệ cao nhất với khoảng 64,08%, theo sau là nhóm tự doanh chiếm 18,59%. Nhóm làm việc trong khu vực nhà nước chiếm 15%, trong khi tỷ lệ trẻ em (chưa đi làm) và người chưa từng làm việc lần lượt chỉ chiếm 1,93% và 0,39%. Như vậy, dữ liệu cho thấy phần lớn người trong mẫu là lao động trong khu vực tư nhân và tự doanh, phản ánh xu hướng phổ biến về loại hình việc làm trong cộng đồng khảo sát.

Biểu đồ minh họa cho tần số và tần suất

# Gộp tần số và tần suất thành một dataframe 
work_type_df <- data.frame(
  "Work_type" = names(work_type_table),
  Frequency = as.vector(work_type_table),
  Percentage = round(as.vector(work_type_prop_table), 2)
)

# Vẽ biểu đồ tần số
plot_freq_work_type <- ggplot(work_type_df, aes(x = Work_type, y = Frequency, fill = Work_type)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = Frequency), vjust = -0.5) +
  labs(title = "Biểu đồ tần số loại công việc", x = "Loại công việc", y = "Tần số") +
  theme_minimal()

# Vẽ biểu đồ tần suất
plot_prop_work_type <- ggplot(work_type_df, aes(x = "", y = Percentage, fill = Work_type)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(label = paste0(Percentage, "%")), 
            position = position_stack(vjust = 0.5)) +
  labs(title = "Biểu đồ tần suất loại công việc (Pie Chart)", x = NULL, y = NULL) +
  theme_void()

# Gộp 2 biểu đồ
plot_freq_work_type + plot_prop_work_type

Biến loại công việc thể hiện sự phân bố rõ rệt giữa các nhóm nghề nghiệp trong mẫu khảo sát. Cụ thể, nhóm làm việc trong khu vực Private (tư nhân) có 2.285 người, chiếm 64,08% tổng mẫu, là nhóm chiếm tỷ lệ cao nhất. Nhóm Self-employed (tự doanh) đứng thứ hai với 663 người, tương ứng 18,59%. Nhóm làm việc trong khu vực Govt_job (nhà nước) có 535 người, chiếm 15%. Trong khi đó, nhóm Children (trẻ em) và Never_worked (chưa từng làm việc) chỉ chiếm phần rất nhỏ, lần lượt là 69 người (1,93%) và 14 người (0,39%). Dữ liệu cho thấy phần lớn người tham gia khảo sát đang làm việc trong khu vực tư nhân và tự doanh, trong khi các nhóm không lao động chiếm tỷ trọng thấp.

2.5.2 Ước lượng khoảng và kiểm định giả thuyết

Đối tượng quan tâm cho biến work_type là việc tự doanh SELF-EMPLOYED.

Ước lượng khoảng

prop.test(work_type_table["Self-employed"], sum(work_type_table))
## 
##  1-sample proportions test with continuity correction
## 
## data:  work_type_table["Self-employed"] out of sum(work_type_table), null probability 0.5
## X-squared = 1405.8, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.1733576 0.1991709
## sample estimates:
##         p 
## 0.1859226

Kết quả kiểm định cho thấy tỷ lệ người làm công việc tự làm chủ (Self-employed) trong mẫu là khoảng 18,59%. Khoảng tin cậy 95% cho tỷ lệ này nằm trong khoảng từ 17,34% đến 19,92%. Với p-value < 2.2e-16, nhỏ hơn mức ý nghĩa 0.05, ta bác bỏ giả thuyết H₀ rằng tỷ lệ này bằng 50%. Do đó, có đủ bằng chứng để kết luận rằng tỷ lệ người tự làm chủ trong tổng thể khác 50%, và thực tế có xu hướng thấp hơn nhiều.

Kiểm định giả thuyết

  • \(H_0\): \(p\) ≤ 0.20 (tỉ lệ người tự doanh thấp hơn 20%)

    • \(H_1\): \(p\) > 0.20 (tỉ lệ người tự doanh lớn hơn 20%)
prop.test(work_type_table["Self-employed"], sum(work_type_table),p = 0.20, alternative = "greater", correct = TRUE)
## 
##  1-sample proportions test with continuity correction
## 
## data:  work_type_table["Self-employed"] out of sum(work_type_table), null probability 0.2
## X-squared = 4.3292, df = 1, p-value = 0.9813
## alternative hypothesis: true p is greater than 0.2
## 95 percent confidence interval:
##  0.1753091 1.0000000
## sample estimates:
##         p 
## 0.1859226

Kết quả kiểm định cho thấy:

  • Tỷ lệ người làm công việc tự doanh quan sát trong mẫu là khoảng 18.59%.

  • Giá trị p-value = 0.9813, lớn hơn mức ý nghĩa 0.05, do đó không đủ bằng chứng để bác bỏ giả thuyết \(H_0\).

  • Khoảng tin cậy 95% cho tỷ lệ người tự doanh nằm trong khoảng từ 17.53% đến 100%.

=> Kết luận: Dữ liệu không cho thấy tỷ lệ người tự doanh trong tổng thể lớn hơn 20%. Nói cách khác, ta có thể chấp nhận rằng tỷ lệ người tự doanh trong tổng thể là nhỏ hơn hoặc bằng 20%.

2.6 Biến về khu vực sinh sống

2.6.1 Thống kê về tần số và tần suất

Về tần số

residence_type_table <- table(data_categorical$residence_type)
print(residence_type_table)
## 
## Rural Urban 
##  1752  1814

Dữ liệu cho thấy số người sống ở khu vực nông thôn (Rural) là 1.752 người, trong khi số người sống ở khu vực thành thị (Urban) là 1.814 người. Sự chênh lệch về tần số giữa hai nhóm là không lớn, cho thấy phân bố khu vực sinh sống trong mẫu khá đồng đều.

Về tần suất

residence_type_prop_table <- prop.table(table(data_categorical$residence_type)) * 100
print(residence_type_prop_table)
## 
##    Rural    Urban 
## 49.13068 50.86932

Tần suất phân bố khu vực sinh sống cho thấy khoảng 49,13% người sống ở khu vực nông thôn, trong khi khoảng 50,87% sống ở khu vực thành thị. Điều này cho thấy dân số trong mẫu gần như được phân chia đều giữa hai khu vực, với một chút ưu thế về phía khu vực thành thị.

Biểu đồ minh họa cho tần số và tần suất

# Gộp tần số và tần suất thành một dataframe 
residence_type_df <- data.frame(
  Residence_type = names(residence_type_table),
  Frequency = as.vector(residence_type_table),
  Percentage = round(as.vector(residence_type_prop_table), 2))

# Vẽ biểu đồ tần số
plot_freq_residence_type <- ggplot(residence_type_df, aes(x = Residence_type, y = Frequency, fill = Residence_type)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = Frequency), vjust = -0.5) +
  labs(title = "Biểu đồ tần số khu vực sinh sống", x = "Khu vực sinh sống", y = "Tần số") +
  theme_minimal()

# Vẽ biểu đồ tần suất
plot_prop_residence_type <- ggplot(residence_type_df, aes(x = "", y = Percentage, fill = Residence_type)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(label = paste0(Percentage, "%")), 
            position = position_stack(vjust = 0.5)) +
  labs(title = "Biểu đồ tần suất khu vực sinh sống (Pie Chart)", x = NULL, y = NULL) +
  theme_void()

# Gộp 2 biểu đồ
plot_freq_residence_type + plot_prop_residence_type

Dữ liệu cho thấy trong mẫu có tổng cộng 3,566 người, trong đó 1,752 người (chiếm khoảng 49.13%) sống ở khu vực nông thôn và 1,814 người (chiếm khoảng 50.87%) sống ở khu vực thành thị. Tần suất phần trăm cho thấy tỷ lệ người dân thành thị và nông thôn khá cân bằng, với sự chênh lệch nhỏ hơn 2%. Điều này cho thấy mẫu phân bố tương đối đều giữa hai khu vực sinh sống chính.

2.6.2 Ước lượng khoảng và kiểm định giả thuyết

Đối tượng quan tâm cho biến residence_type là thành thị URBAN.

Ước lượng khoảng

prop.test(residence_type_table["Urban"], sum(residence_type_table))
## 
##  1-sample proportions test with continuity correction
## 
## data:  residence_type_table["Urban"] out of sum(residence_type_table), null probability 0.5
## X-squared = 1.0435, df = 1, p-value = 0.307
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4921443 0.5252232
## sample estimates:
##         p 
## 0.5086932

Khoảng tin cậy 95% cho tỷ lệ người sống ở khu vực thành thị nằm trong khoảng từ 49.21% đến 52.52%, cho thấy tỷ lệ này khá gần với 50%. Điều này phản ánh sự phân bố gần như cân bằng giữa cư dân khu vực thành thị và nông thôn trong tổng thể.

Kiểm định giả thuyết

Giả thuyết kiểm định:

  • \(H_0\): \(p\) = 0.50 (tỉ lệ người sống ở thành thị là 50%)

  • \(H_1\): \(p \neq\) 0.50 (tỉ lệ người sống ở thành thị không phải là 50%)

prop.test(residence_type_table["Urban"], sum(residence_type_table),p = 0.50, alternative = "two.sided", correct = TRUE)
## 
##  1-sample proportions test with continuity correction
## 
## data:  residence_type_table["Urban"] out of sum(residence_type_table), null probability 0.5
## X-squared = 1.0435, df = 1, p-value = 0.307
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4921443 0.5252232
## sample estimates:
##         p 
## 0.5086932

Kết quả kiểm định cho thấy:

  • Tỷ lệ người sống ở khu vực thành thị quan sát trong mẫu là khoảng 50.87%.

  • Giá trị p-value = 0.307, lớn hơn mức ý nghĩa 0.05, do đó không đủ bằng chứng để bác bỏ giả thuyết \(H_0\).

  • Khoảng tin cậy 95% cho tỷ lệ người sống ở khu vực thành thị nằm trong khoảng từ 49.21% đến 52.52%.

=> Kết luận: Dữ liệu không cho thấy tỷ lệ người sống ở khu vực thành thị khác 50%. Nói cách khác, ta có thể chấp nhận rằng tỷ lệ người sống ở khu vực thành thị trong tổng thể là khoảng 50%.

2.7 Biến về tình trạng hút thuốc

2.7.1 Thống kê về tần số và tần suất

Về tần số

smoking_status_table <- table(data_categorical$smoking_status)
print(smoking_status_table)
## 
## formerly smoked    never smoked          smokes 
##             885            1892             789

Biến tình trạng hút thuốc được phân loại thành ba nhóm chính: từng hút thuốc trước đây (formerly smoked) với 885 người, chưa bao giờ hút thuốc (never smoked) với 1892 người, và đang hút thuốc (smokes) với 789 người. Trong tổng số mẫu, nhóm chưa bao giờ hút thuốc chiếm tỷ lệ cao nhất, tiếp theo là nhóm từng hút thuốc và nhóm đang hút thuốc chiếm tỷ lệ thấp nhất. Điều này phản ánh phần lớn người tham gia khảo sát không có thói quen hút thuốc hoặc đã bỏ thuốc, trong khi một phần nhỏ vẫn đang hút thuốc.

Về tần suất

smoking_status_prop_table <- prop.table(table(data_categorical$smoking_status)) * 100
print(smoking_status_prop_table)
## 
## formerly smoked    never smoked          smokes 
##        24.81772        53.05665        22.12563

Tỷ lệ phần trăm theo tình trạng hút thuốc cho thấy hơn một nửa mẫu (53.06%) chưa bao giờ hút thuốc, cho thấy đa số người trong nhóm khảo sát có lối sống không hút thuốc. Nhóm từng hút thuốc chiếm khoảng 24.82%, trong khi nhóm đang hút thuốc chiếm 22.13%. Điều này cho thấy mặc dù số người đang hút thuốc không nhỏ, nhưng vẫn thấp hơn so với những người chưa từng hút thuốc, đồng thời tỷ lệ người từng hút thuốc cũng chiếm một phần đáng kể, phản ánh xu hướng bỏ thuốc hoặc từng tiếp xúc với thuốc lá trong quá khứ.

Biểu đồ minh họa cho tần số và tần suất

# Gộp tần số và tần suất thành một dataframe 
smoking_status_df <- data.frame(
  Smoking_status = names(smoking_status_table),
  Frequency = as.vector(smoking_status_table),
  Percentage = round(as.vector(smoking_status_prop_table), 2))

# Vẽ biểu đồ tần số cho tình trạng hút thuốc
plot_freq_smoking_status <- ggplot(smoking_status_df, aes(x = Smoking_status, y = Frequency, fill = Smoking_status)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = Frequency), vjust = -0.5) +
  labs(title = "Biểu đồ tần số tình trạng hút thuốc", x = "Tình trạng hút thuốc", y = "Tần số") +
  theme_minimal()

# Vẽ biểu đồ tần suất cho tình trạng hút thuốc
plot_prop_smoking_status <- ggplot(smoking_status_df, aes(x = "", y = Percentage, fill = Smoking_status)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(label = paste0(Percentage, "%")), position = position_stack(vjust = 0.5)) +
  labs(title = "Biểu đồ tần suất tình trạng hút thuốc (Pie Chart)", x = NULL, y = NULL) +
  theme_void()

# Gộp 2 biểu đồ
plot_freq_smoking_status + plot_prop_smoking_status

Biến tình trạng hút thuốc trong mẫu gồm ba nhóm chính: nhóm chưa từng hút thuốc chiếm tỷ lệ cao nhất với khoảng 53.06%, tương ứng 1892 người; nhóm hút thuốc hiện tại chiếm khoảng 22.13% với 789 người; và nhóm đã từng hút thuốc trước đây chiếm khoảng 24.82% với 885 người. Như vậy, đa số người trong mẫu không hút thuốc, trong khi tỷ lệ người từng hoặc đang hút thuốc chiếm khoảng 47%. Điều này cho thấy tình trạng hút thuốc vẫn phổ biến nhưng không phải là phần lớn trong mẫu khảo sát.

2.7.2 Ước lượng khoảng và kiểm định giả thuyết

Đối tượng quan tâm cho biến smoking_status là những người chưa hút thuốc NEVER SMOKED.

Ước lượng khoảng

prop.test(smoking_status_table["never smoked"], sum(smoking_status_table))
## 
##  1-sample proportions test with continuity correction
## 
## data:  smoking_status_table["never smoked"] out of sum(smoking_status_table), null probability 0.5
## X-squared = 13.205, df = 1, p-value = 0.0002792
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.5140220 0.5470446
## sample estimates:
##         p 
## 0.5305665

Khoảng tin cậy 95% cho tỷ lệ người chưa từng hút thuốc trong tổng thể nằm trong khoảng từ 51.40% đến 54.70%, với tỷ lệ ước lượng mẫu là khoảng 53.06%. Điều này cho thấy tỷ lệ người chưa từng hút thuốc được ước lượng khá chắc chắn nằm trên mức 50%.

Kiểm định giả thuyết

Giả thuyết kiểm định:

  • \(H_0\): \(p\) > 0.50 (tỉ lệ người chưa từng hút thuốc trên 50%)

  • \(H_1\): \(p ≤\) 0.50 (tỉ lệ người chưa từng hút thuốc dưới 50%)

prop.test(smoking_status_table["never smoked"], sum(smoking_status_table),p = 0.50, alternative = "less", correct = TRUE)
## 
##  1-sample proportions test with continuity correction
## 
## data:  smoking_status_table["never smoked"] out of sum(smoking_status_table), null probability 0.5
## X-squared = 13.205, df = 1, p-value = 0.9999
## alternative hypothesis: true p is less than 0.5
## 95 percent confidence interval:
##  0.0000000 0.5444245
## sample estimates:
##         p 
## 0.5305665

Kết quả kiểm định cho thấy:

  • Tỷ lệ người chưa từng hút thuốc quan sát trong mẫu là khoảng 53.06%.

  • Giá trị p-value = 0.9999, lớn hơn mức ý nghĩa 0.05, do đó không đủ bằng chứng để bác bỏ giả thuyết \(H_0\).

  • Khoảng tin cậy 95% cho tỷ lệ người chưa từng hút thuốc nằm trong khoảng từ 0% đến 54.44%.

=> Kết luận: Dữ liệu không cho thấy tỷ lệ người chưa từng hút thuốc trong tổng thể nhỏ hơn hoặc bằng 50%. Nói cách khác, ta có thể chấp nhận rằng tỷ lệ người chưa từng hút thuốc trong tổng thể là lớn hơn 50%.

2.8 Biến về tình trạng đột quỵ

2.8.1 Thống kê về tần số và tần suất

Về tần số

stroke_table <- table(data_categorical$stroke)
print(stroke_table)
## 
##    0    1 
## 3364  202

Biến kết quả đột quỵ gồm hai nhóm: không bị đột quỵ và bị đột quỵ. Trong mẫu quan sát, có 3,364 người không bị đột quỵ, chiếm phần lớn số lượng, trong khi chỉ có 202 người bị đột quỵ. Tỷ lệ người bị đột quỵ trong mẫu là khá thấp, cho thấy đột quỵ không phổ biến trong nhóm đối tượng nghiên cứu này.

Về tần suất

stroke_prop_table <- prop.table(table(data_categorical$stroke)) * 100
print(stroke_prop_table)
## 
##        0        1 
## 94.33539  5.66461

Tần suất phần trăm của biến kết quả đột quỵ cho thấy khoảng 94.34% số người trong mẫu không bị đột quỵ, trong khi chỉ khoảng 5.66% bị đột quỵ. Điều này khẳng định rằng đa số các cá nhân trong mẫu đều không trải qua đột quỵ, tỷ lệ bị đột quỵ tương đối thấp.

Biểu đồ minh họa cho tần số và tần suất

# Gộp tần số và tần suất thành một dataframe 
stroke_df <- data.frame(
  Stroke = names(stroke_table),
  Frequency = as.vector(stroke_table),
  Percentage = round(as.vector(stroke_prop_table), 2))

# Vẽ biểu đồ tần số cho tình trạng đột quỵ (stroke)
plot_freq_stroke <- ggplot(stroke_df, aes(x = Stroke, y = Frequency, fill = Stroke)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = Frequency), vjust = -0.5) +
  labs(title = "Biểu đồ tần số tình trạng đột quỵ", x = "Tình trạng đột quỵ", y = "Tần số") +
  theme_minimal()

# Vẽ biểu đồ tần suất cho tình trạng đột quỵ (Pie Chart)
plot_prop_stroke <- ggplot(stroke_df, aes(x = "", y = Percentage, fill = Stroke)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(label = paste0(Percentage, "%")), position = position_stack(vjust = 0.5)) +
  labs(title = "Biểu đồ tần suất tình trạng đột quỵ (Pie Chart)", x = NULL, y = NULL) +
  theme_void()

# Gộp 2 biểu đồ
plot_freq_stroke + plot_prop_stroke

Biến kết quả đột quỵ trong dữ liệu gồm hai nhóm: không bị đột quỵ với 2.710 quan sát, chiếm khoảng 76%, và bị đột quỵ với 856 quan sát, chiếm khoảng 24% tổng số mẫu. Qua bảng tần số và tần suất, có thể thấy phần lớn mẫu nghiên cứu là những người không bị đột quỵ, chiếm tỷ lệ áp đảo so với nhóm bị đột quỵ. Tỷ lệ bị đột quỵ chiếm khoảng một phần tư, phản ánh mức độ phổ biến của bệnh trong nhóm nghiên cứu và cung cấp cơ sở để phân tích các yếu tố liên quan đến nguy cơ đột quỵ trong dữ liệu.

2.8.2 Ước lượng khoảng và kiểm định giả thuyết

Đối tượng quan tâm cho biến stroke là những người bị đột quỵ 1.

Ước lượng khoảng

prop.test(stroke_table["1"], sum(stroke_table))
## 
##  1-sample proportions test with continuity correction
## 
## data:  stroke_table["1"] out of sum(stroke_table), null probability 0.5
## X-squared = 2802, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.04939385 0.06487012
## sample estimates:
##         p 
## 0.0566461

Kết quả kiểm định cho thấy khoảng tin cậy 95% của tỷ lệ người bị đột quỵ trong mẫu nằm trong khoảng từ 4,94% đến 6,49%. Điều này cho thấy với độ tin cậy cao, tỷ lệ thực sự của người bị đột quỵ trong tổng thể có khả năng nằm trong phạm vi này.

Kiểm định giả thuyết

Giả thuyết kiểm định:

  • \(H_0\): \(p\) = 0.05 (tỉ lệ người bị đột quỵ là 5%)

  • \(H_1\): \(p \neq\) 0.05 (tỉ lệ người bị đột quỵ không phải 5%)

prop.test(stroke_table["1"], sum(stroke_table),p = 0.05, alternative = "two.sided", correct = TRUE)
## 
##  1-sample proportions test with continuity correction
## 
## data:  stroke_table["1"] out of sum(stroke_table), null probability 0.05
## X-squared = 3.1776, df = 1, p-value = 0.07465
## alternative hypothesis: true p is not equal to 0.05
## 95 percent confidence interval:
##  0.04939385 0.06487012
## sample estimates:
##         p 
## 0.0566461

Kết quả kiểm định cho thấy:

  • Tỷ lệ người bị đột quỵ quan sát trong mẫu là khoảng 5.66%.

  • Giá trị p-value = 0.07465, lớn hơn mức ý nghĩa 0.05, do đó không đủ bằng chứng để bác bỏ giả thuyết \(H_0\).

  • Khoảng tin cậy 95% cho tỷ lệ người bị đột quỵ nằm trong khoảng từ 4.94% đến 6.49%.

=> Kết luận: Dữ liệu không cho thấy tỷ lệ người bị đột quỵ trong tổng thể khác 5%. Nói cách khác, ta có thể chấp nhận rằng tỷ lệ người bị đột quỵ trong tổng thể là xấp xỉ 5%.

3. Phân tích cho biến đột quỵ

3.1 Biến giới tính và đột quỵ

Tạo một dataframe mới chỉ chứa hai biến này.

Bài phân tích chỉ quan tâm đến giới tính nữ và nam, vì vậy đối với giới tính khác (other) trong data gốc sẽ được loại bỏ.

gender_stroke_df <-  data_categorical[,c("gender", "stroke")]

gender_stroke_df <- subset(gender_stroke_df, gender != "Other")

gender_stroke_df$gender <- droplevels(gender_stroke_df$gender)

3.1.1. Bảng tần số và tần suất chéo

Bảng tần số chéo

gender_stroke_table <- table(gender_stroke_df$gender, gender_stroke_df$stroke)
print(gender_stroke_table)
##         
##             0    1
##   Female 2042  116
##   Male   1321   86

Bảng tần số cho thấy trong tập dữ liệu, có 2042 nữ không bị đột quỵ và 116 nữ bị đột quỵ, trong khi nam giới ghi nhận 1321 trường hợp không đột quỵ và 86 trường hợp bị đột quỵ. Nhìn chung, số lượng nữ cao hơn nam ở cả hai nhóm có và không có đột quỵ.

Bảng tần suất chéo

gender_stroke_prop <- prop.table(gender_stroke_table, margin = 1) * 100

print(gender_stroke_prop)
##         
##                  0         1
##   Female 94.624652  5.375348
##   Male   93.887704  6.112296

Bảng tần suất cho thấy trong nhóm nữ, 94,62% không bị đột quỵ và 5,38% bị đột quỵ. Trong khi đó, nam giới có 93,89% không đột quỵ và 6,11% bị đột quỵ. Tỷ lệ mắc đột quỵ ở nam cao hơn nữ một chút, cho thấy có thể tồn tại sự khác biệt nhẹ về nguy cơ đột quỵ giữa các giới.

Trực quan hóa bằng biểu đồ

# Biểu đồ cột cho tần số
ggplot(gender_stroke_df, aes(x = stroke, fill = stroke)) +
  geom_bar() +
  facet_wrap(~gender) +
  geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
  labs(title = "Biểu đồ tần số: Giới tính và Tình trạng đột quỵ",
       x = "Tình trạng đột quỵ", y = "Tần số") +
  theme_minimal()

Phân tích theo giới tính và tình trạng đột quỵ cho thấy, trong tổng số 2.158 nữ, có 116 người từng bị đột quỵ (chiếm khoảng 5,4%), trong khi nam giới có 86 ca đột quỵ trên tổng số 1.407 người (khoảng 6,1%). Mặc dù số lượng nữ bị đột quỵ cao hơn về mặt tuyệt đối (116 so với 86), tỷ lệ bị đột quỵ trong nhóm nam lại cao hơn. Điều này cho thấy nam giới có nguy cơ tương đối cao hơn trong bộ dữ liệu này, dù tổng số người nữ chiếm ưu thế hơn.

3.1.2 Kiểm định thống kê

Giả thiết kiểm định:

  • \(H_0\): Không có mối liên hệ giữa giới tính và tình trạng đột quỵ.

  • \(H_1\): Có mối liên hệ giữa giới tính và tình trạng đột quỵ.

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

Với giá trị p_value = 0.3919 > 0.05, ta không đủ bằng chứng để bác bỏ giả thiết \(H_0\).

Điều này có nghĩa là: Không có mối liên hệ có ý nghĩa thống kê giữa giới tính và tình trạng đột quỵ trong dữ liệu này.

Nói cách khác, sự khác biệt về tỷ lệ đột quỵ giữa nam và nữ có thể là do ngẫu nhiên, chứ không phải do yếu tố giới tính thực sự ảnh hưởng đến khả năng bị đột quỵ trong mẫu dữ liệu.

3.1.3 Hiệu hai tỷ lệ

Giả thiết kiểm định:

  • \(H_0\): \(p_1 = p_2\) (Tỷ lệ đột quỵ ở nữ và nam là bằng nhau)

  • \(H_1\): \(p_1 \ne p_2\) (Tỷ lệ đột quỵ ở nữ và nam là khác nhau)

prop.test(c(116,86), c(2158,1407), correct = TRUE)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(116, 86) out of c(2158, 1407)
## X-squared = 0.73299, df = 1, p-value = 0.3919
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.02367989  0.00894093
## sample estimates:
##     prop 1     prop 2 
## 0.05375348 0.06112296

Dựa vào bảng kết quả ta có:

  • Tỷ lệ đột quỵ ở nữ là: 0.05375348 (5.375%)

  • Tỷ lệ đột quỵ ở nam là: 0.06112296 (6.112%)

  • Hiệu tỷ lệ: 0.0538 - 0.0611 = -0.0073 (nữ thấp hơn nam khoảng 0.73%)

  • p-value: 0.3919 (> 0.05)

  • Khoảng tin cậy 95% cho hiệu tỷ lệ: [-2.37%, 0.89%]

Với p_value = 0.3919 > 0.05, không có đủ bằng chứng để bác bỏ giả thiết \(H_0\). Kết luận rằng Không có sự khác biệt có ý nghĩa thống kê giữa tỷ lệ đột quỵ của nam và nữ trong dữ liệu này.

3.1.4. Tỷ số nguy cơ (Relative Risk - RR)

riskratio(gender_stroke_table, method = "wald")
## $data
##         
##             0   1 Total
##   Female 2042 116  2158
##   Male   1321  86  1407
##   Total  3363 202  3565
## 
## $measure
##         risk ratio with 95% C.I.
##          estimate     lower    upper
##   Female 1.000000        NA       NA
##   Male   1.137098 0.8674372 1.490588
## 
## $p.value
##         two-sided
##          midp.exact fisher.exact chi.square
##   Female         NA           NA         NA
##   Male    0.3532392    0.3739923  0.3522409
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Tỷ số nguy cơ trên được tính như sau:

\[ RR = \frac{p_{\text{nam}}}{p_{\text{nữ}}} = \frac{\frac{116}{2158}}{\frac{86}{1407}} = \frac{0.06112296}{0.05375348} \approx 1.137098 \]

Tỷ số này có nghĩa là nam giới có nguy cơ bị đột quỵ cao hơn 13.7% so với nữ giới.

3.1.5. Tỷ số chênh (Odds Ratio - OR)

oddsratio(gender_stroke_table, method="wald", conf.level = 0.95)
## $data
##         
##             0   1 Total
##   Female 2042 116  2158
##   Male   1321  86  1407
##   Total  3363 202  3565
## 
## $measure
##         odds ratio with 95% C.I.
##          estimate     lower    upper
##   Female 1.000000        NA       NA
##   Male   1.146023 0.8597978 1.527532
## 
## $p.value
##         two-sided
##          midp.exact fisher.exact chi.square
##   Female         NA           NA         NA
##   Male    0.3532392    0.3739923  0.3522409
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Tỷ số chênh trên được tính như sau:

\[ OR = \frac {2042} {116} : \frac {1321} {86} = \frac {86 \times 2042} {116 \times 1321}\approx 1.146023 \]

Tỷ số cho biết nam giới có nguy cơ bị đột quỵ cao hơn nữ giới khoảng 14.6%.

3.2. Biến khu vực sinh sống và đột quỵ

3.2.1 Bảng tần số và tần suất chéo

Bảng tần số chéo

residence_stroke_table <- table(data_categorical$residence_type, data_categorical$stroke)
print(residence_stroke_table)
##        
##            0    1
##   Rural 1656   96
##   Urban 1708  106

Trong bảng tần số, số người không bị đột quỵ ở khu vực nông thôn là 1.656 người, còn ở khu vực thành thị là 1.708 người. Về phía những người bị đột quỵ, khu vực nông thôn ghi nhận 96 trường hợp, trong khi khu vực thành thị là 106 trường hợp. Nhìn chung, thành thị có số ca đột quỵ cao hơn nông thôn về mặt số lượng tuyệt đối, tuy nhiên mức chênh lệch không lớn.

Bảng tần suất chéo

residence_stroke_prop <- prop.table(residence_stroke_table, margin = 1) * 100

print(residence_stroke_prop)
##        
##                 0         1
##   Rural 94.520548  5.479452
##   Urban 94.156560  5.843440

Về tần suất, trong nhóm dân cư nông thôn, có khoảng 5.48% người bị đột quỵ, trong khi ở khu vực thành thị, tỷ lệ này là 5.84%. Sự khác biệt giữa hai khu vực là rất nhỏ, cho thấy tỷ lệ người bị đột quỵ ở nông thôn và thành thị tương đối giống nhau. Không có dấu hiệu rõ ràng cho thấy khu vực sinh sống ảnh hưởng đáng kể đến khả năng bị đột quỵ.

Trực quan hóa bằng biểu đồ

# Biểu đồ cột cho tần số
ggplot(data_categorical, aes(x = stroke, fill = factor(stroke))) +
  geom_bar() +
  facet_wrap(~residence_type) +
  geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
  labs(
    title = "Biểu đồ tần số: Khu vực sinh sống và Tình trạng đột quỵ",
    x = "Tình trạng đột quỵ",
    y = "Tần số",
    fill = "Tình trạng"
  ) +
  theme_minimal()

Phân tích cho thấy số người không bị đột quỵ ở khu vực nông thôn là 1.656 người, và ở thành thị là 1.708 người. Trong khi đó, số ca bị đột quỵ ghi nhận tại nông thôn là 96 trường hợp, còn tại thành thị là 106 trường hợp. Như vậy, thành thị có số ca đột quỵ cao hơn nhẹ so với nông thôn về mặt tần số.

Xét về tần suất (tỷ lệ phần trăm), tỷ lệ người bị đột quỵ ở nông thôn là khoảng 5.48%, trong khi ở thành thị là 5.84%. Mức chênh lệch là rất nhỏ, cho thấy rằng tỷ lệ đột quỵ giữa hai khu vực là khá tương đồng. Điều này gợi ý rằng khu vực sinh sống không có sự khác biệt rõ rệt về nguy cơ đột quỵ trong dữ liệu này.

3.2.2 Kiểm định thống kê

Giả thiết kiểm định:

  • \(H_0\): Không có mối liên hệ giữa khu vực sinh sống và tình trạng đột quỵ.

  • \(H_1\): Có mối liên hệ giữa khu vực sinh sống và tình trạng đột quỵ.

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

Kết quả kiểm định Chi-bình phương với hiệu chỉnh Yates cho thấy giá trị thống kê Chi-squared là 0.1581 với 1 bậc tự do, và giá trị p-value = 0.6909. Với mức ý nghĩa thông thường (α = 0.05), ta không đủ bằng chứng để bác bỏ giả thuyết không.

Điều này có nghĩa là không có mối liên hệ có ý nghĩa thống kê giữa khu vực sinh sống (thành thị hay nông thôn) và tình trạng đột quỵ trong dữ liệu hiện có. Nói cách khác, khu vực sinh sống không ảnh hưởng đáng kể đến khả năng bị đột quỵ theo kết quả kiểm định này.

3.2.3 Hiệu hai tỷ lệ

Giả thiết kiểm định:

  • \(H_0\): \(p_1 = p_2\) (Tỷ lệ đột quỵ ở hai khu vực là bằng nhau)

  • \(H_1\): \(p_1 \ne p_2\) (Tỷ lệ đột quỵ ở hai khu vực là khác nhau)

prop.test(x = c(96, 106), n = c(1752, 1814), correct = TRUE)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(96, 106) out of c(1752, 1814)
## X-squared = 0.1581, df = 1, p-value = 0.6909
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.01936909  0.01208933
## sample estimates:
##     prop 1     prop 2 
## 0.05479452 0.05843440

Dựa vào bảng kết quả ta có:

  • Tỷ lệ đột quỵ ở khu vực nông thôn là: 0.0548 (tức 5.48%)

  • Tỷ lệ đột quỵ ở khu vực thành thị là: 0.0584 (tức 5.84%)

  • Hiệu tỷ lệ: 0.0548 - 0.0584 = -0.0036 (nghĩa là nông thôn thấp hơn thành thị khoảng 0.36%)

  • p-value: 0.6909 (> 0.05)

  • Khoảng tin cậy 95% cho hiệu tỷ lệ: [-1.94%, 1.21%]

Với p-value = 0.6909 > 0.05, không có đủ bằng chứng để bác bỏ giả thuyết \(H_0\).

Kết luận: Không có sự khác biệt có ý nghĩa thống kê giữa tỷ lệ đột quỵ ở khu vực nông thôn và thành thị trong dữ liệu này.

3.2.4. Tỷ số nguy cơ (Relative Risk - RR)

riskratio(residence_stroke_table, method = "wald")
## $data
##        
##            0   1 Total
##   Rural 1656  96  1752
##   Urban 1708 106  1814
##   Total 3364 202  3566
## 
## $measure
##        risk ratio with 95% C.I.
##         estimate     lower    upper
##   Rural 1.000000        NA       NA
##   Urban 1.066428 0.8155347 1.394506
## 
## $p.value
##        two-sided
##         midp.exact fisher.exact chi.square
##   Rural         NA           NA         NA
##   Urban  0.6394891    0.6640935  0.6383073
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Tỷ số nguy cơ trên được tính như sau:

\[ RR = \frac{p_{\text{Urban}}}{p_{\text{Rural}}} = \frac{\frac{106}{1814}}{\frac{96}{1752}} \approx 1.066428 \]

Dựa vào kết quả tính toán, tỷ lệ đột quỵ ở khu vực thành thị cao hơn so với khu vực nông thôn. Cụ thể, tỷ số nguy cơ là 1.07, nghĩa là người sống ở thành thị có nguy cơ đột quỵ cao hơn khoảng 6.6% so với người sống ở nông thôn. Điều này cho thấy sự khác biệt nhất định về nguy cơ đột quỵ giữa hai khu vực sinh sống trong tập dữ liệu khảo sát.

3.2.5. Tỷ số chênh (Odds Ratio - OR)

oddsratio(residence_stroke_table, method="wald", conf.level = 0.95)
## $data
##        
##            0   1 Total
##   Rural 1656  96  1752
##   Urban 1708 106  1814
##   Total 3364 202  3566
## 
## $measure
##        odds ratio with 95% C.I.
##         estimate     lower    upper
##   Rural  1.00000        NA       NA
##   Urban  1.07055 0.8056361 1.422575
## 
## $p.value
##        two-sided
##         midp.exact fisher.exact chi.square
##   Rural         NA           NA         NA
##   Urban  0.6394891    0.6640935  0.6383073
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Tỷ số chênh trên được tính như sau:

\[ OR = \frac {1656} {96} : \frac {1708} {106} = \frac {1656 \times 106} {96 \times 1078} \approx 1.07055 \]

Tỷ số chênh (OR) cho thấy khả năng mắc đột quỵ ở người sống tại thành thị cao hơn khoảng 7% so với người sống ở nông thôn, trong dữ liệu quan sát.

3.3. Biến bệnh tim và đột quỵ

3.3.1 Bảng tần số và tần suất chéo

Bảng tần số chéo

heart_stroke_table <- table(heart_stroke_df$heart_desease, heart_stroke_df$stroke)
print(heart_stroke_table)
##    
##     Đột quỵ Không đột quỵ
##   0     163          3175
##   1      39           189

Dựa vào bảng tần suất, có thể thấy rằng trong nhóm không mắc bệnh tim, có 163 người bị đột quỵ và 3175 người không bị đột quỵ, chiếm phần lớn. Ngược lại, trong nhóm mắc bệnh tim, có 39 người bị đột quỵ và 189 người không bị đột quỵ.

Như vậy, tỷ lệ người bị đột quỵ trong nhóm có bệnh tim cao hơn rõ rệt so với nhóm không mắc bệnh tim. Điều này cho thấy tình trạng bệnh tim có thể liên quan đến nguy cơ đột quỵ cao hơn trong tập dữ liệu được phân tích.

Bảng tần suất chéo

residence_stroke_prop <- prop.table(residence_stroke_table, margin = 1) * 100

print(residence_stroke_prop)
##        
##                 0         1
##   Rural 94.520548  5.479452
##   Urban 94.156560  5.843440

Về tần suất, trong nhóm dân cư nông thôn, có khoảng 5.48% người bị đột quỵ, trong khi ở khu vực thành thị, tỷ lệ này là 5.84%. Sự khác biệt giữa hai khu vực là rất nhỏ, cho thấy tỷ lệ người bị đột quỵ ở nông thôn và thành thị tương đối giống nhau. Không có dấu hiệu rõ ràng cho thấy khu vực sinh sống ảnh hưởng đáng kể đến khả năng bị đột quỵ.

Trực quan hóa bằng biểu đồ

# Biểu đồ cột cho tần số
ggplot(data_categorical, aes(x = stroke, fill = factor(stroke))) +
  geom_bar() +
  facet_wrap(~residence_type) +
  geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
  labs(
    title = "Biểu đồ tần số: Khu vực sinh sống và Tình trạng đột quỵ",
    x = "Tình trạng đột quỵ",
    y = "Tần số",
    fill = "Tình trạng"
  ) +
  theme_minimal()

Phân tích cho thấy số người không bị đột quỵ ở khu vực nông thôn là 1.656 người, và ở thành thị là 1.708 người. Trong khi đó, số ca bị đột quỵ ghi nhận tại nông thôn là 96 trường hợp, còn tại thành thị là 106 trường hợp. Như vậy, thành thị có số ca đột quỵ cao hơn nhẹ so với nông thôn về mặt tần số.

Xét về tần suất (tỷ lệ phần trăm), tỷ lệ người bị đột quỵ ở nông thôn là khoảng 5.48%, trong khi ở thành thị là 5.84%. Mức chênh lệch là rất nhỏ, cho thấy rằng tỷ lệ đột quỵ giữa hai khu vực là khá tương đồng. Điều này gợi ý rằng khu vực sinh sống không có sự khác biệt rõ rệt về nguy cơ đột quỵ trong dữ liệu này.

3.2.2 Kiểm định thống kê

Giả thiết kiểm định:

  • \(H_0\): Không có mối liên hệ giữa khu vực sinh sống và tình trạng đột quỵ.

  • \(H_1\): Có mối liên hệ giữa khu vực sinh sống và tình trạng đột quỵ.

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

Kết quả kiểm định Chi-bình phương với hiệu chỉnh Yates cho thấy giá trị thống kê Chi-squared là 0.1581 với 1 bậc tự do, và giá trị p-value = 0.6909. Với mức ý nghĩa thông thường (α = 0.05), ta không đủ bằng chứng để bác bỏ giả thuyết không.

Điều này có nghĩa là không có mối liên hệ có ý nghĩa thống kê giữa khu vực sinh sống (thành thị hay nông thôn) và tình trạng đột quỵ trong dữ liệu hiện có. Nói cách khác, khu vực sinh sống không ảnh hưởng đáng kể đến khả năng bị đột quỵ theo kết quả kiểm định này.

3.2.3 Hiệu hai tỷ lệ

Giả thiết kiểm định:

  • \(H_0\): \(p_1 = p_2\) (Tỷ lệ đột quỵ ở hai khu vực là bằng nhau)

  • \(H_1\): \(p_1 \ne p_2\) (Tỷ lệ đột quỵ ở hai khu vực là khác nhau)

prop.test(x = c(96, 106), n = c(1752, 1814), correct = TRUE)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(96, 106) out of c(1752, 1814)
## X-squared = 0.1581, df = 1, p-value = 0.6909
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.01936909  0.01208933
## sample estimates:
##     prop 1     prop 2 
## 0.05479452 0.05843440

Dựa vào bảng kết quả ta có:

  • Tỷ lệ đột quỵ ở khu vực nông thôn là: 0.0548 (tức 5.48%)

  • Tỷ lệ đột quỵ ở khu vực thành thị là: 0.0584 (tức 5.84%)

  • Hiệu tỷ lệ: 0.0548 - 0.0584 = -0.0036 (nghĩa là nông thôn thấp hơn thành thị khoảng 0.36%)

  • p-value: 0.6909 (> 0.05)

  • Khoảng tin cậy 95% cho hiệu tỷ lệ: [-1.94%, 1.21%]

Với p-value = 0.6909 > 0.05, không có đủ bằng chứng để bác bỏ giả thuyết \(H_0\).

Kết luận: Không có sự khác biệt có ý nghĩa thống kê giữa tỷ lệ đột quỵ ở khu vực nông thôn và thành thị trong dữ liệu này.

3.2.4. Tỷ số nguy cơ (Relative Risk - RR)

riskratio(residence_stroke_table, method = "wald")
## $data
##        
##            0   1 Total
##   Rural 1656  96  1752
##   Urban 1708 106  1814
##   Total 3364 202  3566
## 
## $measure
##        risk ratio with 95% C.I.
##         estimate     lower    upper
##   Rural 1.000000        NA       NA
##   Urban 1.066428 0.8155347 1.394506
## 
## $p.value
##        two-sided
##         midp.exact fisher.exact chi.square
##   Rural         NA           NA         NA
##   Urban  0.6394891    0.6640935  0.6383073
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Tỷ số nguy cơ trên được tính như sau:

\[ RR = \frac{p_{\text{Urban}}}{p_{\text{Rural}}} = \frac{\frac{106}{1814}}{\frac{96}{1752}} \approx 1.066428 \]

Dựa vào kết quả tính toán, tỷ lệ đột quỵ ở khu vực thành thị cao hơn so với khu vực nông thôn. Cụ thể, tỷ số nguy cơ là 1.07, nghĩa là người sống ở thành thị có nguy cơ đột quỵ cao hơn khoảng 6.6% so với người sống ở nông thôn. Điều này cho thấy sự khác biệt nhất định về nguy cơ đột quỵ giữa hai khu vực sinh sống trong tập dữ liệu khảo sát.

3.2.5. Tỷ số chênh (Odds Ratio - OR)

oddsratio(residence_stroke_table, method="wald", conf.level = 0.95)
## $data
##        
##            0   1 Total
##   Rural 1656  96  1752
##   Urban 1708 106  1814
##   Total 3364 202  3566
## 
## $measure
##        odds ratio with 95% C.I.
##         estimate     lower    upper
##   Rural  1.00000        NA       NA
##   Urban  1.07055 0.8056361 1.422575
## 
## $p.value
##        two-sided
##         midp.exact fisher.exact chi.square
##   Rural         NA           NA         NA
##   Urban  0.6394891    0.6640935  0.6383073
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Tỷ số chênh trên được tính như sau:

\[ OR = \frac {1656} {96} : \frac {1708} {106} = \frac {1656 \times 106} {96 \times 1078} \approx 1.07055 \]

Tỷ số chênh (OR) cho thấy khả năng mắc đột quỵ ở người sống tại thành thị cao hơn khoảng 7% so với người sống ở nông thôn, trong dữ liệu quan sát.

4. Phân tích cho biến tăng huyết áp

4.1 Biến tình trạng hôn nhân và tăng huyết áp

4.1.1. Bảng tần số và tần suất chéo

Bảng tần số chéo

married_hypertension_table <- table(data_categorical$ever_married,data_categorical$hypertension)
print(married_hypertension_table)
##      
##          0    1
##   No   808   48
##   Yes 2312  398

Kết quả bảng tần số cho thấy trong số những người chưa từng kết hôn có 808 người không bị tăng huyết áp và 48 người bị tăng huyết áp, trong khi nhóm đã từng kết hôn có 2312 người không bị tăng huyết áp và 398 người bị tăng huyết áp. Như vậy, số người bị tăng huyết áp ở nhóm đã từng kết hôn cao hơn đáng kể về mặt tần số so với nhóm chưa từng kết hôn.

Bảng tần suất chéo

married_hypertension_prop <- prop.table(married_hypertension_table, margin = 1) * 100
print(married_hypertension_prop)
##      
##               0         1
##   No  94.392523  5.607477
##   Yes 85.313653 14.686347

Kết quả bảng tần suất cho thấy trong nhóm chưa từng kết hôn, 94.39% không bị tăng huyết áp và 5.61% bị tăng huyết áp. Trong khi đó, ở nhóm đã từng kết hôn, 85.31% không bị tăng huyết áp và 14.69% bị tăng huyết áp. Như vậy, tỷ lệ người bị tăng huyết áp ở nhóm đã từng kết hôn cao hơn đáng kể so với nhóm chưa từng kết hôn.

Trực quan hóa bằng biểu đồ

# Biểu đồ cột cho tần số
ggplot(data_categorical, aes(x = hypertension, fill = hypertension)) +
  geom_bar() +
  facet_wrap(~ ever_married) +
  geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
  labs(title = "Biểu đồ tần số: Tình trạng hôn nhân và Tình trạng tăng huyết áp",
       x = "Tình trạng tăng huyết áp", y = "Tần số") +
  theme_minimal()

Biểu đồ tần số cho thấy sự khác biệt rõ rệt về tình trạng tăng huyết áp giữa hai nhóm hôn nhân. Trong nhóm chưa từng kết hôn, có 808 người không bị tăng huyết áp và 48 người bị tăng huyết áp. Trong khi đó, nhóm đã từng kết hôn ghi nhận 2312 người không bị tăng huyết áp và 398 người bị tăng huyết áp. Tổng thể, số người bị tăng huyết áp ở nhóm đã kết hôn cao hơn đáng kể về tần số. Điều này gợi ý rằng tình trạng hôn nhân có thể có liên quan đến nguy cơ tăng huyết áp, tuy nhiên cần kiểm định thống kê để đánh giá mức độ ý nghĩa của mối quan hệ này.

4.1.2 Kiểm định thống kê

Giả thiết kiểm định:

  • \(H_0\): Không có mối liên hệ giữa tình trạng hôn nhân và việc tăng huyết áp.

  • \(H_1\): Có mối liên hệ giữa tình trạng hôn nhân và việc tăng huyết áp.

chisq.test(married_hypertension_table)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  married_hypertension_table
## X-squared = 48.174, df = 1, p-value = 3.9e-12

Với giá trị p-value = 3.9e-12 < 0.05, ta có đủ bằng chứng để bác bỏ giả thiết \(H_0\).

Điều này có nghĩa là: Có mối liên hệ có ý nghĩa thống kê giữa tình trạng hôn nhân và tình trạng tăng huyết áp trong dữ liệu này.

Nói cách khác, sự khác biệt về tỷ lệ tăng huyết áp giữa nhóm đã kết hôn và chưa kết hôn không phải do ngẫu nhiên, mà có thể là do tình trạng hôn nhân thực sự có ảnh hưởng đến khả năng mắc tăng huyết áp trong mẫu dữ liệu.

4.1.3 Hiệu hai tỷ lệ

Giả thiết kiểm định:

  • \(H_0\): \(p_1 = p_2\) (Tỷ lệ tăng huyết áp ở người đã kết hôn và chưa kết hôn là bằng nhau)

  • \(H_1\): \(p_1 \ne p_2\) (Tỷ lệ tăng huyết áp ở người đã kết hôn và chưa kết hôn là khác nhau)

prop.test(c(48,398), c(856,2710), alternative = "two.sided", correct = TRUE)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(48, 398) out of c(856, 2710)
## X-squared = 48.174, df = 1, p-value = 3.9e-12
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.11193234 -0.06964506
## sample estimates:
##     prop 1     prop 2 
## 0.05607477 0.14686347

Dựa vào bảng kết quả ta có:

  • Tỷ lệ tăng huyết áp ở người chưa từng kết hôn là: 0.0561 (5.61%).

  • Tỷ lệ tăng huyết áp ở người đã từng kết hôn là: 0.1469 (14.69%).

  • Hiệu tỷ lệ: 0.0561 – 0.1469 = -0.0908 (người chưa kết hôn thấp hơn người đã kết hôn khoảng 9.08%).

  • p-value: 3.9e-12 (< 0.05).

  • Khoảng tin cậy 95% cho hiệu tỷ lệ: [-11.19%, -6.96%].

Với p-value = 3.9e-12 < 0.05, ta có đủ bằng chứng để bác bỏ giả thiết \(H_0\) . Kết luận rằng có sự khác biệt có ý nghĩa thống kê giữa tỷ lệ tăng huyết áp của người đã kết hôn và chưa kết hôn trong dữ liệu này.

4.1.4. Tỷ số nguy cơ (Relative Risk - RR)

riskratio(married_hypertension_table, method = "wald")
## $data
##        
##            0   1 Total
##   No     808  48   856
##   Yes   2312 398  2710
##   Total 3120 446  3566
## 
## $measure
##      risk ratio with 95% C.I.
##       estimate    lower    upper
##   No  1.000000       NA       NA
##   Yes 2.619065 1.960843 3.498241
## 
## $p.value
##      two-sided
##         midp.exact fisher.exact  chi.square
##   No            NA           NA          NA
##   Yes 5.728751e-14 6.919372e-14 2.55926e-12
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Tỷ số nguy cơ trên được tính như sau:

\[ RR = \frac{p_{\text{đã kết hôn}}}{p_{\text{chưa kết hôn}}} = \frac{\frac{398}{2710}}{\frac{48}{856}} \approx 2.619065 \]

Tỷ số này có nghĩa là những người đã từng kết hôn có nguy cơ bị tăng huyết áp cao hơn khoảng 2.62 lần so với những người chưa từng kết hôn.

4.1.5. Tỷ số chênh (Odds Ratio - OR)

oddsratio(married_hypertension_table, method="wald", conf.level = 0.95)
## $data
##        
##            0   1 Total
##   No     808  48   856
##   Yes   2312 398  2710
##   Total 3120 446  3566
## 
## $measure
##      odds ratio with 95% C.I.
##       estimate    lower    upper
##   No   1.00000       NA       NA
##   Yes  2.89778 2.125374 3.950894
## 
## $p.value
##      two-sided
##         midp.exact fisher.exact  chi.square
##   No            NA           NA          NA
##   Yes 5.728751e-14 6.919372e-14 2.55926e-12
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Tỷ số chênh trên được tính như sau:

\[ OR = \frac {398} {2312} : \frac {48} {808} = \frac {398 \times 808} {48 \times 2321}\approx 2.89778 \]

Tỷ số này có nghĩa là những người đã từng kết hôn có nguy cơ bị tăng huyết áp cao hơn khoảng 2.62 lần so với những người chưa từng kết hôn.

4.2. Biến loại công việc và tình trạng tăng huyết áp

4.2.1 Bảng tần số và tần suất chéo

Tạo một dataframe mới chỉ chứa hai biến này.

Bài phân tích chỉ quan tâm đến loại hình công việc tư nhân và nhà nước, vì vậy đối với các loại hình công việc còn lại sẽ được loại bỏ.

work_hypertension_df <- data_categorical[,c("work_type", "hypertension")]

work_hypertension_df <- work_hypertension_df[work_hypertension_df$work_type == "Govt_job"| work_hypertension_df$work_type == "Private",]

work_hypertension_df$work_type <- droplevels(work_hypertension_df$work_type)

4.2.1. Bảng tần số và tần suất chéo

Bảng tần số chéo

work_hypertension_table <- table(work_hypertension_df$work_type, work_hypertension_df$hypertension)
print(work_hypertension_table)
##           
##               0    1
##   Govt_job  465   70
##   Private  2033  252

Bảng tần số chéo cho thấy trong nhóm làm việc nhà nước (Govt_job) có 465 người không bị tăng huyết áp và 70 người bị tăng huyết áp. Trong khi đó, nhóm làm việc tư nhân (Private) có 2.033 người không bị và 252 người bị tăng huyết áp. Như vậy, số người trong nhóm làm việc tư nhân cao hơn đáng kể so với nhóm nhà nước ở cả hai tình trạng huyết áp.

Bảng tần suất chéo

work_hypertension_prop <- prop.table(work_hypertension_table, margin = 1) * 100

print(work_hypertension_prop)
##           
##                   0        1
##   Govt_job 86.91589 13.08411
##   Private  88.97155 11.02845

Dựa trên bảng tần suất, trong nhóm làm việc nhà nước (Govt_job), có khoảng 86.92% người không bị tăng huyết áp và 13.08% người bị tăng huyết áp. Trong khi đó, ở nhóm làm việc tư nhân (Private), 88.97% không bị và 11.03% bị tăng huyết áp.

Như vậy, tỷ lệ người bị tăng huyết áp trong nhóm nhà nước cao hơn nhẹ so với nhóm tư nhân.

Trực quan hóa bằng biểu đồ

# Biểu đồ cột cho tần số
ggplot(work_hypertension_df, aes(x = hypertension, fill = hypertension)) +
  geom_bar() +
  facet_wrap(~work_type) +
  geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
  labs(title = "Biểu đồ tần số: Loại hình công việc và Tình trạng tăng huyết áp",
       x = "Tình trạng tăng huyết áp", y = "Tần số") +
  theme_minimal()

Dữ liệu cho thấy sự khác biệt nhất định về tình trạng tăng huyết áp giữa hai nhóm loại hình công việc. Nhóm làm việc tư nhân có số lượng người cao hơn rõ rệt so với nhóm nhà nước ở cả hai mức huyết áp. Tuy nhiên, xét về tần suất, tỷ lệ người bị tăng huyết áp trong nhóm nhà nước (13.08%) cao hơn so với nhóm tư nhân (11.03%). Điều này cho thấy có thể tồn tại mối liên hệ giữa loại hình công việc và tình trạng tăng huyết áp, tuy nhiên mức độ khác biệt không quá lớn.

4.2.2 Kiểm định thống kê

Giả thiết kiểm định:

  • \(H_0\): Không có mối liên hệ giữa loại hình làm việc và tình trạng tăng huyết áp.

  • \(H_1\): Có mối liên hệ giữa loại hình làm việc và tình trạng tăng huyết áp.

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

Kết quả kiểm định Chi bình phương với hiệu chỉnh liên tục cho thấy:

  • Giá trị thống kê Chi bình phương: 1.6136

  • Bậc tự do: 1

  • Giá trị p (p-value): 0.204

Với mức ý nghĩa thông thường là 0.05, ta thấy p-value = 0.204 > 0.05, do đó không có đủ bằng chứng để bác bỏ giả thuyết không (H₀).

Kết luận: Không có mối liên hệ có ý nghĩa thống kê giữa loại hình công việc và tình trạng tăng huyết áp trong mẫu dữ liệu này. Nói cách khác, hai biến này độc lập nhau về mặt thống kê.

4.2.3 Hiệu hai tỷ lệ

Giả thiết kiểm định:

  • \(H_0\): \(p_1 = p_2\) (Tỷ lệ tăng huyết áp ở cả hai loại hình làm việc là bằng nhau)

  • \(H_1\): \(p_1 \ne p_2\) (Tỷ lệ tăng huyết áp ở cả hai loại hình làm việc là khác nhau)

prop.test(c(70,252), c(535,2285), correct = TRUE)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(70, 252) out of c(535, 2285)
## X-squared = 1.6136, df = 1, p-value = 0.204
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.01192587  0.05303919
## sample estimates:
##    prop 1    prop 2 
## 0.1308411 0.1102845

Dựa vào bảng kết quả ta có:

  • Tỷ lệ người bị tăng huyết áp ở nhóm Govt_job là 13.08%, trong khi ở nhóm Private là 11.03%.

  • Khoảng tin cậy 95% cho hiệu số hai tỷ lệ là từ -1.19% đến 5.30%.

  • Giá trị thống kê Chi bình phương là 1.6136, với p-value = 0.204.

Với p-value > 0.05, không có đủ bằng chứng để kết luận rằng tỷ lệ tăng huyết áp giữa hai nhóm công việc là khác nhau. Nói cách khác, sự khác biệt về tỷ lệ bị tăng huyết áp giữa nhóm làm việc nhà nước và tư nhân không có ý nghĩa thống kê.

4.2.4. Tỷ số nguy cơ (Relative Risk - RR)

riskratio(work_hypertension_table, method = "wald")
## $data
##           
##               0   1 Total
##   Govt_job  465  70   535
##   Private  2033 252  2285
##   Total    2498 322  2820
## 
## $measure
##           risk ratio with 95% C.I.
##             estimate     lower    upper
##   Govt_job 1.0000000        NA       NA
##   Private  0.8428884 0.6580798 1.079597
## 
## $p.value
##           two-sided
##            midp.exact fisher.exact chi.square
##   Govt_job         NA           NA         NA
##   Private   0.1824334    0.1749573  0.1783747
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Tỷ số nguy cơ trên được tính như sau:

\[ RR = \frac{p_{\text{private}}}{p_{\text{govt_job}}} = \frac{\frac{252}{2285}}{\frac{70}{535}} \approx 0.8428884 \]

Tỷ số này có nghĩa là nhóm làm việc trong khu vực tư nhân có nguy cơ bị tăng huyết áp thấp hơn khoảng 15.7% so với nhóm làm việc trong khu vực nhà nước.

Các kiểm định đi kèm (Mid-p exact, Fisher exact, và Chi-square) đều cho p-value > 0.05, lần lượt là 0.1824, 0.1750 và 0.1784. Do đó, không có đủ bằng chứng thống kê để kết luận rằng nguy cơ tăng huyết áp giữa hai nhóm công việc là khác biệt.

4.2.5. Tỷ số chênh (Odds Ratio - OR)

oddsratio(work_hypertension_table, method="wald", conf.level = 0.95)
## $data
##           
##               0   1 Total
##   Govt_job  465  70   535
##   Private  2033 252  2285
##   Total    2498 322  2820
## 
## $measure
##           odds ratio with 95% C.I.
##             estimate     lower    upper
##   Govt_job 1.0000000        NA       NA
##   Private  0.8234137 0.6202574 1.093111
## 
## $p.value
##           two-sided
##            midp.exact fisher.exact chi.square
##   Govt_job         NA           NA         NA
##   Private   0.1824334    0.1749573  0.1783747
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Tỷ số chênh trên được tính như sau:

\[ OR = \frac {252} {2033} : \frac {70} {465} = \frac {252 \times 465} {70 \times 2033}\approx 0.8234137 \]

Tỷ số này cho biết nhóm làm việc trong khu vực tư nhân có odds bị tăng huyết áp thấp hơn khoảng 17.7% so với nhóm làm việc trong khu vực nhà nước.

Các kiểm định đi kèm (Mid-p exact, Fisher exact và Chi-square) đều cho p-value > 0.05 (lần lượt là 0.1824, 0.1750 và 0.1784), do đó không có đủ bằng chứng để kết luận rằng odds bị tăng huyết áp khác nhau giữa hai nhóm loại hình công việc.

5. Phân tích hàm hồi quy cho biến đột quỵ

Trong phân tích này, bài thực hành sử dụng bộ dữ liệu Stroke Prediction Dataset để xây dựng mô hình hồi quy nhằm đánh giá mối liên hệ giữa một số đặc điểm nhân khẩu học và nguy cơ bị đột quỵ. Biến phụ thuộc được lựa chọn là biến nhị phân stroke, thể hiện tình trạng có bị đột quỵ hay không (1: có, 0: không). Các biến độc lập được đưa vào mô hình gồm: giới tính (gender), tình trạng tăng huyết áp (hypertension), tình trạng hôn nhân (ever_married) và khu vực sinh sống (Residence_type). Trong đó, biến gender ban đầu có ba mức: Male (nam), Female (nữ) và Other (khác); tuy nhiên, do số lượng quan sát ở nhóm “Other” rất ít và nhằm mục đích trực quan hóa kết quả hồi quy, bài thực hành sẽ loại bỏ nhóm này khỏi phân tích. Mô hình hồi quy được sử dụng nhằm xác định xem các yếu tố kể trên có ảnh hưởng đáng kể đến nguy cơ đột quỵ hay không, từ đó góp phần hỗ trợ nhận diện nhóm đối tượng có nguy cơ cao để can thiệp kịp thời.

dulieuhoiquy <- data_categorical[,c("gender","hypertension","ever_married","residence_type", "stroke")]

dulieuhoiquy <- dulieuhoiquy[dulieuhoiquy$gender != "Other",]

dulieuhoiquy$gender <- droplevels(dulieuhoiquy$gender)

5.1 Hồi quy logit

modellg <- glm(stroke ~ gender + hypertension + ever_married +  residence_type, data = dulieuhoiquy, family = binomial(link = "logit"))

summary(modellg)
## 
## Call:
## glm(formula = stroke ~ gender + hypertension + ever_married + 
##     residence_type, family = binomial(link = "logit"), data = dulieuhoiquy)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)         -3.86174    0.24294 -15.896  < 2e-16 ***
## genderMale           0.08456    0.14855   0.569 0.569210    
## hypertension1        1.13237    0.16350   6.926 4.34e-12 ***
## ever_marriedYes      0.90014    0.23609   3.813 0.000137 ***
## residence_typeUrban  0.07881    0.14680   0.537 0.591374    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1552.1  on 3564  degrees of freedom
## Residual deviance: 1483.7  on 3560  degrees of freedom
## AIC: 1493.7
## 
## Number of Fisher Scoring iterations: 6

Kết quả hệ số hồi quy:

Biến Hệ số (Estimate) Ý nghĩa thống kê (p-value) Giải thích
(Intercept) -3.86174 < 2e-16 (***) Giá trị log-odds khi tất cả các biến độc lập bằng 0
genderMale 0.08456 0.5692 Không có ý nghĩa thống kê; giới tính nam không ảnh hưởng đáng kể đến nguy cơ đột quỵ
hypertension1 1.13237 4.34e-12 (***) Có ý nghĩa thống kê mạnh; người bị tăng huyết áp có odds bị đột quỵ cao hơn đáng kể
ever_marriedYes 0.90014 0.000137 (***) Người đã từng kết hôn có odds bị đột quỵ cao hơn đáng kể so với người chưa từng kết hôn
residence_typeUrban 0.07881 0.5914 Không có ý nghĩa thống kê; khu vực sống không ảnh hưởng đáng kể đến xác suất đột quỵ

*Ý nghĩa các hệ số hồi quy:

  • genderMale: 0.08456. Người nam giới có odds bị đột quỵ cao hơn 8.8% so với nữ giới, khi các yếu tố khác không thay đổi.

  • hypertension1: 1.13237. Người bị tăng huyết áp có nguy cơ đột quỵ cao gấp khoảng 3.1 lần so với người không bị tăng huyết áp, khi các yếu tố khác giữ nguyên.

  • ever_marriedYes: 0.90014. Người đã từng kết hôn có nguy cơ đột quỵ cao hơn khoảng 2.46 lần so với người chưa từng kết hôn, khi các yếu tố khác giữ nguyên.

  • residence_typeUrban: 0.07881. Người sống ở khu vực thành thị có odds đột quỵ cao hơn khoảng 8.2% so với người sống ở nông thôn, khi các yếu tố khác không thay đổi.

NHẬN XÉT CHUNG

  • Tăng huyết áp và tình trạng hôn nhân là hai yếu tố có ảnh hưởng có ý nghĩa thống kê đến khả năng bị đột quỵ.

  • Giới tính và khu vực sống không có ảnh hưởng đáng kể trong mô hình này.

  • Mô hình gợi ý rằng yếu tố sức khỏe và hoàn cảnh cá nhân (huyết áp, hôn nhân) quan trọng hơn đặc điểm nhân khẩu học đơn thuần (giới, nơi sống) trong việc dự đoán nguy cơ đột quỵ.

5.2 Hồi quy probit

modelpb <- glm(stroke ~ gender + hypertension + ever_married +  residence_type, data = dulieuhoiquy, family = binomial(link = "probit"))

summary(modelpb)
## 
## Call:
## glm(formula = stroke ~ gender + hypertension + ever_married + 
##     residence_type, family = binomial(link = "probit"), data = dulieuhoiquy)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)         -2.08659    0.10613 -19.661  < 2e-16 ***
## genderMale           0.04261    0.07106   0.600    0.549    
## hypertension1        0.57708    0.08441   6.837 8.09e-12 ***
## ever_marriedYes      0.43177    0.10273   4.203 2.64e-05 ***
## residence_typeUrban  0.04195    0.07002   0.599    0.549    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1552.1  on 3564  degrees of freedom
## Residual deviance: 1481.2  on 3560  degrees of freedom
## AIC: 1491.2
## 
## Number of Fisher Scoring iterations: 6

Kết quả hệ số hồi quy:

Biến Hệ số (Estimate) Ý nghĩa thống kê (p-value) Giải thích
(Intercept) -2.08659 < 2e-16 (***) Giá trị của z (probit) khi tất cả các biến độc lập bằng 0
genderMale 0.04261 0.549 Không có ý nghĩa thống kê; giới tính nam không ảnh hưởng đáng kể đến xác suất bị đột quỵ
hypertension1 0.57708 8.09e-12 (***) Có ý nghĩa thống kê mạnh; người bị tăng huyết áp có xác suất bị đột quỵ cao hơn đáng kể
ever_marriedYes 0.43177 2.64e-05 (***) Người đã từng kết hôn có xác suất bị đột quỵ cao hơn đáng kể so với người chưa từng kết hôn
residence_typeUrban 0.04195 0.549 Không có ý nghĩa thống kê; khu vực sống không ảnh hưởng đáng kể đến xác suất bị đột quỵ

Ý nghĩa các hệ số hồi quy:

  • genderMale: 0.04261. Giới tính nam có ảnh hưởng dương rất nhẹ đến xác suất bị đột quỵ, nhưng không có ý nghĩa thống kê (p = 0.549), do đó không thể kết luận giới tính ảnh hưởng đến đột quỵ trong mô hình này.

  • hypertension1: 0.57708. Người bị tăng huyết áp có z-score (logit trên chuẩn tắc) cao hơn đáng kể so với người không bị tăng huyết áp, tức là xác suất bị đột quỵ cao hơn rõ rệt. Biến này có ý nghĩa thống kê mạnh (p < 0.001).

  • ever_marriedYes: 0.43177. Người đã từng kết hôn có xác suất bị đột quỵ cao hơn so với người chưa từng kết hôn, và ảnh hưởng này có ý nghĩa thống kê (p < 0.001).

  • residence_typeUrban: 0.04195. Người sống ở khu vực thành thị có xác suất đột quỵ cao hơn một chút so với người sống ở nông thôn, nhưng không có ý nghĩa thống kê (p = 0.549), nên không thể khẳng định có ảnh hưởng thực sự.

NHẬN XÉT CHUNG

Trong mô hình hồi quy probit, hai biến tăng huyết áp và tình trạng hôn nhân là những yếu tố có ảnh hưởng có ý nghĩa thống kê rõ rệt đến xác suất bị đột quỵ.

Ngược lại, các yếu tố như giới tính và khu vực cư trú không cho thấy ảnh hưởng đáng kể về mặt thống kê trong việc dự đoán nguy cơ đột quỵ.

Mô hình gợi ý rằng các yếu tố sức khỏe và hoàn cảnh cá nhân (như bệnh lý nền và tình trạng hôn nhân) đóng vai trò quan trọng hơn đặc điểm nhân khẩu học trong việc xác định xác suất đột quỵ trong tập dữ liệu này.