Nhập và xử lý data reef.csv

data_reef <- read_csv(file = "../data/reef.csv")
## Rows: 96 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (2): Density, Distance
## 
## ℹ 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.
glimpse(data_reef) # xem structure cua data
## Rows: 96
## Columns: 2
## $ Density  <dbl> 0.318, 0.637, 0.196, 0.624, 0.909, 0.295, 0.594, 0.442, 1.220…
## $ Distance <dbl> 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 2…

Chuyen doi dang so ve dang nhom (nhan to - factor) su dung ham factor() hoac as.factor()

Tao ra 1 cot moi trong du lieu thi dung ham mutate()

Dung ctr+shift+m tao khoi cong thuc %>%

data_reef %>% mutate(dist = factor(Distance)) -> data_reef_2
glimpse(data_reef_2)
## Rows: 96
## Columns: 3
## $ Density  <dbl> 0.318, 0.637, 0.196, 0.624, 0.909, 0.295, 0.594, 0.442, 1.220…
## $ Distance <dbl> 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 2…
## $ dist     <fct> 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 2…

Phan tich mat do ca trung binh giua 2 nhom (nông - sâu)

data_reef_2 %>% group_by(dist) %>% 
  summarise(tb = mean(Density), std = sd(Density), so_luong = n())
## # A tibble: 2 × 4
##   dist     tb   std so_luong
##   <fct> <dbl> <dbl>    <int>
## 1 250   0.818 0.514       48
## 2 800   0.628 0.413       48

Trung binh mat do cua ca o khu vuc nuoc nông (250) nhiều hơn nước sâu (800)

Vẽ đồ thị ggplot(dữ liệu, chọn x,y) + câu lệnh vẽ đồ thị là geom_boxplot() để trống

ggplot(data = data_reef_2, mapping = aes(x=dist, y=Density)) +
  geom_boxplot(outlier.colour = 'red', color = "blue" )

Biểu đồ cho thấy mật độ cá ở vùng nước nông (250 m) có xu hướng cao hơn vùng nước sâu (800 m), nhưng sự khác biệt không lớn và phân bố của hai nhóm chồng lấn đáng kể. Để kết luận liệu độ sâu có ảnh hưởng có ý nghĩa thống kê đến mật độ cá hay không, cần thực hiện thêm kiểm định thống kê.

Hàm PERM cho A/B test

library(perm)

Kiểm định 2 phía

Áp dụng hàm permTS() cho kiểm định giả thuyết hai phía \[ \begin{cases} H_0: & \mu_250 = \mu_800\\ H_1: & \mu_250 \ne \mu_800 \end{cases} \]

permTS(Density ~ dist, data = data_reef_2, alternative = "two.sided", 
       method = "exact.mc",
       control = permControl(nmc = 10000, tsmethod = "abs", seed = 35))
## 
##  Exact Permutation Test Estimated by Monte Carlo
## 
## data:  Density by dist
## p-value = 0.046
## alternative hypothesis: true mean dist=250 - mean dist=800 is  0
## sample estimates:
## mean dist=250 - mean dist=800 
##                     0.1899375 
## 
## p-value estimated from 10000 Monte Carlo replications
## 99 percent confidence interval on p-value:
##  0.04067693 0.05156048

Kết quả kiểm định hoán vị chính xác (Exact Permutation Test, 10.000 lần mô phỏng Monte Carlo) cho thấy có sự khác biệt có ý nghĩa thống kê về mật độ cá giữa độ sâu 250 m và 800 m (p = 0,046). Mật độ cá trung bình tại độ sâu 250 m cao hơn độ sâu 800 m khoảng 0,19 đơn vị. Điều này cho thấy độ sâu có thể ảnh hưởng đến sự phân bố mật độ cá trong khu vực nghiên cứu.

Vì khoảng tin cậy 99% của p-value là (0,0407–0,0516), bao trùm ngưỡng 0,05, nên kết quả chỉ ở mức cận biên (marginally significant). Do đó, có thể kết luận có sự khác biệt ở mức ý nghĩa 5%, nhưng cần thận trọng khi diễn giải về mức độ mạnh của bằng chứng thống kê.

Kiểm định 1 phía

Áp dụng hàm permTS() cho kiểm định giả thuyết 1 phía bên phải (greater) \[ \begin{cases} H_0: & \mu_250 \le \mu_800\\ H_1: & \mu_250 > \mu_800 \end{cases} \]

permTS(Density ~ dist, data = data_reef_2, alternative = "greater", 
       method = "exact.mc",
       control = permControl(nmc = 10000, tsmethod = "abs", seed = 36))
## 
##  Exact Permutation Test Estimated by Monte Carlo
## 
## data:  Density by dist
## p-value = 0.0248
## alternative hypothesis: true mean dist=250 - mean dist=800 is greater than 0
## sample estimates:
## mean dist=250 - mean dist=800 
##                     0.1899375 
## 
## p-value estimated from 10000 Monte Carlo replications
## 99 percent confidence interval on p-value:
##  0.02087916 0.02898063

Kết quả kiểm định hoán vị chính xác (Exact Permutation Test) với 10.000 lần mô phỏng Monte Carlo cho thấy mật độ cá trung bình ở độ sâu 250 m cao hơn đáng kể so với độ sâu 800 m. Do đó, giả thuyết cho rằng mật độ cá giảm khi độ sâu tăng được ủng hộ bởi dữ liệu nghiên cứu.

Áp dụng hàm permTS() cho kiểm định giả thuyết 1 phía bên trái \[ \begin{cases} H_0: & \mu_250 \ge \mu_800\\ H_1: & \mu_250 < \mu_800 \end{cases} \]

permTS(Density ~ dist, data = data_reef_2, alternative = "less", 
       method = "exact.mc",
       control = permControl(nmc = 10000, tsmethod = "abs", seed = 36))
## 
##  Exact Permutation Test Estimated by Monte Carlo
## 
## data:  Density by dist
## p-value = 0.9753
## alternative hypothesis: true mean dist=250 - mean dist=800 is less than 0
## sample estimates:
## mean dist=250 - mean dist=800 
##                     0.1899375 
## 
## p-value estimated from 10000 Monte Carlo replications
## 99 percent confidence interval on p-value:
##  0.9710194 0.9791208

Kết quả kiểm định hoán vị một phía cho giả thuyết mật độ cá ở độ sâu 250 m thấp hơn độ sâu 800 m cho thấy không có ý nghĩa thống kê (p=0,9753). Do đó, không có bằng chứng để khẳng định mật độ cá ở vùng nước nông thấp hơn vùng nước sâu. Trái lại, số liệu mẫu cho thấy mật độ cá trung bình ở độ sâu 250 m cao hơn khoảng 0,19 đơn vị so với độ sâu 800 m.

Kết luận kiểm định trung bình 2 nhóm

Tóm lại, kết quả nghiên cứu cho thấy mật độ cá có xu hướng giảm khi độ sâu tăng từ 250 m lên 800 m, và sự khác biệt này có ý nghĩa thống kê ở mức 5%. Đây là bằng chứng cho thấy độ sâu là một yếu tố có ảnh hưởng đến sự phân bố mật độ cá trong khu vực nghiên cứu.