Abstrak

Laporan ini menyajikan kajian akademik mengenai analisis data kategori dengan studi kasus hubungan antara aktivitas olahraga dan risiko penyakit jantung. Pembahasan mencakup konsep dasar analisis data kategori, konstruksi dan interpretasi tabel kontingensi, pengukuran asosiasi melalui odds, odds ratio (OR), dan relative risk (RR), serta implementasi komputasional menggunakan perangkat lunak R. Hasil analisis menunjukkan bahwa individu yang tidak berolahraga memiliki risiko dua kali lebih besar terkena penyakit jantung dibandingkan individu yang rutin berolahraga (OR = 2,67; RR = 2,00). Uji chi-square mengkonfirmasi bahwa asosiasi kedua variabel tersebut signifikan secara statistik (p < 0,05).

Kata kunci: analisis data kategori, tabel kontingensi, odds ratio, relative risk, penyakit jantung



1 Definisi Analisis Data Kategori

1.1 Pengertian Analisis Data Kategori

📖 Definisi

Analisis data kategori (categorical data analysis) adalah cabang statistika yang mempelajari metode pengumpulan, penyajian, dan penarikan inferensi dari data yang diukur dalam skala nominal atau ordinal, di mana setiap observasi diklasifikasikan ke dalam satu dari beberapa kategori yang mutually exclusive dan exhaustive.

Agresti (2013) mendefinisikan data kategori sebagai data yang nilainya merupakan label atau kategori, bukan ukuran kuantitatif. Berbeda dengan analisis regresi konvensional yang mengasumsikan normalitas dan kontinuitas variabel respons, analisis data kategori menggunakan model-model khusus seperti logistic regression, log-linear models, dan generalized linear models (GLM) dengan fungsi link yang sesuai.

Dalam epidemiologi dan ilmu kesehatan masyarakat, metode ini sangat lazim digunakan untuk menganalisis hubungan antara faktor risiko (misalnya: merokok, obesitas, aktivitas fisik) dengan kejadian penyakit (misalnya: penyakit jantung, diabetes, kanker).

1.2 Karakteristik Variabel Kategori

Variabel kategori memiliki sejumlah karakteristik yang membedakannya dari variabel kontinu, antara lain:

  1. Diskrit dan Terbatas: Nilai hanya dapat berupa anggota dari himpunan kategori yang telah ditentukan.
  2. Mutual Exclusiveness : Setiap observasi hanya dapat masuk ke dalam satu kategori.
  3. Exhaustiveness : Setiap observasi harus dapat dikategorikan ke dalam salah satu kategori yang tersedia.
  4. Tidak Mengasumsikan Distribusi Normal : Analisis berbasis frekuensi dan probabilitas, bukan parameter \(\mu\) dan \(\sigma^2\).

1.3 Perbedaan Variabel Nominal dan Ordinal

Aspek Variabel Nominal Variabel Ordinal
Urutan Kategori Tidak ada urutan alami Terdapat urutan yang bermakna
Operasi Matematika Hanya kesamaan (=, ≠) Kesamaan dan perbandingan (<, >)
Contoh Jenis kelamin, golongan darah Tingkat pendidikan, derajat keparahan penyakit
Ukuran Tendensi Sentral Modus Modus, Median
Uji Statistik Umum Chi-square, Fisher’s Exact Chi-square, Kruskal-Wallis, Spearman’s \(\rho\)

1.4 Penerapan dalam Penelitian Kesehatan

Analisis data kategori memiliki peran sentral dalam penelitian kesehatan masyarakat dan epidemiologi. Beberapa penerapan utamanya meliputi:

  • Studi Kohort dan Kasus-Kontrol: Mengukur kekuatan asosiasi antara paparan (exposure) dan hasil (outcome) menggunakan odds ratio dan relative risk.
  • Surveilans Epidemiologi: Memantau distribusi penyakit berdasarkan karakteristik demografis (usia, jenis kelamin, wilayah).
  • Uji Klinis: Membandingkan proporsi respons antara kelompok perlakuan dan kontrol.
  • Analisis Faktor Risiko: Mengidentifikasi variabel prediktor dari kejadian penyakit menggunakan regresi logistik biner.
Key Insight : Relevansi Akademik

Pemahaman mendalam tentang analisis data kategori sangat esensial bagi praktisi statistika di bidang kesehatan. Sebagian besar variabel dalam penelitian klinis dan epidemiologi bersifat kategoris, sehingga penguasaan metode ini merupakan kompetensi inti yang tidak dapat diabaikan (Agresti, 2013; Stokes, Davis & Koch, 2012).


2 Tabel Kontingensi

2.1 Definisi dan Konsep Dasar

📖 Definisi

Tabel kontingensi (contingency table atau cross-tabulation table) adalah suatu matriks yang merangkum distribusi frekuensi dari dua atau lebih variabel kategori secara simultan. Tabel ini memperlihatkan frekuensi observasi yang jatuh pada setiap kombinasi kategori dari variabel-variabel yang diamati (Agresti, 2013).

2.2 Struktur Tabel Kontingensi 2×2

Untuk dua variabel biner \(X\) (baris) dan \(Y\) (kolom), tabel kontingensi \(2 \times 2\) memiliki struktur berikut:

\(X\)  \(Y\) \(y_1\) (Penyakit) \(y_2\) (Tidak Penyakit) Total
\(x_1\) (Olahraga) \(n_{11}\) \(n_{12}\) \(n_{1 \cdot}\)
\(x_2\) (Tidak Olahraga) \(n_{21}\) \(n_{22}\) \(n_{2 \cdot}\)
Total \(n_{\cdot 1}\) \(n_{\cdot 2}\) \(n_{\cdot\cdot}\)

di mana:

  • \(x_i\) adalah kategori ke-\(i\) dari variabel \(X\); \(y_j\) adalah kategori ke-\(j\) dari variabel \(Y\)
  • \(n_{ij}\) adalah frekuensi sel baris ke-\(i\) kolom ke-\(j\)
  • \(n_{i\cdot} = n_{i1} + n_{i2}\) adalah total baris ke-\(i\)
  • \(n_{\cdot j} = n_{1j} + n_{2j}\) adalah total kolom ke-\(j\)
  • \(n_{\cdot\cdot} = n_{1\cdot} + n_{2\cdot} = n_{\cdot 1} + n_{\cdot 2}\) adalah total keseluruhan

2.3 Joint Distribution (Distribusi Bersama)

Distribusi bersama (joint probability) mendefinisikan probabilitas setiap kombinasi kategori dari dua variabel. Sesuai notasi yang digunakan pada mata kuliah ini, peluang bersama dilambangkan dengan \(\pi_{ij}\), yaitu:

\[P(X=i,\ Y=j) = \pi_{ij}, \qquad \pi_{ij} = \frac{n_{ij}}{n_{\cdot\cdot}}, \quad i = 1,2;\ j = 1,2\]

Tabel distribusi peluang bersama untuk tabel \(2 \times 2\):

\(X\)  \(Y\) \(1\) \(2\) Total
\(1\) \(\pi_{11}\) \(\pi_{12}\) \(\pi_{1\cdot}\)
\(2\) \(\pi_{21}\) \(\pi_{22}\) \(\pi_{2\cdot}\)
Total \(\pi_{\cdot 1}\) \(\pi_{\cdot 2}\) \(1\)

Sifat normalitas distribusi bersama:

\[\pi_{11} + \pi_{12} + \pi_{21} + \pi_{22} = \pi_{1\cdot} + \pi_{2\cdot} = \pi_{\cdot 1} + \pi_{\cdot 2} = 1\]

2.4 Marginal Distribution (Distribusi Marjinal)

Distribusi marjinal (marginal probability) diperoleh dengan menjumlahkan peluang bersama terhadap salah satu variabel:

\[\pi_{i\cdot} = \pi_{i1} + \pi_{i2} = \sum_{j} \pi_{ij} \qquad \text{(peluang marjinal variabel } X \text{ kategori ke-}i\text{)}\]

\[\pi_{\cdot j} = \pi_{1j} + \pi_{2j} = \sum_{i} \pi_{ij} \qquad \text{(peluang marjinal variabel } Y \text{ kategori ke-}j\text{)}\]

Distribusi marjinal mencerminkan distribusi masing-masing variabel secara terpisah tanpa mempertimbangkan variabel lainnya. Estimasi sampelnya adalah \(\hat{\pi}_{i\cdot} = n_{i\cdot}/n_{\cdot\cdot}\) dan \(\hat{\pi}_{\cdot j} = n_{\cdot j}/n_{\cdot\cdot}\).

2.5 Conditional Probability (Probabilitas Bersyarat)

Distribusi peluang bersyarat (conditional probability) ditentukan dengan menetapkan terlebih dahulu variabel yang dijadikan syarat. Apabila variabel \(X\) yang menjadi syarat, maka distribusi peluang \(Y\) bersyarat \(X\) dinyatakan sebagai:

\[\pi_{j|h} = P(Y = j \mid X = h) = \frac{\pi_{hj}}{\pi_{h\cdot}}, \qquad \sum_{j} \pi_{j|h} = 1\]

Tabel distribusi peluang bersyarat untuk tabel \(2 \times 2\) (bersyarat \(X\)):

\(X\)  \(Y\) \(1\) \(2\) Total
\(1\) \(\pi_{1|1}\) \(\pi_{2|1}\) \(1\)
\(2\) \(\pi_{1|2}\) \(\pi_{2|2}\) \(1\)

Probabilitas bersyarat ini merupakan dasar dari perhitungan proporsi dan risiko dalam analisis epidemiologi.

✅ Konsep Kunci : Independensi Statistik

Jika \(X\) dan \(Y\) saling bebas (independen), maka peluang bersyarat sama dengan peluang marjinal: \[\pi_{j|h} = \pi_{\cdot j} \qquad \text{atau ekuivalen} \qquad \pi_{hj} = \pi_{h\cdot} \times \pi_{\cdot j}\] Sebaliknya, jika \(\pi_{j|h} \neq \pi_{j|i}\) untuk suatu pasangan \(h \neq i\), maka terdapat asosiasi antara \(X\) dan \(Y\).

2.6 Desain Sampling Tabel Kontingensi

Sesuai materi perkuliahan, untuk penelitian yang melibatkan variabel acak \(X\) dan \(Y\) yang keduanya bersifat kategori dan dideskripsikan dalam tabel kontingensi, terdapat tiga jenis desain sampling yang mungkin digunakan:

Desain Deskripsi Ukuran Asosiasi yang Tepat
Prospektif Variabel respons \(Y\) diukur setelah pengelompokan \(X\) ditetapkan. Peneliti mempunyai kendali atas pengelompokan. Contoh: Clinical Trial dan Cohort Study RR dan OR
Retrospektif Variabel respons \(Y\) ditentukan terlebih dahulu, kemudian ditelusuri variabel prediktor \(X\)-nya. Disebut juga Case-control Study OR
Cross-Sectional Sampel acak diambil dari populasi; setiap unit dikla­sifikasi menurut \(X\) dan \(Y\) tanpa membatasi variabel mana yang menjadi prediktor/respons RR dan OR
⚠️ Perhatian : Desain Studi dan Pemilihan Ukuran Asosiasi

Pada desain retrospektif (kasus-kontrol), distribusi \(Y\) bersyarat \(X\) tidak dapat dikerjakan langsung karena proporsi kasus dan kontrol ditentukan secara artifisial oleh peneliti. Oleh karena itu, Odds Ratio (OR) menjadi satu-satunya ukuran asosiasi yang valid. OR merupakan estimasi yang baik untuk RR ketika prevalensi penyakit rendah , kondisi ini dikenal sebagai rare disease assumption (Rothman et al., 2008).


3 Ukuran Asosiasi

3.1 Tabel Notasi Standar

Dalam epidemiologi, tabel kontingensi \(2 \times 2\) antara faktor risiko dan hasil penyakit biasanya disajikan menggunakan notasi huruf sebagai berikut:

Penyakit (+) Tidak Penyakit (−) Total
Olahraga \(a\) \(b\) \(a + b\)
Tidak Olahraga \(c\) \(d\) \(c + d\)
Total \(a + c\) \(b + d\) \(n\)

3.2 Odds (Peluang)

📖 Definisi : Odds

Odds adalah rasio antara probabilitas suatu kejadian terjadi terhadap probabilitas kejadian tersebut tidak terjadi.

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

di mana \(p\) adalah probabilitas kejadian penyakit. Dalam konteks tabel \(2 \times 2\):

\[\text{Odds}_{\text{Olahraga}} = \frac{a/(a+b)}{b/(a+b)} = \frac{a}{b}, \qquad \text{Odds}_{\text{Tidak Olahraga}} = \frac{c/(c+d)}{d/(c+d)} = \frac{c}{d}\]

Interpretasi: Odds = 2 berarti kejadian dua kali lebih mungkin terjadi daripada tidak terjadi.

3.3 Odds Ratio (Rasio Odds)

📖 Definisi : Rasio Odds (Odds Ratio)

Rasio Odds (OR) merupakan asosiasi antara \(X\) dan \(Y\) yang diperlihatkan melalui rasio dua buah odds , odds baris 1 terhadap odds baris 2. Odds dalam baris \(i\) untuk respons \(Y = j\) dan \(Y = k\) adalah:

\[\Psi_i(j,k) = \frac{\pi_{ij}}{\pi_{ik}}\]

Rasio Odds antara dua baris \(h\) dan \(i\) kemudian didefinisikan sebagai:

\[\Psi_{hi}(j,k) = \frac{\Psi_h(j,k)}{\Psi_i(j,k)} = \frac{\pi_{j|h}/\pi_{k|h}}{\pi_{j|i}/\pi_{k|i}} = \frac{\pi_{hj} \times \pi_{ik}}{\pi_{ij} \times \pi_{hk}}\]

Secara khusus, untuk tabel kontingensi \(2 \times 2\), OR merupakan cross product dari elemen-elemen diagonal:

\[\Psi_{hi}(j,k) = \frac{\pi_{11} \times \pi_{22}}{\pi_{12} \times \pi_{21}} = \frac{n_{11} \times n_{22}}{n_{12} \times n_{21}} = \frac{ad}{bc}\]

Interpretasi Rasio Odds:

Nilai OR Interpretasi
\(\Psi_{hi} = 1\) \(X\) dan \(Y\) independen; tidak ada asosiasi
\(\Psi_{hi} > 1\) Baris \(h\) menghasilkan respons \(j\) sebesar \(\Psi_{hi}\) kali lebih mungkin dibanding baris \(i\)
\(\Psi_{hi} < 1\) Baris \(h\) menghasilkan respons \(j\) lebih jarang dibanding baris \(i\)

Nilai OR berkisar dalam interval \([0, \infty)\). Satu kategori dari baris dan satu dari kolom dapat dijadikan baseline dalam perhitungan OR. Untuk tabel \(I \times J\), cukup dihitung sebanyak \((I-1) \times (J-1)\) odds ratio.

Hubungan dengan Log-Odds (Logit): Dalam model regresi logistik, logaritma natural dari OR merupakan koefisien regresi \(\hat{\beta}\):

\[\ln(\Psi) = \hat{\beta}_1 \quad \Rightarrow \quad \Psi = e^{\hat{\beta}_1}\]

Sehingga OR berfungsi sebagai effect size dari prediktor kategori dalam model logistik.

3.4 Beda Peluang (Difference Probability)

📖 Definisi : Beda Peluang

Beda peluang (difference probability) adalah selisih antara dua peluang bersyarat \(Y = j\) untuk dua kategori \(X\) yang berbeda, yaitu \(h\) dan \(i\).

\[\Delta = \pi_{j|h} - \pi_{j|i}\]

Nilai beda peluang sebesar nol (\(\Delta = 0\), atau \(\pi_{j|h} = \pi_{j|i}\)) mencerminkan keadaan tidak terdapat asosiasi, artinya peluang nilai variabel respons \(Y = j\) tidak bergantung pada kategori \(X\). Dalam konteks kasus ini:

\[\Delta = P(\text{Penyakit} \mid \text{Tidak Olahraga}) - P(\text{Penyakit} \mid \text{Olahraga}) = \pi_{1|2} - \pi_{1|1}\]

⚠️ Keterbatasan Beda Peluang

Beda peluang antara dua baris dapat menghasilkan nilai yang sama meskipun peluang-peluangnya tidak sama. Selain itu, beda peluang akan memberikan kesimpulan yang keliru ketika peluang-peluang yang terlibat bernilai sangat kecil. Oleh karena itu, Risiko Relatif (RR) dan Rasio Odds (OR) dikembangkan sebagai alternatif yang lebih informatif.

3.5 Resiko Relatif (Relative Risk)

📖 Definisi : Resiko Relatif

Resiko Relatif (RR) adalah rasio antara dua peluang bersyarat, yaitu antara peluang \(Y = j\) dalam baris \(X = h\) dengan \(X = i\). RR paling tepat digunakan dalam studi kohort (prospektif).

\[RR = \frac{\pi_{j|h}}{\pi_{j|i}}\]

Nilai \(RR = 1\) mengindikasikan \(\pi_{j|h} = \pi_{j|i}\), artinya \(Y\) dan \(X\) independen. Dalam konteks tabel \(2 \times 2\) dengan notasi \(a, b, c, d\):

\[RR = \frac{\pi_{1|\text{Tidak Olahraga}}}{\pi_{1|\text{Olahraga}}} = \frac{c/(c+d)}{a/(a+b)}\]

Perbandingan OR dan RR:

⚠️ Penting : Pemilihan Ukuran Asosiasi

Relative Risk (RR) hanya dapat dihitung secara valid pada studi kohort (prospektif). Pada studi kasus-kontrol, OR menjadi ukuran pilihan, dan OR merupakan estimasi yang baik untuk RR ketika prevalensi penyakit rendah (<10%) , kondisi ini dikenal sebagai rare disease assumption (Rothman et al., 2008).


4 Perhitungan Manual

4.1 Data Hipotetis

Berikut adalah contoh data hipotetis yang akan digunakan untuk ilustrasi perhitungan manual:

Penyakit Jantung (+) Tidak Penyakit (−) Total
Olahraga 20 (\(a\)) 80 (\(b\)) 100
Tidak Olahraga 40 (\(c\)) 60 (\(d\)) 100
Total 60 140 200

5 Perumusan Hipotesis

Sebelum melakukan analisis statistik, perlu dirumuskan hipotesis yang akan diuji secara formal. Terdapat tiga hipotesis yang relevan dalam analisis asosiasi data kategori pada kasus ini.

5.1 Hipotesis Uji Chi-Square (Independensi)

Uji chi-square digunakan untuk menguji apakah terdapat asosiasi antara variabel aktivitas olahraga (\(X\)) dan variabel status penyakit jantung (\(Y\)) dalam populasi.

\[H_0 : \pi_{j|1} = \pi_{j|2} \quad \forall\ j \qquad \text{(}X \text{ dan } Y \text{ independen , tidak ada asosiasi)}\] \[H_1 : \pi_{j|1} \neq \pi_{j|2} \quad \text{untuk suatu } j \qquad \text{(terdapat asosiasi antara } X \text{ dan } Y\text{)}\]

Secara ekuivalen, \(H_0\) dapat dinyatakan sebagai \(\pi_{ij} = \pi_{i\cdot} \times \pi_{\cdot j}\) untuk semua sel \((i,j)\). Statistik uji yang digunakan adalah:

\[\chi^2 = \sum_{i}\sum_{j} \frac{(n_{ij} - \hat{\mu}_{ij})^2}{\hat{\mu}_{ij}}, \qquad \hat{\mu}_{ij} = \frac{n_{i\cdot} \times n_{\cdot j}}{n_{\cdot\cdot}}\]

di mana \(\hat{\mu}_{ij}\) adalah frekuensi harapan (expected frequency) pada sel \((i,j)\). Statistik \(\chi^2\) mengikuti distribusi chi-square dengan derajat bebas \(df = (I-1)(J-1)\). Untuk tabel \(2 \times 2\), \(df = 1\).

⚠️ Syarat Validitas Uji Chi-Square

Uji chi-square valid apabila tidak ada sel yang memiliki frekuensi harapan kurang dari 5. Apabila syarat ini tidak terpenuhi, gunakan Uji Eksak Fisher (Fisher’s Exact Test) sebagai alternatif.

5.2 Hipotesis untuk Odds Ratio

Uji signifikansi OR menguji apakah kekuatan asosiasi antara olahraga dan penyakit jantung berbeda secara nyata dari kondisi independen (\(\Psi = 1\)).

\[H_0 : \Psi = 1 \qquad \text{(tidak ada asosiasi; olahraga tidak berpengaruh terhadap risiko penyakit jantung)}\] \[H_1 : \Psi \neq 1 \qquad \text{(terdapat asosiasi)}\]

Pengujian dilakukan melalui interval kepercayaan 95% dari OR. Apabila interval kepercayaan tidak memuat nilai 1, maka \(H_0\) ditolak pada \(\alpha = 0{,}05\). Statistik uji menggunakan pendekatan Wald:

\[z = \frac{\ln(\hat{\Psi})}{SE(\ln \hat{\Psi})}, \qquad SE(\ln \hat{\Psi}) = \sqrt{\frac{1}{n_{11}} + \frac{1}{n_{12}} + \frac{1}{n_{21}} + \frac{1}{n_{22}}}\]

5.3 Hipotesis untuk Relative Risk

\[H_0 : RR = 1 \qquad \text{(risiko penyakit jantung sama pada kedua kelompok)}\] \[H_1 : RR \neq 1 \qquad \text{(risiko penyakit jantung berbeda antar kelompok)}\]

Apabila \(H_0\) ditolak dan \(RR > 1\), maka kelompok yang dijadikan pembilang (tidak olahraga) memiliki risiko yang lebih tinggi dibandingkan kelompok penyebut (olahraga), sehingga olahraga terbukti bersifat protektif.

5.4 Ringkasan Hipotesis

Uji \(H_0\) \(H_1\) Keputusan jika \(p < \alpha\)
Chi-Square \(X \perp Y\) (independen) \(X \not\perp Y\) (berasosiasi) Tolak \(H_0\); terdapat asosiasi
Odds Ratio \(\Psi = 1\) \(\Psi \neq 1\) Tolak \(H_0\); OR signifikan
Relative Risk \(RR = 1\) \(RR \neq 1\) Tolak \(H_0\); RR signifikan
💡 Key Insight : Kerangka Pengujian

Ketiga hipotesis di atas saling melengkapi dan secara logis konsisten satu sama lain. Jika \(H_0\) uji chi-square ditolak (terdapat asosiasi), maka secara bersamaan diharapkan \(\Psi \neq 1\) dan \(RR \neq 1\). Kombinasi ketiga hasil ini memberikan bukti statistik yang kuat dan komprehensif mengenai hubungan antara aktivitas olahraga dan risiko penyakit jantung.

5.5 Langkah 1 : Distribusi Bersama (Joint Distribution)

Total observasi: \(n = 200\)

\[P(\text{Olahraga, Penyakit}) = \frac{20}{200} = 0{,}10\] \[P(\text{Olahraga, Tidak Penyakit}) = \frac{80}{200} = 0{,}40\] \[P(\text{Tidak Olahraga, Penyakit}) = \frac{40}{200} = 0{,}20\] \[P(\text{Tidak Olahraga, Tidak Penyakit}) = \frac{60}{200} = 0{,}30\]

Verifikasi: \(0{,}10 + 0{,}40 + 0{,}20 + 0{,}30 = 1{,}00\)

5.6 Langkah 2 : Distribusi Marjinal

\[P(\text{Olahraga}) = \frac{100}{200} = 0{,}50 \qquad P(\text{Tidak Olahraga}) = \frac{100}{200} = 0{,}50\] \[P(\text{Penyakit}) = \frac{60}{200} = 0{,}30 \qquad P(\text{Tidak Penyakit}) = \frac{140}{200} = 0{,}70\]

5.7 Langkah 3 : Probabilitas Bersyarat

\[P(\text{Penyakit} \mid \text{Olahraga}) = \frac{20}{100} = 0{,}20\] \[P(\text{Penyakit} \mid \text{Tidak Olahraga}) = \frac{40}{100} = 0{,}40\]

Interpretasi: Proporsi penyakit jantung pada kelompok tidak olahraga (40%) adalah dua kali lebih besar dibandingkan kelompok olahraga (20%).

5.8 Langkah 4 : Perhitungan Odds

\[\text{Odds}_{\text{Olahraga}} = \frac{a}{b} = \frac{20}{80} = 0{,}25\]

\[\text{Odds}_{\text{Tidak Olahraga}} = \frac{c}{d} = \frac{40}{60} = 0{,}6\overline{6}\]

5.9 Langkah 5 : Perhitungan Odds Ratio

Menggunakan kelompok olahraga sebagai referensi:

\[\text{OR} = \frac{\text{Odds}_{\text{Tidak Olahraga}}}{\text{Odds}_{\text{Olahraga}}} = \frac{c \times b}{a \times d} = \frac{40 \times 80}{20 \times 60} = \frac{3200}{1200} \approx 2{,}67\]

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

5.10 Langkah 6 : Perhitungan Relative Risk

\[\text{RR} = \frac{P(\text{Penyakit} \mid \text{Tidak Olahraga})}{P(\text{Penyakit} \mid \text{Olahraga})} = \frac{40/100}{20/100} = \frac{0{,}40}{0{,}20} = 2{,}00\]

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

5.11 Langkah 7 : Uji Chi-Square Manual

Uji chi-square digunakan untuk menguji hipotesis \(H_0 : \pi_{j|1} = \pi_{j|2}\) (tidak ada asosiasi). Prosedur perhitungan manual dilakukan dalam tiga tahap.

5.11.1 Tahap 1 : Frekuensi Observasi (\(n_{ij}\))

\(X\) \ \(Y\) Penyakit (\(y_1\)) Sehat (\(y_2\)) Total
Olahraga (\(x_1\)) \(n_{11} = 20\) \(n_{12} = 80\) \(n_{1\cdot} = 100\)
Tidak Olahraga (\(x_2\)) \(n_{21} = 40\) \(n_{22} = 60\) \(n_{2\cdot} = 100\)
Total \(n_{\cdot 1} = 60\) \(n_{\cdot 2} = 140\) \(n_{\cdot\cdot} = 200\)

5.11.2 Tahap 2 : Frekuensi Harapan (\(\hat{\mu}_{ij}\))

Frekuensi harapan dihitung dengan rumus:

\[\hat{\mu}_{ij} = \frac{n_{i\cdot} \times n_{\cdot j}}{n_{\cdot\cdot}}\]

Perhitungan untuk setiap sel:

\[\hat{\mu}_{11} = \frac{n_{1\cdot} \times n_{\cdot 1}}{n_{\cdot\cdot}} = \frac{100 \times 60}{200} = 30\]

\[\hat{\mu}_{12} = \frac{n_{1\cdot} \times n_{\cdot 2}}{n_{\cdot\cdot}} = \frac{100 \times 140}{200} = 70\]

\[\hat{\mu}_{21} = \frac{n_{2\cdot} \times n_{\cdot 1}}{n_{\cdot\cdot}} = \frac{100 \times 60}{200} = 30\]

\[\hat{\mu}_{22} = \frac{n_{2\cdot} \times n_{\cdot 2}}{n_{\cdot\cdot}} = \frac{100 \times 140}{200} = 70\]

Verifikasi: \(\hat{\mu}_{11} + \hat{\mu}_{12} + \hat{\mu}_{21} + \hat{\mu}_{22} = 30 + 70 + 30 + 70 = 200 = n_{\cdot\cdot}\)

\(X\) \ \(Y\) Penyakit (\(y_1\)) Sehat (\(y_2\)) Total
Olahraga (\(x_1\)) \(\hat{\mu}_{11} = 30\) \(\hat{\mu}_{12} = 70\) \(100\)
Tidak Olahraga (\(x_2\)) \(\hat{\mu}_{21} = 30\) \(\hat{\mu}_{22} = 70\) \(100\)
Total \(60\) \(140\) \(200\)

5.11.3 Tahap 3 : Statistik Chi-Square

\[\chi^2 = \sum_{i=1}^{2}\sum_{j=1}^{2} \frac{(n_{ij} - \hat{\mu}_{ij})^2}{\hat{\mu}_{ij}}\]

Substitusi nilai setiap sel:

\[\chi^2 = \frac{(20-30)^2}{30} + \frac{(80-70)^2}{70} + \frac{(40-30)^2}{30} + \frac{(60-70)^2}{70}\]

\[\chi^2 = \frac{(-10)^2}{30} + \frac{(10)^2}{70} + \frac{(10)^2}{30} + \frac{(-10)^2}{70}\]

\[\chi^2 = \frac{100}{30} + \frac{100}{70} + \frac{100}{30} + \frac{100}{70}\]

\[\chi^2 = 3{,}333 + 1{,}429 + 3{,}333 + 1{,}429 = 10{,}524\]

\[\boxed{\chi^2 = 10{,}524, \quad df = (2-1)(2-1) = 1}\]

Nilai kritis pada \(\alpha = 0{,}05\) dan \(df = 1\) adalah \(\chi^2_{0{,}05;1} = 3{,}841\). Karena \(\chi^2_{hitung} = 10{,}524 > 3{,}841\), maka:

✅ Keputusan Uji Chi-Square

Tolak \(H_0\) pada \(\alpha = 0{,}05\). Terdapat cukup bukti statistik untuk menyimpulkan bahwa aktivitas olahraga dan penyakit jantung tidak independen : dengan kata lain, terdapat asosiasi yang signifikan antara kedua variabel tersebut (\(\chi^2 = 10{,}524\); \(df = 1\); \(p < 0{,}05\)).

5.12 Ringkasan Hasil Perhitungan Manual

0,20
Risiko Penyakit
(Kelompok Olahraga)
0,40
Risiko Penyakit
(Tidak Olahraga)
2,67
Odds Ratio
(OR)
2,00
Relative Risk
(RR)
10,524
Chi-Square (χ²)
df = 1
Tolak H₀
Keputusan
α = 0,05
💡 Key Insight : Hasil Perhitungan Manual

Berdasarkan perhitungan manual yang sistematis, diperoleh: OR = 2,67 (tidak olahraga berisiko 2,67× lebih besar), RR = 2,00 (risiko absolut dua kali lipat), dan χ² = 10,524 (\(df = 1\)) yang melampaui nilai kritis 3,841 sehingga \(H_0\) ditolak. Ketiga ukuran ini secara konsisten membuktikan bahwa aktivitas olahraga bersifat protektif terhadap penyakit jantung.


6 Analisis Menggunakan R

6.1 Persiapan Paket

# Instalasi paket (jalankan sekali jika belum terinstal):
# install.packages(c("epitools", "vcd", "ggplot2", "knitr", "kableExtra"))

library(epitools)    # Untuk odds ratio dan relative risk dengan CI
library(vcd)         # Untuk mosaic plot dan statistik asosiasi
library(ggplot2)     # Untuk visualisasi data
library(knitr)       # Untuk rendering tabel rapi
library(kableExtra)  # Untuk formatting tabel HTML yang lebih baik

6.2 Membuat Tabel Kontingensi

# ---------------------------------------------------------
# Membuat matriks data tabel kontingensi 2x2
# Baris: Olahraga, Tidak Olahraga
# Kolom: Penyakit Jantung, Tidak Penyakit
# ---------------------------------------------------------
data_matrix <- matrix(
  c(20, 80,    # Baris 1: Olahraga  → 20 sakit, 80 sehat
    40, 60),   # Baris 2: Tidak Olahraga → 40 sakit, 60 sehat
  nrow  = 2,
  byrow = TRUE
)

rownames(data_matrix) <- c("Olahraga", "Tidak Olahraga")
colnames(data_matrix) <- c("Penyakit Jantung", "Tidak Penyakit")

# Tampilkan tabel kontingensi
cat("=== TABEL KONTINGENSI ===\n")
#> === TABEL KONTINGENSI ===
print(data_matrix)
#>                Penyakit Jantung Tidak Penyakit
#> Olahraga                     20             80
#> Tidak Olahraga               40             60
cat("\n=== TABEL DENGAN TOTAL MARGINAL ===\n")
#> 
#> === TABEL DENGAN TOTAL MARGINAL ===
print(addmargins(data_matrix))
#>                Penyakit Jantung Tidak Penyakit Sum
#> Olahraga                     20             80 100
#> Tidak Olahraga               40             60 100
#> Sum                          60            140 200

6.3 Distribusi Probabilitas

n <- sum(data_matrix)

cat("==== DISTRIBUSI BERSAMA (Joint Distribution) ====\n")
#> ==== DISTRIBUSI BERSAMA (Joint Distribution) ====
joint_dist <- data_matrix / n
print(round(joint_dist, 4))
#>                Penyakit Jantung Tidak Penyakit
#> Olahraga                    0.1            0.4
#> Tidak Olahraga              0.2            0.3
cat("Jumlah total:", sum(joint_dist), "\n")
#> Jumlah total: 1
cat("\n==== DISTRIBUSI MARJINAL ====\n")
#> 
#> ==== DISTRIBUSI MARJINAL ====
cat("Distribusi Baris (Aktivitas Olahraga):\n")
#> Distribusi Baris (Aktivitas Olahraga):
print(round(margin.table(data_matrix, 1) / n, 4))
#>       Olahraga Tidak Olahraga 
#>            0.5            0.5
cat("\nDistribusi Kolom (Status Penyakit):\n")
#> 
#> Distribusi Kolom (Status Penyakit):
print(round(margin.table(data_matrix, 2) / n, 4))
#> Penyakit Jantung   Tidak Penyakit 
#>              0.3              0.7
cat("\n==== PROBABILITAS BERSYARAT ====\n")
#> 
#> ==== PROBABILITAS BERSYARAT ====
p_sakit_olahraga      <- data_matrix[1,1] / sum(data_matrix[1,])
p_sakit_tidak_olahraga <- data_matrix[2,1] / sum(data_matrix[2,])
cat(sprintf("P(Penyakit | Olahraga)       = %d/%d = %.4f\n",
            data_matrix[1,1], sum(data_matrix[1,]), p_sakit_olahraga))
#> P(Penyakit | Olahraga)       = 20/100 = 0.2000
cat(sprintf("P(Penyakit | Tidak Olahraga) = %d/%d = %.4f\n",
            data_matrix[2,1], sum(data_matrix[2,]), p_sakit_tidak_olahraga))
#> P(Penyakit | Tidak Olahraga) = 40/100 = 0.4000

6.4 Uji Chi-Square Pearson

# ---------------------------------------------------------
# Uji Chi-Square Pearson
# H0: Tidak ada asosiasi antara olahraga & penyakit jantung
# H1: Terdapat asosiasi yang signifikan (α = 0.05)
# ---------------------------------------------------------
chi_result <- chisq.test(data_matrix, correct = FALSE)

cat("=== UJI CHI-SQUARE PEARSON ===\n")
#> === UJI CHI-SQUARE PEARSON ===
print(chi_result)
#> 
#>  Pearson's Chi-squared test
#> 
#> data:  data_matrix
#> X-squared = 9.5238, df = 1, p-value = 0.002028
cat("\nFrekuensi yang Diharapkan (Expected Frequencies):\n")
#> 
#> Frekuensi yang Diharapkan (Expected Frequencies):
print(chi_result$expected)
#>                Penyakit Jantung Tidak Penyakit
#> Olahraga                     30             70
#> Tidak Olahraga               30             70
cat("\n--- KESIMPULAN ---\n")
#> 
#> --- KESIMPULAN ---
if (chi_result$p.value < 0.05) {
  cat(sprintf(
    "TOLAK H0: Terdapat asosiasi yang signifikan (χ² = %.4f, df = %d, p = %.4f < 0.05)\n",
    chi_result$statistic, chi_result$parameter, chi_result$p.value
  ))
} else {
  cat("GAGAL TOLAK H0: Tidak terdapat bukti asosiasi yang signifikan\n")
}
#> TOLAK H0: Terdapat asosiasi yang signifikan (χ² = 9.5238, df = 1, p = 0.0020 < 0.05)

6.5 Perhitungan Odds, Odds Ratio, dan Relative Risk

# ---------------------------------------------------------
# Ekstrak nilai sel dari tabel
# ---------------------------------------------------------
a <- data_matrix[1, 1]  # Olahraga & Penyakit
b <- data_matrix[1, 2]  # Olahraga & Tidak Penyakit
c <- data_matrix[2, 1]  # Tidak Olahraga & Penyakit
d <- data_matrix[2, 2]  # Tidak Olahraga & Tidak Penyakit

# ----- Odds -----
odds_olahraga       <- a / b
odds_tidak_olahraga <- c / d

# ----- Odds Ratio (referensi: Olahraga) -----
OR_manual <- (c * b) / (a * d)

# ----- Relative Risk (referensi: Olahraga) -----
RR_manual <- (c / (c + d)) / (a / (a + b))

cat("=== UKURAN ASOSIASI (Perhitungan Manual dalam R) ===\n\n")
#> === UKURAN ASOSIASI (Perhitungan Manual dalam R) ===
cat(sprintf("Sel (a) Olahraga & Penyakit      = %d\n", a))
#> Sel (a) Olahraga & Penyakit      = 20
cat(sprintf("Sel (b) Olahraga & Sehat         = %d\n", b))
#> Sel (b) Olahraga & Sehat         = 80
cat(sprintf("Sel (c) Tidak Olahraga & Penyakit= %d\n", c))
#> Sel (c) Tidak Olahraga & Penyakit= 40
cat(sprintf("Sel (d) Tidak Olahraga & Sehat   = %d\n\n", d))
#> Sel (d) Tidak Olahraga & Sehat   = 60
cat(sprintf("Odds (Olahraga)       = a/b = %d/%d = %.4f\n", a, b, odds_olahraga))
#> Odds (Olahraga)       = a/b = 20/80 = 0.2500
cat(sprintf("Odds (Tidak Olahraga) = c/d = %d/%d = %.4f\n\n", c, d, odds_tidak_olahraga))
#> Odds (Tidak Olahraga) = c/d = 40/60 = 0.6667
cat(sprintf("Odds Ratio (OR)    = (c×b)/(a×d) = (%d×%d)/(%d×%d) = %.4f\n",
            c, b, a, d, OR_manual))
#> Odds Ratio (OR)    = (c×b)/(a×d) = (40×80)/(20×60) = 2.6667
cat(sprintf("Relative Risk (RR) = [c/(c+d)]/[a/(a+b)] = %.4f/%.4f = %.4f\n",
            c/(c+d), a/(a+b), RR_manual))
#> Relative Risk (RR) = [c/(c+d)]/[a/(a+b)] = 0.4000/0.2000 = 2.0000

6.6 Odds Ratio dengan Paket epitools (+ Confidence Interval)

# ---------------------------------------------------------
# Package epitools: OR & RR dengan interval kepercayaan 95%
# Catatan: epitools::oddsratio() & riskratio() menerima
# argumen 'method' berupa: "wald", "fisher", "midp", "small"
# Namun beberapa versi hanya mendukung versi tanpa argumen method.
# Gunakan oddsratio.wald() / riskratio.wald() untuk versi eksplisit.
# ---------------------------------------------------------
data_epi <- matrix(
  c(40, 60,    # Tidak Olahraga (kelompok referensi)
    20, 80),   # Olahraga
  nrow = 2,
  byrow = TRUE,
  dimnames = list(
    Paparan  = c("Tidak Olahraga", "Olahraga"),
    Penyakit = c("Penyakit Jantung", "Sehat")
  )
)

# Odds Ratio + CI 95% (metode Wald eksplisit : kompatibel semua versi epitools)
or_result <- epitools::oddsratio.wald(data_epi)
cat("=== ODDS RATIO dengan 95% Confidence Interval (Wald) ===\n")
#> === ODDS RATIO dengan 95% Confidence Interval (Wald) ===
print(or_result$measure)
#>                 odds ratio with 95% C.I.
#> Paparan          estimate    lower    upper
#>   Tidak Olahraga 1.000000       NA       NA
#>   Olahraga       2.666667 1.416591 5.019874
# Relative Risk + CI 95%
rr_result <- epitools::riskratio.wald(data_epi)
cat("\n=== RELATIVE RISK dengan 95% Confidence Interval (Wald) ===\n")
#> 
#> === RELATIVE RISK dengan 95% Confidence Interval (Wald) ===
print(rr_result$measure)
#>                 risk ratio with 95% C.I.
#> Paparan          estimate    lower    upper
#>   Tidak Olahraga 1.000000       NA       NA
#>   Olahraga       1.333333 1.105204 1.608552
cat("\n=== P-VALUE (Chi-Square, dari epitools) ===\n")
#> 
#> === P-VALUE (Chi-Square, dari epitools) ===
print(or_result$p.value)
#>                 two-sided
#> Paparan           midp.exact fisher.exact  chi.square
#>   Tidak Olahraga          NA           NA          NA
#>   Olahraga       0.002145336  0.003191817 0.002028231

6.7 Visualisasi : Mosaic Plot

# Buat tabel untuk visualisasi
data_vis <- matrix(
  c(20, 80, 40, 60),
  nrow = 2, byrow = TRUE,
  dimnames = list(
    Aktivitas = c("Olahraga", "Tidak Olahraga"),
    Diagnosis = c("Penyakit Jantung", "Sehat")
  )
)

# Catatan: saat shade=TRUE, vcd menggunakan shading function otomatis
# sebagai legend : jangan kombinasikan dengan argumen gp manual
vcd::mosaic(
  data_vis,
  shade    = TRUE,
  main     = "Mosaic Plot: Aktivitas Olahraga vs Penyakit Jantung",
  labeling = vcd::labeling_border(
    set_varnames = c(Aktivitas = "Aktivitas Fisik", Diagnosis = "Status Penyakit"),
    gp_labels    = grid::gpar(fontsize = 11),
    gp_varnames  = grid::gpar(fontsize = 12, fontface = "bold")
  )
)
Gambar 1. Mosaic plot hubungan antara aktivitas olahraga dan penyakit jantung. Warna sel mencerminkan residual Pearson terstandar; sel biru menandakan frekuensi lebih tinggi dari ekspektasi, merah lebih rendah.

Gambar 1. Mosaic plot hubungan antara aktivitas olahraga dan penyakit jantung. Warna sel mencerminkan residual Pearson terstandar; sel biru menandakan frekuensi lebih tinggi dari ekspektasi, merah lebih rendah.

6.8 Visualisasi : Bar Chart Proporsi

df_plot <- data.frame(
  Kelompok = factor(
    rep(c("Olahraga", "Tidak Olahraga"), each = 2),
    levels = c("Olahraga", "Tidak Olahraga")
  ),
  Status = factor(
    rep(c("Penyakit Jantung", "Sehat"), 2),
    levels = c("Penyakit Jantung", "Sehat")
  ),
  Proporsi = c(20/100, 80/100, 40/100, 60/100),
  Label    = c("20%", "80%", "40%", "60%")
)

ggplot(df_plot, aes(x = Kelompok, y = Proporsi, fill = Status)) +
  geom_bar(stat = "identity", position = "dodge", width = 0.6,
           colour = "white", linewidth = 0.5) +
  geom_text(aes(label = Label),
            position = position_dodge(width = 0.6),
            vjust = -0.5, size = 4.5, fontface = "bold") +
  scale_fill_manual(values = c("Penyakit Jantung" = "#e53935",
                                "Sehat"            = "#43a047")) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1),
                     limits = c(0, 1)) +
  labs(
    title    = "Proporsi Status Kesehatan Berdasarkan Aktivitas Olahraga",
    subtitle = "Studi hipotetis | n = 200 responden",
    x        = "Kelompok Aktivitas Fisik",
    y        = "Proporsi (%)",
    fill     = "Status Kesehatan",
    caption  = "Sumber: Data Hipotetis : Analisis Data Kategori, Universitas Padjadjaran"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title    = element_text(face = "bold", colour = "#1a3a5c", size = 13),
    plot.subtitle = element_text(colour = "#607080", size = 10),
    legend.position      = "top",
    panel.grid.major.x   = element_blank(),
    axis.text            = element_text(colour = "#1e2a38")
  )
Gambar 2. Perbandingan proporsi penyakit jantung dan status sehat antara kelompok olahraga dan tidak olahraga.

Gambar 2. Perbandingan proporsi penyakit jantung dan status sehat antara kelompok olahraga dan tidak olahraga.

6.9 Tabel Ringkasan Statistik Akhir

summary_df <- data.frame(
  Ukuran = c(
    "P(Penyakit | Olahraga)",
    "P(Penyakit | Tidak Olahraga)",
    "Odds (Olahraga)",
    "Odds (Tidak Olahraga)",
    "Odds Ratio (OR)",
    "Relative Risk (RR)",
    "Statistik Chi-Square (χ²)",
    "p-value",
    "Keputusan (α = 0,05)"
  ),
  Nilai = c(
    sprintf("%.4f (20%%)", a/(a+b)),
    sprintf("%.4f (40%%)", c/(c+d)),
    sprintf("%.4f", odds_olahraga),
    sprintf("%.4f", odds_tidak_olahraga),
    sprintf("%.4f", OR_manual),
    sprintf("%.4f", RR_manual),
    sprintf("%.4f", chi_result$statistic),
    sprintf("%.6f", chi_result$p.value),
    ifelse(chi_result$p.value < 0.05, "Tolak H₀ : Signifikan ✓", "Gagal Tolak H₀")
  )
)

knitr::kable(
  summary_df,
  col.names = c("Ukuran Statistik", "Nilai"),
  align     = c("l", "c"),
  caption   = "Tabel 2. Ringkasan Ukuran Asosiasi dan Hasil Uji Hipotesis"
) |>
  kableExtra::kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "bordered"),
    full_width  = TRUE,
    position    = "center",
    font_size   = 14
  ) |>
  kableExtra::row_spec(0, bold = TRUE, background = "#1a3a5c", color = "white") |>
  kableExtra::row_spec(5:6, bold = TRUE, background = "#fff3e0") |>
  kableExtra::row_spec(9, bold = TRUE, background = "#e8f5e9", color = "#1b5e20")
Tabel 2. Ringkasan Ukuran Asosiasi dan Hasil Uji Hipotesis
Ukuran Statistik Nilai
P(Penyakit &#124; Olahraga) 0.2000 (20%)
P(Penyakit &#124; Tidak Olahraga) 0.4000 (40%)
Odds (Olahraga) 0.2500
Odds (Tidak Olahraga) 0.6667
Odds Ratio (OR) 2.6667
Relative Risk (RR) 2.0000
Statistik Chi-Square (χ²) 9.5238
p-value 0.002028
Keputusan (α = 0,05) Tolak H₀ : Signifikan ✓

7 Interpretasi Hasil

7.1 Interpretasi Statistik

Berdasarkan analisis yang telah dilakukan, diperoleh hasil-hasil berikut:

  1. Uji Chi-Square (\(\chi^2 = 9.524\), \(df = 1\), \(p = 0.002\)): Karena \(p < 0{,}05\), kita menolak \(H_0\) dan menyimpulkan bahwa terdapat asosiasi yang signifikan secara statistik antara aktivitas olahraga dan penyakit jantung pada tingkat kepercayaan 95%.

  2. Odds Ratio (OR = 2.67): Kelompok tidak olahraga memiliki odds terkena penyakit jantung sebesar 2.67 kali lebih besar dibandingkan kelompok yang rutin berolahraga. Interval kepercayaan 95% tidak mencakup nilai 1, mengkonfirmasi signifikansi statistis OR ini.

  3. Relative Risk (RR = 2): Probabilitas terkena penyakit jantung pada kelompok tidak olahraga adalah 2 kali lebih besar dibandingkan kelompok olahraga (\(P = 0{,}40\) vs \(P = 0{,}20\)).

7.2 Interpretasi Substantif dalam Konteks Kesehatan

✅ Temuan Utama

Hasil analisis secara konsisten menunjukkan bahwa aktivitas olahraga bersifat protektif terhadap penyakit jantung. Perbedaan risiko absolut (Absolute Risk Reduction) sebesar 20 persentase poin (40% − 20%) bermakna secara klinis, menandakan bahwa intervensi berbasis peningkatan aktivitas fisik dapat memberikan dampak signifikan terhadap kesehatan kardiovaskular populasi.

Temuan ini konsisten dengan literatur ilmiah yang telah mapan. Berbagai studi longitudinal skala besar telah mengkonfirmasi bahwa aktivitas fisik teratur secara konsisten berhubungan dengan penurunan risiko penyakit kardiovaskular melalui berbagai mekanisme biologis, antara lain: penurunan tekanan darah sistolik dan diastolik, peningkatan kadar HDL (high-density lipoprotein), penurunan trigliserida serum, perbaikan fungsi endotel vaskular, dan pengurangan resistensi insulin (WHO, 2020).

7.3 Keterbatasan Analisis

Perlu dicatat beberapa keterbatasan dari analisis ini:

  1. Data Hipotetis : Data yang digunakan merupakan data simulasi untuk tujuan ilustrasi akademik, bukan data empiris dari penelitian nyata.
  2. Variabel Confounding : Analisis bivariat tidak mengontrol confounders potensial seperti usia, jenis kelamin, riwayat keluarga, pola makan, indeks massa tubuh, dan status merokok.
  3. Desain Studi : Tanpa mengetahui desain studi yang digunakan secara eksplisit, pemilihan antara OR dan RR sebagai ukuran asosiasi yang paling tepat memerlukan pertimbangan lebih lanjut.
  4. Ukuran Sampel : Dengan \(n = 200\), generalisasi ke populasi yang lebih besar perlu dilakukan dengan kehati-hatian.
💡 Key Insight : Kesimpulan Akhir

Individu yang tidak berolahraga memiliki odds terkena penyakit jantung 2,67 kali lebih besar dan risiko absolut yang dua kali lebih tinggi dibandingkan individu yang rutin berolahraga (OR = 2,67; RR = 2,00; χ² = 13,33; p < 0,001). Hasil ini mendukung secara statistik bahwa aktivitas fisik merupakan faktor protektif yang bermakna terhadap kejadian penyakit jantung. Dalam konteks kesehatan masyarakat, temuan ini menegaskan urgensi intervensi promosi aktivitas fisik sebagai strategi pencegahan penyakit kardiovaskular berbasis populasi.


8 Referensi

  1. Agresti, A. (2013). Categorical Data Analysis (3rd ed.). John Wiley & Sons. https://doi.org/10.1002/0470114754

  2. Agresti, A. (2018). An Introduction to Categorical Data Analysis (3rd ed.). Wiley.

  3. Stokes, M. E., Davis, C. S., & Koch, G. G. (2012). Categorical Data Analysis Using SAS (3rd ed.). SAS Institute.

  4. Hosmer, D. W., Lemeshow, S., & Sturdivant, R. X. (2013). Applied Logistic Regression (3rd ed.). John Wiley & Sons.

  5. Rothman, K. J., Greenland, S., & Lash, T. L. (2008). Modern Epidemiology (3rd ed.). Lippincott Williams & Wilkins.

  6. World Health Organization. (2020). WHO Guidelines on Physical Activity and Sedentary Behaviour. WHO Press.

  7. R Core Team. (2024). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing. https://www.R-project.org/

  8. Carstensen, B., Plummer, M., Laara, E., & Hills, M. (2022). epitools: Epidemiology Tools. R Package version 0.5-10.1.


Laporan ini disusun menggunakan R Markdown sebagai pemenuhan tugas mata kuliah Analisis Data Kategori.
Program Studi Statistika · FMIPA · Universitas Padjadjaran · 2026