Trên thế giới mỗi người đều nhiều hoạt động riêng của mình như học tập, du lịch, vui chơi, làm việc,… Nhưng có một vài hoạt động mà bất kỳ người nào cũng phải thực hiên là ăn uống và đi ngủ. Trong bài tiểu luận này tôi tìm hiêu và giấc ngủ của con người. Nhưng chúng ta đã biết 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ũng là khi ngủ các cơ quan nội tiêt của con người tiến hành đào tải các độc tốt tích tự lại trong cơ thể.Có thể nói, việc ngủ sẽ trở thành liều thuốc bổ tốt nhất mỗi ngày. Nhưng khi chúng ta mất ngủ (tình trạng rối loạn giấc ngữ) thì sẽ có tác động xấu đến cơ thể dẫn đến nguy cơ mắc một số bệnh ung thư cao hơn, làm vết thương trên da khó lành và da cũng dễ lão hóa hơn, làm tăng nguy cơ mắc bệnh tim và tiểu đường, dễ mắc bệnh hơn vì hệ miễn dịch không hoạt động tốt khi bạn mệt mỏi, buồn ngủ sẽ khiến bạn khó chịu và cáu kỉnh. Và khi tiến hành tìm hiêu, tôi đã tìm ra bộ dữ liệu ‘Sleep Health and Lifestyle’ nói về hoạt động, thối quen và các biểu hiện của tình trạng rối loạn giấc ngủ. Tôi sẽ đi tiến hành phân tích các biến trong bộ dữ liệu này và xem xét các yếu tố ảnh hưởng đến giấc ngủ.
Bộ dữ liệu có tên là ‘Sleep Health and Lifestyle’ 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 nghề 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á về chất lượng giấc ngủ của người tham gia khảo sát, 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:
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.
d <- dlptdldt
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)
d <- dlptdldt
Trong quá trình mô tả dữ liệu và tìm hiểu về các biến. Sau đây, tôi tiến hành xác định tính chất của biến rồi dựa vào các tiêu thức thống kê (đơn vị của tổng thể) và chia các biến của dữ liệu thành hai loại:
Tiêu thức thuộc tính (biến định tính): là loại tiêu thức không được biểu hiện trực tiếp bàng các con số, mang tính chất giúp chúng ta giải thích hay chứng minh. Trong bộ đữ liệu này các biến định tính là các biến như sau: ‘Gender’ chỉ 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ử.
Tiêu thức số lượng (biến định lượng): là loại tiêu thức có biểu hiện trực tiếp bằng các con số mang tính chất giải đáp các câu hỏi. Các biến như sau trong bộ dữ liệu là định lượng: ‘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.
Nhìn chung, khi tiến hành phân các dữ liệu thành hai loại qua tiêu thức chủa chúng. Cho thấy trong 13 biến của bộ dưx liệu có 5 biến định tính và 7 biến định lượng.
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 làm biến phụ thuộc để có tiến hành phân tích và đánh giá giấc ngủ của người tham gia khảo sát. Biến phụ thuôc được chọn phải là liến có liên quan đên thực trạng về giấc ngủ của những người tham giá khảo sát. Từ đấy, tôi có thể tiến hành phân tích tác động mà các biến khác lên giấc ngủ.
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ó tình trạ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ủ, làm cho 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.
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')
Đế thuận tiện hơn cho việc sử dụng bộ dữ liệu, tôi thực hiện việc gán
toàn bộ dữ liệu cho một biến tên d. Sau đó, thông quan việc
lâp bảng và mô tả dữ liệu bằng biểu đồ cột đưng ta có thể thấy hơn 40%
người có các biểu hiện rối loạn giấc ngủ. Cụ thể, người ngủ không đủ
giấc (biểu hiện là Insomnia) chiếm 20,59% tương đương 77 người, người có
giấc ngủ bị gián đoạn (biểu hiện là Sleep Apnea) là 20,86% có 78 người.
Suy ra phần trăm người có hai triệu trứng trên là gần như bằng nhau. Còn
lại, 219 người chiếm 58,56% là không có biểu hiện.
Trong bài tiểu luận này tôi tiến hành nghiên cứu giấc ngủ nên ta tạo
ra một biến mới có tên Sleep và thiết lập hai biến thành
hai biẻu hiện là:
Không có triệu chứng mất ngủ là no
Người có triệu chứng mất ngủ là yes: Biểu hiện này
được gộp từ việc cảm thấy khó ngủ(kí hiệu là Insomnia) và
gián đoạn gián đoạn giấc ngủ (kí hiệu là Sleep Apnea) của
biến biến‘Sleep Disorder’
Sleep <- mapvalues(d$`Sleep Disorder`, from= c('Insomnia', 'None', 'Sleep Apnea' ), to=c('yes', 'no','yes'))
table(Sleep)
## Sleep
## no yes
## 219 155
d <- data.frame(d, Sleep)
Theo thống kê người có triệu chứng là 155 người và không có triệu chứng là 219 người
Các tình trạng mất ngủ có phải là cị ảnh hưởng bởi giới tính không?
Số lần tim người dập khi ngũ có quan ảnh hưởng thể nào đến những người mất ngủ?
Người cân ngủ bao lâu để không bị rối loạn giấc ngủ không?
Mức dộ căng thẳng nào là một mất
summary(d$Age)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 27.0 35.2 43.0 42.2 50.0 59.0
ggplot(data = d, mapping = aes(x = Age)) + geom_density(size = 1, alpha = 0.2, colour="#E69F00")+ labs(title = "Độ tuổi")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
First quartile = 2 có nghĩa là 25% đối tượng nghiên cứu có độ tuổi bằng hoặc nhỏ hơn 2 năm. Tương tự, Third quartile = 6 có nghĩa là 75% đối tượng có độ tuổi bằng hoặc thấp hơn 6 năm. Tất nhiên số trung vị (median) 4 cũng có nghĩa là 50% đối tượng có năm đi làm 4,77 trở xuống
summary(d$Sleep.Duration)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 5.80 6.40 7.20 7.13 7.80 8.50
plot(d$Sleep.Duration, type='l',col = '#9C0824', axes=FALSE, xlab='', ylab='', ,main='')
box(col='#BCCFB4')
mtext('Biểu đồ thời gian ngủ', adj=0, side=3)
axis(side=1, at=c(0,50, 150, 250, 350))
Câu lệnh summary() cho biến Sleep Duration (đánh giá về
mức độ căng thẳng trong công việc) của những người tham gia khảo sát, ta
có thể nhận thấy người ngủ ít nhất là 5,8 h, cao nhất là điểm 8,5h,
trung bình điểm số là 7,13, có 25% số người có điểm là 6,4, 50% người
7,2h, thêm vào đó có 75% người nhỏ hơn điểm 7,8.
h <- d %>% group_by(Physical.Activity.Level) %>% reframe(n = n()) %>% mutate(table(d$Physical.Activity.Level), per = n/sum(n))
d %>% group_by(Physical.Activity.Level) %>% reframe(n = n()) %>% mutate(table(d$Physical.Activity.Level), per = n/sum(n)) |> ggplot(aes(x = '', y = per, fill = Physical.Activity.Level)) + geom_col()
datatable(h)
Nhìn vào bản hầu hết mọi người đều tham gia các hoạt động thể chất từ 30 -90 phút 1 ngày nhưng nhiều nhất là hoạt động 60 phút mỗi ngày.
summary(d$Quality.of.Sleep)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.00 6.00 7.00 7.31 8.00 9.00
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()
Theo việc thực hiện câu lệnh summary() cho biến ‘Quality of Sleep’ (số điểm đánh giá giấc ngủ) của những người tham gia khảo sát, ta có thể nhận thấy người thấp điểm nhất là 4, cao nhất là điểm 8, trung bình điểm số là 7,31, có 25% số người có điểm là 6 năm, 50% người 7 điểm, thêm vào đó có 75% người nhỏ hơn điểm 9.
Sau đó, để biển chính xác về điểm của từng người ta có thể quan sát dữ liệu trên bản và biểu đồ cột ngang tôi nhình thấy:
Có 5 người 4 điểm khoảng 1,34%
Có 7 người 5 điểm khoảng 1,87%
Có 105 người 6 điểm khoảng 28,07%
Có 77 người 7 điểm khoảng 20,59%
Có 109 người 8 điểm khoảng 29,14%
Có 71 người 9 điểm khoảng 18,98%
Phần đông người tham gia được 7-9 điểm, nhiều nhất là người 9 điêm, trong khi đó người giấc ngủ 4 điểm là rất thấp chỉ hơn 1% trên tổng số người tham gia khảo sát.
tmp <- table(d$Stress.Level)
w <- d |> group_by(Stress.Level) |> reframe(n = n()) |> mutate(tmp, per = n/sum(n))
datatable(w)
w |> ggplot(aes(x = '', y = per,fill = Stress.Level)) + geom_col() + coord_polar('y')
Nhìn quan các mức độ căng thẳng trong công việc của sáu cấp độ từ 3 đến 6 gần bằng nhau. Trong biến có thể thấy nhiều nhất là những người căng thẳng ở mức 3 có 71 người khoảng 18,98%, ít nhất là ở mức 6 chiếm 12,3%.
table(d$Heart.Rate)
##
## 65 67 68 69 70 72 73 74 75 76 77 78 80 81 82 83 84 85 86
## 67 2 94 2 76 69 2 2 36 2 2 5 3 2 1 2 2 3 2
table(d$Heart.Rate)/sum(table(d$Heart.Rate))
##
## 65 67 68 69 70 72 73 74
## 0.179144 0.005348 0.251337 0.005348 0.203209 0.184492 0.005348 0.005348
## 75 76 77 78 80 81 82 83
## 0.096257 0.005348 0.005348 0.013369 0.008021 0.005348 0.002674 0.005348
## 84 85 86
## 0.005348 0.008021 0.005348
plot(d$Heart.Rate, type='l', col = 'blue', axes=FALSE,xlab='', ylab='')
box(col='red')
mtext('Biểu đồ nhịp tim', adj=1, side=3)
axis(side=1)
Trong bảng hai chiều ta thấy, người tham gia khảo sát có nhịp tim phân bố từ 65 đến 86 nhịp/ phút. Phần lớn người tham gia khảo sát có nhịp tim ở khức đâu (65-68)nhịp/ phút.
table(d$Daily.Steps)
##
## 3000 3300 3500 3700 4000 4100 4200 4800 5000 5200 5500 5600 6000
## 3 2 3 2 3 2 2 2 68 2 4 2 68
## 6200 6800 7000 7300 7500 8000 10000
## 1 3 66 2 2 101 36
mean(d$Daily.Steps)
## [1] 6817
sd <- sd(d$Daily.Steps)
sd
## [1] 1618
sd/sqrt(length(d$Daily.Steps))
## [1] 83.66
ggplot(data = d, aes(x = Daily.Steps)) + geom_histogram(binwidth = 1000, color = "red", fill = "blue", alpha = 0.1)
Nhìn vào thống kê ta thấy có 20 biển hiện trong biến với số bước đi
trung bình là 6817 bước. Hàm sd() có kết quả 1618 được dùng để tính sai
số chuẩn và độ lệch chuẩn của biến tính ra được là 83,66
Với với biến định lượng ta có thể thống kê các chỉ đơn giản cùng một lúc bằng lệnh summary :
fd <- data.frame(d$Age,d$Sleep.Duration,d$Quality.of.Sleep,d$Physical.Activity.Level,d$Stress.Level,d$Blood.Pressure,d$Heart.Rate,d$Daily.Steps)
summary(fd)
## d.Age d.Sleep.Duration d.Quality.of.Sleep d.Physical.Activity.Level
## Min. :27.0 Min. :5.80 Min. :4.00 Min. :30.0
## 1st Qu.:35.2 1st Qu.:6.40 1st Qu.:6.00 1st Qu.:45.0
## Median :43.0 Median :7.20 Median :7.00 Median :60.0
## Mean :42.2 Mean :7.13 Mean :7.31 Mean :59.2
## 3rd Qu.:50.0 3rd Qu.:7.80 3rd Qu.:8.00 3rd Qu.:75.0
## Max. :59.0 Max. :8.50 Max. :9.00 Max. :90.0
## d.Stress.Level d.Blood.Pressure d.Heart.Rate d.Daily.Steps
## Min. :3.00 Length:374 Min. :65.0 Min. : 3000
## 1st Qu.:4.00 Class :character 1st Qu.:68.0 1st Qu.: 5600
## Median :5.00 Mode :character Median :70.0 Median : 7000
## Mean :5.38 Mean :70.2 Mean : 6817
## 3rd Qu.:7.00 3rd Qu.:72.0 3rd Qu.: 8000
## Max. :8.00 Max. :86.0 Max. :10000
Nói chung, kết quả này đơn giản và các viết tắt cũng có thể dễ hiểu. Chú ý, trong kết quả trên, có hai chỉ số “1st Qu” và “3rd Qu” có nghĩa là first quartile (tương đương với vị trí 25%) và third quartile (tương đương với vị trí 75%) của một biến số. Với dữ liệu định tính t còn có thể thống tính về sai số chuẩn và độ lệch chuẩn. Đê tính tón đồng thời ta có thể thiết kêt một hàm như sau:
ham <- function(x){
sd <- sd(x)
se <- sd/sqrt(length(x))
c(`Sai sô chuẩn`=sd,`Độ lệch chuẩn`=se)
}
ham(d$Age)
## Sai sô chuẩn Độ lệch chuẩn
## 8.6731 0.4485
ham(d$Sleep.Duration)
## Sai sô chuẩn Độ lệch chuẩn
## 0.79566 0.04114
ham(d$Quality.of.Sleep)
## Sai sô chuẩn Độ lệch chuẩn
## 1.19696 0.06189
ham(d$Physical.Activity.Level)
## Sai sô chuẩn Độ lệch chuẩn
## 20.831 1.077
ham(d$Stress.Level)
## Sai sô chuẩn Độ lệch chuẩn
## 1.77453 0.09176
ham(d$Heart.Rate)
## Sai sô chuẩn Độ lệch chuẩn
## 4.1357 0.2139
ham(d$Daily.Steps)
## Sai sô chuẩn Độ lệch chuẩn
## 1617.92 83.66
Tôi cung ding hàm đẻ tiên hành vễ biểu đồ dạng bánh cho các biến:
Biểu đồ bánh
mytabl <- function(x, group) {
tmp <- table(x$group)
w <- x %>%
group_by({{group}}) %>%
reframe(n = n()) %>%
mutate(tmp, per = n/sum(n))
dt <- w |> ggplot(aes(x = '', y = per)) + geom_col(aes(fill={{group}}), stat = "identity", params = list(na.rm = FALSE))+ coord_polar('y')
list( `Đồ thị bánh`=dt)
}
mytabl(d, Age)
## Warning in geom_col(aes(fill = {: Ignoring unknown parameters: `stat` and
## `params`
## $`Đồ thị bánh`
mytabl(d, Sleep.Duration)
## Warning in geom_col(aes(fill = {: Ignoring unknown parameters: `stat` and
## `params`
## $`Đồ thị bánh`
mytabl(d, Quality.of.Sleep)
## Warning in geom_col(aes(fill = {: Ignoring unknown parameters: `stat` and
## `params`
## $`Đồ thị bánh`
mytabl(d, Physical.Activity.Level)
## Warning in geom_col(aes(fill = {: Ignoring unknown parameters: `stat` and
## `params`
## $`Đồ thị bánh`
mytabl(d, Stress.Level)
## Warning in geom_col(aes(fill = {: Ignoring unknown parameters: `stat` and
## `params`
## $`Đồ thị bánh`
mytabl(d, Heart.Rate)
## Warning in geom_col(aes(fill = {: Ignoring unknown parameters: `stat` and
## `params`
## $`Đồ thị bánh`
mytabl(d, Daily.Steps)
## Warning in geom_col(aes(fill = {: Ignoring unknown parameters: `stat` and
## `params`
## $`Đồ thị bánh`
Ngoài ra, tôi còn tiên hành vẽ thêm các đường mật độ cho biến :
h1 <- ggplot(data = d, mapping = aes(x = Age)) + geom_density(size = 1, alpha = 0.2, colour="#E69F00")+ labs(title = "Độ tuổi")
h2 <- ggplot(data = d, mapping = aes(x = Sleep.Duration)) + geom_density(size = 1, alpha = 0.2, colour="#56B4E9")+ labs(title = "Thời gian ngủ")
h3 <- ggplot(data = d, mapping = aes(x = Quality.of.Sleep)) + geom_density(size = 1, alpha = 0.2, colour="#56B4E9")+ labs(title = "Chất lượng gian ngủ")
h4 <- ggplot(data = d, mapping = aes(x = Physical.Activity.Level)) + geom_density(size = 1, alpha = 0.2, colour="#F0E442")+ labs(title = "Hoạt động")
h5 <- ggplot(data = d, mapping = aes(x = Stress.Level)) + geom_density(size = 1, alpha = 0.2, colour="#0072B2")+ labs(title = "Căng thẳng")
h6 <- ggplot(data = d, mapping = aes(x = Heart.Rate)) + geom_density(size = 1, alpha = 0.2, colour="#D55E00")+ labs(title = "Nhịp tim")
h7 <- ggplot(data = d, mapping = aes(x = Daily.Steps)) + geom_density(size = 1, alpha = 0.2, colour="#CC79A7")+ labs(title = "Đi bộ")
plot_grid(h1, h2, h3, h4, h5, h6, h7, labels = c('A', 'B', 'C', 'D', 'E', 'F', 'G'), size = 10)
## Warning in as_grob.default(plot): Cannot convert object of class numeric into a
## grob.
table(d$Gender)
##
## Female Male
## 185 189
table(d$Gender)/sum(table(d$Gender))
##
## Female Male
## 0.4947 0.5053
d |> ggplot(aes(x = Gender, y = after_stat(count))) + geom_bar(fill = 'blue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'magenta', vjust = - .5) + theme_classic() + labs(x = 'Giới tính', y = 'Số người') + coord_flip()
Biến gander là biến định tính, thực hiện một phép đếm đơn giản ta thấy có 185 (chiếm 50,5%) người nam và 189 người nữ (chiếm 49,5%) tham gia vào cuộc khảo sát.
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
x <- c(37, 71, 63, 47, 1, 73, 2, 32, 4, 4, 40)
labels <- c('Accountant', 'Doctor', 'Engineer', 'Lawyer','Manager', 'Nurse', 'Sales Representative', 'Salesperson', 'Scientist', 'Software Engineer', 'Teacher')
piepercent<- round(100*x/sum(x), 1)
pie(x, labels = piepercent, main = 'Biểu đồ nghề nghiệp',col = rainbow(length(x)))
legend('topright', c('Accountant', 'Doctor', 'Engineer', 'Lawyer','Manager', 'Nurse', 'Sales Representative', 'Salesperson', 'Scientist', 'Software Engineer', 'Teacher'), cex = 0.8, fill = rainbow(length(x)))
Trong 11 ngành được ghi nhận trong bộ dữ liệu ta có thể nhận thấy
ngành đại diện kinh doanh Sales Representative là nhiều
nhât có 73 người (19,5%),tiếp là ngành bác sĩ Doctor với 70
người (19%), ít nhất là người quản lí Manager chỉ 1 người
(0,3%)
table(d$BMI.Category)
##
## Normal Normal Weight Obese Overweight
## 195 21 10 148
d |> ggplot(aes(x =BMI.Category, y = after_stat(count))) + geom_bar(fill = 'green') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'blue', vjust = - .4) + theme_classic() + labs(title = 'Đồ Thị thể hiện thể trọng', x = 'Thể trọng', y = 'Số người')
Thống kê theo biến ‘BMI Category’: Hạng mục BMI của một người. ta thấy có 4 biểu hiện Normal, Normal Weight, Obese, Overweight. Normal là biểu hiện nhiều nhất hơn 52% #### Biến Boold Pressure (huyết áp)
table(d$Blood.Pressure)
##
## 115/75 115/78 117/76 118/75 118/76 119/77 120/80 121/79 122/80 125/80 125/82
## 32 2 2 2 1 2 45 1 1 65 4
## 126/83 128/84 128/85 129/84 130/85 130/86 131/86 132/87 135/88 135/90 139/91
## 2 2 3 2 99 2 2 3 2 27 2
## 140/90 140/95 142/92
## 4 65 2
ggplot(data = d) + geom_bar(mapping = aes(x = Blood.Pressure, fill = Blood.Pressure))
Có thể nói đat là biến nhiều biểu hiện nhất của bộ dữ liệu với hai 25 nhóm huyêt áp khác nhau của người tham gia khảo sát ta có thể biết nhóm nhiều nhất có 99 người có huyết áp là 130/85.
Sau đây, tôi tiến hành thống kê mô tả làn lượt các biến độc
lập với biến phụ thục ‘Sleep Disorder’( nói chính xác hơn là biến đã
được mô phỏng thành phân phối Nhị thức Sleep)
d |> ggplot(aes(x = Sleep , 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) + facet_grid(. ~ Gender) + labs(x = 'Giấy ngủ', y = 'Số người')
ds <- table(d$Sleep,d$Gender)
ds
##
## Female Male
## no 82 137
## yes 103 52
ds1 <- prop.table(ds)
ds1
##
## Female Male
## no 0.2193 0.3663
## yes 0.2754 0.1390
addmargins(ds1)
##
## Female Male Sum
## no 0.2193 0.3663 0.5856
## yes 0.2754 0.1390 0.4144
## Sum 0.4947 0.5053 1.0000
Khi tiến hành nhận xét giấc ngủ và giới tính của những người tham gia khảo sát. Người đều có triệu chứng mất ngủ là nữ giới cao hơn nam giới chênh lệch nhau khoảng 14%.
epitab(ds, method = 'oddsratio')
## $tab
##
## Female p0 Male p1 oddsratio lower upper p.value
## no 82 0.4432 137 0.7249 1.0000 NA NA NA
## yes 103 0.5568 52 0.2751 0.3022 0.1963 0.4651 3.903e-08
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Giá trị chênh lệch cho chúng ta biết nữ giới có triệt chứng mất ngủ khoảng 55,68% với nữ giới khi không có triệt chứng mất ngủ.
Thực hiện bài toán kiểm định giả thuyết sự bằng nhau về tỷ lệ ở các biến với 2 tổng thể của biến Sleep, nghĩa là chúng ta thực hiện bài toán:
Kiểm định \(H_0\):p1=p2
Ước lượng sự chênh lệch về tỷ lệ một người nam có giới tính về giấc ngủ giữa thấp và cao
tmpm <- d[d$Sleep == 'yes',]
tmpf <- d[d$Sleep == 'no',]
tmpm3 <- tmpm[tmpm$Gender == 'Male',]
tmpf3 <- tmpf[tmpf$Gender == 'Male',]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 29, df = 1, p-value = 6e-08
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.3937 -0.1864
## sample estimates:
## prop 1 prop 2
## 0.3355 0.6256
Khoảng ước lượng tỷ lệ những người nam có “ Có triệu chứng mất ngủ” với độ tin cậy 95% là: \(-0.3937 < p < -0.1864\)
Giả thuyết H0: X,Y độc lâp;
Đối thuyết H1: X,Y không độc lập
Ta tiến hành kiểm định tính độc lập của biến Sleep(X) và biến Gender(Y) sau bằng R theo các bước được kết quả:
chisq.test(ds)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: ds
## X-squared = 29, df = 1, p-value = 6e-08
Từ bảng kết quả ta có p-value = \(6.10^{-8}\) < 0,05: Bác bỏ H0
Kết luận, điểm đánh giá giấc ngủ với với giới tính của những người thực hiện khảo sát có liên hệ với nhau, với mức ý nghĩa 5%
ge <- table(d$Sleep,d$Age)
ge
##
## 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 48 49 50 51 52
## no 1 2 9 11 17 17 12 0 11 8 20 18 13 4 11 6 15 2 3 0 1 2 5 3
## yes 0 3 4 2 1 0 1 2 1 4 0 2 2 0 1 3 19 28 11 3 10 18 3 6
##
## 53 54 55 56 57 58 59
## no 16 7 0 2 1 0 2
## yes 1 0 2 0 8 6 14
ge1 <- prop.table(ge)
ge1
##
## 27 28 29 30 31 32 33 34
## no 0.002674 0.005348 0.024064 0.029412 0.045455 0.045455 0.032086 0.000000
## yes 0.000000 0.008021 0.010695 0.005348 0.002674 0.000000 0.002674 0.005348
##
## 35 36 37 38 39 40 41 42
## no 0.029412 0.021390 0.053476 0.048128 0.034759 0.010695 0.029412 0.016043
## yes 0.002674 0.010695 0.000000 0.005348 0.005348 0.000000 0.002674 0.008021
##
## 43 44 45 48 49 50 51 52
## no 0.040107 0.005348 0.008021 0.000000 0.002674 0.005348 0.013369 0.008021
## yes 0.050802 0.074866 0.029412 0.008021 0.026738 0.048128 0.008021 0.016043
##
## 53 54 55 56 57 58 59
## no 0.042781 0.018717 0.000000 0.005348 0.002674 0.000000 0.005348
## yes 0.002674 0.000000 0.005348 0.000000 0.021390 0.016043 0.037433
ggplot(data=d,aes(x=Age,fill=Sleep)) + geom_bar(position = "fill") + scale_color_colorblind() + ggthemes::scale_fill_colorblind()
Trong khảo các, ta thấy độ tuổi củ người từ (27-59) tuổi. Theo biểu đồ thể hiện thì càng lớn tuổi mật độ cảu nhựng nguòi có triệu chứng mất ngủ sẽ càng cao.
logistic.display(glm(factor(Sleep)~Age,family=binomial, data =d))
##
## Logistic regression predicting factor(Sleep) : yes vs no
##
## OR(95%CI) P(Wald's test) P(LR-test)
## Age (cont. var.) 1.12 (1.09,1.16) < 0.001 < 0.001
##
## Log-likelihood = -216.6794
## No. of observations = 374
## AIC value = 437.3589
Tỉ lệ chênh lệch giữa tuổi và các triệu chứng mất ngủ là 1,12 giao động trong khoảng (1.09,1.16)
Giả thuyết H0: X,Y độc lâp;
Đối thuyết H1: X,Y không độc lập
Ta tiến hành kiểm định tính độc lập X và Y bằng R theo các bước được kết quả sau:
chisq.test(ge)
## Warning in chisq.test(ge): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: ge
## X-squared = 208, df = 30, p-value <2e-16
Từ bảng kết quả ta có p-value =\(2*10^{-6}\) <0,05: Bác bỏ H0
Kết luận, việc mất ngủ với số tuổi của những người thực hiện khảo sát là có quan hệ với nhau, với mức ý nghĩa 5%
Thực hiện bài toán kiểm định giả thuyết sự bằng nhau về tỷ lệ ở các biến với 2 tổng thể của biến Sleep, nghĩa là chúng ta thực hiện bài toán:
Kiểm định \(H_0\):p1=p2
Ước lượng sự chênh lệch về tỷ lệ một người có thời gian ngủ trên 8h có tỉ lệ mất ngủ về giấc ngủ
tmpm3 <- tmpm[tmpm$Age > 40,]
tmpf3 <- tmpf[tmpf$Age > 40,]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 94, df = 1, p-value <2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.4219 0.6002
## sample estimates:
## prop 1 prop 2
## 0.8581 0.3470
Khoảng ước lượng tỷ lệ những người có tuổi lớn hơn 40 và “ Triệu chứng mất ngủ ” có độ tin cậy 95% là:$ 0.4219 <p< 0.6002$
ggplot(d) + geom_bar(aes(Sleep, fill = Occupation),position = 'identity')
a <- table(d$Sleep,d$Occupation)
addmargins(a)
##
## Accountant Doctor Engineer Lawyer Manager Nurse Sales Representative
## no 30 64 57 42 1 9 0
## yes 7 7 6 5 0 64 2
## Sum 37 71 63 47 1 73 2
##
## Salesperson Scientist Software Engineer Teacher Sum
## no 2 2 3 9 219
## yes 30 2 1 31 155
## Sum 32 4 4 40 374
a1 <- prop.table(a)
a1
##
## Accountant Doctor Engineer Lawyer Manager Nurse
## no 0.080214 0.171123 0.152406 0.112299 0.002674 0.024064
## yes 0.018717 0.018717 0.016043 0.013369 0.000000 0.171123
##
## Sales Representative Salesperson Scientist Software Engineer Teacher
## no 0.000000 0.005348 0.005348 0.008021 0.024064
## yes 0.005348 0.080214 0.005348 0.002674 0.082888
Nhìn vào bảng hai chiều và biểu đồ ta thấy y tá là nghề có nhiều triệu chứng mất ngủ nhất có 64/73 người. Trong khi đó kỉ sư là ngành có ít người bị mất ngủ có 6/63 người.
Giả thuyết H0: X,Y độc lâp;
Đối thuyết H1: X,Y không độc lập
Ta tiến hành kiểm định tính độc lập X và Y bằng R theo các bước được kết quả sau:
chisq.test(a)
## Warning in chisq.test(a): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: a
## X-squared = 208, df = 10, p-value <2e-16
Từ bảng kết quả ta có p-value =\(2*10^{-6}\) <0,05: Bác bỏ H0
Kết luận, việc mất ngủ với nghề nghiệp của những người thực hiện khảo sát là có quan hệ với nhau, với mức ý nghĩa 5%
Thực hiện bài toán kiểm định giả thuyết sự bằng nhau về tỷ lệ nghề y tá có bị mất ngủ không , nghĩa là chúng ta thực hiện bài toán kiểm định
Giả sử :H0:p1=p2
tmpm <- d[d$Sleep == 'yes',]
tmpf <- d[d$Sleep == 'no',]
tmpm3 <- tmpm[tmpm$Occupation == 'Nurse',]
tmpf3 <- tmpf[tmpf$Occupation == 'Nurse',]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 78, df = 1, p-value <2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.2845 0.4592
## sample estimates:
## prop 1 prop 2
## 0.4129 0.0411
Ta được khoảng ước lượng tỷ lệ những người làm nghề y tá có “Tồn tại triệu chứng mất ngủ” với độ tin cậy 95% là: 0.4129< p < 0.0411
ggplot(data=d,aes(x=Sleep.Duration,fill=Sleep)) + geom_histogram(binwidth = 2)
f <- table(d$Sleep,d$Sleep.Duration)
f
##
## 5.8 5.9 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.1 7.2 7.3 7.4 7.5 7.6
## no 0 0 17 11 9 0 1 1 2 2 0 3 18 33 12 3 5 9
## yes 2 4 14 14 3 13 8 25 18 3 5 0 1 3 2 2 0 1
##
## 7.7 7.8 7.9 8 8.1 8.2 8.3 8.4 8.5
## no 23 25 7 3 2 2 4 14 13
## yes 1 3 0 10 13 9 1 0 0
f1 <- prop.table(f)
f1
##
## 5.8 5.9 6 6.1 6.2 6.3 6.4 6.5
## no 0.000000 0.000000 0.045455 0.029412 0.024064 0.000000 0.002674 0.002674
## yes 0.005348 0.010695 0.037433 0.037433 0.008021 0.034759 0.021390 0.066845
##
## 6.6 6.7 6.8 6.9 7.1 7.2 7.3 7.4
## no 0.005348 0.005348 0.000000 0.008021 0.048128 0.088235 0.032086 0.008021
## yes 0.048128 0.008021 0.013369 0.000000 0.002674 0.008021 0.005348 0.005348
##
## 7.5 7.6 7.7 7.8 7.9 8 8.1 8.2
## no 0.013369 0.024064 0.061497 0.066845 0.018717 0.008021 0.005348 0.005348
## yes 0.000000 0.002674 0.002674 0.008021 0.000000 0.026738 0.034759 0.024064
##
## 8.3 8.4 8.5
## no 0.010695 0.037433 0.034759
## yes 0.002674 0.000000 0.000000
Qua biểu đồ và bảng ta tiến hành nhận xét tình trạng giấc ngủ và thời gian ngủ của những người tham gia khảo sát cho thấy người ngủ nhiều sễ không có các triệu chứng trên,
logistic.display(glm(factor(Sleep)~Sleep.Duration,family=binomial, data =d))
##
## Logistic regression predicting factor(Sleep) : yes vs no
##
## OR(95%CI) P(Wald's test) P(LR-test)
## Sleep.Duration (cont. var.) 0.39 (0.29,0.53) < 0.001 < 0.001
##
## Log-likelihood = -231.4696
## No. of observations = 374
## AIC value = 466.9393
Tỉ lệ chênh lệch giữa thời gian ngủ và các triệu chứng mất ngủ là 0,39 giao động trong khoảng (0.29,0.53)
Thực hiện bài toán kiểm định giả thuyết sự bằng nhau về tỷ lệ ở các biến với 2 tổng thể của biến Sleep, nghĩa là chúng ta thực hiện bài toán:
Kiểm định \(H_0\):p1=p2
Ước lượng sự chênh lệch về tỷ lệ một người có thời gian ngủ trên 8h có tỉ lệ mất ngủ về giấc ngủ
tmpm3 <- tmpm[tmpm$Sleep.Duration > 8,]
tmpf3 <- tmpf[tmpf$Sleep.Duration > 8,]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 0.024, df = 1, p-value = 0.9
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.09101 0.06815
## sample estimates:
## prop 1 prop 2
## 0.1484 0.1598
Khoảng ước lượng tỷ lệ những người có tthời gian ngủ trên 8h và “ Triệu chứng mất ngủ ” có độ tin cậy 95% là:$ -0.09101 <p < 0.06815$
Giả thuyết H0: X,Y độc lâp;
Đối thuyết H1: X,Y không độc lập
Ta tiến hành kiểm định tính độc lập của biến Sleep(X) và biến Sleep.Duration(Y) sau bằng R theo các bước được kết quả:
chisq.test(f)
## Warning in chisq.test(f): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: f
## X-squared = 215, df = 26, p-value <2e-16
Từ bảng kết quả ta có p-value = \(2*10^{-16}\)<0,05: Bác bỏ H0
Kết luận, điểm đánh giá giấc ngủ với thời gian ngủ của những người thực hiện khảo sát có liên hệ với nhau, với mức ý nghĩa 5%
po <- table(d$Sleep,d$Physical.Activity.Level)
po
##
## 30 32 35 40 42 45 47 50 55 60 65 70 75 80 85 90
## no 60 0 0 2 2 6 1 4 6 64 0 3 36 2 0 33
## yes 8 2 4 4 0 62 0 0 0 6 2 0 31 0 2 34
ggplot(d, aes(x=Physical.Activity.Level, fill=Sleep)) + geom_bar(position = "fill") + scale_color_canva() + ggthemes::scale_fill_canva()
Người co các triệu chứng mất ngủ thường có số phút hoạt động là 45’ và 90’
logistic.display(glm(factor(Sleep)~Physical.Activity.Level,family=binomial, data =d))
##
## Logistic regression predicting factor(Sleep) : yes vs no
##
## OR(95%CI) P(Wald's test)
## Physical.Activity.Level (cont. var.) 1.0068 (0.9969,1.0169) 0.178
##
## P(LR-test)
## Physical.Activity.Level (cont. var.) 0.177
##
## Log-likelihood = -252.8225
## No. of observations = 374
## AIC value = 509.6451
Tỉ lệ chênh lệch giữa thời gian hoạt động và các triệu chứng mất ngủ là 1.0068 giao động trong khoảng (0.9969,1.0169)
Thực hiện bài toán kiểm định giả thuyết sự bằng nhau về tỷ lệ ở các biến với 2 tổng thể của biến Sleep, nghĩa là chúng ta thực hiện bài toán:
Kiểm định \(H_0\):p1=p2
Ước lượng sự chênh lệch về tỷ lệ một người có thời gian ngủ trên 8h có tỉ lệ mất ngủ về giấc ngủ
tmpm3 <- tmpm[tmpm$Physical.Activity.Level > 60,]
tmpf3 <- tmpf[tmpf$Physical.Activity.Level > 60,]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 4, df = 1, p-value = 0.05
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.001525 0.212999
## sample estimates:
## prop 1 prop 2
## 0.4452 0.3379
Khoảng ước lượng tỷ lệ những người có thời gian hoạt động trên 60’ và “ Triệu chứng mất ngủ ” có độ tin cậy 95% là:\(0.001525<P< 0.212999\)
Giả thuyết H0: X,Y độc lâp;
Đối thuyết H1: X,Y không độc lập
Ta tiến hành kiểm định tính độc lập của biến Sleep(X) và biến Sleep.Duration(Y) sau bằng R theo các bước được kết quả:
chisq.test(po)
## Warning in chisq.test(po): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: po
## X-squared = 157, df = 15, p-value <2e-16
Từ bảng kết quả ta có p-value = \(2*10^{-16}\)<0,05: Bác bỏ H0
Kết luận, điểm đánh giá giấc ngủ với thời gian ngủ của những người thực hiện khảo sát có liên hệ với nhau, với mức ý nghĩa 5%
ggplot(d, aes(Sleep, Stress.Level, colour = Sleep)) + geom_boxplot(show.legend = F)
en <- table(d$Sleep,d$Stress.Level)
en
##
## 3 4 5 6 7 8
## no 40 43 57 43 3 33
## yes 31 27 10 3 47 37
en1 <- prop.table(en)
en1
##
## 3 4 5 6 7 8
## no 0.106952 0.114973 0.152406 0.114973 0.008021 0.088235
## yes 0.082888 0.072193 0.026738 0.008021 0.125668 0.098930
Khi tiến hành nhận xét điểm đánh giá giấc ngủ và mức độ căng thẳng của những người tham gia khảo sát. Cho thấy, toàn bộ người có mức độ căng thẳng thấp đều có điêm đánh giá cao.Còn lại là phần lớn người bị căng thẳng nhiều lại có điểm về giấc ngủ thấp.
logistic.display(glm(factor(Sleep)~Stress.Level,family=binomial, data =d))
##
## Logistic regression predicting factor(Sleep) : yes vs no
##
## OR(95%CI) P(Wald's test) P(LR-test)
## Stress.Level (cont. var.) 1.24 (1.1,1.39) < 0.001 < 0.001
##
## Log-likelihood = -247.5212
## No. of observations = 374
## AIC value = 499.0424
Tỉ lệ chênh lệch giữa mức độ căng thẳng và các triệu chứng mất ngủ là 1.24 giao động trong khoảng (1.1,1.39)
Thực hiện bài toán kiểm định giả thuyết sự bằng nhau về tỷ lệ ở các biến với 2 tổng thể của biến Sleep, nghĩa là chúng ta thực hiện bài toán:
Kiểm định \(H_0\):p1=p2
Ước lượng sự chênh lệch về tỷ lệ một người có mức căn thẳng dưới 7 điêm có điểm đánh giá về giấc ngủ giữa thấp và cao
tmpm3 <- tmpm[tmpm$Stress.Level < 7,]
tmpf3 <- tmpf[tmpf$Stress.Level < 7,]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 58, df = 1, p-value = 3e-14
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.4756 -0.2795
## sample estimates:
## prop 1 prop 2
## 0.4581 0.8356
Khoảng ước lượng tỷ lệ những người có mức căn thẳng dưới 7 điểm và “ Điểm đánh giá giấc ngủ thấp” có độ tin cậy 95% là: \(-0.4756<p< -0.2795\)
Giả thuyết H0: X,Y độc lâp;
Đối thuyết H1: X,Y không độc lập
Ta tiến hành kiểm định tính độc lập của biến Sleep(X) và biến Stress.Level(Y) sau bằng R theo các bước được kết quả:
chisq.test(en)
##
## Pearson's Chi-squared test
##
## data: en
## X-squared = 104, df = 5, p-value <2e-16
Từ bảng kết quả ta có p-value =\(2*10^{-16}\)<0,05: Bác bỏ H0
Kết luận, điểm đánh giá giấc ngủ với mức đô căng thẳng của những người thực hiện khảo sát có liên hệ với nhau, với mức ý nghĩa 5%
ggplot(d) + geom_bar(aes(Sleep, fill = BMI.Category),position = 'dodge')
c <- table(d$Sleep,d$BMI.Category)
c
##
## Normal Normal Weight Obese Overweight
## no 183 17 0 19
## yes 12 4 10 129
c1 <- prop.table(c)
c1
##
## Normal Normal Weight Obese Overweight
## no 0.48930 0.04545 0.00000 0.05080
## yes 0.03209 0.01070 0.02674 0.34492
addmargins(c1)
##
## Normal Normal Weight Obese Overweight Sum
## no 0.48930 0.04545 0.00000 0.05080 0.58556
## yes 0.03209 0.01070 0.02674 0.34492 0.41444
## Sum 0.52139 0.05615 0.02674 0.39572 1.00000
Qua việc quan sát biểu đồ bảng hai chiều về thể trọng tính bằng BMI của người tham gia khảo sát với chức mất ngủ. Ta thấy, người người thừa cân có các triệt chứng mất ngủ có 139 người chiếm 37,16% gấp 8,7 lân người có cân nặng bình thường có các triệt chứng mất ngủ.
Thực hiện bài toán kiểm định giả thuyết sự bằng nhau về tỷ lệ ở các biến với 2 tổng thể của biến Sleep, nghĩa là chúng ta thực hiện bài toán:
Kiểm định \(H_0\):p1=p2
Ước lượng sự chênh lệch về tỷ lệ BMI với triệu chứng mất ngủ.
tmpm3 <- tmpm[tmpm$BMI.Category == 'Normal',]
tmpf3 <- tmpf[tmpf$BMI.Category == 'Normal',]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 206, df = 1, p-value <2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.8284 -0.6880
## sample estimates:
## prop 1 prop 2
## 0.07742 0.83562
Khoảng ước lượng tỷ lệ những người chỉ số BMI là ‘Normal’ có “Tồn tại triệu chứng mất ngủ” với độ tin cậy 95% là:\(-0.8284<p< -0.6880\)
Giả thuyết H0: X,Y độc lâp;
Đối thuyết H1: X,Y không độc lập
Ta tiến hành kiểm định tính độc lập của biến Sleep(X) và biến BMI.Category (Y) sau bằng R theo các bước được kết quả:
chisq.test(c)
## Warning in chisq.test(c): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: c
## X-squared = 246, df = 3, p-value <2e-16
Từ bảng kết quả ta có p-value =\(2*10^{-16}\) <0,05: Bác bỏ \(H_0\) Kết luận, việc mất ngủ với BMI bình thường của những người thực hiện khảo sát có liên hệ với nhau, với mức ý nghĩa 5%
bl <- table(d$Sleep,d$Blood.Pressure)
bl
##
## 115/75 115/78 117/76 118/75 118/76 119/77 120/80 121/79 122/80 125/80
## no 30 2 2 2 1 2 43 1 1 63
## yes 2 0 0 0 0 0 2 0 0 2
##
## 125/82 126/83 128/84 128/85 129/84 130/85 130/86 131/86 132/87 135/88
## no 4 2 2 3 0 54 0 0 0 0
## yes 0 0 0 0 2 45 2 2 3 2
##
## 135/90 139/91 140/90 140/95 142/92
## no 2 0 0 5 0
## yes 25 2 4 60 2
ggplot(d, aes(Blood.Pressure, fill = Sleep)) + geom_bar(position = 'dodge')
Người có huyết áp cao thì xác suất những người có triệu chứng mất ngủ càng lớn
Thực hiện bài toán kiểm định giả thuyết sự bằng nhau về tỷ lệ ở các biến với 2 tổng thể của biến Sleep, nghĩa là chúng ta thực hiện bài toán:
Kiểm định \(H_0\):p1=p2
Ước lượng sự chênh lệch về tỷ lệ BMI với triệu chứng mất ngủ.
tmpm3 <- tmpm[tmpm$Blood.Pressure == '120/80',]
tmpf3 <- tmpf[tmpf$Blood.Pressure == '120/80',]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 27, df = 1, p-value = 2e-07
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.2445 -0.1224
## sample estimates:
## prop 1 prop 2
## 0.0129 0.1963
Khoảng ước lượng tỷ lệ những người chỉ số huyét áp ‘120/80’ có “Tồn tại triệu chứng mất ngủ” với độ tin cậy 95% là:\(-0.2445<p< -0.1224\)
Giả thuyết H0: X,Y độc lâp;
Đối thuyết H1: X,Y không độc lập
Ta tiến hành kiểm định tính độc lập của biến Sleep(X) và biến Blood.Pressure (Y) sau bằng R theo các bước được kết quả:
chisq.test(bl)
## Warning in chisq.test(bl): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: bl
## X-squared = 223, df = 24, p-value <2e-16
Từ bảng kết quả ta có p-value =\(2*10^{-16}\) <0,05: Bác bỏ \(H_0\) Kết luận, việc mất ngủ với huyết âp của những người thực hiện khảo sát có liên hệ với nhau, với mức ý nghĩa 5%
b <- table(d$Sleep,d$Heart.Rate)
b
##
## 65 67 68 69 70 72 73 74 75 76 77 78 80 81 82 83 84 85 86
## no 41 2 62 2 70 30 2 0 6 2 2 0 0 0 0 0 0 0 0
## yes 26 0 32 0 6 39 0 2 30 0 0 5 3 2 1 2 2 3 2
b1 <- prop.table(b)
b1
##
## 65 67 68 69 70 72 73 74
## no 0.109626 0.005348 0.165775 0.005348 0.187166 0.080214 0.005348 0.000000
## yes 0.069519 0.000000 0.085561 0.000000 0.016043 0.104278 0.000000 0.005348
##
## 75 76 77 78 80 81 82 83
## no 0.016043 0.005348 0.005348 0.000000 0.000000 0.000000 0.000000 0.000000
## yes 0.080214 0.000000 0.000000 0.013369 0.008021 0.005348 0.002674 0.005348
##
## 84 85 86
## no 0.000000 0.000000 0.000000
## yes 0.005348 0.008021 0.005348
ggplot(data = d) + geom_histogram(aes(x=Heart.Rate,fill=factor(Sleep)),bins=10, position = 'stack',alpha = 0.5)
Và nhìn vào biểu đồ histogram và bảng ta có thể thấy bắt đầu từ 78
nhịp/phút trở đi người đều là những người có triệu chứng mất ngủ. Kết
luận, nhịp tim có ảnh hưởng đến giấc ngủ.
ười chiếm 64,44% và nghười có nhịp tim đập nhanh (kí hiệu là
nhiều) là 133 người có 35,56%.
logistic.display(glm(factor(Sleep)~Heart.Rate,family=binomial, data =d))
##
## Logistic regression predicting factor(Sleep) : yes vs no
##
## OR(95%CI) P(Wald's test) P(LR-test)
## Heart.Rate (cont. var.) 1.2 (1.13,1.28) < 0.001 < 0.001
##
## Log-likelihood = -232.2174
## No. of observations = 374
## AIC value = 468.4348
Tỉ lệ chênh lệch giữa nhịp tim và các triệu chứng mất ngủ là 1,2 giao động trong khoảng (1.13,1.28)
Thực hiện bài toán kiểm định giả thuyết sự bằng nhau về tỷ lệ ở các biến với 2 tổng thể của biến Sleep, nghĩa là chúng ta thực hiện bài toán:
Kiểm định \(H_0\):p1=p2
Ước lượng sự chênh lệch về tỷ lệ nhịp tim đập hơn 69 nhịp/phút với triệu chứng mất ngủ.
tmpm3 <- tmpm[tmpm$Heart.Rate > 69,]
tmpf3 <- tmpf[tmpf$Heart.Rate > 69,]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 4.4, df = 1, p-value = 0.04
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.007953 0.220828
## sample estimates:
## prop 1 prop 2
## 0.6258 0.5114
Khoảng ước lượng tỷ lệ những người nhịp tim có “Tồn tại triệu chứng mất ngủ” với độ tin cậy 95% là:0.007953 < p< 0.220828
Giả thuyết H0: X,Y độc lâp;
Đối thuyết H1: X,Y không độc lập
Ta tiến hành kiểm định tính độc lập của biến Sleep(X) và biến Heart.Rate (Y) sau bằng R theo các bước được kết quả:
chisq.test(b)
##
## Chi-squared test for given probabilities
##
## data: b
## X-squared = 1.1, df = 1, p-value = 0.3
Từ bảng kết quả ta có p-value =\(7*10^{-15}\) <0,05: Bác bỏ \(H_0\) Kết luận, việc mất ngủ với nhịp tim khi ngủ của những người thực hiện khảo sát có liên hệ với nhau, với mức ý nghĩa 5%
lo <- table(d$Sleep,d$Daily.Steps)
lo
##
## 3000 3300 3500 3700 4000 4100 4200 4800 5000 5200 5500 5600 6000 6200
## no 0 0 0 0 0 0 2 0 61 0 4 2 7 1
## yes 3 2 3 2 3 2 0 2 7 2 0 0 61 0
##
## 6800 7000 7300 7500 8000 10000
## no 3 36 2 2 93 6
## yes 0 30 0 0 8 30
ggplot(d, aes(x=Daily.Steps, fill=Sleep)) + geom_bar(position = "fill") + scale_color_excel_new() + ggthemes::scale_fill_excel_new()
Theo thống kê và biểu đồ hàm mật độ cho thấy tât các những người hoạt động đi lại ít hơn 4200 bước đều có các triệu chứng mất ngủ
logistic.display(glm(factor(Sleep)~Daily.Steps,family=binomial, data =d))
##
## Logistic regression predicting factor(Sleep) : yes vs no
##
## OR(95%CI) P(Wald's test) P(LR-test)
## Daily.Steps (cont. var.) 1 (0.9998,1.0001) 0.607 0.607
##
## Log-likelihood = -253.6019
## No. of observations = 374
## AIC value = 511.2038
Tỉ lệ chênh lệch giữa số bước đi trong ngày và các triệu chứng mất ngủ là 1 giao động trong khoảng (0.9998,1.0001)
Thực hiện bài toán kiểm định giả thuyết sự bằng nhau về tỷ lệ ở các biến với 2 tổng thể của biến Sleep, nghĩa là chúng ta thực hiện bài toán:
Kiểm định \(H_0\):p1=p2
Ước lượng sự chênh lệch về tỷ lệ nhịp tim đập hơn 69 nhịp/phút với triệu chứng mất ngủ.
tmpm3 <- tmpm[tmpm$Daily.Steps > 5000,]
tmpf3 <- tmpf[tmpf$Daily.Steps > 5000,]
a <- c(nrow(tmpm), nrow(tmpf))
b <- c(nrow(tmpm3), nrow(tmpf3))
prop.test(b,a)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: b out of a
## X-squared = 8.2, df = 1, p-value = 0.004
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.04463 0.22103
## sample estimates:
## prop 1 prop 2
## 0.8452 0.7123
Khoảng ước lượng tỷ lệ những người nhịp tim có “Tồn tại triệu chứng mất ngủ” với độ tin cậy 95% là:\(0.04463<p< 0.22103\)
Giả thuyết H0: X,Y độc lâp;
Đối thuyết H1: X,Y không độc lập
chisq.test(lo)
## Warning in chisq.test(lo): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: lo
## X-squared = 204, df = 19, p-value <2e-16
Từ bảng kết quả ta có p-value =\(7*10^{-15}\) <0,05: Bác bỏ \(H_0\) Kết luận, việc mất ngủ với số bước đi của những người thực hiện khảo sát có liên hệ với nhau, với mức ý nghĩa 5%
ggplot(data = d, aes(x = Quality.of.Sleep, y = Sleep.Duration)) + geom_smooth(formula = y ~ x, method = 'lm', color = 'green') + geom_point(color = 'red')
ggplot(data = d, aes(x = Quality.of.Sleep, y = Stress.Level)) + geom_smooth(formula = y ~ x, method = 'lm', color = 'green') + geom_point(color = 'red')
ggplot(data = d) +
geom_bin2d(mapping = aes(x = Stress.Level, y = Heart.Rate))
ggplot(data = d,mapping = aes( x = Quality.of.Sleep,y = Daily.Steps, color = Stress.Level)) + geom_point( size = 1,alpha = 0.5) +geom_smooth(method = "lm",size = 2)
## `geom_smooth()` using formula = 'y ~ x'
## Warning: The following aesthetics were dropped during statistical transformation: colour
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
## the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
## variable into a factor?
Qua biểu đồ ta thấy các biến như Quality.of.Sleep, Sleep.Duration ,Stress.Level, Heart.Rate, Daily.Steps đèu có liên kêt với nháu,
Thiết kế mô hình hồi quy về các yếu tố dẫn đền triệt chứng mất ngủ.
Thông quan kiểm định Chi bình phương (Chi squared test, chisq.test)
trong dữ liệu ta nhận ra biến phụ thuộc Sleep Disorder hiện
tại là biến Sleep với dữ liệu nhị phân với các biến đều có
liên quan đến nhau (trong dữ liệu còn có biến ID nhưng đây là biến dùng
khai báo số thứ tự nên không có ý nghĩa thống kế).
Suy ra, hiện tại ta có các biến là:
=> Biến ‘Sleep’: biến nhị phân nhận giá trị 1 ( là ‘yes’) tương đương với biểu hiện None , nhận giá trị 0(là ‘no’) tương đương với biểu hiện Insomnia và Sleep Apnea của biến ‘Sleep Disorder’.
Biến ‘Age’: Tuổi nghề của người tính theo năm.
Biến ’Gender: là biến định tính với kiểu dữ liệu kí tự với 2 biểu hiện có thể khai báo biến giả nhị phân như sau:“Female” nhận giá trị 0 và “Male” nhân giá trị 1.
Biến ‘Occupation’: thể hiện nghề nghiệp là dữ liệu định tính chỉ có thể hồi quy với dữ liệu chéo gộp
Biến ’ Sleep Duration’ (giờ): Số giờ một người ngủ mỗi ngày.
Biến ‘Quality of Sleep’: Đánh giá về chất lượng giấc ngủ
Biến ‘Quality of Sleep’: Đánh giá về chất lượng giấc ngủ
Biến ‘Stress Level’: Đánh giá chủ quan về mức độ căng thẳng
Biến ‘BMI Category’: BMI của một người là biến định lượng nhưng ở đây các biến nói về chỉ số thể trọng của cơ thể có thứ bậc nên có thể gán điểm số cho các thuộc tính.
Biến ‘Boold Pressure’: Đo huyết áp của một người. huyết áp được liệt kê theo thứ tự tăng dần nên có thể tiến hành gán điểm số cho các thuộc tính
Biến ‘Heart Rate’: là dữ liệu số nhịp tim
Biến ‘Daily Steps’: Số bước một người thực hiện mỗi ngày
Do sự khác biệt về tính chất sau đây tôi sẽ xây dựng 4 mô hình đa biến:
Mô hình logistic có biến giải thích là biến định tính như biến Sleep ~ Occupation +Age
Mô hình logistic có biến giải thích là biến định tính theo phương pháp gán điểm số cho các thuộc tính Khi biến định tính có các thuộc tính có thứ tự. Sleep ~ BMI Category + Quality of Sleep
Mô hình logistic có biến giải thích là biến định tính theo phương pháp gán điểm số cho các thuộc tính Khi biến định tính có các thuộc tính có mức độ so sánh. Sleep ~ Boold Pressure + Physical Activity Leverl
Hồi quy mô hình đa biến của của biến Sleep~ Gender+ Sleep.Duration +Stress.Level +Heart.Rate.
Với biến định tính Occupation có k thuộc tính thì sử dụng k – 1 biến giả nhị phân:
\(D_1\) = {1 là ngành Dortor ; 0 nếu là ngành khác}
\(D_2\) = {1 là ngành Engineer ; 0 nếu là ngành khác}
\(D_3\) = {1 là ngành Lawyer ; 0 nếu là ngành khác}
\(D_4\) = {1 là ngành Manager ; 0 nếu là ngành khác}
\(D_5\) = {1 là ngành Nurse ; 0 nếu là ngành khác}
\(D_6\) = {1 là ngành Sales Representative ; 0 nếu là ngành khác}
\(D_7\) = {1 là ngành Salesperson ; 0 nếu là ngành khác}
\(D_8\) = {1 là ngành Scientist ; 0 nếu là ngành khác}
\(D_9\) = {1 là ngành Software Enginee ; 0 nếu là ngành khác}
\(D_{10}\) = {1 là ngành Teacher ; 0 nếu là ngành khác}
Hồi quy logistic về ảnh hưởng của nghề nghiêp , tuổi đối với sự việc xuất hiện các triệu chứng mất ngủ, trong đó biến nghề nghiệp được đại diện bởi 10 biến giả nhị phân
\(log(\frac{π}{1−π})= \beta_0+\beta1*x_1+c_1*D_1+c_2*D_2+c_3*D_3+.+..c_{10}*D_{10}\)
oc <- glm(factor(Sleep) ~ Age+Occupation, family = binomial(link = 'logit'), data = d )
oc
##
## Call: glm(formula = factor(Sleep) ~ Age + Occupation, family = binomial(link = "logit"),
## data = d)
##
## Coefficients:
## (Intercept) Age
## -6.0571 0.1131
## OccupationDoctor OccupationEngineer
## -0.0576 -1.6825
## OccupationLawyer OccupationManager
## -0.5451 -14.5995
## OccupationNurse OccupationSales Representative
## 2.4514 18.4557
## OccupationSalesperson OccupationScientist
## 3.8425 2.2675
## OccupationSoftware Engineer OccupationTeacher
## 1.3778 2.6332
##
## Degrees of Freedom: 373 Total (i.e. Null); 362 Residual
## Null Deviance: 507
## Residual Deviance: 254 AIC: 278
Từ đó nhận được mô hình hồi quy ước lượng:
\(log(\frac{π}{1−π})= -6.0517+0.1131x_1-0.0576c_1-1.6825c_2-0.5451c_3- 14.5995 c_4+ 2.4514c_5 +18.4557c_6 +3.8425c_7+2.2675 c_8+1.3778 * c_9+2.6332 * c_{1}\)
Mô hình ước lượng đối với những người làm Doctor là: \(log(\frac{π}{1−π})= -6.1147+ 0.1131 Age\)
do đó xác suất mất của nhóm ngành bác sĩ trung bình ước tính là:
\(\pi(x_1,1)=[1 + exp (-6.1147+ 0.1131 Age])^{-1}\)
Mô hình ước lượng đối với những người làm Engineer là: \(log(\frac{π}{1−π})= -7.7342+ 0.1131 Age\)
do đó xác suất mất của nhóm ngành Engineer ước tính là:
\(\pi(x_1,1)=[1 + exp (-7.7342+ 0.1131 Age])^{-1}\)
Mô hình ước lượng đối với những người làm Lawyer là: \(log(\frac{π}{1−π})= -6.5968+ 0.1131 Age\)
do đó xác suất mất của nhóm ngành Lawyer ước tính là:
\(\pi(x_1,1)=[1 + exp (-6.5968+ 0.1131 Age])^{-1}\)
Mô hình ước lượng đối với những người làm Manager là: \(log(\frac{π}{1−π})= -20.6512+ 0.1131 Age\)
do đó xác suất mất của nhóm ngành Manager ước tính là:
\(\pi(x_1,1)=[1 + exp (-20.6512+ 0.1131 Age])^{-1}\)
Mô hình ước lượng đối với những người làm Nurse là: \(log(\frac{π}{1−π})= -3.6003+ 0.1131 Age\)
do đó xác suất mất của nhóm ngành y tá trung bình ước tính là:
\(\pi(x_1,1)=[1 + exp (-3.6003+ 0.1131 Age])^{-1}\)
Mô hình ước lượng đối với những người làm Sales Representative là: \(log(\frac{π}{1−π})= 12.404+ 0.1131 Age\)
do đó xác suất mất của nhóm ngành Sales Representative ước tính là:
\(\pi(x_1,1)=[1 + exp (12.404+ 0.1131 Age])^{-1}\)
Mô hình ước lượng đối với những người làm Salesperson là: \(log(\frac{π}{1−π})= -2.2092+ 0.1131 Age\)
do đó xác suất mất của nhóm ngành Salesperson ước tính là:
\(\pi(x_1,1)=[1 + exp (-2.2092+ 0.1131 Age])^{-1}\)
Mô hình ước lượng đối với những người làm Scientist là: \(log(\frac{π}{1−π})= -3.7842+ 0.1131 Age\)
do đó xác suất mất của nhóm ngành Scientist ước tính là:
\(\pi(x_1,1)=[1 + exp (-3.7842+ 0.1131 Age])^{-1}\)
Mô hình ước lượng đối với những người làm Software Engineer là: \(log(\frac{π}{1−π})= -4.6739+ 0.1131 Age\)
do đó xác suất mất của nhóm ngành Software Engineer ước tính là:
\(\pi(x_1,1)=[1 + exp (-4.6739+ 0.1131 Age])^{-1}\)
Mô hình ước lượng đối với những người làm Teacher là: \(log(\frac{π}{1−π})= -3.4185+ 0.1131 Age\)
do đó xác suất mất của nhóm ngành giáo viên trung bình ước tính là:
\(\pi(x_1,1)=[1 + exp (-3.4185+ 0.1131 Age])^{-1}\)
Hồi quy logistic về ảnh hưởng của điểm đánh giá giấc ngủ
Quality of Sleep, chỉ số BMI Category (biến
định tính có cấp độ thứ tự) đối với sự xuất hiện triệu chứng mất
ngủ.Trong đó biến BMI được gán điểm {1, 2, 3, 4} tăng dần theo thể trọng
của cơ thể:
\(log(\frac{π}{1−π})= \beta_0+\beta1*x_1+\beta2*BMI\)
d$BMI.Category <- mapvalues(d$BMI.Category,from= c( 'Normal', 'Normal Weight', 'Obese', 'Overweight'),to=c('1','2','4','3'))
d$BMI.Category <- as.numeric(as.character(d$BMI.Category))
Chạy ước lượng cho ra mô hình hồi quy ước lượng:
log <- glm(factor(Sleep) ~ Quality.of.Sleep+ BMI.Category , family = binomial(link = 'logit'), data = d )
log
##
## Call: glm(formula = factor(Sleep) ~ Quality.of.Sleep + BMI.Category,
## family = binomial(link = "logit"), data = d)
##
## Coefficients:
## (Intercept) Quality.of.Sleep BMI.Category
## -3.444 -0.233 2.302
##
## Degrees of Freedom: 373 Total (i.e. Null); 371 Residual
## Null Deviance: 507
## Residual Deviance: 225 AIC: 231
\(log(\frac{π}{1−π})=-3.444 -0.233Quality.of.Sleep + 2.302 BMI.Category\)
Kết quả hồi quy cho thấy cả điểm đánh giá giấc ngủ
Quality of Sleep, chỉ số BMI Category đều thực
sự có ảnh hưởng đến xác suất có triệu chứng mất ngủ.\(B_2 = 2.302 > 0\) và từ cách gán điểm
cho biến định tính BMI tăng dần theo thể trọng của cơ thể cho thấy xác
có triệu chứng mất ngủ tằng khi BMI tăng
Mô hình hồi quy logistic ước lượng đối với những BMI(Normal=1): \(log(\frac{π}{1−π})= -0.142 -0.233Quality.of.Sleep\) do đó xác suất mất ngủ của nhóm Normal được ước tính là: \(\pi(x_1,1)=[1 + exp (-0.142-0.233Quality.of.Sleep)^{-1}\)
Mô hình hồi quy logistic ước lượng đối với những BMI(Normal weight =2): \(log(\frac{π}{1−π})= 3.16 -0.233Quality.of.Sleep\) do đó xác suất mất ngủ của nhóm Normal weight được ước tính là: \(\pi(x_1,1)=[1 + exp (3.16-0.233Quality.of.Sleep)^{-1}\)
Mô hình hồi quy logistic ước lượng đối với những BMI(Overweight=3’): \(log(\frac{π}{1−π})= 6.462 -0.233Quality.of.Sleep\) do đó xác suất mất ngủ của nhóm Overweight được ước tính là: \(\pi(x_1,1)=[1 + exp (6.462-0.233Quality.of.Sleep)^{-1}\)
Mô hình hồi quy logistic ước lượng đối với những BMI (Obese=4): \(log(\frac{π}{1−π})= 9.764 -0.233Quality.of.Sleep\) do đó xác suất mất ngủ của nhóm Obese được ước tính là: \(\pi(x_1,1)=[1 + exp (9.764-0.233Quality.of.Sleep)^{-1}\)
Hồi quy logistic về ảnh hưởng của thời guan hoạt động Physical Activity Leverl, huyết áp Boold Pressure (biến định tính có cmức độ so sánh ) được viết tâm thu/tâm trương đối với sự xuất hiện triệu chứng mất ngủ.Trong đó biến huyết áp được gán điểm {1, 2, …,24, 25} tăng dần theo thể trọng của cơ thể:
d$Blood.Pressure <- mapvalues(d$Blood.Pressure, from = c('115/75', '115/78', '117/76', '118/75', '118/76', '119/77', '120/80', '121/79', '122/80', '125/80', '125/82', '126/83', '128/84', '128/85', '129/84', '130/85', '130/86', '131/86', '132/87', '135/88', '135/90', '139/91', '140/90', '140/95', '142/92'), to = c('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25'))
d$Blood.Pressure <- as.numeric(as.character(d$Blood.Pressure))
loge <- glm(factor(Sleep) ~ Physical.Activity.Level +Blood.Pressure , family = binomial(link = 'logit'), data = d )
loge
##
## Call: glm(formula = factor(Sleep) ~ Physical.Activity.Level + Blood.Pressure,
## family = binomial(link = "logit"), data = d)
##
## Coefficients:
## (Intercept) Physical.Activity.Level Blood.Pressure
## -5.2986 -0.0539 0.5154
##
## Degrees of Freedom: 373 Total (i.e. Null); 371 Residual
## Null Deviance: 507
## Residual Deviance: 232 AIC: 238
Chạy ước lượng cho ra mô hình hồi quy ước lượng:
\(log(\frac{π}{1−π})=-5.2986-0.0539 Physical.Activity.Level +0.5154 Blood.Pressure\)
Kết quả hồi quy cho thấy cả thời guan hoạt động Physical Activity Leverl, huyết áp Boold Pressure đều thực sự có ảnh hưởng đến xác suất có triệu chứng mất ngủ.\(B_2 = 0.5154 > 0\) và từ cách gán điểm cho biến định tính là huyết áp tăng dần theo thể trọng của cơ thể cho thấy xác có triệu chứng mất ngủ tăng khi huyết áp tăng
Mô hình hồi quy logistic ước lượng đối với những Boold Pressure =1: \(log(\frac{π}{1−π})= -4.7832-0.0539 Physical.Activity.Level\) do đó xác suất mất ngủ được ước tính là: \(\pi(x_1,1)=[1 + exp (-4.7832-0.0539 Physical.Activity.Level)^{-1}\)
Mô hình hồi quy logistic ước lượng đối với những Boold Pressure=2: \(log(\frac{π}{1−π})= -4.2678-0.0539 Physical.Activity.Level\) do đó xác suất mất ngủ được ước tính là: \(\pi(x_1,1)=[1 + exp (-4.2678-0.0539 Physical.Activity.Level)^{-1}\)
Mô hình hồi quy logistic ước lượng đối với những Boold Pressure=24: \(log(\frac{π}{1−π})= 7.071-0.0539 Physical.Activity.Level\) do đó xác suất mất ngủ được ước tính là: \(\pi(x_1,1)=[1 + exp (7.071-0.0539 Physical.Activity.Level)^{-1}\)
Mô hình hồi quy logistic ước lượng đối với những Boold Pressure2=5: \(log(\frac{π}{1−π})= 7.5864-0.0539 Physical.Activity.Level\) do đó xác suất mất ngủ được ước tính là: \(\pi(x_1,1)=[1 + exp (7.5864-0.0539 Physical.Activity.Level)^{-1}\)
Tại đây ta tiến hành hồi quy với hàm logit \(logit(π)=log(\frac{π}{1−π})\)
Mô hình hồi quy
loglin <- glm(factor(Sleep) ~ Gender+ Sleep.Duration +Stress.Level +Heart.Rate, family = binomial(link = 'logit'), data = d )
loglin
##
## Call: glm(formula = factor(Sleep) ~ Gender + Sleep.Duration + Stress.Level +
## Heart.Rate, family = binomial(link = "logit"), data = d)
##
## Coefficients:
## (Intercept) GenderMale Sleep.Duration Stress.Level Heart.Rate
## -5.795 -1.541 -1.384 -0.469 0.265
##
## Degrees of Freedom: 373 Total (i.e. Null); 369 Residual
## Null Deviance: 507
## Residual Deviance: 382 AIC: 392
Kiểm định sự phù hợp của mô hình
Giả thuyết H0: Mô hình phù hợp. Tiêu chuẩn bác bỏ giả thuyết H0 của các thống kê này: p_vaule < 5%
pchisq(deviance(loglin), df = df.residual(loglin), lower.tail = F)
## [1] 0.3112
Từ bảng kết quả trên ta có p_vaule= 0,3112 > 0,05 ta chấp nhận H0. Vậy với mức ý nghĩa 5%, mô hình phù hợp
Chỉ số đánh giá mô hình
summary(loglin)
##
## Call:
## glm(formula = factor(Sleep) ~ Gender + Sleep.Duration + Stress.Level +
## Heart.Rate, family = binomial(link = "logit"), data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.594 -0.638 -0.471 0.960 2.181
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -5.7951 3.8776 -1.49 0.135
## GenderMale -1.5412 0.3299 -4.67 3.0e-06 ***
## Sleep.Duration -1.3844 0.3105 -4.46 8.3e-06 ***
## Stress.Level -0.4690 0.1869 -2.51 0.012 *
## Heart.Rate 0.2647 0.0571 4.64 3.6e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 507.47 on 373 degrees of freedom
## Residual deviance: 381.86 on 369 degrees of freedom
## AIC: 391.9
##
## Number of Fisher Scoring iterations: 5
BrierScore(loglin)
## [1] 0.171
confusionMatrix(table(predict(loglin, type='response') >= 0.5 ,loglin$data$Sleep == 'yes'))
## Confusion Matrix and Statistics
##
##
## FALSE TRUE
## FALSE 173 72
## TRUE 46 83
##
## Accuracy : 0.684
## 95% CI : (0.635, 0.731)
## No Information Rate : 0.586
## P-Value [Acc > NIR] : 5.09e-05
##
## Kappa : 0.334
##
## Mcnemar's Test P-Value : 0.0214
##
## Sensitivity : 0.790
## Specificity : 0.535
## Pos Pred Value : 0.706
## Neg Pred Value : 0.643
## Prevalence : 0.586
## Detection Rate : 0.463
## Detection Prevalence : 0.655
## Balanced Accuracy : 0.663
##
## 'Positive' Class : FALSE
##
Kết quả ước lượng mô hình thì R mặc định sẽ ước lượng cho tần số của ô đầu tiên (1,1) trong bảng, nghĩa là ứng với kết quả này thì:
\(log(μ̂ )=-5.795-1.541 Gender -1.384 Sleep.Duration -0.469 Stress.Level + 0.265Heart.Rate\)
Các chỉ số đánh giá mô hình
Deviance: 381.86
AIC: 391.9
BrierScore: 0.171
-Confusion Matrix Có độ đặc hiệu: 0,684; độ nhạy: 0,79; độ chính xác toàn thể: 0,535
Tại đây ta tiến hành hồi quy với hàm probit \(probit(π)=Φ^{−1}(π)\)
Mô hình hồi quy
ft1 <- glm(factor(Sleep) ~ Gender+ Sleep.Duration +Stress.Level +Heart.Rate, family = binomial(link = 'probit'), data = d )
ft1
##
## Call: glm(formula = factor(Sleep) ~ Gender + Sleep.Duration + Stress.Level +
## Heart.Rate, family = binomial(link = "probit"), data = d)
##
## Coefficients:
## (Intercept) GenderMale Sleep.Duration Stress.Level Heart.Rate
## -3.159 -0.932 -0.802 -0.255 0.149
##
## Degrees of Freedom: 373 Total (i.e. Null); 369 Residual
## Null Deviance: 507
## Residual Deviance: 382 AIC: 392
Kiểm định sự phù hợp của mô hình
Giả thuyết H0: Mô hình phù hợp. Tiêu chuẩn bác bỏ giả thuyết H0 của các thống kê này: p_vaule < 5%
pchisq(deviance(ft1), df = df.residual(ft1), lower.tail = F)
## [1] 0.315
Từ bảng kết quả trên ta có p_vaule= 0,315 > 0,05 ta chấp nhận H0. Vậy với mức ý nghĩa 5%, mô hình phù hợp
Đánh giá mô hình
summary(ft1)
##
## Call:
## glm(formula = factor(Sleep) ~ Gender + Sleep.Duration + Stress.Level +
## Heart.Rate, family = binomial(link = "probit"), data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.663 -0.642 -0.459 0.983 2.211
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.1591 2.1767 -1.45 0.147
## GenderMale -0.9315 0.1841 -5.06 4.2e-07 ***
## Sleep.Duration -0.8024 0.1771 -4.53 5.9e-06 ***
## Stress.Level -0.2547 0.1024 -2.49 0.013 *
## Heart.Rate 0.1491 0.0294 5.07 4.0e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 507.47 on 373 degrees of freedom
## Residual deviance: 381.56 on 369 degrees of freedom
## AIC: 391.6
##
## Number of Fisher Scoring iterations: 5
BrierScore(ft1)
## [1] 0.1708
confusionMatrix(table(predict(ft1, type='response') >= 0.5 ,ft1$data$Sleep == 'yes'))
## Confusion Matrix and Statistics
##
##
## FALSE TRUE
## FALSE 173 72
## TRUE 46 83
##
## Accuracy : 0.684
## 95% CI : (0.635, 0.731)
## No Information Rate : 0.586
## P-Value [Acc > NIR] : 5.09e-05
##
## Kappa : 0.334
##
## Mcnemar's Test P-Value : 0.0214
##
## Sensitivity : 0.790
## Specificity : 0.535
## Pos Pred Value : 0.706
## Neg Pred Value : 0.643
## Prevalence : 0.586
## Detection Rate : 0.463
## Detection Prevalence : 0.655
## Balanced Accuracy : 0.663
##
## 'Positive' Class : FALSE
##
Kết quả ước lượng mô hình thì R mặc định sẽ ước lượng cho tần số của ô đầu tiên (1,1) trong bảng, nghĩa là ứng với kết quả này thì:
\(probit(π)=-3.159 -0.932 Gender -0.802 Sleep.Duration -0.255 Stress.Level + 0.149Heart.Rate\)
Các chỉ số đánh giá mô hình
Deviance: 381.56
AIC: 391.6
BrierScore: 0.1708
Confusion Matrix Có độ đặc hiệu: 0,684; độ nhạy: 0,79; độ chính xác toàn thể: 0,535
Tại đây ta tiến hành hồi quy với hàm cloglog\(cloglog(π)=log(−log(1−π))\)
Mô hình hồi quy
ft2 <- glm(factor(Sleep) ~ factor(Gender)+ Sleep.Duration +Stress.Level +Heart.Rate, family = binomial(link = 'cloglog'), data = d )
ft2
##
## Call: glm(formula = factor(Sleep) ~ factor(Gender) + Sleep.Duration +
## Stress.Level + Heart.Rate, family = binomial(link = "cloglog"),
## data = d)
##
## Coefficients:
## (Intercept) factor(Gender)Male Sleep.Duration Stress.Level
## -2.277 -1.011 -0.827 -0.211
## Heart.Rate
## 0.129
##
## Degrees of Freedom: 373 Total (i.e. Null); 369 Residual
## Null Deviance: 507
## Residual Deviance: 394 AIC: 404
Kiểm định sự phù hợp của mô hình
Giả thuyết H0: Mô hình phù hợp. Tiêu chuẩn bác bỏ giả thuyết H0 của các thống kê này: p_vaule < 5%
pchisq(deviance(ft2), df = df.residual(ft2), lower.tail = F)
## [1] 0.1783
Từ bảng kết quả trên ta có p_vaule= 0,1783 > 0,05 ta chấp nhận H0. Vậy với mức ý nghĩa 5%, mô hình phù hợp
Đánh giá mô hình
summary(ft2)
##
## Call:
## glm(formula = factor(Sleep) ~ factor(Gender) + Sleep.Duration +
## Stress.Level + Heart.Rate, family = binomial(link = "cloglog"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.785 -0.709 -0.575 1.020 1.979
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.2766 2.2109 -1.03 0.30316
## factor(Gender)Male -1.0111 0.1980 -5.11 3.3e-07 ***
## Sleep.Duration -0.8272 0.2140 -3.87 0.00011 ***
## Stress.Level -0.2109 0.1036 -2.04 0.04174 *
## Heart.Rate 0.1291 0.0246 5.24 1.6e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 507.47 on 373 degrees of freedom
## Residual deviance: 393.92 on 369 degrees of freedom
## AIC: 403.9
##
## Number of Fisher Scoring iterations: 9
BrierScore(ft2)
## [1] 0.175
confusionMatrix(table(predict(ft2, type='response') >= 0.5 ,ft2$data$Sleep == 'yes'))
## Confusion Matrix and Statistics
##
##
## FALSE TRUE
## FALSE 175 74
## TRUE 44 81
##
## Accuracy : 0.684
## 95% CI : (0.635, 0.731)
## No Information Rate : 0.586
## P-Value [Acc > NIR] : 5.09e-05
##
## Kappa : 0.331
##
## Mcnemar's Test P-Value : 0.00759
##
## Sensitivity : 0.799
## Specificity : 0.523
## Pos Pred Value : 0.703
## Neg Pred Value : 0.648
## Prevalence : 0.586
## Detection Rate : 0.468
## Detection Prevalence : 0.666
## Balanced Accuracy : 0.661
##
## 'Positive' Class : FALSE
##
Kết quả ước lượng mô hình thì R mặc định sẽ ước lượng cho tần số của ô đầu tiên (1,1) trong bảng, nghĩa là ứng với kết quả này thì:
\(cloglog(π)=-2.277 -1.011 Gender -0.827 Sleep.Duration -0.211 Stress.Level + 0.129 Heart.Rate\)
Các chỉ số đánh giá mô hình
Deviance: 393.92
AIC: 403.9
BrierScore: 0.175
-Confusion Matrix Có độ đặc hiệu: 0,684; độ nhạy: 0,799; độ chính xác toàn thể: 0,523
Các phân tích dữ liệu nhị phân theo 3 loại hàm liên kết là logit, probit, cloglog ta có các chỉ số đánh giá như sau:
| logit | probit | cloglog | |
|---|---|---|---|
| AIC | 391.9 | 391.6 | 403.9 |
| deviance | 381.56 | 381.56 | 393.92 |
| Brier Score | 0.171 | 0.1708 | 0.175 |
| Độ đặc hiệu | 0,684 | 0,684 | 0,684 |
| Độ nhạy | 0,79 | 0,79 | 0,799 |
| Độ chính xác toàn thể | 0,535 | 0,535 | 0,523 |
Nhận xét:Khi nhìn vào các gái trị đuọc thống kê ở bảng ta nhân thấy hàm probit là hàm liên kết là tốt nhất vì có chỉ số AIC và Brier Score nhỏ nhất trong ba mô hình đã thống kê.
Ta có mô hình Probit :
$probit(π)=-3.159 -0.932 Gender -0.802 Sleep.Duration -0.255 Stress.Level + 0.149Heart.Rate $
cho thấy nguy cơ mà người tham gia khảo sát có triệu chứng mất ngủ theo từng biến, theo đó:
ft1$coefficients
## (Intercept) GenderMale Sleep.Duration Stress.Level Heart.Rate
## -3.1591 -0.9315 -0.8024 -0.2547 0.1491
Xác suất có các triệu chứng mất ngủ của một người giới tính nữ (Female) ước đoán là:
\(\pi(1,x_2,x_3,x_4) = -3.159 -0.802 x_2 -0.255x_3+0.149 x_4\)
Xác suất có các triệu chứng mất ngủ của một người giới tính nam (Male) ước đoán là:
\(\pi(0,x_2,x_3,x_4) = -4.091 -0.802 x_2 -0.2547 x_3 + 0.1491 x_4\)
Kiểm định một dãy số có phân phối Poisson Với Giả thuyết H0:X
x <- length(d$Quality.of.Sleep)
poisson.test(x,r=8.5,alt="greater")
##
## Exact Poisson test
##
## data: x time base: 1
## number of events = 374, time base = 1, p-value <2e-16
## alternative hypothesis: true event rate is greater than 8.5
## 95 percent confidence interval:
## 342.8 Inf
## sample estimates:
## event rate
## 374
Ta có \(p-value <2*10^{-6}<0.05\), chứng mình biến Quality.of.Sleep là dữu liệu Poisson
Ký hiệu u(x) là giá trị kỳ vọng cho biến ngẫu nhiên Poisson Y ứng với mức x của biến X tức là: u(x)=E(Y|X=x)
Để hồi quy mô hình: \(log[u(x)] =\alpha+\beta*x\)
Ước lượng hàm hồi quy cho dữ liệu Poisson là tìm giá trị kỳ vọng cho biến ngẫu nhiên Poisson là Quality.of.Sleep với các biến còn lại
fit <- glm(data = d, formula =Quality.of.Sleep ~ Daily.Steps+ Sleep.Duration +Stress.Level+ Heart.Rate, family = poisson(link = 'log'))
fit
##
## Call: glm(formula = Quality.of.Sleep ~ Daily.Steps + Sleep.Duration +
## Stress.Level + Heart.Rate, family = poisson(link = "log"),
## data = d)
##
## Coefficients:
## (Intercept) Daily.Steps Sleep.Duration Stress.Level Heart.Rate
## 1.82e+00 1.57e-05 8.37e-02 -5.11e-02 -3.82e-03
##
## Degrees of Freedom: 373 Total (i.e. Null); 369 Residual
## Null Deviance: 74.7
## Residual Deviance: 7.88 AIC: 1450
summary(fit)
##
## Call:
## glm(formula = Quality.of.Sleep ~ Daily.Steps + Sleep.Duration +
## Stress.Level + Heart.Rate, family = poisson(link = "log"),
## data = d)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.5852 -0.0536 0.0180 0.0649 0.3770
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.82e+00 5.36e-01 3.39 0.00069 ***
## Daily.Steps 1.57e-05 1.32e-05 1.19 0.23389
## Sleep.Duration 8.37e-02 4.14e-02 2.02 0.04294 *
## Stress.Level -5.11e-02 2.27e-02 -2.25 0.02443 *
## Heart.Rate -3.82e-03 6.61e-03 -0.58 0.56355
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 74.7384 on 373 degrees of freedom
## Residual deviance: 7.8764 on 369 degrees of freedom
## AIC: 1453
##
## Number of Fisher Scoring iterations: 4
Kết quả ước lượng mô hình :
\(log(μ̂_{11} )= 1.82+1.57*10^{-5}Daily.Steps+8.37*10^{-2}Sleep.Duration-5.11*10^{-2}Stress.Level-3.82*10^{-2} Heart.Rate\)
Trước khi thực hiện việc ước lượng cho tần số kỳ vọng của các ô, sau đó thực hiện việc ước lượng tần số kỳ vọng cho các ô:
uocluong <- fitted(fit)
h <- cbind(Gender=d$Gender,Sleep.Duration=d$Sleep.Duration,Stress.Level=d$Stress.Level,Heart.Rate=d$Heart.Rate,uocluong)
head(h)
## Gender Sleep.Duration Stress.Level Heart.Rate uocluong
## 1 "Male" "6.1" "6" "77" "6.00261568704486"
## 2 "Male" "6.2" "8" "75" "6.03148831632381"
## 3 "Male" "6.2" "8" "75" "6.03148831632381"
## 4 "Male" "5.9" "8" "85" "5.0726412032818"
## 5 "Male" "5.9" "8" "85" "5.0726412032818"
## 6 "Male" "5.9" "8" "85" "5.0726412032818"
Với các biến độc lập đã thực hiện thống kê mô tả và hai biến phụ thuộc đã chọn, tôi tiến hành lập thống kê hai biến băng Thống kê mô tả và thống kê suy diễn cho hai biến và mô hình hồi quy đa biến cho dữ liệu, ta có các hàm hồi quy sau:
Mô hình logistic dùng biến giả nhị phân
\(log(\frac{π}{1−π})= -6.0517+0.1131x_1-0.0576c_1-1.6825c_2-0.5451c_3- 14.5995 c_4+ 2.4514c_5 +18.4557c_6 +3.8425c_7+2.2675 c_8+1.3778 * c_9+2.6332 * c_{1}\)
Mô hình logistic có thuộc tính thứ tự
\(log(\frac{π}{1−π})=-3.444 -0.233Quality.of.Sleep + 2.302 BMI.Category\)
Mô hình logistic có thuộc tính mức độ so sánh
\(log(\frac{π}{1−π})=-5.2986-0.0539 Physical.Activity.Level +0.5154 Blood.Pressure\)
Mô hình Probit
\(probit(π)=-3.159 -0.932 Gender -0.802 Sleep.Duration -0.255 Stress.Level + 0.149Heart.Rate\)
Mô hình Poisson:
\(log(μ̂_{11} )= 1.82+1.57*10^{-5}Daily.Steps+8.37*10^{-2}Sleep.Duration-5.11*10^{-2}Stress.Level-3.82*10^{-2} Heart.Rate\)
Xác định được những vấn đề sau:
Biến định tính là huyết áp tăng dần theo thể trọng của cơ thể cho thấy xác có triệu chứng mất ngủ tăng
Ta thấy, người có nhịp tim đập từ 70 nhịp/phút khi ngủ có các triệt chứng mất ngủ cao hơn người có nhịp tim đập 60-69 nhịp/phút khi ngủ rối không có các triệt chứng mất ngủ.
Người thừa cân có các triệt chứng mất ngủ gấp 8,7 lân người có cân nặng bình thường có các triệt chứng mất ngủ.
Triệu chứng mất ngủ tỉ lệ nghịch với điểm đánh giá giấc ngủ nhưng tỉ lệ thuận với mức độ căn thẵng của những người tham gian khảo sát.
Đa phần các triệu chứng của việc mất ngủ của nam giới, nữ giới có điểm khác biệt.
Với việc nghề nghiệp theo sự di chuyển ít hay nhiều trong quá trình làm việc. Kết quả nghề cần di chuyển nhiều có khả năng mất ngủ nhiều hơn người di chuyển ít.
Cho thấy, toàn bộ người có mức độ căng thẳng thấp đều có điêm đánh giá cao. Còn lại là phần lớn người bị căng thẳng nhiều lại có điểm về giấc ngủ thấp.
Người ngủ đủ thời gian trong một ngày đều có điêm đánh giá cao. Còn lại là phần lớn người ngủ không đủ lại có điểm về giấc ngủ thấp.