Dalam sebuah studi, ditemukan 8 kasus baru penyakit X dalam 1 tahun pada populasi 1.200 orang. Karena ada migrasi dan kematian, total person-time yang berhasil dicatat adalah 1.050 person-years.
• Hitung Incidence Rate penyakit X.
• Nyatakan hasil dalam bentuk per 1.000 person-years.
cases <- 8
person_time <- 1050
ir_per_person_year <- cases / person_time
ir_per_1000py <- ir_per_person_year * 1000
cat(sprintf("Incidence rate = %.6f per person-year\n", ir_per_person_year))
## Incidence rate = 0.007619 per person-year
cat(sprintf("Incidence rate = %.3f per 1000 person-years\n\n", ir_per_1000py))
## Incidence rate = 7.619 per 1000 person-years
pt <- poisson.test(cases, T = person_time)
print(pt)
##
## Exact Poisson test
##
## data: cases time base: person_time
## number of events = 8, time base = 1050, p-value < 2.2e-16
## alternative hypothesis: true event rate is not equal to 1
## 95 percent confidence interval:
## 0.003289364 0.015012561
## sample estimates:
## event rate
## 0.007619048
ci_lower <- pt$conf.int[1]
ci_upper <- pt$conf.int[2]
cat(sprintf("\n95%% CI untuk incidence rate = [%.6f, %.6f] per person-year\n", ci_lower, ci_upper))
##
## 95% CI untuk incidence rate = [0.003289, 0.015013] per person-year
cat(sprintf("95%% CI untuk incidence rate = [%.3f, %.3f] per 1000 person-years\n",
ci_lower * 1000, ci_upper * 1000))
## 95% CI untuk incidence rate = [3.289, 15.013] per 1000 person-years
Interpretasi:
Dari 1.050 person-years pengamatan terdapat 8 kasus baru penyakit X, sehingga incidence rate diperkirakan 0.00762 per person-year (setara 7.62 per 1.000 person-years). Interval kepercayaan 95% untuk laju ini adalah 3.29 sampai 15.01 per 1.000 person-years, menunjukkan ketidakpastian cukup besar akibat jumlah kejadian yang kecil. Interpretasi praktisnya: diperkirakan terjadi sekitar 3–15 kasus baru per 1.000 orang per tahun di populasi yang diamati, dengan nilai tengah sekitar 7.6 per 1.000 per tahun.
Dalam sebuah penelitian kohort terhadap 500 orang sehat di awal periode, sete lah 2 tahun pengamatan ditemukan 25 kasus baru hipertensi.
• Hitung Cumulative Incidence.
• Bagaimana interpretasinya dalam konteks risiko
n <- 500
cases <- 25
time_years <- 2
ci <- cases / n
# 95% CI untuk proporsi
bt <- binom.test(cases, n, conf.level = 0.95)
ci_lower <- bt$conf.int[1]
ci_upper <- bt$conf.int[2]
# hasil
cat(sprintf("Cumulative incidence = %.4f (%.2f%%)\n", ci, ci*100))
## Cumulative incidence = 0.0500 (5.00%)
cat(sprintf("95%% CI (exact) = [%.4f, %.4f] -> [%.2f%%, %.2f%%]\n\n",
ci_lower, ci_upper, ci_lower*100, ci_upper*100))
## 95% CI (exact) = [0.0326, 0.0729] -> [3.26%, 7.29%]
Interpretasi :
Dari sebuah kohort tertutup 500 orang sehat yang diikuti selama 2 tahun ditemukan 25 kasus baru hipertensi. Cumulative incidence selama periode 2 tahun adalah 5.0% (95% CI: 3.26%–7.29%). Yang Artinya sekitar 5 dari setiap 100 orang yang bebas hipertensi pada awal studi diperkirakan akan mengembangkan hipertensi dalam 2 tahun pengamatan; nilai interval kepercayaan menunjukkan bahwa, dengan tingkat kepercayaan 95%, risiko sebenarnya di populasi asal berkisar kira-kira antara 3.3% sampai 7.3% dalam 2 tahun.
Pada survei kesehatan di kota berpenduduk 20.000 orang, ditemukan 400 orang menderita diabetes pada saat survei dilakukan.
• Hitung prevalensi diabetes di kota tersebut.
• Apa makna angka tersebut dalam konteks kesehatan masyarakat?
pop <- 20000
cases <- 400
prev <- cases / pop
# 95% CI menggunakan binom.test
bt <- binom.test(cases, pop, conf.level = 0.95)
ci_lower <- bt$conf.int[1]
ci_upper <- bt$conf.int[2]
# hasil
cat(sprintf("Prevalensi = %.4f (%.2f%%)\n", prev, prev*100))
## Prevalensi = 0.0200 (2.00%)
cat(sprintf("Prevalensi = %.2f per 1000 penduduk\n\n", prev*1000))
## Prevalensi = 20.00 per 1000 penduduk
cat(sprintf("95%% CI (exact) = [%.4f, %.4f] -> [%.2f%%, %.2f%%]\n",
ci_lower, ci_upper, ci_lower*100, ci_upper*100))
## 95% CI (exact) = [0.0181, 0.0220] -> [1.81%, 2.20%]
Interpretasi:
Prevalensi diabetes pada survei ini adalah 400/20.000 = 2.0% (setara 20 per 1.000 penduduk), artinya pada saat pengukuran sekitar 2 dari setiap 100 orang di kota tersebut hidup dengan diabetes; angka ini menggambarkan beban penyakit yang memerlukan layanan diagnosis, pengobatan, manajemen komplikasi, serta program pencegahan dan edukasi, dan berguna untuk perencanaan sumber daya kesehatan; catatan penting—hasil ini adalah point prevalence (bergantung pada representativitas sampel dan tingkat respons) dan tidak memberi informasi tentang insidensi atau risiko penyakit baru.
Data kohort:
• Dari 200 perokok, 40 orang menderita penyakit paru kronis.
• Dari 300 bukan perokok, 15 orang menderita penyakit paru kronis
Tentukan:
1. Cumulative Incidence pada kelompok perokok dan bukan perokok.
2. Relative Risk (RR).
4. Interpretasikan hasilnya.
a <- 40
b <- 200 - a
c <- 15
d <- 300 - c
n_exp <- a + b
n_unexp <- c + d
risk_exp <- a / n_exp
risk_unexp <- c / n_unexp
risk_exp
## [1] 0.2
risk_unexp
## [1] 0.05
RR <- risk_exp / risk_unexp
# variance log(RR) menurut pendekatan asimtotik
var_logRR <- (1/a - 1/n_exp) + (1/c - 1/n_unexp)
se_logRR <- sqrt(var_logRR)
logRR <- log(RR)
ci_log_lower <- logRR - 1.96 * se_logRR
ci_log_upper <- logRR + 1.96 * se_logRR
RR_CI <- exp(c(ci_log_lower, ci_log_upper))
AR <- risk_exp - risk_unexp
se_AR <- sqrt( (risk_exp*(1-risk_exp))/n_exp + (risk_unexp*(1-risk_unexp))/n_unexp )
AR_CI <- AR + c(-1,1) * 1.96 * se_AR
# (AF_exposed) dan CI dari transformasi CI RR
AF_exp <- (RR - 1) / RR
AF_CI_lower <- (RR_CI[1] - 1) / RR_CI[1]
AF_CI_upper <- (RR_CI[2] - 1) / RR_CI[2]
cat("Cumulative incidence (perokok) =", sprintf("%.4f (%.1f%%)\n", risk_exp, risk_exp*100))
## Cumulative incidence (perokok) = 0.2000 (20.0%)
cat("Cumulative incidence (bukan perokok)=", sprintf("%.4f (%.1f%%)\n\n", risk_unexp, risk_unexp*100))
## Cumulative incidence (bukan perokok)= 0.0500 (5.0%)
cat("Relative Risk (RR) =", sprintf("%.2f\n", RR))
## Relative Risk (RR) = 4.00
cat("95% CI RR = [", sprintf("%.2f", RR_CI[1]), ", ", sprintf("%.2f", RR_CI[2]), "]\n\n", sep="")
## 95% CI RR = [2.27, 7.04]
cat("Attributable Risk (risk difference) =", sprintf("%.4f (%.1f percentage points)\n", AR, AR*100))
## Attributable Risk (risk difference) = 0.1500 (15.0 percentage points)
cat("95% CI AR = [", sprintf("%.4f", AR_CI[1]), ", ", sprintf("%.4f", AR_CI[2]), "]\n\n", sep="")
## 95% CI AR = [0.0893, 0.2107]
cat("Attributable fraction among exposed (AF_exposed) =", sprintf("%.2f%%\n", AF_exp*100))
## Attributable fraction among exposed (AF_exposed) = 75.00%
cat("95% CI AF_exposed = [", sprintf("%.2f%%", AF_CI_lower*100), ", ", sprintf("%.2f%%", AF_CI_upper*100), "]\n", sep="")
## 95% CI AF_exposed = [55.98%, 85.80%]
Interpretasi :
Perokok memiliki cumulative incidence penyakit paru kronis 20% selama periode pengamatan dibanding 5% pada bukan perokok; risiko relatifnya 4.0 (95% CI 2.27–7.04), artinya perokok memiliki empat kali lipat risiko dibanding bukan perokok. Secara absolut,
15 percentage points lebih banyak kasus pada perokok (AR = 15%, 95% CI ≈ 8.9%–21.1%), yang berarti dari 100 perokok, kira-kira 15 kasus lebih dapat dikaitkan dengan paparan merokok dibanding jika mereka tidak merokok.
Proporsi kasus pada perokok yang dapat diatribusikan ke merokok (AF) sekitar 75% (CI ≈ 56%–86%), menunjukkan bahwa sebagian besar kasus di antara perokok mungkin disebabkan oleh merokok.
Penelitian kasus-kontrol memberikan data berikut:
a <- 45; b <- 30; c <- 20; d <- 55
tbl <- matrix(c(a, c, b, d), nrow = 2, byrow = TRUE)
rownames(tbl) <- c("Exposure+", "Exposure-")
colnames(tbl) <- c("Disease+", "Disease-")
tbl
## Disease+ Disease-
## Exposure+ 45 20
## Exposure- 30 55
• Hitung Odds Ratio (OR). • Apa makna hasil tersebut terkait hubungan paparan dengan penyakit?
OR <- (a * d) / (b * c)
# 95% CI untuk OR (metode log)
se_logOR <- sqrt(1/a + 1/b + 1/c + 1/d)
logOR <- log(OR)
ci_log_lower <- logOR - 1.96 * se_logOR
ci_log_upper <- logOR + 1.96 * se_logOR
OR_CI <- exp(c(ci_log_lower, ci_log_upper))
ft <- fisher.test(matrix(c(a,b,c,d), nrow=2), conf.int = TRUE)
# Hasil
cat(sprintf("Odds Ratio (OR) = %.3f\n", OR))
## Odds Ratio (OR) = 4.125
cat(sprintf("95%% CI (log method) = [%.3f, %.3f]\n\n", OR_CI[1], OR_CI[2]))
## 95% CI (log method) = [2.070, 8.220]
cat("Hasil fisher.test (untuk p-value dan CI):\n")
## Hasil fisher.test (untuk p-value dan CI):
print(ft)
##
## Fisher's Exact Test for Count Data
##
## data: matrix(c(a, b, c, d), nrow = 2)
## p-value = 6.594e-05
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
## 1.963710 8.737152
## sample estimates:
## odds ratio
## 4.082653
Interpretasi :
Odds Ratio sebesar 4.13 menunjukkan bahwa odds menderita penyakit paru kronis pada kelompok yang terpapar (perokok) adalah kira-kira 4.1 kali odds pada kelompok tidak terpapar. Karena interval kepercayaan 95% sekitar [2.07, 8.22] tidak mencakup 1, hasil ini konsisten dengan adanya asosiasi positif yang bermakna secara statistik antara paparan merokok dan penyakit paru kronis pada data ini. Dengan kata lain, perokok memiliki odds penyakit paru kronis yang jauh lebih tinggi dibanding bukan perokok.
Pada suatu wabah, ditemukan 250 kasus dengan 10 di antaranya meninggal. • Hitung CFR.
• Bagaimana interpretasi tingkat keparahan penyakit berdasarkan CFR tersebut?
cases <- 250
deaths <- 10
CFR <- deaths / cases
# 95% CI exact untuk proporsi (Clopper-Pearson)
bt <- binom.test(deaths, cases, conf.level = 0.95)
ci_lower <- bt$conf.int[1]
ci_upper <- bt$conf.int[2]
# Hasil
cat(sprintf("CFR = %d / %d = %.4f (%.2f%%)\n", deaths, cases, CFR, CFR*100))
## CFR = 10 / 250 = 0.0400 (4.00%)
cat(sprintf("95%% CI (Clopper-Pearson) = [%.4f, %.4f] -> [%.2f%%, %.2f%%]\n",
ci_lower, ci_upper, ci_lower*100, ci_upper*100))
## 95% CI (Clopper-Pearson) = [0.0193, 0.0723] -> [1.93%, 7.23%]
Interpretasi :
Case-fatality rate (CFR) pada wabah ini adalah 4.0% (10 dari 250 kasus meninggal), dengan interval kepercayaan 95% sebesar 1.93% sampai 7.23%, yang mengindikasikan bahwa sekitar 4 dari setiap 100 kasus diperkirakan berakhir dengan kematian; lebar CI menunjukkan adanya ketidakpastian karena jumlah kematian relatif kecil. CFR mengukur tingkat keparahan penyakit di antara yang terdiagnosis (bukan angka mortalitas populasi), dan nilainya sensitif terhadap definisi kasus, kelengkapan pelaporan (mis. kasus ringan yang tidak terdeteksi) serta waktu pengukuran (CFR awal dapat bias jika beberapa kasus masih dalam proses outcome).