Bộ dữ liệu có tên là “Lối sống và Sức khỏe ảnh hưởng đến Giấc ngủ” bao gồm 374 hàng và 13 cột, tương đương với 374 khảo sát và 13 biến. Dữ liệu có nhiều biến liên quan đến giấc ngủ và thói quen hàng ngày. Nó bao gồm các chi tiết như giới tính, tuổi tác, nghề nghiệp, thời gian ngủ, chất lượng giấc ngủ, mức độ hoạt động thể chất, mức độ căng thẳng, chỉ số BMI, huyết áp, nhịp tim, số bước hàng ngày và tình trạng rối loạn giấc ngủ có hay không.
Số liệu toàn diện về giấc ngủ: Khám phá thời lượng, chất lượng giấc ngủ và các yếu tố ảnh hưởng đến kiểu ngủ.
Các yếu tố lối sống: Phân tích mức độ hoạt động thể chất, mức độ căng thẳng và các loại BMI.
Sức khỏe tim mạch: Kiểm tra các phép đo huyết áp và nhịp tim.
Phân tích rối loạn giấc ngủ: Xác định sự xuất hiện của các rối loạn giấc ngủ như mất ngủ và ngưng thở khi ngủ.
Biến ‘Person ID’: Mã định danh cho mỗi cá nhân.
Biến ‘Grender’: Giới tính của người đó (male/female).
Biến ‘Age’: Tuổi của người tính theo năm.
Biến ‘Occupation’: Nghề nghiệp hoặc nghề nghiệp của người đó. Trong dữ liệu đã quan sát trên 11 ngành nghề:
Accountant: nghề kế toán.
Doctor: nghề bác sĩ.
Engineer: nghề kỷ sư.
Lawyer: nghề luật sư.
Manager: người quản lí.
Nurse: y tá.
Sales Representative: đại diện kinh doanh.
Salesperson: nhân viên bán hàng.
Scientist: nhà khoa học.
Software Engineer: kỹ sư phần mềm.
Teacher: nghề giáo viên.
Biến ’ Sleep Duration’ (giờ): Số giờ một người ngủ mỗi ngày.
Biến ‘Quality of Sleep’: Đánh giá của người tham gia khảo sát về chất lượng giấc ngủ, với thang điểm từ 1 đến 10.
Biến ‘Physical Activity Level’: Số phút một người tham gia hoạt động thể chất hàng ngày( tính theo phút/ngày).
Biến ‘Stress Level’: Đánh giá chủ quan về mức độ căng thẳng mà một người trải qua, với thang điểm từ 1 đến 10.
Biến ‘BMI Category’: Hạng mục BMI của một người. Với các biểu hiện như là ‘Underweight’ là thiếu cân, ‘Normal hay Normal Weight’ là bình thường, ‘Overweight hay Obese’ là thừa cân).
Biến ‘Boold Pressure’: Đo huyết áp của một người, được biểu thị là huyết áp tâm thu trên huyết áp tâm trương (được viết tâm thu/tâm trương).
Biến ‘Heart Rate’: Nhịp tim khi nghỉ ngơi của một người tính bằng nhịp mỗi phút.
Biến ‘Daily Steps’: Số bước một người thực hiện mỗi ngày.
Biến ‘Sleep Disorder’: Sự hiện diện của chứng rối loạn giấc ngủ ở người đó. Với các biểu hiện như sau:
None: Cá nhân không biểu hiện bất kỳ rối loạn giấc ngủ cụ thể nào.
Insomnia: Cá nhân cảm thấy khó đi vào giấc ngủ hoặc duy trì giấc ngủ, dẫn đến giấc ngủ không đủ hoặc kém chất lượng.
Sleep Apnea: Cá nhân bị ngừng thở trong khi ngủ, dẫn đến giấc ngủ bị gián đoạn và nguy cơ sức khỏe tiềm ẩn.
Đọc dữ liệu:
library(readr)
dlptdldt <- read_csv("2023/dlptdldt.csv")
## Rows: 374 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): Gender, Occupation, BMI Category, Blood Pressure, Sleep Disorder
## dbl (8): Person ID, Age, Sleep Duration, Quality of Sleep, Physical Activity...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Xem cấu trúc của dữ liệu:
str(dlptdldt)
## spc_tbl_ [374 × 13] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ Person ID : num [1:374] 1 2 3 4 5 6 7 8 9 10 ...
## $ Gender : chr [1:374] "Male" "Male" "Male" "Male" ...
## $ Age : num [1:374] 27 28 28 28 28 28 29 29 29 29 ...
## $ Occupation : chr [1:374] "Software Engineer" "Doctor" "Doctor" "Sales Representative" ...
## $ Sleep Duration : num [1:374] 6.1 6.2 6.2 5.9 5.9 5.9 6.3 7.8 7.8 7.8 ...
## $ Quality of Sleep : num [1:374] 6 6 6 4 4 4 6 7 7 7 ...
## $ Physical Activity Level: num [1:374] 42 60 60 30 30 30 40 75 75 75 ...
## $ Stress Level : num [1:374] 6 8 8 8 8 8 7 6 6 6 ...
## $ BMI Category : chr [1:374] "Overweight" "Normal" "Normal" "Obese" ...
## $ Blood Pressure : chr [1:374] "126/83" "125/80" "125/80" "140/90" ...
## $ Heart Rate : num [1:374] 77 75 75 85 85 85 82 70 70 70 ...
## $ Daily Steps : num [1:374] 4200 10000 10000 3000 3000 3000 3500 8000 8000 8000 ...
## $ Sleep Disorder : chr [1:374] "None" "None" "None" "Sleep Apnea" ...
## - attr(*, "spec")=
## .. cols(
## .. `Person ID` = col_double(),
## .. Gender = col_character(),
## .. Age = col_double(),
## .. Occupation = col_character(),
## .. `Sleep Duration` = col_double(),
## .. `Quality of Sleep` = col_double(),
## .. `Physical Activity Level` = col_double(),
## .. `Stress Level` = col_double(),
## .. `BMI Category` = col_character(),
## .. `Blood Pressure` = col_character(),
## .. `Heart Rate` = col_double(),
## .. `Daily Steps` = col_double(),
## .. `Sleep Disorder` = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
Quan sát bảng dữ liệu:
datatable(dlptdldt)
Trong khi quá trình thực hiện tôi chia các biến của dữ liệu theo tính chất của chúng nên hình thành hai loại dữ liệu:
Dữ liệu định lượng bao gồm các biến như sau: ‘Gender’ là giới tính,‘Occupation’ là nghề nghiệp, ‘BMI Category’ là chỉ số BMI, ‘Blood Pressure’ là nhịp tim, ‘Sleep Discorder’ là chứng rối loạn giấc ngử.
Dữ liệu định lượng có các biến như sau: ‘Person ID’ là mã định danh ‘Age’ thể hiện tuổi, ‘Sleep Duration’ thể hiện số giờ đi ngủ, ‘Quality of Sleep’ là điểm đánh giá giấc ngủ, ‘Physical Activity Leverl’ là thời gian hoạt động, ‘Stress Level’ thể hiện độ căn thẳng, ‘Daily Steps’ là số bước đi trong ngày.
Ngủ là một trong trạng thái nghỉ ngơi tạm thời của cơ thể và nó thường xảy ra khi mỗi chúng ta cảm thấy mệt mỏi hay kiệt sức. Hay đúng hơn là một ngày 24 giờ thì chúng ta sẽ dành 8 tiếng ban đêm để ngủ để giúp mọi bộ phận trên cơ thể được thả lỏng. Nhưng nhìn dưới góc độ khoa học, thì ngủ chính là lúc não bộ của chúng ta thực hiện một số công việc quan trọng nhất. Khi ngủ có thể giúp ta điều hòa đồng hồ sinh học của cơ thể, giúp não bộ được nghỉ ngơi, loại bỏ căng thẳng mệt mỏi, tăng cường khả năng tập trung, trí nhớ và sự minh mẫn. Trong lúc này, hoạt động của tim giảm dần và nhịp điệu của hệ tuần hoàn ổn định hơn…
Có thể nói một giấc ngủ tốt là rất quan trọng đối với mỗi con người, nhưng không phải ai cũng có những giấc ngủ vẹn. Nên với dữ liệu hiện tại tôi sễ chon một biến định lượng và một biến định tính tiến hành phân tích và đánh giá giấc ngủ của người tham gia khảo sát.
Một trong những vấn đề dẫn đến con người không có giấc ngủ ngon có thể là do người đó đang có chứng rối loạn giâc ngủ như cảm thấy khó đi vào giấc ngủ hoặc duy trì giấc ngủ, dẫn đến giấc ngủ không đủ hoặc kém chất lượng hay bị ngừng thở trong khi ngủ, dẫn đến giấc ngủ bị gián đoạn. Nên tôi chọn biến ‘Sleep Disorder’ làm biến phụ thuộc để xem xét các nguyên nhân dẫn đên tình trạng này.
Thông kê mô tả
d <- dlptdldt
table(d$`Sleep Disorder`)
##
## Insomnia None Sleep Apnea
## 77 219 78
d |> ggplot(aes(x = `Sleep Disorder`, y = after_stat(count))) + geom_bar(fill = 'blue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + theme_classic() + labs(x = 'Giấc ngủ', y = 'Số người')
Tôi chọn biến ‘Quality of Sleep’ làm biến định lượng phụ thuộc để tiến hành phân tích xem đánh giá về chất lượng có liên kết hay mức độ phục thuộc của biến với các biến khác như thời gian ngủ, thời gian hoạt động, hay số bước đi bộ trong ngày…
Mô tá dữ liệu
table(d$`Quality of Sleep`)
##
## 4 5 6 7 8 9
## 5 7 105 77 109 71
d |> ggplot(aes(x = `Quality of Sleep`, y = after_stat(count))) + geom_bar(fill = 'skyblue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'magenta', vjust = - .5) + theme_classic() + labs(x = 'Điểm đánh giá giấc ngủ', y = 'Số người') + coord_flip()
table(d$Occupation)
##
## Accountant Doctor Engineer
## 37 71 63
## Lawyer Manager Nurse
## 47 1 73
## Sales Representative Salesperson Scientist
## 2 32 4
## Software Engineer Teacher
## 4 40
Sau đó, tôi chia biến thành 2 nhóm ngành:
Nhóm ngành ít di chuyển như bác sĩ, y tá, đại điên kinh doanh, nhà khoa học, kỹ sư phần mềm và giáo viên.
Nhóm ngành di chuyển nhiều như kế toán, người quản lý, kỹ sư, luật sư, nhân viên bán hàng.
Ver1 <- d %>% mutate(nghe = case_when( Occupation== "Doctor" ~ 1, Occupation == "Accountant" ~ 3, Occupation == "Nurse" ~ 1, Occupation== "Engineer" ~ 3, Occupation== "Sales Representative" ~ 1, Occupation== "Lawyer" ~ 3, Occupation== "Manager" ~ 3, Occupation== "Salesperson" ~ 3, Occupation== "Scientist" ~ 1, Occupation== "Software Engineer" ~ 1, Occupation== "Teacher" ~ 1))
Ver1 <-cut(Ver1$nghe, breaks=c(0,1,3), labels=c('Ngành di chuyển nhiều', 'Ngành di chuyển ít'))
table (Ver1)
## Ver1
## Ngành di chuyển nhiều Ngành di chuyển ít
## 194 180