0. Đọc dữ liệu

lệnh giúp setwd về thư mục chứa file Rscript mà mình đang làm việc

setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
library(readr) 
data <- read_csv("Sleep_health_and_lifestyle_dataset.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.

TÓM TẮT FILE DỮ LIỆU

Bộ dữ liệu được sử dụng là data_health_and_lifestyle_dataset.csv, gồm 374 quan sát (374 người)13 biến phản ánh đặc điểm nhân khẩu học, sức khỏe và lối sống.

Danh sách và ý nghĩa các biến

  • Person ID: Mã định danh của người tham gia
  • Gender: Giới tính (Male, Female)
  • Age: Độ tuổi (năm)
  • Occupation: Nghề nghiệp
  • data Duration: Thời lượng ngủ trung bình (giờ/đêm)
  • Quality of data: Điểm chất lượng giấc ngủ
  • Physical Activity Level: Mức độ hoạt động thể chất
  • Stress Level: Mức độ căng thẳng
  • BMI Category: Phân loại BMI
  • Blood Pressure: Huyết áp (tâm thu/tâm trương)
  • Heart Rate: Nhịp tim (nhịp/phút)
  • Daily Steps: Số bước đi trung bình mỗi ngày
  • data Disorder: Rối loạn giấc ngủ (None, Insomnia, data Apnea)

Các biến được chọn phân tích

  • Biến định tính:
    • BMI Category
    • Occupation
  • Biến định lượng:
    • Age
    • Daily Steps

Các biến này đại diện tốt cho tình trạng sức khỏe, lối sống và phù hợp với yêu cầu thống kê mô tả.

Câu 1.Thực hiện thống kê mô tả: các bảng tần số (phân tổ dữ liệu), biểu đồ

1.1.Bảng tần số, tần suất

Bảng tần số của BMI Category

table_bmi <- table(data$`BMI Category`)
data_bmi_freq <- data.frame(
  BMI_Category = names(table_bmi),
  Tần_số = as.vector(table_bmi)
)
data_bmi_freq$Tỷ_lệ_phần_trăm <- round(data_bmi_freq$Tần_số / sum(data_bmi_freq$Tần_số) * 100, 2)

print(data_bmi_freq)
##    BMI_Category Tần_số Tỷ_lệ_phần_trăm
## 1        Normal    195           52.14
## 2 Normal Weight     21            5.61
## 3         Obese     10            2.67
## 4    Overweight    148           39.57

Biểu đồ thanh

barplot(table_bmi, main = "Biểu đồ tần số BMI Category", xlab = "Hạng mục BMI", ylab = "Tần số", col = "skyblue")

Nhận xét: Biểu đồ cho thấy sự phân bố tập trung cao độ vào 2 hạng mục: Bình thường (Normal) chiếm hơn một nửa (52.14%) và Thừa cân (Overweight) chiếm gần 40% (39.57%). Các hạng mục Béo phì (Obese) và Cân nặng Bình thường (Normal Weight) có tỷ lệ rất thấp (tổng cộng khoảng 8,28% ), cho thấy phần lớn mẫu nằm ở mức BMI từ bình thường đến thừa cân

Bảng tần số của Occupation

table_occ <- table(data$Occupation)
prop_occ <- prop.table(table_occ) * 100
data_occ <- data.frame(table_occ, Tỷ_lệ = prop_occ)
names(data_occ) <- c("Occupation", "Tần_số", "Tỷ_lệ_phần_trăm")
print("Bảng Tần số Nghề nghiệp:")
## [1] "Bảng Tần số Nghề nghiệp:"
data_occ
##              Occupation Tần_số      Tỷ_lệ_phần_trăm       <NA>
## 1            Accountant     37           Accountant  9.8930481
## 2                Doctor     71               Doctor 18.9839572
## 3              Engineer     63             Engineer 16.8449198
## 4                Lawyer     47               Lawyer 12.5668449
## 5               Manager      1              Manager  0.2673797
## 6                 Nurse     73                Nurse 19.5187166
## 7  Sales Representative      2 Sales Representative  0.5347594
## 8           Salesperson     32          Salesperson  8.5561497
## 9             Scientist      4            Scientist  1.0695187
## 10    Software Engineer      4    Software Engineer  1.0695187
## 11              Teacher     40              Teacher 10.6951872

Nhận xét: Biểu đồ thể hiện sự phân bố không đồng đều, với sự áp đảo của 3 nhóm nghề nghiệp chính: Y tá (Nurse), Bác sĩ (Doctor), và Kỹ sư (Engineer), tổng cộng chiếm hơn 55% số quan sát. Các nhóm còn lại như Lawyer, Teacher, và Accountant chiếm tỷ lệ vừa phải, trong khi các nhóm như Manager, Sales Representative, Software Engineer, và Scientist có tần suất rất thấp, cho thấy tính đại diện không đồng nhất của các ngành nghề trong mẫu

Biểu đồ thanh

barplot(table_occ, 
        main = "Biểu đồ tần số Nghề nghiệp",
        xlab = "Nghề nghiệp", 
        ylab = "Tần số", 
        col = "lightgreen",
        las = 2, # Xoay nhãn trục x để dễ đọc
        mar = c(10, 4, 4, 2) + 0.1)

Biến Định lượng Age Vẽ Histogram (Phân tổ dữ liệu)

hist(data$Age, 
     main = "Histogram của Age", 
     xlab = "Tuổi", 
     ylab = "Tần số", 
     col = "salmon", 
     breaks = 10)

Nhận xét Độ tuổi dao động từ 27 đến 59. Phần lớn tập trung trong nhóm 35–50 tuổi. Độ phân tán ở mức vừa phải, không xuất hiện ngoại biên

Vẽ Biểu đồ hộp

boxplot(data$Age, 
        main = "Boxplot của Age", 
        ylab = "Tuổi", 
        col = "salmon")

Nhận xét: Không xuất hiện giá trị ngoại biên (outlier). Độ trải giữa phân vị rộng (IQR = 14.75) → mẫu có độ phân tán tuổi tương đối cao. Phân phối hơi lệch phải do phần đuôi trên dài hơn.

Biến Định lượng Daily Steps Vẽ Histogram (Phân tổ dữ liệu)

hist(data$`Daily Steps`, 
     main = "Histogram của Daily Steps", 
     xlab = "Số bước chân hàng ngày", 
     ylab = "Tần số", 
     col = "salmon", 
     breaks = 10)

Nhận xét: Dữ liệu có hai vùng tập trung chính: khoảng 5000–6000 bước và 7000–8000 bước. Phân phối tương đối đều, không lệch mạnh sang trái hoặc phải. Nhóm bước cao (≥ 8000) vẫn xuất hiện nhiều → thể hiện mức độ vận động tốt của phần lớn mẫu.

Vẽ Biểu đồ hộp (Boxplot)

boxplot(data$`Daily Steps`, 
        main = "Boxplot của Daily Steps", 
        ylab = "Số bước chân hàng ngày", 
        col = "gold")

Nhận xét: Không có ngoại biên → dữ liệu khá ổn định. Trung vị ở mức 7000 bước cho thấy phần lớn người tham gia vận động ở mức trung bình – cao. IQR = 2400 cho thấy số bước có độ phân tán vừa phải.

Câu 2: THỐNG KÊ MÔ TẢ CHO 2 BIẾN ĐỊNH LƯỢNG

Phân tích biến Age

Các đại lượng thống kê mô tả

min(data$Age)
## [1] 27
max(data$Age)
## [1] 59
range(data$Age)
## [1] 27 59
quantile(data$Age, 0.25)
##   25% 
## 35.25
quantile(data$Age, 0.50)
## 50% 
##  43
quantile(data$Age, 0.75)
## 75% 
##  50
IQR(data$Age)
## [1] 14.75
sd(data$Age)
## [1] 8.673133
var(data$Age)
## [1] 75.22324

Nhận xét Độ tuổi dao động từ 27 đến 59. Phần lớn tập trung trong nhóm 35–50 tuổi. Độ phân tán ở mức vừa phải, không xuất hiện ngoại biên

Phân tích biến Daily Steps

Các đại lượng thống kê mô tả

min(data$`Daily Steps`)
## [1] 3000
max(data$`Daily Steps`)
## [1] 10000
range(data$`Daily Steps`)
## [1]  3000 10000
quantile(data$`Daily Steps`, 0.25)
##  25% 
## 5600
quantile(data$`Daily Steps`, 0.50)
##  50% 
## 7000
quantile(data$`Daily Steps`, 0.75)
##  75% 
## 8000
IQR(data$`Daily Steps`)
## [1] 2400
sd(data$`Daily Steps`)
## [1] 1617.916
var(data$`Daily Steps`)
## [1] 2617651

Nhận xét Số bước dao động từ 3.000 đến 10.000 bước/ngày. Trung vị khoảng 7.000 bước/ngày. Phần lớn người tham gia có mức vận động trung bình đến khá.

KẾT LUẬN TỔNG QUAN

Bộ dữ liệu có phân bố hợp lý, phản ánh đặc điểm của nhóm người trưởng thành đang làm việc.

BMI Category chủ yếu tập trung ở nhóm Normal/Normal Weight, tiếp theo là Overweight; nhóm Obese chiếm tỷ lệ nhỏ. Occupation phân bố không đồng đều, trong đó các nhóm Doctor, Nurse, Engineer, TeacherLawyer xuất hiện nhiều nhất. Age dao động từ 27 đến 59 tuổi, tập trung chủ yếu trong nhóm 35–50 tuổi, với mức độ phân tán tương đối thấp. Daily Steps có giá trị trung bình khoảng 6.800 bước/ngày, phần lớn nằm trong khoảng 5.600–8.000 bước/ngày, cho thấy mức độ vận động từ trung bình đến khá. Daily Steps có độ phân tán lớn hơn Age, phản ánh sự khác biệt rõ rệt về mức độ hoạt động thể chất giữa các cá nhân. Cả hai biến định lượng không xuất hiện ngoại biên, cho thấy dữ liệu có chất lượng tốt và phù hợp cho các phân tích tiếp theo.

Câu 3: Các bài toán ước lượng điểm, ước lượng khoảng: trung bình, tỉ lệ, phương sai

3.1. Ước lượng điểm

Bài toán 1: Tìm ước lượng điểm cho số bước chân trung bình hàng ngày

mean(data$`Daily Steps`)
## [1] 6816.845

Kết quả:

[1] 6816.845

Kết luận: Ước lượng điểm cho số bước chân trung bình hàng ngày là 6816.845 bước.


Bài toán 2: Tìm ước lượng điểm cho tỉ lệ số người có số bước chân hàng ngày >= 6000

Lời giải:

x <- subset(data, data$`Daily Steps` >= 6000)
vector1 <- nrow(x) 
vector2 <- nrow(data) 
prop.test(vector1, vector2, conf.level = 0.95, correct = FALSE)
## 
##  1-sample proportions test without continuity correction
## 
## data:  vector1 out of vector2, null probability 0.5
## X-squared = 90.524, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.6995252 0.7874516
## sample estimates:
##         p 
## 0.7459893

Kết quả:

1-sample proportions test without continuity correction

data:  vector1 out of vector2, null probability 0.5
X-squared = 90.524, df = 1, p-value < 2.2e-16
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
 0.6995252 0.7874516
sample estimates:
        p 
0.7459893

Kết luận: Ước lượng điểm cho tỉ lệ số người có số bước chân hàng ngày >= 6000 là 74.59%.


Bài toán 3: Tìm ước lượng điểm cho phương sai của số bước chân hàng ngày

Lời giải:

var(data$`Daily Steps`)
## [1] 2617651

Kết quả:

[1] 2617651

Kết luận: Ước lượng điểm cho phương sai của số bước chân hàng ngày là 2617651 (bước²).


3.2. Ước lượng khoảng

Bài toán 1: Xây dựng khoảng tin cậy 95% cho tuổi trung bình

Một công ty muốn biết khoảng giá trị ước lượng trung bình độ tuổi trong tập dữ liệu. Hãy xây dựng khoảng tin cậy 95% cho tuổi trung bình trong mẫu dữ liệu trên.

t.test(data$Age, conf.level = 0.95)
## 
##  One Sample t-test
## 
## data:  data$Age
## t = 94.062, df = 373, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  41.30263 43.06635
## sample estimates:
## mean of x 
##  42.18449

Kết quả:

One Sample t-test

data:  data$Age
t = 94.062, df = 373, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 41.30263 43.06635
sample estimates:
mean of x 
 42.18449

Nhận xét: Ước lượng khoảng 95% cho trung bình độ tuổi là [41.30263, 43.06635].


Bài toán 2: Xây dựng khoảng tin cậy 99% cho tỷ lệ người có chỉ số BMI bình thường

Một công ty muốn biết khoảng ước lượng tỷ lệ người có chỉ số BMI bình thường (Normal). Hãy xây dựng khoảng tin cậy 99% cho tỷ lệ này.

t.test(data$`BMI Category` == "Normal", conf.level = 0.99)
## 
##  One Sample t-test
## 
## data:  data$`BMI Category` == "Normal"
## t = 20.158, df = 373, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 99 percent confidence interval:
##  0.4544232 0.5883576
## sample estimates:
## mean of x 
## 0.5213904

Kết quả:

One Sample t-test

data:  data$`BMI Category` == "Normal"
t = 20.158, df = 373, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
99 percent confidence interval:
 0.4544232 0.5883576
sample estimates:
mean of x 
0.5213904

Nhận xét: Ước lượng khoảng 99% cho tỷ lệ người có chỉ số BMI bình thường là [0.4544232, 0.5883576] (tương đương 45.44% - 58.84%).


Bài toán 3: Xây dựng khoảng tin cậy 95% cho phương sai của số bước chân hàng ngày

Một công ty muốn biết khoảng tin cậy 95% cho phương sai của số bước chân hàng ngày. Hãy xây dựng khoảng tin cậy 95% cho phương sai này.

n <- length(data$`Daily Steps`) 
s2 <- var(data$`Daily Steps`) 
alpha <- 0.05 
lower <- (n - 1) * s2 / qchisq(1 - alpha/2, df = n - 1) 
upper <- (n - 1) * s2 / qchisq(alpha/2, df = n - 1)
c(lower, upper)
## [1] 2279136 3038039

Kết luận: Khoảng tin cậy 95% cho phương sai của số bước chân hàng ngày là (2279136, 3038039).


Tổng kết

Bài tập này đã thực hiện các phân tích thống kê cơ bản trên tập dữ liệu về sức khỏe và lối sống, bao gồm:

  • Ước lượng điểm: Tính toán giá trị ước lượng trung bình, tỷ lệ và phương sai
  • Ước lượng khoảng: Xây dựng khoảng tin cậy với các mức độ tin cậy khác nhau (95%, 99%)

Các kết quả cho thấy: - Số bước chân trung bình hàng ngày: ~6817 bước - 74.59% người có số bước chân >= 6000 - Độ tuổi trung bình: ~42 tuổi (khoảng tin cậy 95%: 41.3 - 43.1) - Tỷ lệ BMI bình thường: ~52% (khoảng tin cậy 99%: 45.4% - 58.8%)

Định tính: BMI và Occupation Định lượng: Age và Daily steps # Câu 4: Các bài toán kiểm định tham số một tổng thể: trung bình, tỉ lệ ## 4.1 Kiểm định trung bình một tổng thể ### Bài toán 1: Kiểm định BMI normal Một công ty cho rằng số bước chân trung bình là 7000 bước.Hãy kiểm định giả thuyết tại mức ý nghĩa 5%.

Thiết lập giả thuyết H₀: μ = 7000 (số bước chân trung bình là 7000) H₁: μ ≠ 7000 (số bước chân trung bình khác 7000) Mức ý nghĩa: α = 0.05 Đây là kiểm định hai phía

t.test(data$`Daily Steps`,mu=7000,alternative="two.sided")
## 
##  One Sample t-test
## 
## data:  data$`Daily Steps`
## t = -2.1893, df = 373, p-value = 0.0292
## alternative hypothesis: true mean is not equal to 7000
## 95 percent confidence interval:
##  6652.34 6981.35
## sample estimates:
## mean of x 
##  6816.845

p-value = 0.0292 < 0.05 Bác bỏ H₀ Kết luận: Tại mức ý nghĩa 5%, không có đủ bằng chứng thống kê để kết luận rằng số bước chân trung bình là 7000 bước.

4.2 Kiểm định tỷ lệ một tổng thể

Bài toán 2: Kiểm định tỉ lệ BMI

Một công ty cho rằng tỉ lệ BMI normal không quá là 50%.Hãy kiểm định giả thuyết tại mức ý nghĩa 5%.

Thiết lập giả thuyết H₀: p ≤ 0.5 (tỉ lệ BMI normal tối đa là 50%) H₁: p > 0.5 (tỉ lệ BMI normal trên 50%) Mức ý nghĩa: α = 0.05 Đây là kiểm định hai phía

x <- sum(data$`BMI Category` == "Normal")
n <- nrow(data)
prop.test(x, n, p=0.5,alt="g",correct = F)
## 
##  1-sample proportions test without continuity correction
## 
## data:  x out of n, null probability 0.5
## X-squared = 0.68449, df = 1, p-value = 0.204
## alternative hypothesis: true p is greater than 0.5
## 95 percent confidence interval:
##  0.4789016 1.0000000
## sample estimates:
##         p 
## 0.5213904

p-value = 0.204 > 0.05 Không bác bỏ H₀ Kết luận: Tại mức ý nghĩa 5%, Chưa có đủ bằng chứng để kết luận tỉ lệ BMI normal khác 50%

Câu 5: Các bài toán kiểm định tham số hai tổng thể: trung bình, tỉ lệ, phương sai

5.1 Kiểm định trung bình hai tổng thể

Bài toán 1: Kiểm định mức độ stress

Một công ty muốn so sánh mức độ stress trung bình giữa hai nghề: Doctor và Software Engineer. Hãy kiểm định xem có sự khác biệt hay không tại mức ý nghĩa 5%.

Gọi μ₁: Mức độ stress trung bình của Doctor Gọi μ₂: Mức độ stress trung bình của Software Engineer

H₀: μ₁ = μ₂ (mức độ stress của hai nghề bằng nhau) H₁: μ₁ ≠ μ₂ (mức độ stress của hai nghề khác nhau)

Mức ý nghĩa: α = 0.05 → Kiểm định hai phía

doctor_stress <- data$`Stress Level`[data$Occupation == "Doctor"]
engineer_stress <- data$`Stress Level`[data$Occupation == "Software Engineer"]
t.test(doctor_stress, engineer_stress, 
                      alternative = "two.sided",
                      var.equal = FALSE)
## 
##  Welch Two Sample t-test
## 
## data:  doctor_stress and engineer_stress
## t = 1.0093, df = 3.3266, p-value = 0.3805
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.453794  2.918583
## sample estimates:
## mean of x mean of y 
##  6.732394  6.000000

p-value = 0.3805 ≥ 0.05 Không bác bỏ H₀ Chưa có đủ bằng chứng để kết luận mức độ stress trung bình của hai nghề khác nhau

5.2 Kiểm định tỉ lệ hai tổng thể

Bài toán 2: Kiểm định tỉ lệ rối loạn giấc ngủ

Một nghiên cứu muốn kiểm tra xem tỉ lệ người có rối loạn giấc ngủ (Sleep Disorder khác “None”) trong nhóm BMI Obese có CAO HƠN nhóm BMI Normal hay không. Hãy kiểm định giả thuyết tại mức ý nghĩa 5%.

Gọi p₁: Tỉ lệ người có rối loạn giấc ngủ trong nhóm Obese Gọi p₂: Tỉ lệ người có rối loạn giấc ngủ trong nhóm Normal

H₀: p₁ ≤ p₂ (tỉ lệ rối loạn ở nhóm Obese không cao hơn Normal) H₁: p₁ > p₂ (tỉ lệ rối loạn ở nhóm Obese cao hơn Normal)

Mức ý nghĩa: α = 0.05 → Kiểm định một phía phải

# Lọc dữ liệu
obese_data <- data[data$`BMI Category` == "Obese", ]
normal_data <- data[data$`BMI Category` == "Normal", ]

# Đếm số người có rối loạn
x1 <- sum(obese_data$`Sleep Disorder` != "None")  # Obese có rối loạn
n1 <- nrow(obese_data)  # Tổng số người Obese

x2 <- sum(normal_data$`Sleep Disorder` != "None")  # Normal có rối loạn
n2 <- nrow(normal_data)  # Tổng số người Normal

# Kiểm định (p1 > p2)
prop.test(c(x1, x2), c(n1, n2), 
                         alternative = "greater",
                         correct = FALSE)
## Warning in prop.test(c(x1, x2), c(n1, n2), alternative = "greater", correct =
## FALSE): Chi-squared approximation may be incorrect
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(x1, x2) out of c(n1, n2)
## X-squared = 87.448, df = 1, p-value < 2.2e-16
## alternative hypothesis: greater
## 95 percent confidence interval:
##  0.9101547 1.0000000
## sample estimates:
##     prop 1     prop 2 
## 1.00000000 0.06153846

p-value < 2.2e-16 < 0.05 Bác bỏ H₀ Có đủ bằng chứng để kết luận tỉ lệ rối loạn giấc ngủ ở nhóm Obese cao hơn nhóm Normal.

5.3 Kiểm định tỉ phương sai hai tổng thể

Bài toán 2: Kiểm định phương sai mức độ stress

Một công ty muốn so sánh độ đồng đều (phương sai) của mức độ stress giữa nghề Doctor và Teacher. Hãy kiểm định xem có sự khác biệt hay không tại mức ý nghĩa 5%.

Gọi σ₁²: Phương sai mức độ stress của Doctor Gọi σ₂²: Phương sai mức độ stress của Teacher

H₀: σ₁² = σ₂² (phương sai của hai nghề bằng nhau) H₁: σ₁² ≠ σ₂² (phương sai của hai nghề khác nhau)

Mức ý nghĩa: α = 0.05 → Kiểm định hai phía

# Lọc dữ liệu
doctor_stress <- data$`Stress Level`[data$Occupation == "Doctor"]
teacher_stress <- data$`Stress Level`[data$Occupation == "Teacher"]

var.test(doctor_stress, teacher_stress, 
                        alternative = "two.sided")
## 
##  F test to compare two variances
## 
## data:  doctor_stress and teacher_stress
## F = 1.6713, num df = 70, denom df = 39, p-value = 0.08346
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.9328414 2.8623603
## sample estimates:
## ratio of variances 
##           1.671308

p-value = 0.08346 ≥ 0.05 Không bác bỏ H₀ Chưa có đủ bằng chứng để kết luận phương sai mức độ stress của hai nghề khác nhau. → Mức độ biến động stress tương đương.

6. phân tích phương sai ANOVA,phân tích sâu TuKeyHSD

6.1. phân tích phương sai ANOVA

So sánh sự khác biệt số bước đi hàng ngày giữa các nghề nghiệp có ảnh hưởng đến số bước đi trung bình hằng ngày không, kiểm định ở mức ý nghĩa 5%

Gọi μ1, μ2, μ3, μ… là số bước đi trung bình hàng ngày ở các loại nghề nghiệp Teacher, Lawyer, Engineer,…

H₀ (Giả thuyết không) Trung bình Daily Steps giữa các nghề nghiệp không khác nhau μ1=μ2=μ3=μ….

H₁ (Giả thuyết đối) Trung bình Daily Steps giữa các nghề nghiệp khác nhau

PL=factor(data$Occupation)
anova(lm(data$`Daily Steps`~PL))
## Analysis of Variance Table
## 
## Response: data$`Daily Steps`
##            Df    Sum Sq  Mean Sq F value    Pr(>F)    
## PL         10 284597878 28459788  14.934 < 2.2e-16 ***
## Residuals 363 691785999  1905747                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Vì p-value = 2.2*e-16 < 0.05 nên bác bỏ Ho, chấp nhận H1 => tại mức ý nghĩa 5%, trung bình số bước đi hàng ngày ở các nghề nghiệp là khác nhau.

6.2. phân tích sâu TuKeyHSD

TukeyHSD(aov(data$`Daily Steps`~PL))
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = data$`Daily Steps` ~ PL)
## 
## $PL
##                                               diff         lwr         upr
## Doctor-Accountant                        -72.63038  -979.36362   834.10286
## Engineer-Accountant                     -900.12870 -1826.37515    26.11775
## Lawyer-Accountant                        780.62105  -202.22964  1763.47174
## Manager-Accountant                     -1381.08108 -5913.06783  3150.90567
## Nurse-Accountant                        1176.45317   273.98530  2078.92103
## Sales Representative-Accountant        -3881.08108 -7127.57160  -634.59056
## Salesperson-Accountant                  -881.08108 -1960.64010   198.47794
## Scientist-Accountant                   -1531.08108 -3884.82259   822.66043
## Software Engineer-Accountant           -1081.08108 -3434.82259  1272.66043
## Teacher-Accountant                      -923.58108 -1943.60933    96.44717
## Engineer-Doctor                         -827.49832 -1601.51558   -53.48106
## Lawyer-Doctor                            853.25142    12.31997  1694.18287
## Manager-Doctor                         -1308.45070 -5811.79104  3194.88963
## Nurse-Doctor                            1249.08354   503.68535  1994.48174
## Sales Representative-Doctor            -3808.45070 -7014.83043  -602.07098
## Salesperson-Doctor                      -808.45070 -1760.61555   143.71414
## Scientist-Doctor                       -1458.45070 -3756.55194   839.65054
## Software Engineer-Doctor               -1008.45070 -3306.55194  1289.65054
## Teacher-Doctor                          -850.95070 -1735.04790    33.14649
## Lawyer-Engineer                         1680.74975   818.81412  2542.68538
## Manager-Engineer                        -480.95238 -4988.26216  4026.35740
## Nurse-Engineer                          2076.58187  1307.56574  2845.59799
## Sales Representative-Engineer          -2980.95238 -6192.90478   231.00002
## Salesperson-Engineer                      19.04762  -951.71766   989.81290
## Scientist-Engineer                      -630.95238 -2936.82242  1674.91766
## Software Engineer-Engineer              -180.95238 -2486.82242  2124.91766
## Teacher-Engineer                         -23.45238  -927.55148   880.64672
## Manager-Lawyer                         -2161.70213 -6680.98354  2357.57928
## Nurse-Lawyer                             395.83212  -440.49843  1232.16267
## Sales Representative-Lawyer            -4661.70213 -7890.43272 -1432.97154
## Salesperson-Lawyer                     -1661.70213 -2686.61589  -636.78837
## Scientist-Lawyer                       -2311.70213 -4640.88645    17.48220
## Software Engineer-Lawyer               -1861.70213 -4190.88645   467.48220
## Teacher-Lawyer                         -1704.20213 -2666.20949  -742.19476
## Nurse-Manager                           2557.53425 -1944.94920  7060.01770
## Sales Representative-Manager           -2500.00000 -7977.00736  2977.00736
## Salesperson-Manager                      500.00000 -4041.29460  5041.29460
## Scientist-Manager                       -150.00000 -5149.80080  4849.80080
## Software Engineer-Manager                300.00000 -4699.80080  5299.80080
## Teacher-Manager                          457.50000 -4070.01219  4985.01219
## Sales Representative-Nurse             -5057.53425 -8262.71037 -1852.35812
## Salesperson-Nurse                      -2057.53425 -3005.63813 -1109.43036
## Scientist-Nurse                        -2707.53425 -5003.95589  -411.11260
## Software Engineer-Nurse                -2257.53425 -4553.95589    38.88740
## Teacher-Nurse                          -2100.03425 -2979.75632 -1220.31217
## Salesperson-Sales Representative        3000.00000  -259.47134  6259.47134
## Scientist-Sales Representative          2350.00000 -1522.82905  6222.82905
## Software Engineer-Sales Representative  2800.00000 -1072.82905  6672.82905
## Teacher-Sales Representative            2957.50000  -282.74125  6197.74125
## Scientist-Salesperson                   -650.00000 -3021.61376  1721.61376
## Software Engineer-Salesperson           -200.00000 -2571.61376  2171.61376
## Teacher-Salesperson                      -42.50000 -1103.11792  1018.11792
## Software Engineer-Scientist              450.00000 -2712.15168  3612.15168
## Teacher-Scientist                        607.50000 -1737.61445  2952.61445
## Teacher-Software Engineer                157.50000 -2187.61445  2502.61445
##                                            p adj
## Doctor-Accountant                      1.0000000
## Engineer-Accountant                    0.0652636
## Lawyer-Accountant                      0.2669797
## Manager-Accountant                     0.9961183
## Nurse-Accountant                       0.0015130
## Sales Representative-Accountant        0.0059489
## Salesperson-Accountant                 0.2304404
## Scientist-Accountant                   0.5729143
## Software Engineer-Accountant           0.9231828
## Teacher-Accountant                     0.1168511
## Engineer-Doctor                        0.0248807
## Lawyer-Doctor                          0.0433504
## Manager-Doctor                         0.9973796
## Nurse-Doctor                           0.0000056
## Sales Representative-Doctor            0.0065256
## Salesperson-Doctor                     0.1820379
## Scientist-Doctor                       0.6096884
## Software Engineer-Doctor               0.9424524
## Teacher-Doctor                         0.0710814
## Lawyer-Engineer                        0.0000000
## Manager-Engineer                       0.9999998
## Nurse-Engineer                         0.0000000
## Sales Representative-Engineer          0.0964863
## Salesperson-Engineer                   1.0000000
## Scientist-Engineer                     0.9984180
## Software Engineer-Engineer             1.0000000
## Teacher-Engineer                       1.0000000
## Manager-Lawyer                         0.9017762
## Nurse-Lawyer                           0.9077751
## Sales Representative-Lawyer            0.0002140
## Salesperson-Lawyer                     0.0000138
## Scientist-Lawyer                       0.0537319
## Software Engineer-Lawyer               0.2582512
## Teacher-Lawyer                         0.0000011
## Nurse-Manager                          0.7553248
## Sales Representative-Manager           0.9260940
## Salesperson-Manager                    0.9999997
## Scientist-Manager                      1.0000000
## Software Engineer-Manager              1.0000000
## Teacher-Manager                        0.9999999
## Sales Representative-Nurse             0.0000277
## Salesperson-Nurse                      0.0000000
## Scientist-Nurse                        0.0072435
## Software Engineer-Nurse                0.0587524
## Teacher-Nurse                          0.0000000
## Salesperson-Sales Representative       0.1030569
## Scientist-Sales Representative         0.6729328
## Software Engineer-Sales Representative 0.4075940
## Teacher-Sales Representative           0.1099491
## Scientist-Salesperson                  0.9983959
## Software Engineer-Salesperson          1.0000000
## Teacher-Salesperson                    1.0000000
## Software Engineer-Scientist            0.9999960
## Teacher-Scientist                      0.9990106
## Teacher-Software Engineer              1.0000000

7. Kiểm định phi tham số: kiểm định tính độc lập, kiểm định mức phù hợp

7.1. Kiểm định phi tham số: kiểm định tính độc lập

Nghiên cứu xem có mối liên hệ giữa biến BMI và biến Occupation hay không, kiểm định ở mức ý nghĩa 5%

H0: không có mối liên hệ giữa 2 biến định tính (độc lập)

H1: có mối liên hệ giữa 2 biến định tính (phụ thuộc)

table(data$`BMI Category`,data$Occupation)
##                
##                 Accountant Doctor Engineer Lawyer Manager Nurse
##   Normal                26     65       56     42       0     0
##   Normal Weight          5      2        4      1       0     7
##   Obese                  0      4        0      2       0     0
##   Overweight             6      0        3      2       1    66
##                
##                 Sales Representative Salesperson Scientist Software Engineer
##   Normal                           0           0         0                 0
##   Normal Weight                    0           0         0                 2
##   Obese                            2           0         0                 1
##   Overweight                       0          32         4                 1
##                
##                 Teacher
##   Normal              6
##   Normal Weight       0
##   Obese               1
##   Overweight         33
x=c(26,65,56,42,0,0,0,0,0,0,6,5,2,4,1,0,7,0,0,0,2,0,0,4,0,2,0,0,2,0,0,1,1,6,0,3,2,1,66,0,32,4,1,33)
A=matrix(x,nrow = 4,byrow = T)
chisq.test(A)
## Warning in chisq.test(A): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  A
## X-squared = 405.51, df = 30, p-value < 2.2e-16

p-value=2.2e-16 < 0.05 => bác bỏ H0 ,chấp nhận H1

7.2. kiểm định mức phù hợp

kiểm định phân bố biến BMI :Normal, Normal Weight, Obese, Overweight theo tỷ lệ: 52% ,6%, 2%, 40% hay không kiểm định ở mức ý nghĩa 5%

H₀ (Giả thuyết không) biến BMI có phù hợp với phân bố

H₁ (Giả thuyết đối) biến BMI không phù hợp với phân bố

table(data$`BMI Category`)
## 
##        Normal Normal Weight         Obese    Overweight 
##           195            21            10           148
a=c(195,21,10,148)
p0=c(0.52,0.06,0.02,0.4)
chisq.test(a,p=p0)
## 
##  Chi-squared test for given probabilities
## 
## data:  a
## X-squared = 0.95989, df = 3, p-value = 0.811

p-value = 0.811 > 0.05 => chấp nhận H0, bác bỏ H1