1 Bab 1: Tabel Kontingensi

1.1 1.1 Definisi Tabel Kontingensi

Tabel kontingensi (juga disebut cross-tabulation atau crosstab) adalah tabel yang menyajikan frekuensi bersama dari dua atau lebih variabel kategorik. Tabel ini mengatur data ke dalam baris dan kolom, di mana setiap sel menunjukkan jumlah observasi yang memiliki kombinasi kategori tertentu.

1.1.1 Notasi Matematis

Misalkan kita memiliki dua variabel kategorik: - Variabel \(X\) dengan \(I\) kategori: \(i = 1, 2, ..., I\) - Variabel \(Y\) dengan \(J\) kategori: \(j = 1, 2, ..., J\)

Tabel kontingensi \(I \times J\) dapat ditulis sebagai:

\(Y_1\) \(Y_2\) \(Y_J\) Total
\(X_1\) \(n_{11}\) \(n_{12}\) \(n_{1J}\) \(n_{1.}\)
\(X_2\) \(n_{21}\) \(n_{22}\) \(n_{2J}\) \(n_{2.}\)
\(X_I\) \(n_{I1}\) \(n_{I2}\) \(n_{IJ}\) \(n_{I.}\)
Total \(n_{.1}\) \(n_{.2}\) \(n_{.J}\) \(n\)

Dimana: - \(n_{ij}\) = frekuensi observasi dengan \(X = i\) dan \(Y = j\) - \(n_{i.} = \sum_{j=1}^J n_{ij}\) = total baris ke-\(i\) - \(n_{.j} = \sum_{i=1}^I n_{ij}\) = total kolom ke-\(j\) - \(n = \sum_{i=1}^I \sum_{j=1}^J n_{ij}\) = total keseluruhan

1.2 1.2 Contoh Tabel Kontingensi

1.2.1 Studi Kasus: Hubungan Metode Belajar dengan Hasil Ujian

Seorang dosen ingin mengetahui apakah ada hubungan antara metode belajar yang digunakan mahasiswa (Mandiri, Kelompok, atau Tutorial) dengan hasil ujian (Lulus atau Tidak Lulus). Data dari 200 mahasiswa sebagai berikut:

# Membuat tabel kontingensi contoh
tabel_contoh <- matrix(c(30, 20, 10, 40, 30, 70), nrow = 3, ncol = 2, byrow = TRUE)
dimnames(tabel_contoh) <- list(
  "Metode Belajar" = c("Mandiri", "Kelompok", "Tutorial"),
  "Hasil Ujian" = c("Tidak Lulus", "Lulus")
)

# Tampilkan tabel
kable(tabel_contoh, 
      caption = "Tabel 1.1: Tabel Kontingensi Metode Belajar vs Hasil Ujian",
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center") %>%
  add_header_above(c(" " = 1, "Hasil Ujian" = 2))
Tabel 1.1: Tabel Kontingensi Metode Belajar vs Hasil Ujian
Hasil Ujian
Tidak Lulus Lulus
Mandiri 30 20
Kelompok 10 40
Tutorial 30 70

Dari tabel di atas: - \(n_{11} = 30\): Mahasiswa dengan metode Mandiri yang Tidak Lulus - \(n_{12} = 20\): Mahasiswa dengan metode Mandiri yang Lulus - \(n_{21} = 10\): Mahasiswa dengan metode Kelompok yang Tidak Lulus - \(n_{22} = 40\): Mahasiswa dengan metode Kelompok yang Lulus - \(n_{31} = 30\): Mahasiswa dengan metode Tutorial yang Tidak Lulus
- \(n_{32} = 70\): Mahasiswa dengan metode Tutorial yang Lulus

Total mahasiswa: - Metode Mandiri: \(n_{1.} = 30 + 20 = 50\) - Metode Kelompok: \(n_{2.} = 10 + 40 = 50\) - Metode Tutorial: \(n_{3.} = 30 + 70 = 100\) - Total keseluruhan: \(n = 200\)

2 Bab 2: Distribusi Peluang dalam Tabel Kontingensi

2.1 2.1 Distribusi Joint (Gabungan)

Distribusi joint menunjukkan peluang suatu observasi berada pada kategori \(i\) (baris) dan kategori \(j\) (kolom) secara bersamaan.

\[p_{ij} = \frac{n_{ij}}{n}\]

Sifat: \(\sum_{i=1}^I \sum_{j=1}^J p_{ij} = 1\)

# Menghitung distribusi joint
prop_joint <- prop.table(tabel_contoh)

kable(prop_joint, 
      caption = "Tabel 2.1: Distribusi Joint Metode Belajar vs Hasil Ujian",
      digits = 4,
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center")
Tabel 2.1: Distribusi Joint Metode Belajar vs Hasil Ujian
Tidak Lulus Lulus
Mandiri 0.15 0.10
Kelompok 0.05 0.20
Tutorial 0.15 0.35
# Verifikasi total = 1
cat("Total semua proporsi joint:", sum(prop_joint))
## Total semua proporsi joint: 1

Interpretasi: - \(p_{11} = 30/200 = 0.15\): Peluang mahasiswa menggunakan metode Mandiri dan Tidak Lulus = 15% - \(p_{12} = 20/200 = 0.10\): Peluang mahasiswa menggunakan metode Mandiri dan Lulus = 10% - \(p_{32} = 70/200 = 0.35\): Peluang mahasiswa menggunakan metode Tutorial dan Lulus = 35%

2.2 2.2 Distribusi Marginal

Distribusi marginal adalah distribusi dari satu variabel saja, dengan mengabaikan variabel lainnya.

2.2.1 a. Distribusi Marginal Baris

\[p_{i.} = \sum_{j=1}^J p_{ij} = \frac{n_{i.}}{n}\]

# Total baris
total_baris <- margin.table(tabel_contoh, 1)
prop_baris <- prop.table(total_baris)

data_baris <- data.frame(
  Metode = names(prop_baris),
  Frekuensi = as.numeric(total_baris),
  Proporsi = as.numeric(prop_baris)
)

kable(data_baris, 
      caption = "Tabel 2.2: Distribusi Marginal Metode Belajar",
      digits = 4,
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center")
Tabel 2.2: Distribusi Marginal Metode Belajar
Metode Frekuensi Proporsi
Mandiri 50 0.25
Kelompok 50 0.25
Tutorial 100 0.50

Interpretasi: - \(p_{1.} = 50/200 = 0.25\): 25% mahasiswa menggunakan metode Mandiri - \(p_{2.} = 50/200 = 0.25\): 25% mahasiswa menggunakan metode Kelompok - \(p_{3.} = 100/200 = 0.50\): 50% mahasiswa menggunakan metode Tutorial

2.2.2 b. Distribusi Marginal Kolom

\[p_{.j} = \sum_{i=1}^I p_{ij} = \frac{n_{.j}}{n}\]

# Total kolom
total_kolom <- margin.table(tabel_contoh, 2)
prop_kolom <- prop.table(total_kolom)

data_kolom <- data.frame(
  Hasil = names(prop_kolom),
  Frekuensi = as.numeric(total_kolom),
  Proporsi = as.numeric(prop_kolom)
)

kable(data_kolom, 
      caption = "Tabel 2.3: Distribusi Marginal Hasil Ujian",
      digits = 4,
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center")
Tabel 2.3: Distribusi Marginal Hasil Ujian
Hasil Frekuensi Proporsi
Tidak Lulus 70 0.35
Lulus 130 0.65

Interpretasi: - \(p_{.1} = 70/200 = 0.35\): 35% mahasiswa Tidak Lulus - \(p_{.2} = 130/200 = 0.65\): 65% mahasiswa Lulus

2.3 2.3 Distribusi Bersyarat (Conditional)

Distribusi bersyarat adalah distribusi peluang dari satu variabel dengan syarat variabel lain berada pada kategori tertentu.

2.3.1 a. Distribusi Bersyarat Hasil Ujian | Metode Belajar

\[P(Y = j | X = i) = \frac{n_{ij}}{n_{i.}}\]

# Proporsi berdasarkan baris (bersyarat pada metode belajar)
prop_bersyarat_baris <- prop.table(tabel_contoh, margin = 1)

kable(prop_bersyarat_baris, 
      caption = "Tabel 2.4: Distribusi Bersyarat Hasil Ujian | Metode Belajar",
      digits = 4,
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center")
Tabel 2.4: Distribusi Bersyarat Hasil Ujian | Metode Belajar
Tidak Lulus Lulus
Mandiri 0.6 0.4
Kelompok 0.2 0.8
Tutorial 0.3 0.7

Interpretasi: - Untuk mahasiswa dengan metode Mandiri: - Peluang Tidak Lulus = \(30/50 = 0.60\) (60%) - Peluang Lulus = \(20/50 = 0.40\) (40%) - Untuk mahasiswa dengan metode Kelompok: - Peluang Tidak Lulus = \(10/50 = 0.20\) (20%) - Peluang Lulus = \(40/50 = 0.80\) (80%) - Untuk mahasiswa dengan metode Tutorial: - Peluang Tidak Lulus = \(30/100 = 0.30\) (30%) - Peluang Lulus = \(70/100 = 0.70\) (70%)

2.3.2 b. Distribusi Bersyarat Metode Belajar | Hasil Ujian

\[P(X = i | Y = j) = \frac{n_{ij}}{n_{.j}}\]

# Proporsi berdasarkan kolom (bersyarat pada hasil ujian)
prop_bersyarat_kolom <- prop.table(tabel_contoh, margin = 2)

kable(prop_bersyarat_kolom, 
      caption = "Tabel 2.5: Distribusi Bersyarat Metode Belajar | Hasil Ujian",
      digits = 4,
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center")
Tabel 2.5: Distribusi Bersyarat Metode Belajar | Hasil Ujian
Tidak Lulus Lulus
Mandiri 0.4286 0.1538
Kelompok 0.1429 0.3077
Tutorial 0.4286 0.5385

Interpretasi: - Dari mahasiswa yang Tidak Lulus: - \(30/70 = 0.429\) (42.9%) menggunakan metode Mandiri - \(10/70 = 0.143\) (14.3%) menggunakan metode Kelompok - \(30/70 = 0.428\) (42.8%) menggunakan metode Tutorial - Dari mahasiswa yang Lulus: - \(20/130 = 0.154\) (15.4%) menggunakan metode Mandiri - \(40/130 = 0.308\) (30.8%) menggunakan metode Kelompok - \(70/130 = 0.538\) (53.8%) menggunakan metode Tutorial

3 Bab 3: Ukuran Asosiasi

Ukuran asosiasi digunakan untuk mengukur kekuatan hubungan antara dua variabel kategorik.

3.1 3.1 Odds Ratio (Rasio Odds)

Odds Ratio digunakan khusus untuk tabel \(2 \times 2\).

3.1.1 Rumus Odds Ratio

Untuk tabel \(2 \times 2\):

Sukses Gagal Total
Kelompok 1 \(a\) \(b\) \(a+b\)
Kelompok 2 \(c\) \(d\) \(c+d\)

\[OR = \frac{a/b}{c/d} = \frac{a \times d}{b \times c}\]

3.1.2 Interpretasi Odds Ratio

  • OR = 1: Tidak ada asosiasi (independen)
  • OR > 1: Asosiasi positif (kelompok 1 memiliki odds sukses lebih besar)
  • OR < 1: Asosiasi negatif (kelompok 1 memiliki odds sukses lebih kecil)

3.1.3 Contoh Perhitungan Manual

Untuk menghitung Odds Ratio, kita perlu menyederhanakan tabel menjadi \(2 \times 2\). Misalkan kita ingin membandingkan metode Tutorial vs Non-Tutorial:

# Membuat tabel 2x2
tabel_2x2 <- matrix(c(
  70, 30,  # Tutorial: Lulus, Tidak Lulus
  60, 40   # Non-Tutorial: Lulus, Tidak Lulus (Mandiri+Kelompok)
), nrow = 2, byrow = TRUE)

dimnames(tabel_2x2) <- list(
  "Metode" = c("Tutorial", "Non-Tutorial"),
  "Hasil" = c("Lulus", "Tidak Lulus")
)

kable(tabel_2x2, 
      caption = "Tabel 3.1: Tabel 2x2 Tutorial vs Non-Tutorial",
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center")
Tabel 3.1: Tabel 2x2 Tutorial vs Non-Tutorial
Lulus Tidak Lulus
Tutorial 70 30
Non-Tutorial 60 40

Perhitungan Manual:

\[OR = \frac{a \times d}{b \times c} = \frac{70 \times 40}{30 \times 60} = \frac{2800}{1800} = 1.556\]

a <- tabel_2x2[1,1]  # Tutorial-Lulus
b <- tabel_2x2[1,2]  # Tutorial-Tidak Lulus
c <- tabel_2x2[2,1]  # Non-Tutorial-Lulus
d <- tabel_2x2[2,2]  # Non-Tutorial-Tidak Lulus

OR <- (a * d) / (b * c)
cat("Odds Ratio =", round(OR, 4))
## Odds Ratio = 1.5556

Interpretasi: Odds lulus dengan metode Tutorial adalah 1.556 kali lebih besar dibandingkan dengan metode Non-Tutorial. Ini menunjukkan adanya asosiasi positif antara metode Tutorial dan kelulusan.

3.2 3.2 Uji Chi-Square

Uji Chi-Square digunakan untuk menguji independensi antara dua variabel kategorik.

3.2.1 Statistik Chi-Square Pearson

\[\chi^2 = \sum_{i=1}^{I} \sum_{j=1}^{J} \frac{(n_{ij} - m_{ij})^2}{m_{ij}}\]

dimana \(m_{ij}\) adalah frekuensi harapan jika tidak ada hubungan:

\[m_{ij} = \frac{n_{i.} \times n_{.j}}{n}\]

3.2.2 Contoh Perhitungan Manual Chi-Square

Langkah 1: Hitung Frekuensi Harapan (\(m_{ij}\))

# Menghitung frekuensi harapan
total_baris <- margin.table(tabel_contoh, 1)
total_kolom <- margin.table(tabel_contoh, 2)
n_total <- sum(tabel_contoh)

frekuensi_harapan <- matrix(0, nrow = 3, ncol = 2)
for(i in 1:3) {
  for(j in 1:2) {
    frekuensi_harapan[i,j] <- (total_baris[i] * total_kolom[j]) / n_total
  }
}

dimnames(frekuensi_harapan) <- dimnames(tabel_contoh)

kable(frekuensi_harapan, 
      caption = "Tabel 3.2: Frekuensi Harapan (Jika Independen)",
      digits = 2,
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center")
Tabel 3.2: Frekuensi Harapan (Jika Independen)
Tidak Lulus Lulus
Mandiri 17.5 32.5
Kelompok 17.5 32.5
Tutorial 35.0 65.0

Perhitungan manual untuk \(m_{11}\): \[m_{11} = \frac{n_{1.} \times n_{.1}}{n} = \frac{50 \times 70}{200} = \frac{3500}{200} = 17.5\]

Langkah 2: Hitung Komponen Chi-Square

\[\frac{(n_{ij} - m_{ij})^2}{m_{ij}}\]

komponen_chi <- (tabel_contoh - frekuensi_harapan)^2 / frekuensi_harapan

kable(komponen_chi, 
      caption = "Tabel 3.3: Komponen Chi-Square per Sel",
      digits = 4,
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center")
Tabel 3.3: Komponen Chi-Square per Sel
Tidak Lulus Lulus
Mandiri 8.9286 4.8077
Kelompok 3.2143 1.7308
Tutorial 0.7143 0.3846

Perhitungan manual untuk sel (1,1): \[\frac{(30 - 17.5)^2}{17.5} = \frac{(12.5)^2}{17.5} = \frac{156.25}{17.5} = 8.9286\]

Langkah 3: Hitung Nilai Chi-Square

\[\chi^2 = \sum \text{komponen} = 8.9286 + 0.5952 + 3.5714 + 0.2381 + 0 + 8.5714 = 21.9047\]

chi2_value <- sum(komponen_chi)
cat("Chi-Square =", round(chi2_value, 4))
## Chi-Square = 19.7802

Langkah 4: Tentukan Derajat Bebas

\[df = (I - 1)(J - 1) = (3 - 1)(2 - 1) = 2 \times 1 = 2\]

Langkah 5: Bandingkan dengan Nilai Kritis

Nilai kritis Chi-Square dengan \(df = 2\) pada \(\alpha = 0.05\) adalah 5.991. Karena \(\chi^2 = 21.905 > 5.991\), kita tolak \(H_0\). Artinya, terdapat hubungan yang signifikan antara metode belajar dan hasil ujian.

3.3 3.3 V Cramer (Cramer’s V)

V Cramer adalah ukuran asosiasi yang dinormalisasi sehingga nilainya antara 0 dan 1.

\[V = \sqrt{\frac{\chi^2}{n \times \min(I-1, J-1)}}\]

3.3.1 Interpretasi V Cramer (Cohen, 1988):

  • \(V \approx 0.1\): Asosiasi kecil (weak)
  • \(V \approx 0.3\): Asosiasi sedang (moderate)
  • \(V \approx 0.5\) atau lebih: Asosiasi besar (strong)
v_cramer <- sqrt(chi2_value / (n_total * min(nrow(tabel_contoh)-1, ncol(tabel_contoh)-1)))
cat("V Cramer =", round(v_cramer, 4))
## V Cramer = 0.3145
# Interpretasi
if(v_cramer < 0.1) {
  cat("\nInterpretasi: Asosiasi kecil")
} else if(v_cramer < 0.3) {
  cat("\nInterpretasi: Asosiasi sedang")
} else {
  cat("\nInterpretasi: Asosiasi besar")
}
## 
## Interpretasi: Asosiasi besar

Perhitungan Manual: \[V = \sqrt{\frac{21.905}{200 \times \min(2,1)}} = \sqrt{\frac{21.905}{200 \times 1}} = \sqrt{0.1095} = 0.331\]

3.4 3.4 Koefisien Kontingensi C

\[C = \sqrt{\frac{\chi^2}{\chi^2 + n}}\]

c_koef <- sqrt(chi2_value / (chi2_value + n_total))
cat("Koefisien Kontingensi C =", round(c_koef, 4))
## Koefisien Kontingensi C = 0.3

Perhitungan Manual: \[C = \sqrt{\frac{21.905}{21.905 + 200}} = \sqrt{\frac{21.905}{221.905}} = \sqrt{0.0987} = 0.314\]

4 Bab 4: Contoh Perhitungan Menggunakan R dengan Data Simulasi

4.1 4.1 Simulasi Data

Kita akan mensimulasikan data tentang hubungan antara tingkat stres (Rendah, Sedang, Tinggi) dan kualitas tidur (Buruk, Cukup, Baik).

set.seed(123)  # untuk reproduktifitas
n <- 300

# Simulasi tingkat stres
stres <- sample(c("Rendah", "Sedang", "Tinggi"), 
                size = n, 
                replace = TRUE, 
                prob = c(0.3, 0.4, 0.3))

# Simulasi kualitas tidur dengan probabilitas tergantung stres
# Semakin tinggi stres, semakin buruk kualitas tidur
kualitas_tidur <- vector(length = n)

for(i in 1:n) {
  if(stres[i] == "Rendah") {
    kualitas_tidur[i] <- sample(c("Buruk", "Cukup", "Baik"), 1, 
                                prob = c(0.1, 0.3, 0.6))
  } else if(stres[i] == "Sedang") {
    kualitas_tidur[i] <- sample(c("Buruk", "Cukup", "Baik"), 1, 
                                prob = c(0.3, 0.4, 0.3))
  } else { # Tinggi
    kualitas_tidur[i] <- sample(c("Buruk", "Cukup", "Baik"), 1, 
                                prob = c(0.6, 0.3, 0.1))
  }
}

# Gabungkan menjadi data frame
data_stres <- data.frame(
  Stres = factor(stres, levels = c("Rendah", "Sedang", "Tinggi")),
  Kualitas_Tidur = factor(kualitas_tidur, levels = c("Buruk", "Cukup", "Baik"))
)

# Tampilkan 10 baris pertama
head(data_stres, 10)
##     Stres Kualitas_Tidur
## 1  Sedang          Buruk
## 2  Rendah           Baik
## 3  Tinggi          Cukup
## 4  Rendah          Cukup
## 5  Rendah          Cukup
## 6  Sedang           Baik
## 7  Tinggi          Buruk
## 8  Rendah           Baik
## 9  Tinggi          Buruk
## 10 Tinggi          Buruk

4.2 4.2 Membuat Tabel Kontingensi

# Membuat tabel kontingensi
tabel_stres <- table(data_stres$Stres, data_stres$Kualitas_Tidur)

kable(tabel_stres, 
      caption = "Tabel 4.1: Tabel Kontingensi Tingkat Stres vs Kualitas Tidur",
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center") %>%
  add_header_above(c(" " = 1, "Kualitas Tidur" = 3))
Tabel 4.1: Tabel Kontingensi Tingkat Stres vs Kualitas Tidur
Kualitas Tidur
Buruk Cukup Baik
Rendah 4 25 55
Sedang 40 50 31
Tinggi 59 22 14
# Tabel dengan margin
tabel_stres_margin <- addmargins(tabel_stres)
kable(tabel_stres_margin, 
      caption = "Tabel 4.2: Tabel Kontingensi dengan Margin",
      booktabs = TRUE) %>%
  kable_styling(full_width = FALSE, position = "center")
Tabel 4.2: Tabel Kontingensi dengan Margin
Buruk Cukup Baik Sum
Rendah 4 25 55 84
Sedang 40 50 31 121
Tinggi 59 22 14 95
Sum 103 97 100 300

4.3 4.3 Distribusi Peluang

# Distribusi Joint
prop_joint_stres <- prop.table(tabel_stres)
cat("Distribusi Joint:\n")
## Distribusi Joint:
print(round(prop_joint_stres, 4))
##         
##           Buruk  Cukup   Baik
##   Rendah 0.0133 0.0833 0.1833
##   Sedang 0.1333 0.1667 0.1033
##   Tinggi 0.1967 0.0733 0.0467
# Distribusi Marginal Stres
prop_stres <- prop.table(margin.table(tabel_stres, 1))
cat("\nDistribusi Marginal Stres:\n")
## 
## Distribusi Marginal Stres:
print(round(prop_stres, 4))
## 
## Rendah Sedang Tinggi 
## 0.2800 0.4033 0.3167
# Distribusi Marginal Kualitas Tidur
prop_tidur <- prop.table(margin.table(tabel_stres, 2))
cat("\nDistribusi Marginal Kualitas Tidur:\n")
## 
## Distribusi Marginal Kualitas Tidur:
print(round(prop_tidur, 4))
## 
##  Buruk  Cukup   Baik 
## 0.3433 0.3233 0.3333
# Distribusi Bersyarat Kualitas Tidur | Stres
prop_conditional <- prop.table(tabel_stres, margin = 1)
cat("\nDistribusi Bersyarat Kualitas Tidur | Stres:\n")
## 
## Distribusi Bersyarat Kualitas Tidur | Stres:
print(round(prop_conditional, 4))
##         
##           Buruk  Cukup   Baik
##   Rendah 0.0476 0.2976 0.6548
##   Sedang 0.3306 0.4132 0.2562
##   Tinggi 0.6211 0.2316 0.1474

Interpretasi Distribusi Bersyarat: - Untuk stres Rendah: - 6.7% tidur buruk, 30% tidur cukup, 63.3% tidur baik - Untuk stres Sedang: - 27.3% tidur buruk, 39% tidur cukup, 33.8% tidur baik - Untuk stres Tinggi: - 57.1% tidur buruk, 31.4% tidur cukup, 11.4% tidur baik

4.4 4.4 Uji Chi-Square dan Ukuran Asosiasi

# Uji Chi-Square
uji_stres <- chisq.test(tabel_stres)
print(uji_stres)
## 
##  Pearson's Chi-squared test
## 
## data:  tabel_stres
## X-squared = 86.514, df = 4, p-value < 2.2e-16
# Ekstrak nilai
chi2_stres <- uji_stres$statistic
p_value_stres <- uji_stres$p.value
df_stres <- uji_stres$parameter
n_stres <- sum(tabel_stres)

# Hitung V Cramer
v_stres <- sqrt(chi2_stres / (n_stres * min(nrow(tabel_stres)-1, ncol(tabel_stres)-1)))

# Hitung Koefisien Kontingensi C
c_stres <- sqrt(chi2_stres / (chi2_stres + n_stres))

# Tampilkan ringkasan
cat("\n=== RINGKASAN UKURAN ASOSIASI ===\n")
## 
## === RINGKASAN UKURAN ASOSIASI ===
cat("Chi-Square =", round(chi2_stres, 4), "\n")
## Chi-Square = 86.5142
cat("Derajat Bebas =", df_stres, "\n")
## Derajat Bebas = 4
cat("P-value =", format(p_value_stres, scientific = TRUE), "\n")
## P-value = 7.238796e-18
cat("V Cramer =", round(v_stres, 4), "\n")
## V Cramer = 0.3797
cat("Koefisien C =", round(c_stres, 4), "\n")
## Koefisien C = 0.4731
# Interpretasi
cat("\nINTERPRETASI:\n")
## 
## INTERPRETASI:
if(p_value_stres < 0.05) {
  cat("- Pada α = 0.05, terdapat hubungan signifikan antara tingkat stres dan kualitas tidur\n")
} else {
  cat("- Pada α = 0.05, tidak terdapat hubungan signifikan antara tingkat stres dan kualitas tidur\n")
}
## - Pada α = 0.05, terdapat hubungan signifikan antara tingkat stres dan kualitas tidur
if(v_stres < 0.1) {
  cat("- Kekuatan asosiasi: Kecil (V Cramer =", round(v_stres, 3), ")\n")
} else if(v_stres < 0.3) {
  cat("- Kekuatan asosiasi: Sedang (V Cramer =", round(v_stres, 3), ")\n")
} else {
  cat("- Kekuatan asosiasi: Besar (V Cramer =", round(v_stres, 3), ")\n")
}
## - Kekuatan asosiasi: Besar (V Cramer = 0.38 )

4.5 4.5 Visualisasi

# Barplot distribusi bersyarat
prop_df <- as.data.frame(prop_conditional)
colnames(prop_df) <- c("Stres", "Kualitas_Tidur", "Proporsi")

ggplot(prop_df, aes(x = Stres, y = Proporsi, fill = Kualitas_Tidur)) +
  geom_bar(stat = "identity", position = "fill") +
  scale_y_continuous(labels = scales::percent) +
  scale_fill_manual(values = c("#FF6B6B", "#4ECDC4", "#45B7D1")) +
  labs(title = "Proporsi Kualitas Tidur berdasarkan Tingkat Stres",
       x = "Tingkat Stres", y = "Proporsi",
       fill = "Kualitas Tidur") +
  theme_minimal() +
  theme(legend.position = "bottom")

5 Bab 5: Kesimpulan

5.1 5.1 Rangkuman

  1. Tabel kontingensi adalah alat fundamental untuk menganalisis hubungan antar variabel kategorik
  2. Distribusi joint (\(p_{ij}\)) menunjukkan peluang bersama dua variabel
  3. Distribusi marginal (\(p_{i.}\) dan \(p_{.j}\)) menunjukkan distribusi masing-masing variabel
  4. Distribusi bersyarat (\(P(Y|X)\) atau \(P(X|Y)\)) menunjukkan distribusi satu variabel dengan syarat variabel lain
  5. Odds Ratio mengukur asosiasi untuk tabel \(2 \times 2\)
  6. Uji Chi-Square menguji independensi antar variabel
  7. V Cramer mengukur kekuatan asosiasi (0-1)

5.2 5.2 Rumus Penting

Ukuran Rumus Keterangan
Joint \(p_{ij} = n_{ij}/n\) \(\sum\sum p_{ij} = 1\)
Marginal Baris \(p_{i.} = n_{i.}/n\) Distribusi variabel baris
Marginal Kolom \(p_{.j} = n_{.j}/n\) Distribusi variabel kolom
Odds Ratio \(OR = (a \times d)/(b \times c)\) Untuk tabel \(2 \times 2\)
Chi-Square \(\chi^2 = \sum (O-E)^2/E\) Uji independensi
V Cramer \(V = \sqrt{\chi^2/(n \times \min(I-1,J-1))}\) Ukuran asosiasi

5.3 5.3 Daftar Pustaka

  1. Agresti, A. (2013). Categorical Data Analysis (3rd ed.). John Wiley & Sons.
  2. Agresti, A. (2019). An Introduction to Categorical Data Analysis (3rd ed.). John Wiley & Sons.
  3. Cohen, J. (1988). Statistical Power Analysis for the Behavioral Sciences (2nd ed.). Lawrence Erlbaum Associates.