Commit
This commit is contained in:
2025-10-22 06:20:05 +07:00
parent 9fccbd4121
commit a8896e90e0
16 changed files with 1107 additions and 106 deletions

20
SH/redis/flush.sh Normal file
View File

@@ -0,0 +1,20 @@
#!/bin/bash
# Script chay nhu dich vu de xoa Redis cache moi 2 phut
# CẢNH BÁO: CHỈ DÙNG ĐỂ TEST KHẨN CẤP. SẼ ĐĂNG XUẤT TOÀN BỘ USER.
# Tim duong dan chinh xac cua redis-cli
REDIS_CLI_PATH=$(which redis-cli)
if [ -z "$REDIS_CLI_PATH" ]; then
logger -t redis-flusher "LOI: Khong tim thay redis-cli. Thoat."
exit 1
fi
while true
do
logger -t redis-flusher "Thuc hien FLUSHALL..."
$REDIS_CLI_PATH FLUSHALL
# Doi 120 giay (2 phut)
sleep 120
done

View File

@@ -0,0 +1,20 @@
#!/bin/bash
# Script chay nhu dich vu de xoa Redis cache moi 2 phut
# CẢNH BÁO: CHỈ DÙNG ĐỂ TEST KHẨN CẤP. SẼ ĐĂNG XUẤT TOÀN BỘ USER.
# Tim duong dan chinh xac cua redis-cli
REDIS_CLI_PATH=$(which redis-cli)
if [ -z "$REDIS_CLI_PATH" ]; then
logger -t redis-flusher "LOI: Khong tim thay redis-cli. Thoat."
exit 1
fi
while true
do
logger -t redis-flusher "Thuc hien FLUSHALL..."
$REDIS_CLI_PATH FLUSHALL
# Doi 120 giay (2 phut)
sleep 120
done

View File

@@ -1,11 +1 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>adv_crossover.html</title>
</head>
<body>
<h1>adv_crossover.html</h1>
<p>This is a placeholder page for Adv Crossover module.</p>
</body>
</html>
<iframe src="https://shiny.huph.edu.vn/sample-apps/samplesize/adv_crossover/" style="width:100%;height:100vh;border:none;"></iframe>

View File

@@ -1,11 +1,213 @@
<!DOCTYPE html>
<html lang="en">
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>adv_crossover_guide.html</title>
<meta charset="UTF-8">
<title>Tính cỡ mẫu cho Thiết kế Chéo (Crossover Design)</title>
<script>
window.MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']],
displayMath: [['$$', '$$'], ['\\[', '\\]']]
},
svg: { fontCache: 'global' }
};
</script>
<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
</script>
<style>
.sample-size-guide {
font-family: Arial, sans-serif;
line-height: 1.65;
color: #222;
max-width: 980px;
margin: 24px auto;
padding: 20px;
}
.sample-size-guide h2 { color: #0056b3; border-bottom: 2px solid #eee; padding-bottom: 6px; }
.sample-size-guide h3 { color: #1a73e8; margin-top: 18px; }
.sample-size-guide code { font-family: "Courier New", monospace; background:#f7f7f7; padding:2px 6px; border-radius:4px; }
.sample-size-guide ul { margin-left: 20px; }
.sample-size-guide li { margin-bottom: 8px; }
.note { background:#f1f8ff; border-left:4px solid #1a73e8; padding:10px 12px; margin:12px 0; }
</style>
</head>
<body>
<h1>adv_crossover_guide.html</h1>
<p>This is a placeholder guide page for Adv Crossover Guide.</p>
<div class="sample-size-guide">
<h2>Tính cỡ mẫu cho Thiết kế Chéo (Crossover Design)</h2>
<p>
<strong>Thiết kế chéo (Crossover Design)</strong> là một loại thiết kế nghiên cứu can thiệp
vô cùng hiệu quả. Trong thiết kế này, mỗi người tham gia sẽ lần lượt nhận
<strong>TẤT CẢ các can thiệp</strong> (ví dụ: đầu tiên dùng thuốc A, sau đó dùng thuốc B).
</p>
<p>
Ưu điểm lớn nhất là <strong>mỗi bệnh nhân tự làm đối chứng cho chính mình</strong>.
Điều này giúp loại bỏ "biến thiên giữa các cá nhân" (inter-patient variability) -
vốn là nguồn "nhiễu" (noise) lớn nhất trong các nghiên cứu song song
(parallel-group trials).
</p>
<h3>1. Nguyên lý chung & Thiết kế 2x2</h3>
<p>
Một thiết kế chéo 2x2 (hai can thiệp, hai giai đoạn) điển hình bao gồm:
</p>
<ul>
<li>Một nhóm được ngẫu nhiên hóa nhận phác đồ (A $\rightarrow$ B).</li>
<li>Nhóm còn lại nhận phác đồ (B $\rightarrow$ A).</li>
</ul>
<p>
Việc ngẫu nhiên hóa <strong>thứ tự</strong> (sequence) giúp chúng ta kiểm soát một yếu tố
gây nhiễu quan trọng gọi là <strong>"hiệu ứng giai đoạn" (period effect)</strong>,
tức là sự thay đổi tự nhiên của bệnh theo thời gian.
</p>
<div class="note">
<strong>Ưu điểm:</strong> Cần cỡ mẫu <strong>nhỏ hơn rất nhiều</strong> so với
thiết kế song song để đạt cùng một công suất thống kê.
<br>
<strong>Nhược điểm:</strong> Thời gian nghiên cứu trên mỗi bệnh nhân dài hơn và
có nguy cơ bỏ cuộc (dropout) cao hơn.
</div>
<h3>2. Phạm vi ứng dụng & Điều kiện tiên quyết</h3>
<p>
Thiết kế này không thể dùng cho mọi loại bệnh. Nó có các điều kiện áp dụng nghiêm ngặt:
</p>
<ul>
<li>
<strong>Bệnh lý phù hợp:</strong> Chỉ dùng cho các bệnh <strong>mạn tính và ổn định</strong>
(ví dụ: tăng huyết áp, hen suyễn, đái tháo đường, đau mạn tính, cholesterol cao).
</li>
<li>
<strong>Can thiệp phù hợp:</strong> Chỉ dùng cho các can thiệp có tác dụng <strong>ngắn hạn
và có thể đảo ngược</strong> (ví dụ: thuốc giảm đau, thuốc hạ áp).
</li>
<li>
<strong>Không phù hợp:</strong> Không dùng cho các bệnh <strong>cấp tính</strong>
(ví dụ: nhiễm trùng) hoặc các can thiệp có thể <strong>"chữa khỏi"</strong>
(ví dụ: phẫu thuật, một liệu trình vắc-xin).
</li>
</ul>
<h4>Giai đoạn Rửa trôi (Washout Period)</h4>
<p>
Đây là điều kiện <strong>bắt buộc</strong>. Giữa Giai đoạn 1 và Giai đoạn 2,
phải có một giai đoạn "rửa trôi" đủ dài để đảm bảo tác dụng của can thiệp đầu tiên
đã biến mất hoàn toàn trước khi bắt đầu can thiệp thứ hai.
</p>
<p>
Nếu giai đoạn này quá ngắn, <strong>"hiệu ứng tồn dư" (carryover effect)</strong>
sẽ xảy ra, làm sai lệch kết quả của Giai đoạn 2 và khiến phân tích trở nên vô nghĩa.
</p>
<h3>3. Cỡ mẫu (Biến Liên tục - So sánh 2 Trung bình)</h3>
<p>
Đây là trường hợp phổ biến nhất, ví dụ so sánh mức giảm huyết áp, nồng độ HbA1c, v.v.
Vì mỗi bệnh nhân ($i$) có hai kết quả ($\text{Giá_trị}_{i,A}$ và $\text{Giá_trị}_{i,B}$),
chúng ta phân tích dựa trên <strong>hiệu số bên trong từng bệnh nhân</strong>:
$$d_i = \text{Giá_trị}_{i,A} - \text{Giá_trị}_{i,B}$$
</p>
<p>
Bài toán trở thành kiểm định T-test một mẫu (one-sample t-test)
để xem trung bình của các hiệu số ($\mu_d$) có khác 0 hay không.
Công thức tính <strong>tổng cỡ mẫu $n$</strong> là:
</p>
<p style="text-align:center;">
$$n = \frac{\sigma_d^2 (Z_{\alpha/2} + Z_{\beta})^2}{\Delta^2}$$
</p>
<ul>
<li>$n$: Tổng số người tham gia (sẽ được chia cho 2 nhóm trình tự A-B và B-A).</li>
<li>$\Delta$: Chênh lệch trung bình tối thiểu có ý nghĩa lâm sàng mà bạn muốn phát hiện.</li>
<li>$\sigma_d$: <strong>Độ lệch chuẩn của các hiệu số ($d_i$)</strong>. Đây là tham số quan trọng nhất.</li>
<li>$Z_{\alpha/2}$: Z-score cho mức ý nghĩa (ví dụ 1.96 cho $\alpha=0.05$ hai phía).</li>
<li>$Z_{\beta}$: Z-score cho công suất (ví dụ 0.84 cho power 80%).</li>
</ul>
<h3>4. Liên hệ với Thiết kế Song song (Cách dùng thực tế)</h3>
<p>
Tham số $\sigma_d$ (Độ lệch chuẩn của hiệu số) rất khó tìm trong y văn. Thay vào đó,
chúng ta thường tìm được $\sigma_p$ (Độ lệch chuẩn "chung" từ nghiên cứu song song)
và $\rho$ (Hệ số tương quan giữa 2 lần đo trên cùng một bệnh nhân).
</p>
<p>
Chúng có mối liên hệ qua công thức:
</p>
<p style="text-align:center;">
$$\sigma_d^2 = 2\sigma_p^2 (1-\rho)$$
</p>
<p>
Thay vào công thức cỡ mẫu ở trên, ta có công thức thực tế hơn:
</p>
<p style="text-align:center;">
$$n = \frac{2\sigma_p^2 (1-\rho) (Z_{\alpha/2} + Z_{\beta})^2}{\Delta^2}$$
</p>
<div class="note">
<strong>Ví dụ so sánh hiệu quả:</strong>
<p>
So sánh 2 thuốc hạ huyết áp (A vs B) với các tham số:
$\Delta = 5 \text{ mmHg}$, $\sigma_p = 15 \text{ mmHg}$
(độ lệch chuẩn chung), $\alpha=0.05$, power=80%.
</p>
<p>
1. <strong>Nếu dùng Thiết kế Song song (Parallel):</strong>
$$n_{\text{mỗi nhóm}} = \frac{2\sigma_p^2 (Z_{\alpha/2} + Z_{\beta})^2}{\Delta^2}
= \frac{2(15^2)(1.96 + 0.84)^2}{5^2} \approx 141.12$$
$\rightarrow$ Cần 142 người/nhóm $\times$ 2 nhóm = <strong>Tổng 284 người</strong>.
</p>
<p>
2. <strong>Nếu dùng Thiết kế Chéo (Crossover):</strong>
Giả sử có tương quan $\rho = 0.4$ giữa 2 lần đo.
$$n_{\text{tổng}} = \frac{2(15^2)(1 - 0.4)(1.96 + 0.84)^2}{5^2}
= \frac{2(225)(0.6)(7.84)}{25} \approx 84.67$$
$\rightarrow$ Cần <strong>Tổng 86 người</strong> (43 người/nhóm trình tự).
</p>
<p>
<strong>Kết luận:</strong> Thiết kế chéo chỉ cần 86 bệnh nhân,
so với 284 của thiết kế song song, để đạt cùng một công suất.
</p>
</div>
<h3>5. Cỡ mẫu (Biến Nhị phân - So sánh 2 Tỷ lệ)</h3>
<p>
Khi kết quả là nhị phân (ví dụ: có/không có triệu chứng),
phân tích dựa trên <strong>kiểm định McNemar</strong>
tập trung vào các <strong>cặp bất đồng (discordant pairs)</strong>:
</p>
<ul>
<li>$p_{10}$: Tỷ lệ bệnh nhân đáp ứng với A nhưng không đáp ứng với B.</li>
<li>$p_{01}$: Tỷ lệ bệnh nhân không đáp ứng với A nhưng đáp ứng với B.</li>
</ul>
<p>
Công thức tính tổng cỡ mẫu $n$ (theo Chow et al., 2008) là:
</p>
<p style="text-align:center;">
$$n = \frac{\left( Z_{\alpha/2}\sqrt{p_{10} + p_{01}} + Z_{\beta}\sqrt{p_{10} + p_{01} - (p_{10} - p_{01})^2} \right)^2}{(p_{10} - p_{01})^2}$$
</p>
<p>Việc ước tính $p_{10}$ và $p_{01}$ (tỷ lệ bất đồng) thường khó hơn
so với việc ước tính $\sigma_d$ và đòi hỏi nghiên cứu thí điểm.</p>
<hr>
<p>
<strong>Tóm tắt:</strong>
- Thiết kế chéo cực kỳ hiệu quả về cỡ mẫu.
- Chỉ dùng cho bệnh mạn tính, ổn định và can thiệp không chữa khỏi.
- Phải có giai đoạn "rửa trôi" (washout) đủ dài để tránh "hiệu ứng tồn dư".
- Phân tích dựa trên <strong>kiểm định bắt cặp (paired test)</strong>.
- Luôn ngẫu nhiên hóa thứ tự (A-B vs B-A) để kiểm soát "Hiệu ứng Giai đoạn".
</p>
</div>
<script>
document.addEventListener("DOMContentLoaded", () => {
if (window.MathJax && window.MathJax.typesetPromise) {
MathJax.typesetPromise();
}
});
</script>
</body>
</html>
</html>

View File

@@ -1,11 +1 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>adv_multilevel.html</title>
</head>
<body>
<h1>adv_multilevel.html</h1>
<p>This is a placeholder page for Adv Multilevel module.</p>
</body>
</html>
<iframe src="https://shiny.huph.edu.vn/sample-apps/samplesize/adv_multilevel/" style="width:100%;height:100vh;border:none;"></iframe>

View File

@@ -1,11 +1,246 @@
<!DOCTYPE html>
<html lang="en">
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>adv_multilevel_guide.html</title>
<meta charset="UTF-8">
<title>Hướng dẫn về Mô hình Đa cấp (Multilevel Models)</title>
<script>
window.MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']],
displayMath: [['$$', '$$'], ['\\[', '\\]']]
},
svg: { fontCache: 'global' }
};
</script>
<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
</script>
<style>
.sample-size-guide {
font-family: Arial, sans-serif;
line-height: 1.65;
color: #222;
max-width: 980px;
margin: 24px auto;
padding: 20px;
}
.sample-size-guide h2 { color: #0056b3; border-bottom: 2px solid #eee; padding-bottom: 6px; }
.sample-size-guide h3 { color: #1a73e8; margin-top: 18px; }
.sample-size-guide h4 { color: #333; margin-top: 16px; }
.sample-size-guide code { font-family: "Courier New", monospace; background:#f7f7f7; padding:2px 6px; border-radius:4px; }
.sample-size-guide ul { margin-left: 20px; }
.sample-size-guide li { margin-bottom: 8px; }
.note { background:#f1f8ff; border-left:4px solid #1a73e8; padding:10px 12px; margin:12px 0; }
</style>
</head>
<body>
<h1>adv_multilevel_guide.html</h1>
<p>This is a placeholder guide page for Adv Multilevel Guide.</p>
<div class="sample-size-guide">
<h2>Giới thiệu về Mô hình Đa cấp (Multilevel Models - MLM)</h2>
<p>
Trong thực tế, dữ liệu thường được tổ chức theo <strong>cấu trúc phân cấp (hierarchical)</strong>
hay <strong>lồng ghép (nested)</strong>. Ví dụ, trong y tế công cộng, dữ liệu
về bệnh nhân (cấp 1) được lồng trong các bệnh viện (cấp 2), và các bệnh viện
lại được lồng trong các tỉnh thành (cấp 3).
</p>
<p>
Vấn đề cốt lõi là: các cá nhân trong cùng một nhóm (ví dụ: bệnh nhân cùng một bệnh viện,
học sinh cùng một lớp học) thường có xu hướng <strong>giống nhau hơn</strong>
so với các cá nhân từ các nhóm khác.
</p>
<div class="note">
<strong>Vi phạm Giả định Cốt lõi:</strong>
<p>
Sự tương đồng này vi phạm giả định quan trọng nhất của hồi quy cổ điển
(như OLS): <strong>tính độc lập của các quan sát</strong>.
</p>
<p>
Nếu chúng ta bỏ qua cấu trúc lồng ghép này (ví dụ, "gộp" tất cả bệnh nhân lại
và chạy một mô hình hồi quy đơn giản), chúng ta sẽ <strong>đánh giá thấp
(underestimate) các sai số chuẩn</strong>. Điều này dẫn đến tăng nguy cơ
mắc <strong>sai lầm loại I</strong> (bác bỏ H0 sai, hay "false positive"),
nghĩa là chúng ta kết luận can thiệp có hiệu quả trong khi thực tế là không.
</p>
</div>
<h3>1. Nguyên lý chung & Cấu trúc Dữ liệu</h3>
<p>
Mô hình Đa cấp (MLM), hay còn gọi là Mô hình Hỗn hợp (Mixed-Effects Models),
được thiết kế để giải quyết vấn đề này. Nó phân tích đồng thời sự biến thiên
ở nhiều cấp độ.
</p>
<ul>
<li>
<strong>Cấp 1 (Level 1):</strong> Cấp độ cá nhân (ví dụ: học sinh, bệnh nhân, người dân).
Đây là nơi chúng ta đo lường kết quả (outcome).
</li>
<li>
<strong>Cấp 2 (Level 2):</strong> Cấp độ nhóm/cụm (ví dụ: lớp học, bệnh viện, xã/phường).
Các cá nhân ở Cấp 1 được lồng trong các đơn vị ở Cấp 2.
</li>
<li>
<strong>Cấp 3 (Level 3)...:</strong> Mô hình có thể mở rộng cho nhiều cấp
(ví dụ: lớp học lồng trong trường học, trường học lồng trong quận/huyện).
</li>
</ul>
<p>
Mục tiêu của MLM là tách bạch phương sai (sự biến thiên) của kết quả thành:
</p>
<ul>
<li>Phương sai <strong>bên trong nhóm</strong> (within-group variance): Sự khác biệt giữa các cá nhân trong cùng một nhóm.</li>
<li>Phương sai <strong>giữa các nhóm</strong> (between-group variance): Sự khác biệt trung bình giữa các nhóm với nhau.</li>
</ul>
<h3>2. Mô hình & Khái niệm Cốt lõi</h3>
<h4>Mô hình Intercept Ngẫu nhiên (Random Intercept Model)</h4>
<p>
Đây là dạng MLM đơn giản nhất. Hãy tưởng tượng chúng ta muốn dự đoán kết quả
$Y_{ij}$ (ví dụ: huyết áp) của người $i$ trong bệnh viện $j$.
</p>
<p>
<strong>Cấp 1 (Cá nhân):</strong>
$$Y_{ij} = \beta_{0j} + \beta_{1}X_{ij} + e_{ij}$$
</p>
<ul>
<li>$Y_{ij}$: Huyết áp của người $i$ ở bệnh viện $j$.</li>
<li>$X_{ij}$: Tuổi của người $i$ ở bệnh viện $j$.</li>
<li>$\beta_{0j}$: Intercept (điểm chặn) <em>riêng</em> của bệnh viện $j$.</li>
<li>$e_{ij}$: Sai số ngẫu nhiên của cá nhân $i$ (phần biến thiên <em>trong</em> nhóm).</li>
</ul>
<p>
<strong>Cấp 2 (Bệnh viện):</strong>
$$\beta_{0j} = \gamma_{00} + u_{0j}$$
</p>
<ul>
<li>$\gamma_{00}$: Intercept trung bình chung của TẤT CẢ các bệnh viện.</li>
<li>$u_{0j}$: Sai số ngẫu nhiên của bệnh viện $j$ (phần biến thiên <em>giữa</em> các nhóm).</li>
</ul>
<p>
Kết hợp lại, chúng ta có <strong>Mô hình hỗn hợp (Mixed Model)</strong>:
</p>
<p style="text-align:center;">
$$Y_{ij} = \underbrace{(\gamma_{00} + \beta_{1}X_{ij})}_{\text{Phần cố định (Fixed Effects)}} + \underbrace{(u_{0j} + e_{ij})}_{\text{Phần ngẫu nhiên (Random Effects)}}$$
</p>
<h4>Hệ số Tương quan Nội cụm (ICC - $\rho$)</h4>
<p>
Từ phần ngẫu nhiên, chúng ta có hai nguồn phương sai:
</p>
<ul>
<li>$\sigma^2 = \text{Var}(e_{ij})$: Phương sai <strong>bên trong</strong> nhóm (Within-group variance).</li>
<li>$\tau_0^2 = \text{Var}(u_{0j})$: Phương sai <strong>giữa</strong> các nhóm (Between-group variance).</li>
</ul>
<p>
Hệ số Tương quan Nội cụm (ICC), ký hiệu là $\rho$, là tỷ lệ phần trăm của
tổng phương sai mà được giải thích bởi sự khác biệt <strong>GIỮA</strong> các nhóm.
</p>
<p style="text-align:center;">
$$\rho = ICC = \frac{\tau_0^2}{\tau_0^2 + \sigma^2}$$
</p>
<p>
<strong>Diễn giải:</strong> Một ICC = 0.05 (hay 5%) có nghĩa là 5%
sự khác biệt về kết quả (ví dụ: huyết áp) là do sự khác biệt
giữa các bệnh viện, và 95% còn lại là do sự khác biệt giữa các
bệnh nhân trong cùng một bệnh viện. ICC càng cao, các cá nhân trong
cùng một cụm càng giống nhau.
</p>
<h3>3. Cỡ mẫu & Hệ số Thiết kế (Design Effect - DEFF)</h3>
<p>
Vì các cá nhân trong cùng một cụm có tương quan (với mức $\rho$),
việc thêm một người mới từ cùng một cụm không cung cấp nhiều thông tin "mới"
bằng việc thêm một người từ một cụm hoàn toàn khác.
</p>
<p>
Do đó, chúng ta cần "lạm phát" (inflate) cỡ mẫu tính toán từ
phương pháp Chọn mẫu Ngẫu nhiên Đơn giản (SRS)
để bù đắp cho sự mất mát thông tin này.
Hệ số lạm phát đó được gọi là <strong>Hệ số Thiết kế (Design Effect - DEFF)</strong>.
</p>
<p style="text-align:center;">
$$DEFF = 1 + (m - 1) \times \rho$$
</p>
<ul>
<li>$m$: Số cá thể trung bình dự kiến thu thập trong mỗi cụm (ví dụ: 20 bệnh nhân/bệnh viện).</li>
<li>$\rho$: Hệ số tương quan nội cụm (ICC) ước tính từ y văn.</li>
</ul>
<p>
Tổng cỡ mẫu cuối cùng bạn cần (đã điều chỉnh cho hiệu ứng cụm) là:
</p>
<p style="text-align:center;">
$$N_{\text{cluster}} = N_{\text{srs}} \times DEFF$$
</p>
<ul>
<li>$N_{\text{srs}}$: Cỡ mẫu bạn cần nếu dùng Chọn mẫu Ngẫu nhiên Đơn giản (SRS).</li>
<li>$N_{\text{cluster}}$: Tổng cỡ mẫu đã điều chỉnh cho thiết kế cụm.</li>
</ul>
<div class="note">
<strong>Ví dụ Y tế Công cộng (Tính cỡ mẫu):</strong>
<p>
<strong>Bối cảnh:</strong> Một nghiên cứu can thiệp cộng đồng nhằm giảm tỷ lệ
suy dinh dưỡng. Tính toán ban đầu (dùng công thức SRS) cho thấy cần
$N_{\text{srs}} = 384$ trẻ.
</p>
<p>
<strong>Thiết kế:</strong> Nghiên cứu sẽ chọn mẫu theo cụm (chọn ngẫu nhiên các xã,
rồi trong mỗi xã chọn ngẫu nhiên trẻ).
Dự kiến thu thập trung bình $m = 20$ trẻ mỗi xã.
Y văn cho thấy ICC ($\rho$) về tình trạng dinh dưỡng tại các xã là $0.05$.
</p>
<p>
<strong>1. Tính Hệ số Thiết kế (DEFF):</strong>
$$DEFF = 1 + (m - 1) \times \rho = 1 + (20 - 1) \times 0.05$$
$$DEFF = 1 + (19 \times 0.05) = 1 + 0.95 = 1.95$$
$\rightarrow$ Cỡ mẫu cần phải tăng lên <strong>1.95 lần</strong>.
</p>
<p>
<strong>2. Tính Tổng cỡ mẫu đã điều chỉnh (Lý thuyết):</strong>
$$N_{\text{cluster}} = N_{\text{srs}} \times DEFF = 384 \times 1.95 = 748.8$$
$\rightarrow$ Cần khoảng 749 trẻ.
</p>
<p>
<strong>3. Tính số cụm (Số xã) cần thiết:</strong>
$$\text{Số cụm (J)} = \frac{N_{\text{cluster}}}{m} = \frac{748.8}{20} = 37.44$$
$\rightarrow$ Phải làm tròn LÊN, vậy cần <strong>38 xã</strong>.
</p>
<p>
<strong>4. Tính Tổng cỡ mẫu Thực tế:</strong>
$$N_{\text{final}} = J \times m = 38 \times 20 = 760$$
</p>
<p>
<strong>Kết luận:</strong> Thay vì 384 trẻ (nếu dùng SRS), nghiên cứu này
cần thu thập <strong>tổng cộng 760 trẻ</strong>, được chọn từ
<strong>38 xã khác nhau</strong> để đảm bảo đủ công suất thống kê.
</p>
</div>
<hr>
<p>
<strong>Tóm tắt:</strong>
</p>
<ul>
<li>Mô hình Đa cấp (MLM) là bắt buộc khi dữ liệu có cấu trúc lồng ghép (ví dụ: bệnh nhân trong bệnh viện, học sinh trong trường học).</li>
<li>Việc bỏ qua cấu trúc này sẽ dẫn đến sai lầm loại I (kết luận sai).</li>
<li>MLM cho phép phân tích phương sai <strong>bên trong</strong><strong>giữa</strong> các nhóm.</li>
<li><strong>ICC ($\rho$)</strong> đo lường mức độ tương đồng của các cá nhân trong cùng một nhóm.</li>
<li>Khi tính cỡ mẫu cho nghiên cứu cụm, phải sử dụng <strong>Hệ số Thiết kế (DEFF)</strong> để "lạm phát" cỡ mẫu SRS.</li>
<li>$DEFF = 1 + (m - 1) \times \rho$.</li>
</ul>
</div>
<script>
document.addEventListener("DOMContentLoaded", () => {
if (window.MathJax && window.MathJax.typesetPromise) {
MathJax.typesetPromise();
}
});
</script>
</body>
</html>
</html>

View File

@@ -1,11 +1 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>epi_casecontrol.html</title>
</head>
<body>
<h1>epi_casecontrol.html</h1>
<p>This is a placeholder page for Epi Casecontrol module.</p>
</body>
</html>
<iframe src="https://shiny.huph.edu.vn/sample-apps/samplesize/epi_casecontrol/" style="width:100%;height:100vh;border:none;"></iframe>

View File

@@ -1,11 +1,219 @@
<!DOCTYPE html>
<html lang="en">
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>epi_casecontrol_guide.html</title>
<title>Nghiên cứu BệnhChứng (Case-Control Study)</title>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<style>
body {
font-family: "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.6;
color: #333;
background-color: #fff;
margin: 30px;
}
h2 {
color: #006699;
border-bottom: 2px solid #006699;
padding-bottom: 6px;
margin-top: 40px;
}
h4 {
color: #006699;
margin-top: 25px;
}
p {
text-align: justify;
margin: 10px 0;
}
ul {
margin: 10px 0 10px 25px;
}
strong {
color: #003366;
}
.table-2x2 {
border-collapse: collapse;
width: 340px;
margin: 15px auto;
font-size: 15px;
box-shadow: 0 2px 6px rgba(0,0,0,0.08);
}
.table-2x2 th, .table-2x2 td {
border: 1px solid #ccc;
padding: 8px 10px;
text-align: center;
}
.table-2x2 th {
background-color: #f2f8fc;
font-weight: 600;
}
.table-2x2 .header-col {
background-color: #f9f9f9;
font-weight: 600;
}
hr {
border: 0;
border-top: 2px solid #e0e0e0;
margin: 35px 0;
}
.formula {
background-color: #f8faff;
border-left: 4px solid #0077cc;
padding: 10px 15px;
margin: 10px 0;
font-family: "Consolas", monospace;
font-size: 15px;
}
.note {
background-color: #fff6e5;
border-left: 4px solid #ff9800;
padding: 10px 15px;
margin: 15px 0;
}
</style>
</head>
<body>
<h1>epi_casecontrol_guide.html</h1>
<p>This is a placeholder guide page for Epi Casecontrol Guide.</p>
<div>
<h2>Giới thiệu về Nghiên cứu BệnhChứng (CaseControl Study)</h2>
<p>
Nghiên cứu BệnhChứng là một loại hình nghiên cứu quan sát và phân tích cơ bản trong dịch tễ học.
Đặc điểm cốt lõi của thiết kế này là <strong>hồi cứu (retrospective)</strong>.
</p>
<p>
Thay vì theo dõi một nhóm người theo thời gian để xem ai mắc bệnh (như nghiên cứu Thuần tập Cohort),
nghiên cứu BệnhChứng bắt đầu bằng việc xác định những người đã mắc bệnh và những người không mắc bệnh,
sau đó nhìn lại quá khứ để so sánh sự khác biệt về phơi nhiễm với một yếu tố nguy cơ nào đó.
</p>
<h4>Các nhóm trong nghiên cứu:</h4>
<ul>
<li><strong>Nhóm Bệnh (Cases):</strong> Gồm những người đã được chẩn đoán mắc bệnh hoặc có kết cục (outcome) mà chúng ta quan tâm.</li>
<li><strong>Nhóm Chứng (Controls):</strong> Gồm những người không mắc bệnh, được chọn từ cùng một quần thể nguồn (source population) với nhóm Bệnh.</li>
</ul>
<p>
Mục tiêu chính là so sánh tỷ lệ (hay đúng hơn là “tỷ suất” odds) đã từng phơi nhiễm với yếu tố nguy cơ trong quá khứ giữa hai nhóm này.
</p>
<h4>Thước đo chính: Tỷ số chênh (Odds Ratio OR)</h4>
<p>
Thước đo kết hợp chính trong nghiên cứu BệnhChứng là Tỷ số chênh (OR).
Nó cho biết tỷ lệ phơi nhiễm ở nhóm Bệnh cao hơn (hoặc thấp hơn) gấp bao nhiêu lần so với tỷ lệ phơi nhiễm ở nhóm Chứng.
</p>
<p>Dựa trên bảng 2x2 kinh điển:</p>
<table class="table-2x2">
<tr>
<th></th>
<th>Bệnh (Cases)</th>
<th>Chứng (Controls)</th>
</tr>
<tr>
<td class="header-col">Phơi nhiễm (+)</td>
<td>a</td>
<td>b</td>
</tr>
<tr>
<td class="header-col">Phơi nhiễm ()</td>
<td>c</td>
<td>d</td>
</tr>
</table>
<p><strong>Công thức tính Tỷ số chênh (OR):</strong></p>
<div class="formula">
$$ OR = \frac{\text{Odds phơi nhiễm ở nhóm Bệnh}}{\text{Odds phơi nhiễm ở nhóm Chứng}}
= \frac{(a/c)}{(b/d)} = \frac{a \times d}{b \times c} $$
</div>
<hr>
<h2>Tính Cỡ Mẫu cho Nghiên cứu BệnhChứng</h2>
<p>
Việc tính toán cỡ mẫu trước khi thực hiện là tối quan trọng để đảm bảo nghiên cứu có đủ
<strong>lực mẫu thống kê (statistical power)</strong> — tức là có khả năng phát hiện được mối liên quan
(ví dụ, một giá trị OR cụ thể) nếu nó thực sự tồn tại trong quần thể, với một mức ý nghĩa (α) nhất định.
</p>
<h4>Các tham số cần thiết:</h4>
<ul>
<li><strong>\( \alpha \)</strong> (Mức ý nghĩa): Thường là 0.05 (cho độ tin cậy 95%).</li>
<li><strong>\( 1 - \beta \)</strong> (Lực mẫu Power): Thường là 0.80 hoặc 0.90.</li>
<li><strong>\( p_0 \)</strong>: Tỷ lệ phơi nhiễm ở nhóm Chứng (lấy từ y văn hoặc nghiên cứu trước).</li>
<li><strong>\( OR \)</strong>: Tỷ số chênh nhỏ nhất có ý nghĩa lâm sàng cần phát hiện.</li>
<li><strong>\( r \)</strong>: Tỷ lệ số người Chứng / Bệnh (ví dụ: \( r=1 \) cho 1:1, \( r=2 \) cho 2:1).</li>
</ul>
<h4>Công thức tính (Theo Schlesselman, 1982)</h4>
<p><strong>Bước 1 Tính tỷ lệ phơi nhiễm kỳ vọng ở nhóm Bệnh (\(p_1\))</strong></p>
<div class="formula">
$$ p_1 = \frac{OR \times p_0}{1 - p_0 + (OR \times p_0)} $$
</div>
<p><strong>Bước 2 Tính tỷ lệ phơi nhiễm trung bình có trọng số (\(\bar{p}\))</strong></p>
<div class="formula">
$$ \bar{p} = \frac{p_1 + r \cdot p_0}{1 + r}, \quad \bar{q} = 1 - \bar{p} $$
</div>
<p><strong>Bước 3 Tính cỡ mẫu nhóm Bệnh (\(n_1\))</strong></p>
<div class="formula">
$$ n_1 =
\frac{\left[
Z_{\alpha/2} \sqrt{(r+1)\bar{p}\bar{q}} +
Z_{\beta} \sqrt{r p_0 q_0 + p_1 q_1}
\right]^2}{r(p_1 - p_0)^2} $$
</div>
<p><strong>Bước 4 Cỡ mẫu nhóm Chứng và Tổng</strong></p>
<div class="formula">
$$ n_2 = n_1 \times r, \quad N = n_1 + n_2 $$
</div>
<hr>
<h2>Ứng dụng trong Y tế Công cộng</h2>
<p>
Nghiên cứu BệnhChứng là một trong những công cụ hiệu quả và phổ biến nhất trong y tế công cộng nhờ các ưu điểm:
<strong>nhanh chóng</strong>, <strong>ít tốn kém</strong><strong>hiệu quả cao</strong>.
</p>
<h4>Các ứng dụng chính:</h4>
<ul>
<li><strong>Nghiên cứu bệnh hiếm:</strong> Đặc biệt phù hợp khi bệnh có tỷ lệ mắc rất thấp, như một số loại ung thư hoặc dị tật bẩm sinh.</li>
<li><strong>Điều tra vụ dịch:</strong> Khi một vụ ngộ độc thực phẩm xảy ra, việc so sánh nhóm bị bệnh và nhóm không bệnh giúp xác định nguyên nhân nhanh chóng.</li>
<li><strong>Xác định yếu tố nguy cơ:</strong> Ví dụ nghiên cứu của <em>Doll & Hill (1950s)</em> đã chứng minh mối liên hệ giữa hút thuốc và ung thư phổi.</li>
<li><strong>Nghiên cứu bệnh có thời gian ủ bệnh dài:</strong> Như bệnh do amiăng hoặc phơi nhiễm hóa chất nghề nghiệp.</li>
</ul>
<h4>Hạn chế:</h4>
<ul>
<li><strong>Sai số nhớ lại (Recall bias):</strong> Nhóm bệnh có thể nhớ khác nhóm chứng.</li>
<li><strong>Sai số chọn mẫu (Selection bias):</strong> Khó chọn nhóm chứng đại diện cho quần thể nguồn.</li>
<li>Không thể tính được tỷ lệ mới mắc (Incidence) hay hiện mắc (Prevalence).</li>
</ul>
</div>
</body>
</html>

View File

@@ -1,11 +1 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>epi_clinical_trial.html</title>
</head>
<body>
<h1>epi_clinical_trial.html</h1>
<p>This is a placeholder page for Epi Clinical Trial module.</p>
</body>
</html>
<iframe src="https://shiny.huph.edu.vn/sample-apps/samplesize/epi_clinical_trial/" style="width:100%;height:100vh;border:none;"></iframe>

View File

@@ -1,11 +1,74 @@
<!DOCTYPE html>
<html lang="en">
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>epi_clinical_trial_guide.html</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Thử nghiệm lâm sàng - Tính cỡ mẫu</title>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
</script>
<style>
body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px; }
h2, h3, h4 { color: #007bff; }
p { margin: 10px 0; }
ul { margin: 10px 0 10px 20px; }
code { background-color: #f8f8f8; padding: 2px 4px; border-radius: 4px; }
</style>
</head>
<body>
<h1>epi_clinical_trial_guide.html</h1>
<p>This is a placeholder guide page for Epi Clinical Trial Guide.</p>
<h2>Thử nghiệm lâm sàng (Clinical Trial) - Hướng dẫn tính cỡ mẫu</h2>
<p>Thử nghiệm lâm sàng là nghiên cứu can thiệp, trong đó các đối tượng được phân nhóm ngẫu nhiên vào nhóm điều trị hoặc nhóm kiểm soát, và kết quả được theo dõi để đánh giá hiệu quả của can thiệp.</p>
<h3>Công thức tính cỡ mẫu cho so sánh 2 tỷ lệ</h3>
<p>Giả sử bạn muốn so sánh tỷ lệ kết cục (outcome) giữa 2 nhóm, cỡ mẫu cho mỗi nhóm được tính bằng công thức sau:</p>
<div style="text-align:center; margin: 20px 0;">
$$
n = \frac{\left[ Z_{1-\alpha/2} \sqrt{2 \bar{p} \bar{q}} + Z_{1-\beta} \sqrt{p_1 q_1 + p_2 q_2} \right]^2}{(p_1 - p_2)^2}
$$
</div>
<p>Trong đó:</p>
<ul>
<li><code>Z_{1-\alpha/2}</code>: Giá trị Z-score cho mức ý nghĩa (ví dụ 1.96 nếu α=0.05)</li>
<li><code>Z_{1-\beta}</code>: Giá trị Z-score cho lực mẫu (ví dụ 0.84 nếu Power = 0.80)</li>
<li><code>p_1, p_2</code>: Tỷ lệ kết cục mong đợi ở hai nhóm</li>
<li><code>q_1 = 1 - p_1, q_2 = 1 - p_2</code></li>
<li><code>\bar{p} = (p_1 + p_2)/2, \bar{q} = 1 - \bar{p}</code></li>
<li><code>n</code>: Cỡ mẫu cho mỗi nhóm</li>
<li>Tổng cỡ mẫu: <code>N = 2n</code></li>
</ul>
<h3>Ví dụ trong Y tế công cộng</h3>
<p>Một nhà nghiên cứu muốn đánh giá hiệu quả của vaccine cúm mới. Giả định:</p>
<ul>
<li>Tỷ lệ mắc cúm trong nhóm không tiêm vaccine: <code>p_1 = 0.10</code></li>
<li>Tỷ lệ mắc cúm trong nhóm tiêm vaccine: <code>p_2 = 0.05</code></li>
<li>Mức ý nghĩa: α = 0.05</li>
<li>Lực mẫu: Power = 0.80</li>
</ul>
<p>Áp dụng công thức trên:</p>
<ul>
<li>Xác định Z-score: <code>Z_{1-\alpha/2} = 1.96, Z_{1-\beta} = 0.84</code></li>
<li>Tính các giá trị phụ: <code>q_1 = 0.90, q_2 = 0.95</code></li>
<li>Tỷ lệ trung bình: <code>\bar{p} = 0.075, \bar{q} = 0.925</code></li>
<li>Thay vào công thức, tính được: <code>n ≈ 300</code> mỗi nhóm</li>
<li>Tổng cỡ mẫu: <code>N = 2n ≈ 600</code></li>
</ul>
<h3>Diễn giải</h3>
<p>Để thử nghiệm có đủ sức mạnh thống kê phát hiện sự khác biệt giữa nhóm vaccine và nhóm không vaccine, cần ít nhất 300 người mỗi nhóm, tổng 600 người.</p>
<h3>Ứng dụng trong y tế công cộng</h3>
<ul>
<li>Đánh giá hiệu quả vaccine mới.</li>
<li>Kiểm tra liệu can thiệp sức khỏe (thuốc, chế độ dinh dưỡng, giáo dục sức khỏe) có làm giảm tỷ lệ mắc bệnh.</li>
<li>Thiết kế thử nghiệm tối ưu, tránh thiếu hoặc thừa cỡ mẫu.</li>
</ul>
</body>
</html>

View File

@@ -1,11 +1 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>epi_cluster.html</title>
</head>
<body>
<h1>epi_cluster.html</h1>
<p>This is a placeholder page for Epi Cluster module.</p>
</body>
</html>
<iframe src="https://shiny.huph.edu.vn/sample-apps/samplesize/epi_cluster/" style="width:100%;height:100vh;border:none;"></iframe>

View File

@@ -1,11 +1,104 @@
<!DOCTYPE html>
<html lang="en">
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>epi_cluster_guide.html</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Thiết kế cụm - Tính cỡ mẫu</title>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
</script>
<style>
body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px; }
h2, h3, h4 { color: #007bff; }
p { margin: 10px 0; }
ul { margin: 10px 0 10px 20px; }
code { background-color: #f8f8f8; padding: 2px 4px; border-radius: 4px; }
</style>
</head>
<body>
<h1>epi_cluster_guide.html</h1>
<p>This is a placeholder guide page for Epi Cluster Guide.</p>
<h2>Thiết kế nghiên cứu theo cụm (Cluster Randomized Trial) - Tính cỡ mẫu</h2>
<p>Trong thiết kế nghiên cứu theo cụm, các đơn vị (cụm) như trường học, cộng đồng, hoặc phòng khám được phân nhóm ngẫu nhiên thành nhóm can thiệp hoặc nhóm kiểm soát, thay vì từng cá nhân riêng lẻ. Điều này giúp giảm nhiễu do tương tác giữa các cá nhân trong cùng cụm và thuận tiện trong các can thiệp cộng đồng.</p>
<h3>Công thức tính cỡ mẫu cho so sánh 2 tỷ lệ theo cụm</h3>
<p>Khi thiết kế nghiên cứu cụm, cần điều chỉnh cỡ mẫu bằng **hệ số hiệu quả cụm (Design Effect, DE)** để bù cho sự tương đồng giữa các cá nhân trong cùng cụm:</p>
<div style="text-align:center; margin: 20px 0;">
$$
n_\text{cá nhân} = n_\text{cá nhân bình thường} \times DE
$$
$$
DE = 1 + (m - 1) \rho
$$
</div>
<p>Trong đó:</p>
<ul>
<li><code>n_cá nhân bình thường</code>: Cỡ mẫu tính theo công thức so sánh 2 tỷ lệ cho cá nhân độc lập</li>
<li><code>m</code>: Số cá nhân trung bình trong mỗi cụm</li>
<li><code>\rho</code>: Hệ số tương quan nội cụm (Intraclass Correlation Coefficient, ICC)</li>
<li><code>n_cá nhân</code>: Cỡ mẫu điều chỉnh theo cụm</li>
<li>Tổng số cụm: <code>k = n_cá nhân / m</code></li>
</ul>
<h3>Công thức cơ bản cho so sánh 2 tỷ lệ (trước điều chỉnh DE)</h3>
<div style="text-align:center; margin: 20px 0;">
$$
n_\text{bình thường} = \frac{\left[ Z_{1-\alpha/2} \sqrt{2 \bar{p} \bar{q}} + Z_{1-\beta} \sqrt{p_1 q_1 + p_2 q_2} \right]^2}{(p_1 - p_2)^2}
$$
</div>
<p>Trong đó:</p>
<ul>
<li><code>Z_{1-\alpha/2}</code>: Giá trị Z-score cho mức ý nghĩa (ví dụ 1.96 nếu α=0.05)</li>
<li><code>Z_{1-\beta}</code>: Giá trị Z-score cho lực mẫu (ví dụ 0.84 nếu Power = 0.80)</li>
<li><code>p_1, p_2</code>: Tỷ lệ kết cục mong đợi ở hai nhóm</li>
<li><code>q_1 = 1 - p_1, q_2 = 1 - p_2</code></li>
<li><code>\bar{p} = (p_1 + p_2)/2, \bar{q} = 1 - \bar{p}</code></li>
<li><code>n_\text{bình thường}</code>: Cỡ mẫu cho mỗi nhóm nếu cá nhân độc lập</li>
<li><code>n_\text{cá nhân}</code>: Cỡ mẫu điều chỉnh cho thiết kế cụm</li>
</ul>
<h3>Ví dụ trong Y tế công cộng</h3>
<p>Một nghiên cứu muốn đánh giá chương trình giáo dục sức khỏe ở các trường học nhằm giảm tỷ lệ béo phì học sinh. Giả định:</p>
<ul>
<li>Tỷ lệ béo phì ở nhóm kiểm soát: <code>p_1 = 0.20</code></li>
<li>Tỷ lệ béo phì dự kiến ở nhóm can thiệp: <code>p_2 = 0.15</code></li>
<li>Số học sinh trung bình mỗi trường: <code>m = 50</code></li>
<li>Hệ số ICC: <code>ρ = 0.01</code></li>
<li>Mức ý nghĩa: α = 0.05, Power = 0.80</li>
</ul>
<p>Tính cỡ mẫu cá nhân bình thường:</p>
<div style="text-align:center; margin: 10px 0;">
$$
n_\text{bình thường} \approx 900
$$
</div>
<p>Điều chỉnh cho thiết kế cụm:</p>
<div style="text-align:center; margin: 10px 0;">
$$
DE = 1 + (50 - 1) \times 0.01 = 1.49
$$
$$
n_\text{cá nhân} = 900 \times 1.49 \approx 1341
$$
</div>
<p>Tổng số cụm cần: <code>k = n_\text{cá nhân} / m ≈ 1341 / 50 ≈ 27 cụm</code> (mỗi nhóm 13-14 trường)</p>
<h3>Diễn giải</h3>
<p>Để thử nghiệm có đủ sức mạnh thống kê, cần khoảng 1341 học sinh, chia thành 27 trường, đảm bảo số lượng học sinh trong mỗi trường như dự kiến. Thiết kế cụm giúp giảm nhiễu do tương tác giữa học sinh cùng trường.</p>
<h3>Ứng dụng trong y tế công cộng</h3>
<ul>
<li>Can thiệp sức khỏe cộng đồng (giáo dục sức khỏe, chương trình dinh dưỡng, tập thể dục) tại trường học, cộng đồng, phòng khám.</li>
<li>Đánh giá chương trình phòng chống dịch bệnh (ví dụ tiêm vaccine theo cụm xã/phường).</li>
<li>Hỗ trợ lập kế hoạch cỡ mẫu hợp lý, tránh đánh giá quá thấp hoặc quá cao cho các can thiệp theo cụm.</li>
</ul>
</body>
</html>

View File

@@ -1,11 +1 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>epi_cohort.html</title>
</head>
<body>
<h1>epi_cohort.html</h1>
<p>This is a placeholder page for Epi Cohort module.</p>
</body>
</html>
<iframe src="https://shiny.huph.edu.vn/sample-apps/samplesize/epi_cohort/" style="width:100%;height:100vh;border:none;"></iframe>

View File

@@ -1,11 +1,226 @@
<!DOCTYPE html>
<html lang="en">
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>epi_cohort_guide.html</title>
<title>Nghiên cứu Thuần tập (Cohort Study)</title>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<style>
body {
font-family: "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.6;
color: #333;
background-color: #fff;
margin: 30px;
}
h2 {
color: #006699;
border-bottom: 2px solid #006699;
padding-bottom: 6px;
margin-top: 40px;
}
h4 {
color: #006699;
margin-top: 25px;
}
p {
text-align: justify;
margin: 10px 0;
}
ul {
margin: 10px 0 10px 25px;
}
strong {
color: #003366;
}
.table-2x2 {
border-collapse: collapse;
width: 340px;
margin: 15px auto;
font-size: 15px;
box-shadow: 0 2px 6px rgba(0,0,0,0.08);
}
.table-2x2 th, .table-2x2 td {
border: 1px solid #ccc;
padding: 8px 10px;
text-align: center;
}
.table-2x2 th {
background-color: #f2f8fc;
font-weight: 600;
}
.table-2x2 .header-col {
background-color: #f9f9f9;
font-weight: 600;
}
hr {
border: 0;
border-top: 2px solid #e0e0e0;
margin: 35px 0;
}
.formula {
background-color: #f8faff;
border-left: 4px solid #0077cc;
padding: 10px 15px;
margin: 10px 0;
font-family: "Consolas", monospace;
font-size: 15px;
}
.note {
background-color: #fff6e5;
border-left: 4px solid #ff9800;
padding: 10px 15px;
margin: 15px 0;
}
</style>
</head>
<body>
<h1>epi_cohort_guide.html</h1>
<p>This is a placeholder guide page for Epi Cohort Guide.</p>
<div>
<h2>Giới thiệu về Nghiên cứu Thuần tập (Cohort Study)</h2>
<p>
Nghiên cứu Thuần tập là một loại hình nghiên cứu quan sát mang tính <strong>tiến cứu (prospective)</strong> hoặc đôi khi là <strong>hồi cứu (retrospective)</strong>,
được dùng để xác định mối quan hệ giữa phơi nhiễm và bệnh tật theo thời gian.
</p>
<p>
Nhà nghiên cứu bắt đầu với một nhóm người <strong>chưa mắc bệnh</strong>, chia họ thành hai (hoặc nhiều) nhóm dựa trên tình trạng phơi nhiễm với một yếu tố nguy cơ,
sau đó <strong>theo dõi qua thời gian</strong> để xem ai phát triển bệnh (outcome) và ai không.
</p>
<h4>Các nhóm trong nghiên cứu:</h4>
<ul>
<li><strong>Nhóm phơi nhiễm (+):</strong> Gồm những người có tiếp xúc hoặc chịu tác động của yếu tố nguy cơ.</li>
<li><strong>Nhóm không phơi nhiễm ():</strong> Gồm những người không tiếp xúc với yếu tố nguy cơ đó.</li>
</ul>
<p>
Mục tiêu chính là so sánh <strong>nguy cơ mắc bệnh</strong> hoặc <strong>tỷ lệ mới mắc</strong> giữa hai nhóm.
</p>
<h4>Thước đo chính: Tỷ số nguy cơ (Risk Ratio RR)</h4>
<p>
Tỷ số nguy cơ (RR) cho biết xác suất mắc bệnh ở nhóm phơi nhiễm cao hơn (hoặc thấp hơn) bao nhiêu lần so với nhóm không phơi nhiễm.
</p>
<p>Dựa trên bảng 2x2:</p>
<table class="table-2x2">
<tr>
<th></th>
<th>Bệnh (+)</th>
<th>Bệnh ()</th>
</tr>
<tr>
<td class="header-col">Phơi nhiễm (+)</td>
<td>a</td>
<td>b</td>
</tr>
<tr>
<td class="header-col">Phơi nhiễm ()</td>
<td>c</td>
<td>d</td>
</tr>
</table>
<p><strong>Công thức tính Tỷ số nguy cơ (RR):</strong></p>
<div class="formula">
$$ RR = \frac{\text{Nguy cơ ở nhóm phơi nhiễm}}{\text{Nguy cơ ở nhóm không phơi nhiễm}}
= \frac{a / (a + b)}{c / (c + d)} $$
</div>
<p>Nếu \( RR = 1 \): không có mối liên quan.<br>
Nếu \( RR > 1 \): phơi nhiễm làm tăng nguy cơ bệnh.<br>
Nếu \( RR < 1 \): phơi nhiễm tác dụng bảo vệ.</p>
<hr>
<h2>Tính Cỡ Mẫu cho Nghiên cứu Thuần tập</h2>
<p>
Việc xác định cỡ mẫu thích hợp đảm bảo rằng nghiên cứu có đủ <strong>lực thống kê (statistical power)</strong>
để phát hiện sự khác biệt thật sự về nguy cơ mắc bệnh giữa nhóm phơi nhiễm và không phơi nhiễm,
với mức ý nghĩa (α) xác định.
</p>
<h4>Các tham số cần thiết:</h4>
<ul>
<li><strong>\( \alpha \)</strong> (Mức ý nghĩa): thường là 0.05 (độ tin cậy 95%).</li>
<li><strong>\( 1 - \beta \)</strong> (Lực mẫu Power): thường là 0.80 hoặc 0.90.</li>
<li><strong>\( p_0 \)</strong>: Tỷ lệ mắc bệnh ở nhóm không phơi nhiễm.</li>
<li><strong>\( p_1 \)</strong>: Tỷ lệ mắc bệnh ở nhóm phơi nhiễm (giả định từ OR hoặc RR dự kiến).</li>
<li><strong>\( r \)</strong>: Tỷ lệ kích thước nhóm không phơi nhiễm / nhóm phơi nhiễm (ví dụ \(r = 1\) cho 1:1).</li>
</ul>
<h4>Công thức tính (Theo Kelsey et al., 1996)</h4>
<p><strong>Bước 1 Tính các giá trị trung bình:</strong></p>
<div class="formula">
$$ \bar{p} = \frac{p_1 + r \cdot p_0}{1 + r}, \quad \bar{q} = 1 - \bar{p} $$
</div>
<p><strong>Bước 2 Tính cỡ mẫu cho nhóm phơi nhiễm (\(n_1\)):</strong></p>
<div class="formula">
$$ n_1 =
\frac{
\left[
Z_{1 - \alpha/2} \sqrt{(r + 1) \bar{p}\bar{q}} +
Z_{1 - \beta} \sqrt{r p_0 q_0 + p_1 q_1}
\right]^2
}{
r (p_1 - p_0)^2
} $$
</div>
<p><strong>Bước 3 Tính cho nhóm không phơi nhiễm và tổng:</strong></p>
<div class="formula">
$$ n_2 = n_1 \times r, \quad N = n_1 + n_2 $$
</div>
<p class="note">
Trong đó \(Z_{1 - \alpha/2}\) và \(Z_{1 - \beta}\) là các giá trị Z tương ứng với mức ý nghĩa và lực mẫu mong muốn.
</p>
<hr>
<h2>Ứng dụng trong Y tế Công cộng</h2>
<p>
Nghiên cứu Thuần tập là thiết kế chuẩn mực để <strong>đánh giá nguyên nhân kết quả</strong>
và được xem là tiêu chuẩn vàng trong các nghiên cứu dịch tễ học quan sát.
</p>
<h4>Các ứng dụng chính:</h4>
<ul>
<li><strong>Ước tính nguy cơ tuyệt đối và tương đối:</strong> Cho phép tính trực tiếp tỷ lệ mới mắc (incidence) trong các nhóm.</li>
<li><strong>Nghiên cứu phơi nhiễm phổ biến:</strong> Thích hợp cho yếu tố nguy cơ phổ biến (ví dụ: hút thuốc, béo phì, ô nhiễm không khí).</li>
<li><strong>Đánh giá đa kết cục:</strong> Một phơi nhiễm có thể được theo dõi cho nhiều bệnh khác nhau.</li>
<li><strong>Đánh giá mối quan hệ thời gian:</strong> Vì phơi nhiễm được xác định trước khi bệnh xảy ra.</li>
</ul>
<h4>Hạn chế:</h4>
<ul>
<li><strong>Tốn kém và mất thời gian:</strong> Phải theo dõi lâu dài, nhất là với bệnh hiếm.</li>
<li><strong>Nguy cơ mất theo dõi (loss to follow-up):</strong> Làm giảm độ chính xác.</li>
<li><strong>Không phù hợp cho bệnh hiếm:</strong> Vì cần mẫu rất lớn để quan sát đủ số ca bệnh.</li>
<li><strong>Sai số chọn mẫu và thông tin:</strong> Có thể ảnh hưởng đến ước tính RR.</li>
</ul>
</div>
</body>
</html>

View File

@@ -1,4 +1,3 @@
<!DOCTYPE html>
<html lang="vi">
<head>
@@ -45,7 +44,11 @@
margin-bottom: 15px;
}
strong {
color: #c0392b;
color: #c0392b; /* Giữ màu đỏ cho các thuật ngữ quan trọng */
}
.strong-primary {
color: #2980b9; /* Màu xanh cho mục tiêu chính/thứ cấp */
font-weight: bold;
}
code {
font-family: 'Courier New', Courier, monospace;
@@ -67,6 +70,9 @@
margin-top: 15px;
border-radius: 4px;
}
.reason p {
margin-bottom: 10px; /* Điều chỉnh khoảng cách trong box lý do */
}
</style>
</head>
<body>
@@ -86,7 +92,7 @@
<p>Mỗi nghiên cứu khoa học đều nhằm trả lời một hoặc nhiều câu hỏi nghiên cứu, và các câu hỏi này được cụ thể hóa thành các giả thuyết thống kê (ví dụ: giả thuyết H₀ và giả thuyết Hₐ). Để có thể đưa ra kết luận bác bỏ hay không bác bỏ một giả thuyết, chúng ta cần sử dụng các phép kiểm định thống kê tương ứng (ví dụ: kiểm định t, khi bình phương, ANOVA).</p>
<p>Do đó, cỡ mẫu của nghiên cứu phải đủ lớn để phép kiểm định thống kê có đủ "năng lực" hay <strong>công suất thống kê <code>(1-β)</code></strong> để phát hiện ra một ảnh hưởng (effect size) thực sự tồn tại trong quần thể ở một <strong>mức ý nghĩa <code>(α)</code></strong> đã định trước. Nói cách khác, không có sự tách biệt giữa "cỡ mẫu nghiên cứu" và "cỡ mẫu cho kiểm định", chúng là một. Cỡ mẫu nghiên cứu được quyết định bởi yêu cầu của các kiểm định giả thuyết chính.</p>
<p>Do đó, cỡ mẫu của nghiên cứu phải đủ lớn để phép kiểm định thống kê có đủ "năng lực" hay <strong>công suất thống kê <code>(1-β)</code></strong> để phát hiện ra một <strong>ảnh hưởng (effect size)</strong> thực sự tồn tại trong quần thể ở một <strong>mức ý nghĩa <code>(α)</code></strong> đã định trước. Nói cách khác, không có sự tách biệt giữa "cỡ mẫu nghiên cứu" và "cỡ mẫu cho kiểm định", chúng là một. Cỡ mẫu nghiên cứu được quyết định bởi yêu cầu của các kiểm định giả thuyết chính.</p>
<hr>
@@ -97,17 +103,16 @@
<p>Trong trường hợp này, quy trình chuẩn mực cần thực hiện như sau:</p>
<ol>
<li><strong>Xác định các mục tiêu chính:</strong> Liệt kê tất cả các giả thuyết thống kê chính yếu mà nghiên cứu cần phải trả lời. Đây là những mục tiêu quan trọng nhất, quyết định sự thành công của nghiên cứu.</li>
<li><strong>Tính toán cỡ mẫu riêng lẻ:</strong> Thực hiện tính toán cỡ mẫu cho <strong>từng giả thuyết chính một cách độc lập</strong>.</li>
<li><strong>Phân loại mục tiêu:</strong> Cần phân biệt rõ ràng giữa <span class="strong-primary">mục tiêu chính (primary objectives)</span><span class="strong-primary">mục tiêu thứ cấp (secondary objectives)</span>. Mục tiêu chính là những câu hỏi then chốt, quan trọng nhất, quyết định sự thành công và kết luận cốt lõi của nghiên cứu.</li>
<li><strong>Tính toán cỡ mẫu riêng lẻ:</strong> Thực hiện tính toán cỡ mẫu cho <strong>từng giả thuyết thuộc nhóm mục tiêu chính</strong> một cách độc lập.</li>
<li><strong>Lựa chọn cỡ mẫu cuối cùng:</strong> Cỡ mẫu cuối cùng cho toàn bộ nghiên cứu sẽ là cỡ mẫu <strong>lớn nhất</strong> trong số các cỡ mẫu đã tính toán ở bước 2.</li>
</ol>
<div class="reason">
<p><strong>Lý do:</strong> Việc lựa chọn cỡ mẫu lớn nhất đảm bảo rằng nghiên cứu có đủ công suất thống kê cho tất cả các phân tích quan trọng. Nếu chọn một cỡ mẫu nhỏ hơn, nghiên cứu có thể có đủ năng lực để trả lời một số câu hỏi, nhưng sẽ không đủ năng lực (underpowered) để đưa ra kết luận đáng tin cậy cho các câu hỏi nghiên cứu khác yêu cầu cỡ mẫu lớn hơn. Điều này giúp tránh được sai lầm loại II (type II error) không phát hiện được sự khác biệt trong khi nó thực sự tồn tại.</p>
<p><strong>Lý do và Diễn giải:</strong> Việc lựa chọn cỡ mẫu lớn nhất đảm bảo rằng nghiên cứu có đủ công suất thống kê (ví dụ: <code>1-β ≥ 80%</code>) cho <strong>tất cả các mục tiêu chính</strong>.</p>
<p><strong>Đối với các mục tiêu thứ cấp</strong> (hoặc các phân tích mang tính khám phá - exploratory analysis), nhà nghiên cứu chấp nhận rằng cỡ mẫu này có thể không đủ công suất (underpowered) để phát hiện các khác biệt/mối liên hệ nhỏ hơn. Khi báo cáo kết quả, bất kỳ kết luận nào từ mục tiêu thứ cấp không đạt đủ công suất thống kê cần được diễn giải một cách thận trọng và ghi nhận rõ ràng trong phần <strong>"Hạn chế của nghiên cứu" (Limitations)</strong>.</p>
</div>
</div>
<div class='tableauPlaceholder' id='viz1753192925819' style='position: relative'><noscript><a href='#'><img alt=' Prevalence of HIV, total (% of population ages 15-49) ' src='https:&#47;&#47;public.tableau.com&#47;static&#47;images&#47;HI&#47;HIVinWorld&#47;PrevalenceofHIVtotalofpopulationages15-49&#47;1_rss.png' style='border: none' /></a></noscript><object class='tableauViz' style='display:none;'><param name='host_url' value='https%3A%2F%2Fpublic.tableau.com%2F' /> <param name='embed_code_version' value='3' /> <param name='path' value='views&#47;HIVinWorld&#47;PrevalenceofHIVtotalofpopulationages15-49?:language=en-US&amp;:embed=true&amp;:sid=&amp;:redirect=auth' /> <param name='toolbar' value='yes' /><param name='static_image' value='https:&#47;&#47;public.tableau.com&#47;static&#47;images&#47;HI&#47;HIVinWorld&#47;PrevalenceofHIVtotalofpopulationages15-49&#47;1.png' /> <param name='animate_transition' value='yes' /><param name='display_static_image' value='yes' /><param name='display_spinner' value='yes' /><param name='display_overlay' value='yes' /><param name='display_count' value='yes' /><param name='language' value='en-US' /></object></div> <script type='text/javascript'> var divElement = document.getElementById('viz1753192925819'); var vizElement = divElement.getElementsByTagName('object')[0]; vizElement.style.width='100%';vizElement.style.height=(divElement.offsetWidth*0.75)+'px'; var scriptElement = document.createElement('script'); scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js'; vizElement.parentNode.insertBefore(scriptElement, vizElement); </script>
<div class='tableauPlaceholder' id='viz1753193177428' style='position: relative'><noscript><a href='#'><img alt='BIẾN ĐỘNG DÂN SỐ VIỆT NAM TRONG CÁC THỜI KỲ ' src='https:&#47;&#47;public.tableau.com&#47;static&#47;images&#47;HT&#47;HT885SK6Z&#47;1_rss.png' style='border: none' /></a></noscript><object class='tableauViz' style='display:none;'><param name='host_url' value='https%3A%2F%2Fpublic.tableau.com%2F' /> <param name='embed_code_version' value='3' /> <param name='path' value='shared&#47;HT885SK6Z' /> <param name='toolbar' value='yes' /><param name='static_image' value='https:&#47;&#47;public.tableau.com&#47;static&#47;images&#47;HT&#47;HT885SK6Z&#47;1.png' /> <param name='animate_transition' value='yes' /><param name='display_static_image' value='yes' /><param name='display_spinner' value='yes' /><param name='display_overlay' value='yes' /><param name='display_count' value='yes' /><param name='language' value='en-US' /></object></div> <script type='text/javascript'> var divElement = document.getElementById('viz1753193177428'); var vizElement = divElement.getElementsByTagName('object')[0]; vizElement.style.width='1016px';vizElement.style.height='991px'; var scriptElement = document.createElement('script'); scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js'; vizElement.parentNode.insertBefore(scriptElement, vizElement); </script>
</body>
</html>
```
</html>