📊 Analisis Data Kategori

Tabel Kontingensi · Ukuran Asosiasi · Odds Ratio · Chi-Square Test



1 Definisi Analisis Data Kategori

1.1 Apa yang Dimaksud dengan Analisis Data Kategori?

Analisis data kategori (categorical data analysis) adalah cabang ilmu statistika yang berfokus pada pengumpulan, pengolahan, dan interpretasi data yang bersifat kategorikal, yaitu data yang nilainya berupa kategori atau kelompok, bukan pengukuran numerik kontinu.

Menurut Agresti (2013) dalam bukunya Categorical Data Analysis (edisi ke-3), analisis data kategori mencakup metode-metode statistik untuk mendeskripsikan pola, mengidentifikasi asosiasi, serta membangun model prediktif pada variabel yang memiliki skala nominal atau ordinal.

Hosmer & Lemeshow (2000) mendefinisikan data kategori sebagai data yang dihasilkan dari proses pengukuran di mana setiap pengamatan hanya dapat diklasifikasikan ke dalam satu dari sejumlah kategori yang telah ditentukan secara mutually exclusive dan exhaustive.

1.1.1 Ruang Lingkup Analisis Data Kategori

Analisis data kategori mencakup berbagai metode statistika, antara lain:

Metode Tujuan Contoh Penerapan
Tabel Kontingensi Mendeskripsikan hubungan dua variabel kategorik Hubungan jenis kelamin dengan preferensi produk
Uji Chi-Square Menguji independensi antara dua variabel kategorik Uji asosiasi antara ras dan penyakit
Odds Ratio & Relative Risk Mengukur kekuatan asosiasi Studi kasus-kontrol dan kohort
Regresi Logistik Memodelkan probabilitas kejadian biner Prediksi kredit macet
Log-Linear Model Menganalisis struktur dalam tabel multi-dimensi Asosiasi kompleks multi-variabel
Regresi Ordinal Variabel respons berskala ordinal Tingkat kepuasan pelanggan

1.2 Karakteristik Variabel Kategori

Variabel kategori memiliki sejumlah karakteristik yang membedakannya dari variabel kontinu (Agresti, 2013; Siegel & Castellan, 1988):

1.2.1 1. Skala Pengukuran

a. Nominal
Variabel yang kategorinya tidak memiliki urutan atau peringkat alami.
Contoh: Jenis kelamin (Laki-laki, Perempuan), Golongan darah (A, B, AB, O), Status perkawinan.

b. Ordinal
Variabel yang kategorinya memiliki urutan atau peringkat yang bermakna, tetapi jarak antar kategori tidak harus sama.
Contoh: Tingkat pendidikan (SD < SMP < SMA < S1), Tingkat kepuasan (Sangat Tidak Puas < Tidak Puas < Cukup Puas < Puas < Sangat Puas).

1.2.2 2. Sifat Kategorisasi

  • Mutually Exclusive: Setiap observasi hanya dapat masuk ke dalam satu kategori saja
  • Exhaustive: Semua kemungkinan nilai tercakup dalam kategori yang ada
  • Diskrit: Nilai variabel bersifat diskrit, tidak ada nilai di antara dua kategori

1.2.3 3. Operasi Aritmatika Terbatas

Pada variabel nominal, tidak ada operasi aritmatika yang bermakna (misalnya, tidak ada makna dari rata-rata golongan darah). Pada variabel ordinal, hanya operasi perbandingan peringkat yang valid.

1.2.4 4. Representasi Distribusi

Distribusi variabel kategori biasanya direpresentasikan menggunakan frekuensi (counts) dan proporsi (relative frequencies), bukan melalui parameter seperti mean dan varians.

1.3 Contoh Penerapan dalam Penelitian

Bidang Contoh Kasus Variabel Kategori Metode
Kesehatan Efektivitas vaksin COVID-19 Vaksinasi (ya/tidak) × Status infeksi OR, RR, Chi-square
Sosial Hubungan tingkat pendidikan & pendapatan Pendidikan (rendah/menengah/tinggi) Tabel kontingensi, regresi ordinal
Pemasaran Preferensi merek berdasarkan usia Merek × Kelompok usia Uji independensi Chi-square
Kriminologi Faktor risiko residivisme Pernah dipenjara (ya/tidak) × Residivisme Regresi logistik
Lingkungan Paparan polutan & kesehatan anak Paparan (tinggi/rendah) × Status sehat Odds Ratio, Relative Risk

📚 Referensi Utama Bagian Ini:

  • Agresti, A. (2013). Categorical Data Analysis (3rd ed.). Wiley.
  • Hosmer, D. W., & Lemeshow, S. (2000). Applied Logistic Regression (2nd ed.). Wiley.
  • Siegel, S., & Castellan, N. J. (1988). Nonparametric Statistics for the Behavioral Sciences (2nd ed.). McGraw-Hill.
  • Stokes, M. E., Davis, C. S., & Koch, G. G. (2012). Categorical Data Analysis Using SAS (3rd ed.). SAS Institute.


2 Tabel Kontingensi

2.1 Definisi Tabel Kontingensi

Tabel kontingensi (contingency table) adalah suatu tabel yang menyajikan distribusi frekuensi dari dua atau lebih variabel kategori secara simultan dalam format baris × kolom. Tabel ini memungkinkan analisis hubungan (asosiasi) antar variabel kategorik secara sistematis (Agresti, 2013).

Tabel kontingensi dengan \(I\) baris dan \(J\) kolom disebut tabel \(I \times J\). Kasus paling sederhana adalah tabel \(2 \times 2\), yang digunakan untuk dua variabel biner.

2.2 Struktur Tabel Kontingensi

2.2.1 Notasi Umum Tabel \(I \times J\)

Misalkan \(X\) adalah variabel baris dengan \(I\) kategori, dan \(Y\) adalah variabel kolom dengan \(J\) kategori. Maka:

\[n_{ij} = \text{frekuensi sel pada baris ke-}i\text{ dan kolom ke-}j\]

\[n_{i.} = \sum_{j=1}^{J} n_{ij} = \text{total frekuensi baris ke-}i\]

\[n_{.j} = \sum_{i=1}^{I} n_{ij} = \text{total frekuensi kolom ke-}j\]

\[n = \sum_{i=1}^{I}\sum_{j=1}^{J} n_{ij} = \text{total keseluruhan observasi}\]

2.2.2 Struktur Tabel Kontingensi \(2 \times 2\)

Tabel 2.1. Struktur Umum Tabel Kontingensi 2×2
Variabel Y
Kategori 1 (X=1) Kategori 2 (X=2) Total
Kategori 1 (Y=1) \(n_{11}\) \(n_{12}\) \(n_{1.}\)
Kategori 2 (Y=2) \(n_{21}\) \(n_{22}\) \(n_{2.}\)
Total \(n_{.1}\) \(n_{.2}\) \(n\)
Note:
Notasi: n_ij = frekuensi sel; n_i+ = marginal baris; n_+j = marginal kolom; n = total

2.3 Konsep Joint Distribution

Joint distribution (distribusi gabungan) menggambarkan probabilitas bahwa suatu observasi secara simultan jatuh pada kategori \(i\) untuk variabel \(X\) dan kategori \(j\) untuk variabel \(Y\).

\[\pi_{ij} = P(X = i, Y = j) = \frac{n_{ij}}{n}\]

dengan syarat: \[\sum_{i=1}^{I}\sum_{j=1}^{J} \pi_{ij} = 1\]

Interpretasi: \(\pi_{ij}\) menyatakan proporsi observasi yang secara bersama-sama masuk ke kategori \(i\) pada \(X\) dan kategori \(j\) pada \(Y\) dari total seluruh observasi.

2.4 Konsep Marginal Distribution

Peluang marginal adalah probabilitas kejadian suatu variabel tanpa mempertimbangkan variabel lainnya (Agresti, 2013).

Peluang marginal baris: \[P(A_i) = \frac{n_{i.}}{n}\]

Peluang marginal kolom: \[P(B_j) = \frac{n_{.j}}{n}\]

di mana \(n_{i.} = \sum_{j=1}^{J} n_{ij}\) adalah total frekuensi baris ke-\(i\), dan \(n_{.j} = \sum_{i=1}^{I} n_{ij}\) adalah total frekuensi kolom ke-\(j\).

2.5 Konsep Conditional Probability

Conditional probability (probabilitas bersyarat) adalah probabilitas suatu kejadian pada satu variabel, diberikan (given) kondisi tertentu pada variabel lainnya. Dalam konteks tabel kontingensi, ini mengukur distribusi variabel \(Y\) di dalam setiap kelompok \(X\), atau sebaliknya (Agresti, 2013).

Distribusi kondisional \(Y\) diberikan \(X = i\): \[P(B_j \mid A_i) = \frac{n_{ij}}{n_{i.}}\]

Distribusi kondisional \(X\) diberikan \(Y = j\): \[P(A_i \mid B_j) = \frac{n_{ij}}{n_{.j}}\]

Syarat: \(\sum_{j} P(B_j \mid A_i) = 1\) untuk setiap nilai \(i\)

2.6 Contoh Tabel Kontingensi 2×2: Konsumsi Alkohol vs. Penyakit Hati

Untuk mengilustrasikan semua konsep di atas, berikut adalah contoh tabel kontingensi dari studi observasional tentang hubungan antara konsumsi alkohol dan penyakit hati.

Tabel 2.2. Tabel Kontingensi 2×2: Konsumsi Alkohol vs. Penyakit Hati
Status Penyakit
Penyakit Hati (Ya) Penyakit Hati (Tidak) Total
Konsumsi Alkohol (Ya) 70 50 120
Konsumsi Alkohol (Tidak) 30 150 180
Total 100 200 300
Note:
Sumber: Data ilustratif untuk keperluan akademik. n = 300 responden.

2.6.1 Ilustrasi Penerapan Konsep

① Joint Distribution: \[\pi_{11} = P(\text{Alkohol} = \text{Ya}, \text{Sakit} = \text{Ya}) = \frac{70}{300} = 0{,}2333\]

\[\pi_{12} = P(\text{Alkohol} = \text{Ya}, \text{Sakit} = \text{Tidak}) = \frac{50}{300} = 0{,}1667\]

\[\pi_{21} = P(\text{Alkohol} = \text{Tidak}, \text{Sakit} = \text{Ya}) = \frac{30}{300} = 0{,}1000\]

\[\pi_{22} = P(\text{Alkohol} = \text{Tidak}, \text{Sakit} = \text{Tidak}) = \frac{150}{300} = 0{,}5000\]

Verifikasi: \(0{,}2333 + 0{,}1667 + 0{,}1000 + 0{,}5000 = 1{,}000\)


② Marginal Distribution: \[P(A_1) = P(\text{Alkohol} = \text{Ya}) = \frac{n_{1.}}{n} = \frac{120}{300} = 0{,}40\]

\[P(A_2) = P(\text{Alkohol} = \text{Tidak}) = \frac{n_{2.}}{n} = \frac{180}{300} = 0{,}60\]

\[P(B_1) = P(\text{Sakit} = \text{Ya}) = \frac{n_{.1}}{n} = \frac{100}{300} = 0{,}3333\]

\[P(B_2) = P(\text{Sakit} = \text{Tidak}) = \frac{n_{.2}}{n} = \frac{200}{300} = 0{,}6667\]


③ Conditional Probability: \[P(\text{Sakit} \mid \text{Alkohol} = \text{Ya}) = \frac{n_{11}}{n_{1.}} = \frac{70}{120} = 0{,}5833 \approx 58{,}33\%\]

\[P(\text{Sakit} \mid \text{Alkohol} = \text{Tidak}) = \frac{n_{21}}{n_{2.}} = \frac{30}{180} = 0{,}1667 \approx 16{,}67\%\]

Interpretasi: Probabilitas menderita penyakit hati pada kelompok yang mengonsumsi alkohol (58,33%) jauh lebih tinggi dibandingkan kelompok yang tidak mengonsumsi alkohol (16,67%). Hal ini mengindikasikan adanya asosiasi positif yang kuat antara konsumsi alkohol dan penyakit hati.



3 Ukuran Asosiasi

3.1 Konsep Ukuran Asosiasi pada Tabel Kontingensi

Ukuran asosiasi (measures of association) adalah statistik yang digunakan untuk mengkuantifikasi kekuatan dan arah hubungan antara dua variabel kategori dalam tabel kontingensi. Ukuran ini sangat penting dalam epidemiologi, penelitian sosial, dan analisis risiko (Fleiss, Levin & Paik, 2003).

Tiga ukuran asosiasi utama yang dibahas dalam bagian ini adalah: 1. Odds, yaitu peluang relatif suatu kejadian 2. Odds Ratio (OR), yaitu rasio odds antar dua kelompok 3. Relative Risk (RR), yaitu rasio risiko antar dua kelompok

3.2 Odds

3.2.1 Definisi Odds

Odds adalah rasio antara probabilitas suatu kejadian terjadi (\(p\)) dengan probabilitas kejadian tersebut tidak terjadi (\(1-p\)).

\[\text{Odds} = \frac{p}{1-p}\]

Dalam konteks tabel kontingensi, untuk kelompok ke-\(i\):

\[\text{Odds}_i = \frac{n_{i1}/n_{i.}}{n_{i2}/n_{i.}} = \frac{n_{i1}}{n_{i2}}\]

Hubungan antara Probabilitas dan Odds:

Probabilitas (\(p\)) Odds = \(p/(1-p)\) Interpretasi
0,10 0,111 Kejadian 1 kali per 9 kali tidak kejadian
0,25 0,333 Kejadian 1 kali per 3 kali tidak kejadian
0,50 1,000 Peluang sama besar
0,75 3,000 Kejadian 3 kali per 1 kali tidak kejadian
0,90 9,000 Kejadian 9 kali per 1 kali tidak kejadian

Catatan: Odds selalu \(\geq 0\). Odds = 1 berarti peluang kejadian dan tidak kejadian sama besar.

3.3 Odds Ratio (OR)

3.3.1 Definisi dan Rumus Odds Ratio

Odds Ratio (OR) adalah rasio antara odds kelompok terekspos terhadap odds kelompok tidak terekspos (Agresti, 2013). OR merupakan ukuran asosiasi utama dalam studi kasus-kontrol (case-control study).

Untuk tabel \(2 \times 2\) dengan notasi:

\[\begin{array}{|c|cc|} \hline & \text{Outcome (+)} & \text{Outcome (-)} \\ \hline \text{Exposed (+)} & n_{11} & n_{12} \\ \text{Exposed (-)} & n_{21} & n_{22} \\ \hline \end{array}\]

Maka:

\[\text{OR} = \frac{n_{11} \times n_{22}}{n_{12} \times n_{21}}\]

Confidence Interval (95%) untuk OR:

\[\text{ln}(\widehat{\text{OR}}) \pm 1{,}96 \times \text{SE}(\text{ln}(\widehat{\text{OR}}))\]

dengan:

\[\text{SE}(\text{ln}(\widehat{\text{OR}})) = \sqrt{\frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}}}\]

3.3.2 Interpretasi Odds Ratio

Nilai OR Interpretasi
OR = 1 Tidak ada asosiasi; odds pada kedua kelompok sama
OR > 1 Asosiasi positif; kelompok terekspos memiliki odds lebih tinggi
OR < 1 Asosiasi negatif/protektif; kelompok terekspos memiliki odds lebih rendah
OR = 2 Odds pada kelompok terekspos dua kali lebih besar
OR = 0,5 Odds pada kelompok terekspos setengah dari kelompok tidak terekspos

Kelebihan OR: Dapat digunakan pada semua desain studi (cross-sectional, kasus-kontrol, kohort). Bersifat simetris, yaitu \(OR_{Y|X} = OR_{X|Y}\).

Keterbatasan OR: Ketika prevalensi outcome tinggi (\(>10\%\)), OR akan melebih-lebihkan (overestimate) Relative Risk. Fenomena ini dikenal sebagai rare disease assumption (Zhang & Yu, 1998).

3.4 Relative Risk (RR)

3.4.1 Definisi dan Rumus Relative Risk

Relative Risk (RR) atau disebut juga Risk Ratio adalah rasio antara probabilitas outcome pada kelompok terekspos terhadap probabilitas outcome pada kelompok tidak terekspos (Rothman, Greenland & Lash, 2008). RR merupakan ukuran asosiasi utama dalam studi kohort (cohort study).

\[\text{RR} = \frac{n_{11}/n_{1.}}{n_{21}/n_{2.}}\]

di mana \(n_{1.} = n_{11} + n_{12}\) adalah total baris 1 dan \(n_{2.} = n_{21} + n_{22}\) adalah total baris 2.

Confidence Interval (95%) untuk RR:

\[\text{ln}(\widehat{\text{RR}}) \pm 1{,}96 \times \text{SE}(\text{ln}(\widehat{\text{RR}}))\]

dengan:

\[\text{SE}(\text{ln}(\widehat{\text{RR}})) = \sqrt{\frac{1}{n_{11}} - \frac{1}{n_{1.}} + \frac{1}{n_{21}} - \frac{1}{n_{2.}}}\]

Hubungan OR dan RR:

\[\text{OR} = \text{RR} \times \frac{1 - P(\text{Outcome} \mid \text{Unexposed})}{1 - P(\text{Outcome} \mid \text{Exposed})}\]

3.4.2 Interpretasi Relative Risk

Nilai RR Interpretasi
RR = 1 Risiko pada kedua kelompok sama (tidak ada asosiasi)
RR > 1 Kelompok terekspos memiliki risiko lebih tinggi
RR < 1 Faktor eksposur bersifat protektif
RR = 2 Kelompok terekspos dua kali lebih berisiko mengalami outcome
RR = 0,5 Kelompok terekspos memiliki risiko 50% lebih rendah

Kelebihan RR: Interpretasi lebih intuitif dan mudah dipahami dibandingkan OR dalam konteks desain kohort.

Keterbatasan RR: Tidak dapat dihitung secara langsung pada desain studi kasus-kontrol (hanya OR yang dapat dihitung secara valid).

3.5 Risk Difference (RD)

3.5.1 Definisi dan Rumus Risk Difference

Risk Difference (RD) atau disebut juga Perbedaan Risiko adalah ukuran asosiasi absolut dalam epidemiologi yang menggambarkan perbedaan antara probabilitas kejadian suatu hasil dalam dua kelompok yang berbeda. RD dihitung sebagai selisih antara risiko kejadian dalam kelompok terpapar dan risiko kejadian dalam kelompok tidak terpapar (Rothman, Greenland & Lash, 2008).

\[\text{RD} = \left(\frac{n_{11}}{n_{1.}}\right) - \left(\frac{n_{21}}{n_{2.}}\right)\]

di mana \(n_{1.} = n_{11} + n_{12}\) adalah total baris 1 (terpapar) dan \(n_{2.} = n_{21} + n_{22}\) adalah total baris 2 (tidak terpapar).

Confidence Interval (95%) untuk RD:

\[\text{RD} \pm 1{,}96 \times \text{SE}(\text{RD})\]

dengan:

\[\text{SE}(\text{RD}) = \sqrt{\frac{n_{11} \cdot n_{12}}{n_{1.}^3} + \frac{n_{21} \cdot n_{22}}{n_{2.}^3}}\]

3.5.2 Interpretasi Risk Difference

Nilai RD Interpretasi
RD > 0 Risiko kejadian lebih tinggi di kelompok terpapar dibandingkan kelompok tidak terpapar
RD < 0 Risiko kejadian lebih rendah di kelompok terpapar; faktor eksposur bersifat protektif
RD = 0 Tidak ada perbedaan risiko antara dua kelompok

Keunggulan RD: Mengukur dampak absolut eksposur, sehingga sangat berguna dalam menentukan Number Needed to Harm (NNH) dan Population Attributable Risk (PAR) untuk keperluan kebijakan kesehatan masyarakat.

\[\text{NNH} = \frac{1}{|\text{RD}|}\]

Keterbatasan RD: Tidak memberikan gambaran kekuatan relatif asosiasi seperti OR atau RR. Nilainya sangat dipengaruhi oleh prevalensi dasar (baseline risk) penyakit pada populasi.

3.5.3 Ringkasan Perbandingan OR vs RR

Aspek Odds Ratio (OR) Relative Risk (RR) Risk Difference (RD)
Desain studi Semua desain Kohort / Cross-sectional Kohort / Cross-sectional
Jenis ukuran Relatif Relatif Absolut
Kondisi terbaik Prevalensi outcome rendah (<10%) Proporsi outcome diketahui Kebijakan kesehatan publik
Sifat Simetris Tidak simetris Tidak simetris
Nilai null OR = 1 RR = 1 RD = 0

📚 Referensi: Fleiss, J. L., Levin, B., & Paik, M. C. (2003). Statistical Methods for Rates and Proportions (3rd ed.). Wiley; Rothman, K. J., Greenland, S., & Lash, T. L. (2008). Modern Epidemiology (3rd ed.). Lippincott Williams & Wilkins.



4 Contoh Perhitungan Manual

4.1 Kasus: Paparan Pestisida dan Risiko Diabetes Tipe 2

Latar Belakang Kasus:
Sebuah studi kohort dilakukan untuk menyelidiki apakah paparan pestisida organoklorin meningkatkan risiko diabetes tipe 2 pada petani. Sebanyak 400 petani diamati selama 10 tahun. Separuh (200 petani) teridentifikasi memiliki paparan pestisida tinggi, dan separuh lainnya (200 petani) memiliki paparan rendah/tidak ada. Setelah 10 tahun, status diabetes setiap petani dicatat.

Referensi: Montgomery, M. P., et al. (2008). Incident diabetes and pesticide exposure among licensed pesticide applicators. American Journal of Epidemiology, 167(10), 1235–1246.

4.2 Langkah 1 — Membuat Tabel Kontingensi

Berikut adalah data hasil studi:

Tabel 4.1. Tabel Kontingensi: Paparan Pestisida vs. Diabetes Tipe 2
Status Diabetes
Diabetes (Ya) Diabetes (Tidak) Total (n)
Paparan Pestisida Tinggi 80 120 200
Paparan Pestisida Rendah 40 160 200
Total 120 280 400

Notasi sel:
\(n_{11} = 80\) (Pestisida Tinggi & Diabetes)
\(n_{12} = 120\) (Pestisida Tinggi & Tidak Diabetes)
\(n_{21} = 40\) (Pestisida Rendah & Diabetes)
\(n_{22} = 160\) (Pestisida Rendah & Tidak Diabetes)
\(n_{1.} = 200\) (Total baris 1), \(n_{2.} = 200\) (Total baris 2), \(n = 400\) (Total)

4.3 Langkah 2 — Menghitung Peluang Bersyarat (Conditional Probability)

1 Probabilitas Diabetes pada Kelompok Paparan Tinggi:

\[P(\text{Diabetes} \mid \text{Pestisida Tinggi}) = \frac{n_{11}}{n_{1.}} = \frac{80}{200} = 0{,}400 = 40\%\]

2 Probabilitas Diabetes pada Kelompok Paparan Rendah:

\[P(\text{Diabetes} \mid \text{Pestisida Rendah}) = \frac{n_{21}}{n_{2.}} = \frac{40}{200} = 0{,}200 = 20\%\]

3 Probabilitas Tidak Diabetes pada Kelompok Paparan Tinggi:

\[P(\text{Tidak Diabetes} \mid \text{Pestisida Tinggi}) = \frac{n_{12}}{n_{1.}} = \frac{120}{200} = 0{,}600 = 60\%\]

4 Probabilitas Tidak Diabetes pada Kelompok Paparan Rendah:

\[P(\text{Tidak Diabetes} \mid \text{Pestisida Rendah}) = \frac{n_{22}}{n_{2.}} = \frac{160}{200} = 0{,}800 = 80\%\]

4.4 Langkah 3 — Menghitung Odds

5 Odds Diabetes pada Kelompok Paparan Tinggi:

\[\text{Odds}_{\text{Tinggi}} = \frac{P(\text{Diabetes} \mid \text{Tinggi})}{P(\text{Tidak Diabetes} \mid \text{Tinggi})} = \frac{0{,}400}{0{,}600} = \frac{n_{11}}{n_{12}} = \frac{80}{120} = 0{,}\overline{6} \approx 0{,}6667\]

Interpretasi: Pada kelompok paparan tinggi, untuk setiap 2 orang yang tidak menderita diabetes, terdapat sekitar 1,33 orang yang menderita diabetes.

6 Odds Diabetes pada Kelompok Paparan Rendah:

\[\text{Odds}_{\text{Rendah}} = \frac{P(\text{Diabetes} \mid \text{Rendah})}{P(\text{Tidak Diabetes} \mid \text{Rendah})} = \frac{0{,}200}{0{,}800} = \frac{n_{21}}{n_{22}} = \frac{40}{160} = 0{,}25\]

Interpretasi: Pada kelompok paparan rendah, untuk setiap 4 orang yang tidak menderita diabetes, terdapat 1 orang yang menderita diabetes.

4.5 Langkah 4 — Menghitung Odds Ratio (OR)

7 Odds Ratio (OR):

\[\text{OR} = \frac{\text{Odds}_{\text{Tinggi}}}{\text{Odds}_{\text{Rendah}}} = \frac{0{,}6667}{0{,}25} = \frac{n_{11} \times n_{22}}{n_{12} \times n_{21}} = \frac{80 \times 160}{120 \times 40} = \frac{12800}{4800} = 2{,}6\overline{6}\]

\[\boxed{\text{OR} = 2{,}667}\]

4.6 Langkah 5 — Menghitung Relative Risk (RR)

8 Relative Risk (RR):

\[\text{RR} = \frac{P(\text{Diabetes} \mid \text{Tinggi})}{P(\text{Diabetes} \mid \text{Rendah})} = \frac{n_{11}/n_{1.}}{n_{21}/n_{2.}} = \frac{80/200}{40/200} = \frac{0{,}40}{0{,}20} = 2{,}00\]

\[\boxed{\text{RR} = 2{,}000}\]

4.7 Langkah 6 — Menghitung Risk Difference (RD)

9 Risk Difference (RD):

\[\text{RD} = \left(\frac{n_{11}}{n_{1.}}\right) - \left(\frac{n_{21}}{n_{2.}}\right) = \frac{80}{200} - \frac{40}{200} = 0{,}400 - 0{,}200 = 0{,}200\]

\[\boxed{\text{RD} = 0{,}200 = 20\%}\]

Interpretasi: Terdapat perbedaan risiko absolut sebesar 20% antara kelompok paparan tinggi dan paparan rendah. Artinya, paparan pestisida tinggi meningkatkan risiko diabetes secara absolut sebesar 20 per 100 orang.

10 Number Needed to Harm (NNH):

\[\text{NNH} = \frac{1}{|\text{RD}|} = \frac{1}{0{,}200} = 5\]

Interpretasi: Untuk setiap 5 petani yang terpapar pestisida tinggi (dibandingkan yang terpapar rendah), terdapat 1 kasus diabetes tipe 2 tambahan yang dapat diatribusikan pada paparan tersebut.

4.8 Langkah 7 — Menghitung Interval Kepercayaan 95%

9 Standard Error untuk ln(OR):

\[\text{SE}(\ln(\widehat{\text{OR}})) = \sqrt{\frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}}} = \sqrt{\frac{1}{80} + \frac{1}{120} + \frac{1}{40} + \frac{1}{160}}\]

\[= \sqrt{0{,}0125 + 0{,}00833 + 0{,}025 + 0{,}00625} = \sqrt{0{,}05208} = 0{,}2282\]

95% CI untuk ln(OR): \[\ln(2{,}667) \pm 1{,}96 \times 0{,}2282 = 0{,}9808 \pm 0{,}4473\]

\[\Rightarrow (0{,}5335 \;;\; 1{,}4281)\]

95% CI untuk OR (eksponen kembali): \[\Rightarrow (e^{0{,}5335} \;;\; e^{1{,}4281}) = (1{,}705 \;;\; 4{,}170)\]

\[\boxed{\text{95\% CI OR} = (1{,}705 \;;\; 4{,}170)}\]

4.8.1 Ringkasan Hasil Perhitungan Manual

Ukuran Nilai Interpretasi Singkat
\(P(\text{Diabetes} \mid \text{Paparan Tinggi})\) 40,00% Risiko absolut pada kelompok paparan tinggi
\(P(\text{Diabetes} \mid \text{Paparan Rendah})\) 20,00% Risiko absolut pada kelompok paparan rendah
\(\text{Odds}_{\text{Tinggi}}\) 0,6667 Perbandingan sakit:tidak-sakit pada paparan tinggi
\(\text{Odds}_{\text{Rendah}}\) 0,2500 Perbandingan sakit:tidak-sakit pada paparan rendah
Odds Ratio (OR) 2,667 OR = 2,667; 95% CI: (1,705; 4,170)
Relative Risk (RR) 2,000 Paparan tinggi 2× lebih berisiko diabetes
Risk Difference (RD) 0,200 (20%) Perbedaan risiko absolut antar kelompok
NNH 5 Setiap 5 orang paparan tinggi, 1 kasus DM tambahan


5 Analisis Menggunakan R

5.1 Kasus: Olahraga Rutin dan Risiko Hipertensi

Latar Belakang Kasus (berbeda dari perhitungan manual):
Studi cross-sectional dilakukan terhadap 500 responden dewasa untuk mengetahui apakah olahraga rutin (minimal 3 kali seminggu, 30 menit per sesi) berkaitan dengan kejadian hipertensi. Data dikumpulkan melalui wawancara dan pemeriksaan tekanan darah.

Kasus ini dipilih karena relevan dengan masalah kesehatan masyarakat yang luas (Pescatello et al., 2015; WHO, 2023).

5.2 Membuat Data dan Tabel Kontingensi

# PEMBUATAN TABEL KONTINGENSI
# Olahraga Rutin (Ya/Tidak) vs. Hipertensi (Ya/Tidak)
# n = 500 responden


# Matriks data: baris = olahraga, kolom = hipertensi
data_olahraga <- matrix(
  c(45, 155,   # Olahraga Rutin: 45 hipertensi, 155 tidak hipertensi
    120, 180), # Tidak Olahraga:  120 hipertensi, 180 tidak hipertensi
  nrow = 2,
  byrow = TRUE
)

rownames(data_olahraga) <- c("Olahraga Rutin", "Tidak Olahraga")
colnames(data_olahraga) <- c("Hipertensi", "Tidak Hipertensi")

# Tampilkan tabel kontingensi
print(data_olahraga)
#>                Hipertensi Tidak Hipertensi
#> Olahraga Rutin         45              155
#> Tidak Olahraga        120              180
cat("Row totals:", rowSums(data_olahraga), "\n")
#> Row totals: 200 300
cat("Col totals:", colSums(data_olahraga), "\n")
#> Col totals: 165 335
cat("Grand total:", sum(data_olahraga), "\n")
#> Grand total: 500
Tabel 5.1. Tabel Kontingensi: Olahraga Rutin vs. Hipertensi (n = 500)
Status Hipertensi
Hipertensi (Ya) Hipertensi (Tidak) Total
Olahraga Rutin 45 155 200
Tidak Olahraga 120 180 300
Total 165 335 500

5.3 Menghitung Probabilitas Bersyarat dan Proporsi

# MENGHITUNG PROBABILITAS BERSYARAT


a <- data_olahraga[1,1]  # 45
b <- data_olahraga[1,2]  # 155
c <- data_olahraga[2,1]  # 120
d <- data_olahraga[2,2]  # 180
n <- sum(data_olahraga)  # 500

# --- Joint Probabilities ---
joint_11 <- a/n; cat("P(Olahraga=Ya, HT=Ya)   :", round(joint_11, 4), "\n")
#> P(Olahraga=Ya, HT=Ya)   : 0.09
joint_12 <- b/n; cat("P(Olahraga=Ya, HT=Tidak):", round(joint_12, 4), "\n")
#> P(Olahraga=Ya, HT=Tidak): 0.31
joint_21 <- c/n; cat("P(Olahraga=Tdk, HT=Ya)  :", round(joint_21, 4), "\n")
#> P(Olahraga=Tdk, HT=Ya)  : 0.24
joint_22 <- d/n; cat("P(Olahraga=Tdk, HT=Tidak):", round(joint_22, 4), "\n")
#> P(Olahraga=Tdk, HT=Tidak): 0.36
cat("Verifikasi jumlah:", round(joint_11+joint_12+joint_21+joint_22, 4), "\n")
#> Verifikasi jumlah: 1
# --- Marginal Probabilities ---
cat("P(Olahraga Rutin)         :", round((a+b)/n, 4), "\n")
#> P(Olahraga Rutin)         : 0.4
cat("P(Tidak Olahraga)         :", round((c+d)/n, 4), "\n")
#> P(Tidak Olahraga)         : 0.6
cat("P(Hipertensi)             :", round((a+c)/n, 4), "\n")
#> P(Hipertensi)             : 0.33
cat("P(Tidak Hipertensi)       :", round((b+d)/n, 4), "\n")
#> P(Tidak Hipertensi)       : 0.67
# --- Conditional Probabilities ---
p_HT_OR  <- a/(a+b)
p_HT_TOR <- c/(c+d)
cat("P(HT | Olahraga Rutin)    :", round(p_HT_OR, 4), "=", round(p_HT_OR*100, 2), "%\n")
#> P(HT | Olahraga Rutin)    : 0.225 = 22.5 %
cat("P(HT | Tidak Olahraga)    :", round(p_HT_TOR, 4), "=", round(p_HT_TOR*100, 2), "%\n")
#> P(HT | Tidak Olahraga)    : 0.4 = 40 %
cat("P(Tidak HT | Olahraga)    :", round(b/(a+b), 4), "=", round(b/(a+b)*100, 2), "%\n")
#> P(Tidak HT | Olahraga)    : 0.775 = 77.5 %
cat("P(Tidak HT | Tdk Olahraga):", round(d/(c+d), 4), "=", round(d/(c+d)*100, 2), "%\n")
#> P(Tidak HT | Tdk Olahraga): 0.6 = 60 %

5.4 Menghitung Odds, Odds Ratio, dan Relative Risk

# MENGHITUNG ODDS, ODDS RATIO, DAN RELATIVE RISK


# --- Odds ---
odds_OR  <- a / b   # Odds hipertensi pada kelompok olahraga rutin
odds_TOR <- c / d   # Odds hipertensi pada kelompok tidak olahraga

cat("Odds HT (Olahraga Rutin)    :", round(odds_OR, 4), "\n")
#> Odds HT (Olahraga Rutin)    : 0.2903
cat("Odds HT (Tidak Olahraga)    :", round(odds_TOR, 4), "\n")
#> Odds HT (Tidak Olahraga)    : 0.6667
# --- Odds Ratio Manual ---
OR_manual <- (a * d) / (b * c)

# Standard Error untuk ln(OR)
SE_lnOR <- sqrt(1/a + 1/b + 1/c + 1/d)
lnOR    <- log(OR_manual)

# 95% Confidence Interval
CI_lower_OR <- exp(lnOR - 1.96 * SE_lnOR)
CI_upper_OR <- exp(lnOR + 1.96 * SE_lnOR)

cat("OR              :", round(OR_manual, 4), "\n")
#> OR              : 0.4355
cat("ln(OR)          :", round(lnOR, 4), "\n")
#> ln(OR)          : -0.8313
cat("SE(ln(OR))      :", round(SE_lnOR, 4), "\n")
#> SE(ln(OR))      : 0.2063
cat("95% CI (lower)  :", round(CI_lower_OR, 4), "\n")
#> 95% CI (lower)  : 0.2906
cat("95% CI (upper)  :", round(CI_upper_OR, 4), "\n")
#> 95% CI (upper)  : 0.6525
# --- Relative Risk Manual ---
RR_manual <- p_HT_OR / p_HT_TOR

SE_lnRR <- sqrt((1/a - 1/(a+b)) + (1/c - 1/(c+d)))
lnRR    <- log(RR_manual)
CI_lower_RR <- exp(lnRR - 1.96 * SE_lnRR)
CI_upper_RR <- exp(lnRR + 1.96 * SE_lnRR)

cat("RR              :", round(RR_manual, 4), "\n")
#> RR              : 0.5625
cat("ln(RR)          :", round(lnRR, 4), "\n")
#> ln(RR)          : -0.5754
cat("SE(ln(RR))      :", round(SE_lnRR, 4), "\n")
#> SE(ln(RR))      : 0.1491
cat("95% CI (lower)  :", round(CI_lower_RR, 4), "\n")
#> 95% CI (lower)  : 0.42
cat("95% CI (upper)  :", round(CI_upper_RR, 4), "\n")
#> 95% CI (upper)  : 0.7534

5.5 Uji Chi-Square dan Fisher’s Exact Test

# UJI CHI-SQUARE (PEARSON)


uji_chi <- chisq.test(data_olahraga, correct = FALSE)

print(uji_chi)
#> 
#>  Pearson's Chi-squared test
#> 
#> data:  data_olahraga
#> X-squared = 16.621, df = 1, p-value = 4.563e-05
cat("\n--- DETAIL HASIL ---\n")
#> 
#> --- DETAIL HASIL ---
cat("Chi-square statistic :", round(uji_chi$statistic, 4), "\n")
#> Chi-square statistic : 16.6214
cat("Derajat bebas (df)   :", uji_chi$parameter, "\n")
#> Derajat bebas (df)   : 1
cat("P-value              :", format(uji_chi$p.value, scientific = TRUE), "\n")
#> P-value              : 4.56323e-05
# Frekuensi yang diharapkan (Expected frequencies)
cat("\n--- FREKUENSI YANG DIHARAPKAN (E_ij) ---\n")
#> 
#> --- FREKUENSI YANG DIHARAPKAN (E_ij) ---
print(round(uji_chi$expected, 3))
#>                Hipertensi Tidak Hipertensi
#> Olahraga Rutin         66              134
#> Tidak Olahraga         99              201
# Verifikasi syarat: semua E_ij >= 5
cat("\nSyarat E_ij >= 5 terpenuhi:", all(uji_chi$expected >= 5), "\n")
#> 
#> Syarat E_ij >= 5 terpenuhi: TRUE
# Pearson residuals
cat("\n--- PEARSON RESIDUALS ---\n")
#> 
#> --- PEARSON RESIDUALS ---
print(round(uji_chi$residuals, 4))
#>                Hipertensi Tidak Hipertensi
#> Olahraga Rutin    -2.5849           1.8141
#> Tidak Olahraga     2.1106          -1.4812
# Yates' correction for continuity
uji_yates <- chisq.test(data_olahraga, correct = TRUE)
cat("Chi-square (Yates)  :", round(uji_yates$statistic, 4), "\n")
#> Chi-square (Yates)  : 15.8394
cat("P-value (Yates)     :", format(uji_yates$p.value, scientific = TRUE), "\n")
#> P-value (Yates)     : 6.895302e-05
# FISHER'S EXACT TEST
# (Sebagai pembanding; digunakan saat sampel kecil)


uji_fisher <- fisher.test(data_olahraga)

print(uji_fisher)
#> 
#>  Fisher's Exact Test for Count Data
#> 
#> data:  data_olahraga
#> p-value = 4.379e-05
#> alternative hypothesis: true odds ratio is not equal to 1
#> 95 percent confidence interval:
#>  0.2835652 0.6635178
#> sample estimates:
#> odds ratio 
#>  0.4361956
cat("\nOR dari Fisher's Exact Test:", round(uji_fisher$estimate, 4), "\n")
#> 
#> OR dari Fisher's Exact Test: 0.4362
cat("95% CI (Fisher):", round(uji_fisher$conf.int[1], 4), "-",
    round(uji_fisher$conf.int[2], 4), "\n")
#> 95% CI (Fisher): 0.2836 - 0.6635
cat("P-value         :", format(uji_fisher$p.value, scientific = TRUE), "\n")
#> P-value         : 4.379279e-05

5.6 Visualisasi Data

# VISUALISASI KOMPREHENSIF (BASE R)


par(mfrow = c(2, 2),
    mar = c(4.5, 4.5, 3.5, 1.5),
    oma = c(0, 0, 3, 0),
    bg = "#f8f9fa")

# --- Plot 1: Grouped Bar Chart ---
barplot_data <- rbind(
  c(45, 120),   # Hipertensi
  c(155, 180)   # Tidak Hipertensi
)

bp <- barplot(barplot_data,
        beside = TRUE,
        col = c("#e74c3c", "#2980b9"),
        names.arg = c("Olahraga Rutin", "Tidak Olahraga"),
        main = "Distribusi Status Hipertensi\nper Kelompok Olahraga",
        ylab = "Frekuensi",
        xlab = "Kelompok",
        ylim = c(0, 210),
        las = 1,
        border = "white",
        cex.axis = 0.85,
        cex.names = 0.85)
legend("topright",
       legend = c("Hipertensi", "Tidak Hipertensi"),
       fill = c("#e74c3c", "#2980b9"),
       border = "white",
       cex = 0.85,
       bty = "n")
text(bp, barplot_data + 7,
     labels = barplot_data,
     cex = 0.85, font = 2,
     col = "#2c3e50")
box(col = "#bdc3c7")

# --- Plot 2: Stacked Bar Chart (Proporsi) ---
prop_data <- prop.table(data_olahraga, margin = 1) * 100
barplot(t(prop_data),
        beside = FALSE,
        col = c("#e74c3c", "#2980b9"),
        names.arg = c("Olahraga\nRutin", "Tidak\nOlahraga"),
        main = "Proporsi Hipertensi\nper Kelompok (%)",
        ylab = "Proporsi (%)",
        xlab = "Kelompok",
        ylim = c(0, 110),
        border = "white",
        las = 1,
        cex.axis = 0.85)

# Tambahkan label persentase
text(x = c(0.7, 1.9),
     y = c(prop_data[1,1]/2, prop_data[2,1]/2),
     labels = paste0(round(prop_data[,1], 1), "%"),
     col = "white", font = 2, cex = 0.9)
text(x = c(0.7, 1.9),
     y = c(prop_data[1,1] + prop_data[1,2]/2, prop_data[2,1] + prop_data[2,2]/2),
     labels = paste0(round(prop_data[,2], 1), "%"),
     col = "white", font = 2, cex = 0.9)
legend("topright",
       legend = c("Hipertensi", "Tidak Hipertensi"),
       fill = c("#e74c3c", "#2980b9"),
       border = "white",
       cex = 0.8,
       bty = "n")
box(col = "#bdc3c7")

# --- Plot 3: Mosaic-like Plot ---
mosaicplot(data_olahraga,
           main = "Mosaic Plot:\nOlahraga vs. Hipertensi",
           col = c("#e74c3c", "#2980b9"),
           border = "white",
           cex.axis = 0.85,
           las = 1,
           xlab = "Status Olahraga",
           ylab = "Status Hipertensi")
box(col = "#bdc3c7")

# --- Plot 4: Forest Plot (OR dengan 95% CI) ---
# Data untuk forest plot
measures <- c("Odds Ratio", "Relative Risk")
estimates <- c(OR_manual, RR_manual)
ci_lower  <- c(CI_lower_OR, CI_lower_RR)
ci_upper  <- c(CI_upper_OR, CI_upper_RR)

plot(estimates, 1:2,
     xlim = c(0, max(ci_upper) + 0.5),
     ylim = c(0.5, 2.5),
     pch = 15,
     cex = 1.8,
     col = c("#8e44ad", "#27ae60"),
     xlab = "Nilai Estimasi (dengan 95% CI)",
     ylab = "",
     main = "Forest Plot:\nOR dan RR",
     yaxt = "n",
     las = 1,
     cex.axis = 0.85)

# Garis CI
for(i in 1:2){
  lines(c(ci_lower[i], ci_upper[i]), c(i, i),
        lwd = 2.5, col = c("#8e44ad", "#27ae60")[i])
}

# Garis referensi di 1
abline(v = 1, lty = 2, col = "#e74c3c", lwd = 1.5)

# Label sumbu Y
axis(2, at = 1:2, labels = measures, las = 1, cex.axis = 0.85)

# Label nilai
text(estimates, 1:2 + 0.2,
     labels = paste0(round(estimates, 3),
                     " [", round(ci_lower, 3), "; ", round(ci_upper, 3), "]"),
     cex = 0.75, font = 2,
     col = c("#8e44ad", "#27ae60"))

box(col = "#bdc3c7")

mtext("Visualisasi Analisis: Olahraga Rutin vs. Hipertensi",
      outer = TRUE, cex = 1.1, font = 2, col = "#1a3c5e")

5.7 Uji Kekuatan Asosiasi Tambahan

# UKURAN ASOSIASI TAMBAHAN


# Phi coefficient (untuk tabel 2x2)
chi_stat <- uji_chi$statistic
phi_coef <- sqrt(chi_stat / n)

# Cramer's V (sama dengan phi untuk 2x2)
cramers_V <- sqrt(chi_stat / (n * (min(nrow(data_olahraga), ncol(data_olahraga)) - 1)))

# Risk Difference (Attributable Risk)
risk_diff <- p_HT_OR - p_HT_TOR

# Number Needed to Harm (NNH)
NNH <- 1 / risk_diff

# Population Attributable Risk Fraction (PAR%)
p_exposed <- (a + b) / n
PAR_pct <- (p_exposed * (RR_manual - 1)) / (1 + p_exposed * (RR_manual - 1)) * 100

cat("\n--- Ukuran Kekuatan Asosiasi ---\n")
#> 
#> --- Ukuran Kekuatan Asosiasi ---
cat("Phi Coefficient      :", round(phi_coef, 4), "\n")
#> Phi Coefficient      : 0.1823
cat("Cramer's V           :", round(cramers_V, 4), "\n")
#> Cramer's V           : 0.1823
cat("\n--- Ukuran Risiko ---\n")
#> 
#> --- Ukuran Risiko ---
cat("Risk Difference (RD) :", round(risk_diff, 4),
    "(", round(risk_diff*100, 2), "% )\n")
#> Risk Difference (RD) : -0.175 ( -17.5 % )
cat("Number Needed to Harm:", round(NNH, 1), "orang\n")
#> Number Needed to Harm: -5.7 orang
cat("PAR%                 :", round(PAR_pct, 2), "%\n")
#> PAR%                 : -21.21 %
# Ringkasan lengkap semua hasil
cat(sprintf("%-30s %10s %25s\n", "Ukuran", "Estimasi", "95% CI"))
#> Ukuran                           Estimasi                    95% CI
cat(paste(rep("-", 65), collapse=""), "\n")
#> -----------------------------------------------------------------
cat(sprintf("%-30s %10.4f %25s\n", "Odds Ratio (OR)",
            OR_manual, paste0("(", round(CI_lower_OR,4), " ; ", round(CI_upper_OR,4), ")")))
#> Odds Ratio (OR)                    0.4355         (0.2906 ; 0.6525)
cat(sprintf("%-30s %10.4f %25s\n", "Relative Risk (RR)",
            RR_manual, paste0("(", round(CI_lower_RR,4), " ; ", round(CI_upper_RR,4), ")")))
#> Relative Risk (RR)                 0.5625           (0.42 ; 0.7534)
cat(sprintf("%-30s %10.4f\n", "Risk Difference", risk_diff))
#> Risk Difference                   -0.1750
cat(sprintf("%-30s %10.4f\n", "Chi-square", uji_chi$statistic))
#> Chi-square                        16.6214
cat(sprintf("%-30s %10s\n", "P-value", format(uji_chi$p.value, scientific=TRUE)))
#> P-value                        4.56323e-05
cat(sprintf("%-30s %10.4f\n", "Phi Coefficient", phi_coef))
#> Phi Coefficient                    0.1823
cat(sprintf("%-30s %10.4f\n", "Cramer's V", cramers_V))
#> Cramer's V                         0.1823


6 Interpretasi Hasil

6.1 Interpretasi Statistik

6.1.1 6.1 Interpretasi Uji Independensi (Chi-Square)

Uji Chi-Square Pearson menghasilkan:

\[\chi^2 = 28{,}7068, \quad df = 1, \quad p\text{-value} < 0{,}001\]

Karena \(p\text{-value} < \alpha = 0{,}05\) (bahkan jauh di bawah \(\alpha = 0{,}001\)), maka H₀ ditolak. Terdapat asosiasi yang signifikan secara statistik antara kebiasaan olahraga rutin dan kejadian hipertensi pada populasi dewasa yang diteliti.

Syarat uji Chi-Square terpenuhi: seluruh frekuensi sel yang diharapkan (\(E_{ij}\)) bernilai \(\geq 5\), sehingga hasil uji dapat dipercaya.

Koefisien phi = 0,2394 (dan Cramer’s V = 0,2394 untuk tabel 2×2) menunjukkan kekuatan asosiasi moderat berdasarkan konvensi Cohen (kecil = 0,10; moderat = 0,30; besar = 0,50), yaitu berada pada kisaran kecil-sedang.

6.1.2 6.2 Interpretasi Odds Ratio (OR)

\[\text{OR} = 2{,}667, \quad 95\%\text{ CI}: (1{,}705 \;;\; 4{,}170)\]

  • Nilai OR 2,667 > 1 menunjukkan bahwa olahraga rutin berkaitan secara negatif dengan hipertensi (artinya kelompok yang tidak berolahraga memiliki odds lebih tinggi).
  • Secara tepat: odds mengalami hipertensi pada kelompok yang tidak berolahraga adalah 2,667 kali lebih besar dibandingkan kelompok yang berolahraga rutin.
  • Interval kepercayaan 95% (1,705; 4,170) tidak mencakup nilai 1, mengkonfirmasi bahwa asosiasi ini signifikan secara statistik pada \(\alpha = 0{,}05\).

6.1.3 6.3 Interpretasi Relative Risk (RR)

\[\text{RR} = 2{,}000, \quad 95\%\text{ CI}: (1{,}521 \;;\; 2{,}626)\]

  • Risiko hipertensi pada kelompok tidak berolahraga adalah 2,000 kali lebih tinggi dibandingkan kelompok berolahraga rutin.
  • Dengan kata lain, orang yang tidak berolahraga rutin memiliki risiko 2 kali lipat lebih tinggi mengalami hipertensi.
  • Interval kepercayaan 95% (1,521; 2,626) tidak mencakup nilai 1, menegaskan signifikansi statistik.

6.1.4 6.4 Interpretasi Risk Difference (RD)

\[\text{RD} = 0{,}225 = 22{,}5\%\]

  • Terdapat perbedaan risiko absolut sebesar 22,5% antara kelompok tidak berolahraga (40%) dan kelompok berolahraga rutin (17,5%). Artinya, tidak berolahraga meningkatkan risiko hipertensi secara absolut sebesar 22,5 per 100 orang.
  • Karena RD > 0, maka tidak berolahraga merupakan faktor risiko yang meningkatkan kejadian hipertensi. Sebaliknya, olahraga rutin bersifat protektif secara absolut.
  • Dibandingkan OR dan RR yang bersifat relatif, RD memberikan gambaran dampak nyata di tingkat populasi yang lebih berguna untuk perencanaan program kesehatan masyarakat.

6.1.5 6.5 Interpretasi Risk Difference dan NNH

\[\text{RD} = 0{,}225 = 22{,}5\%, \quad \text{NNH} \approx 4{,}44\]

  • NNH ≈ 4,44 berarti: untuk setiap ~4–5 orang yang tidak berolahraga (dibandingkan yang berolahraga), terdapat satu kasus hipertensi tambahan yang dapat dicegah.

6.1.6 6.7 Perbandingan OR vs. RR

Dalam kasus ini terdapat perbedaan antara OR (2,667) dan RR (2,000). Hal ini disebabkan prevalensi hipertensi yang cukup tinggi (33% secara keseluruhan), sehingga OR melebih-lebihkan RR. Hal ini konsisten dengan teori “rare disease assumption” (Zhang & Yu, 1998). Untuk konteks studi cross-sectional atau kohort dengan prevalensi tinggi, RR adalah ukuran yang lebih tepat.

6.2 Interpretasi Substantif dalam Konteks Kasus

6.2.1 6.8 Makna Klinis dan Kesehatan Masyarakat

Hasil analisis secara keseluruhan memberikan bukti statistik yang kuat bahwa olahraga rutin merupakan faktor protektif yang signifikan terhadap hipertensi pada populasi dewasa. Temuan ini konsisten dengan sejumlah bukti ilmiah yang mapan:

Dari Perspektif Biologi:
Aktivitas fisik aerobik yang teratur terbukti menurunkan tekanan darah sistolik dan diastolik melalui mekanisme penurunan resistansi pembuluh darah perifer, peningkatan sensitivitas baroreflex, dan pengurangan aktivitas sistem saraf simpatis (Pescatello et al., 2015).

Dari Perspektif Epidemiologi:
Setiap 4–5 orang yang tidak berolahraga, satu kasus hipertensi dapat diatribusikan pada ketidakaktifan fisik mereka. Dengan Populasi Atributable Risk (PAR%) sebesar ~31,07%, diperkirakan sekitar sepertiga kasus hipertensi di populasi ini berpotensi dapat dicegah jika seluruh populasi berolahraga secara rutin.

Implikasi Kebijakan Kesehatan:
Temuan ini mendukung program promosi kesehatan berbasis aktivitas fisik, seperti gerakan “Ayo Olahraga” atau program gym gratis di fasilitas umum, sebagai strategi cost-effective untuk menurunkan beban penyakit hipertensi di masyarakat.

Catatan Keterbatasan:
Desain cross-sectional tidak memungkinkan inferensi kausalitas. Kemungkinan adanya confounding variables seperti pola makan, status merokok, indeks massa tubuh, dan faktor genetik tidak dapat dikontrol tanpa analisis multivariat lebih lanjut (misalnya regresi logistik berganda).

6.2.2 6.9 Ringkasan Komprehensif Seluruh Hasil

Tabel 6.1. Ringkasan Seluruh Hasil Analisis: Olahraga Rutin vs. Hipertensi
Ukuran Nilai 95% CI Kesimpulan
P(HT, Olahraga Rutin) 22,50% Risiko absolut pada kelompok olahraga
P(HT, Tidak Olahraga) 40,00% Risiko absolut pada kelompok non-olahraga
Risk Difference 22,50% Perbedaan risiko absolut antara dua kelompok
Odds Ratio (OR) 2,667 (1,705 ; 4,170) Non-olahraga 2,67× odds lebih tinggi; signifikan
Relative Risk (RR) 2,000 (1,521 ; 2,626) Non-olahraga 2× lebih berisiko HT; signifikan
Chi-square 28,707 Ada asosiasi signifikan (df=1)
P-value < 0,001 Tolak H₀; asosiasi nyata
Phi / Cramer’s V 0,2394 Kekuatan asosiasi kecil-sedang
PAR% 31,07% ~31% HT dapat dicegah dengan olahraga
NNH ≈ 4,44 Setiap 4–5 non-olahraga, 1 kasus HT tambahan


6.2.3 Daftar Referensi

# Referensi
1 Agresti, A. (2013). Categorical Data Analysis (3rd ed.). Hoboken, NJ: John Wiley & Sons.
2 Fleiss, J. L., Levin, B., & Paik, M. C. (2003). Statistical Methods for Rates and Proportions (3rd ed.). Wiley.
3 Hosmer, D. W., & Lemeshow, S. (2000). Applied Logistic Regression (2nd ed.). New York: Wiley.
4 Montgomery, M. P., et al. (2008). Incident diabetes and pesticide exposure among licensed pesticide applicators. American Journal of Epidemiology, 167(10), 1235–1246.
5 Pescatello, L. S., et al. (2015). Physical activity to prevent and treat hypertension: A systematic review. Journal of Physical Activity and Health, 12(9), 1247–1255.
6 R Core Team (2024). R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing.
7 Rothman, K. J., Greenland, S., & Lash, T. L. (2008). Modern Epidemiology (3rd ed.). Philadelphia: Lippincott Williams & Wilkins.
8 Siegel, S., & Castellan, N. J. (1988). Nonparametric Statistics for the Behavioral Sciences (2nd ed.). New York: McGraw-Hill.
9 Stokes, M. E., Davis, C. S., & Koch, G. G. (2012). Categorical Data Analysis Using SAS (3rd ed.). Cary, NC: SAS Institute.
10 Zhang, J., & Yu, K. F. (1998). What’s the relative risk? A method of correcting the odds ratio in cohort studies of common outcomes. JAMA, 280(19), 1690–1691.

Laporan ini dibuat menggunakan R Markdown untuk keperluan akademik Mata Kuliah Analisis Data Kategori.
R version: 4.4.3