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…
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ê.
library(perm)
Á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ê.
Á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.
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.