Tugas 1 - Konsep Dasar Analisis Data kategori

A.Pendahuluan

Analisis data kategori merupakan bagian dari statistika yang digunakan untuk menganalisis data berbentuk kategori atau kelompok. Salah satu metode yang umum digunakan adalah tabel kontingensi, dalam laporan ini akan dibahas tabel kontingensi 2 × 2 yang sering digunakan untuk menganalisis hubungan antara dua variabel kategorik biner (hanya memiliki dua kategori).


1. Definisi Analisis Data Kategori

a. Pengertian Analisis Data Kategori

Analisis data kategori adalah metode statistika yang digunakan untuk menganalisis data dengan variabel berbentuk kategori atau kelompok. Variabel kategori biasanya tidak memiliki makna numerik langsung atau bukan angka yang memiliki nilai kontinu, tetapi data kategori merepresentasikan kelas atau label tertentu.

Analisis ini bertujuan untuk:

  • Mengidentifikasi Pola dan Tren
  • Menganalisis Hubungan Antar Variabel Kategori
  • Membantu dalam Pengambilan Keputusan
  • Mengembangkan Model Prediktif

b. Karakteristik Variabel Kategori

Variabel kategori memiliki beberapa karakteristik sebagai berikut:

  1. Nilai variabel berupa kategori, contoh umum dari data kategori yaitu jenis kelamin (laki-laki/perempuan)
  2. Tidak memiliki makna numerik secara langsung
  3. Biasanya disajikan dalam bentuk frekuensi atau proporsi
  4. Data kategori dapat bersifat:
    • Nominal : Tidak memiliki urutan (misalnya: jenis kelamin, agama, warna)
    • Ordinal : Memiliki urutan (misalnya: tingkat pendidikan, tingkat kepuasan pelanggan)

c. Contoh Penerapan Analisis Data Kategori dalam Penelitian

Beberapa contoh penerapan analisis data kategori dalam penelitian meliputi:

  1. Penelitian dalam ilmu kesehatan
    • Hubungan antara olahraga dan obesitas
  2. Penelitian dalam pendidikan
    • Hubungan antara metode pembelajaran dan kelulusan
  3. Penelitian sosial
    • Hubungan antara tingkat pendidikan dan status pekerjaan

2. Tabel Kontingensi

a. Definisi Tabel Kontingensi

Tabel kontingensi adalah tabel klasifikasi silang dari variabel-variabel yang bersifat kategori. Tabel kontingensi digunakan untuk menyajikan distribusi frekuensi bersama (joint distribution) dari dua atau lebih variabel kategori.

Tabel ini memungkinkan peneliti untuk melihat hubungan atau asosiasi antara variabel kategori.

b. Struktur Tabel Kontingensi

Berikut merupakan struktur tabel kontingensi 2 × 2:

Kategori 1 Kategori 2 Total
Kelompok 1 a b a+b
Kelompok 2 c d c+d
Total a+c b+d n

Contoh tabel kontingensi 2 × 2:

Obesitas Tidak Obesitas Total
Konsumsi Fast Food a b a+b
Tidak Konsumsi c d c+d
Total a+c b+d n

Contoh kasus diatas berkaitan dengan apakah olahraga berkaitan dengan risiko obesitas.

c. Joint Distribution

Joint distribution atau peluang bersama menunjukkan peluang terjadinya dua kejadian secara bersamaan dalam suatu sel tabel kontingensi.

Secara matematis:

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

Contoh:

\[ P(\text{Konsumsi Fast Food dan Obesitas}) = \frac{a}{n} \]

d. Marginal Distribution

Marginal distribution atau peluang marginal adalah peluang suatu variabel tanpa memperhatikan variabel lain.

Peluang marginal baris secara matematis:

\[ P(X=i) = \frac{n_{i.}}{n} \] Peluang marginal kolom secara matematis:

\[ P(Y=j) = \frac{n_{.j}}{n} \] Contoh:

Peluang seseorang mengonsumsi fast food:

\[ P(\text{Konsumsi Fast Food}) = \frac{a+b}{n} \]

Peluang seseorang menderita obesitas:

\[ P(\text{Obesitas}) = \frac{a+c}{n} \]

e. Conditional Distribution

Conditional distribution atau peluang bersyarat adalah peluang suatu kejadian dengan syarat kejadian lain terjadi.

Secara matematis:

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

Peluang obesitas jika seseorang konsumsi fast food:

\[ P(\text{Obesitas}|\text{Konsumsi Fast Food}) = \frac{a}{a+b} \]


3. Ukuran Asosiasi

a. Penjelasan Ukuran Asosiasi

Ukuran asosiasi digunakan untuk mengukur kekuatan hubungan antara dua variabel kategori pada tabel kontingensi. Pada tabel 2 × 2, ukuran yang akan dibahas dalam laporan ini adalah:

  • Odds
  • Odds Ratio
  • Relative Risk

b. Rumus Matematis

Misalkan tabel kontingensi:

Outcome 1 Outcome 2
Faktor 1 a b
Faktor 2 c d

i. Odds

Odds adalah perbandingan antara peluang terjadinya suatu kejadian dengan peluang tidak terjadinya kejadian tersebut.

Secara matematis:

\[ Odds = \frac{P}{1-P} \]

Contoh pada tabel kontingensi 2 × 2 diatas:

\[ Odds_1 = \frac{a}{b} \]

\[ Odds_2 = \frac{c}{d} \]

ii. Odds Ratio

Odds Ratio adalah ukuran asosiasi yang menunjukkan perbandingan odds kejadian antar dua kelompok.

Secara matematis: \[ OR = \frac{Odds_1}{Odds_0} \] Atau dapat dituliskan juga:

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

atau

\[ OR = \frac{ad}{bc} \]

Terdapat kriteria interpretasi untuk Odds Ratio:

Nilai Odds Ratio Interpretasi
OR = 1 Tidak terdapat hubungan antara variabel faktor dan outcome
OR > 1 Faktor meningkatkan peluang terjadinya outcome
OR < 1 Faktor menurunkan peluang outcome

iii. Relative Risk

Relative Risk atau Risiko Relatif adalah ukuran yang digunakan dalam epidemiologi untuk membandingkan risiko kejadian (misal peristiwa penyakit atau kondisi tertentu) antara kelompok yang terpapar dan tidak terpapar.

Secara matematis: \[ RR = \frac{a/(a+b)}{c/(c+d)} \]

Terdapat kriteria interpretasi untuk Relative Risk sebagai berikut:

Nilai Relative Risk Interpretasi
RR = 1 Tidak terdapat hubungan antara variabel faktor dan outcome
RR > 1 Faktor meningkatkan risiko terjadinya outcome
RR < 1 Faktor bersifat protektif atau menurunkan risiko outcome

4. Contoh Perhitungan Tabel Kontingensi 2 × 2 Secara Manual

Misalkan diperoleh data kaitan olahraga dengan obesitas sebagai berikut:

Obesitas Tidak Obesitas Total
Konsumsi Fast Food 40 60 100
Tidak Konsumsi Fast Food 20 80 100

Sehingga:

\[ a = 40,\quad b = 60,\quad c = 20,\quad d = 80 \]

a. Peluang Bersyarat

Peluang obesitas pada orang yang konsumsi fast food:

\[ P(\text{Obesitas}|\text{Konsumsi Fast Food}) = \frac{40}{100} = 0.4 \]

Peluang obesitas pada orang yang tidak konsumsi fast food:

\[ P(\text{Obesitas}|\text{Tidak Olahraga}) = \frac{20}{100} = 0.2 \]

b. Odds

Odds obesitas pada orang yang konsumsi fast food:

\[ Odds_1 = \frac{40}{60} = 0.667 \]

Odds obesitas pada orang yang tidak konsumsi fast food:

\[ Odds_2 = \frac{20}{80} = 0.25 \]

c. Odds Ratio

Rumus matematis:

\[ OR = \frac{ad}{bc} \] Odds ratio pada kasus keterkaitan obesitas dan konsumsi fast food: \[ OR = \frac{40 \times 80}{60 \times 20} \]

\[ OR = \frac{3200}{1200} \]

\[ OR = 2.67 \]


5. Contoh Perhitungan Menggunakan R

# Membuat tabel kontingensi

data <- matrix(c(40,60,20,80),
               nrow = 2,
               byrow = TRUE)

colnames(data) <- c("Obesitas","Tidak_Obesitas")
rownames(data) <- c("Konsumsi_Fast_Food","Tidak_Konsumsi")

data
##                    Obesitas Tidak_Obesitas
## Konsumsi_Fast_Food       40             60
## Tidak_Konsumsi           20             80
# Menghitung Odds Ratio

(a <- data[1,1])
## [1] 40
(b <- data[1,2])
## [1] 60
(c <- data[2,1])
## [1] 20
(d <- data[2,2])
## [1] 80
OR <- (a*d)/(b*c)
OR
## [1] 2.666667
# Uji Chi-Square

chisq.test(data)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data
## X-squared = 8.5952, df = 1, p-value = 0.00337

6. Interpretasi Hasil

Interpretasi Statistik

Hasil perhitungan menunjukkan bahwa nilai Odds Ratio sebesar 2.67. Nilai ini lebih besar dari 1, sehingga menunjukkan adanya hubungan positif antara konsumsi fast food dan obesitas.

Uji chi-square digunakan untuk menguji apakah hubungan tersebut signifikan secara statistik.

Jika nilai p-value < 0.05, maka hubungan antara kedua variabel dianggap signifikan.

Dan pada contoh kasus ini diperoleh nilai p-value = 0.00337, maka dapat disimpulkan bahwa hubungan antara konsumsi fast food (makanan cepat saji) dengan obesitas signifikan.

Interpretasi Substansif

Secara substansif, hasil ini menunjukkan bahwa orang yang mengonsumsi fast food atau makanan cepat saji memiliki peluang sekitar 2.67 kali lebih besar untuk mengalami obesitas dibandingkan dengan orang yang tidak mengonsumsi fast food.


B. Inferensi Tabel Kontingensi Dua Arah

Inferensi dalam statistik mengacu pada proses pengambilan kesimpulan mengenai populasi berdasarkan sampel pada data. Dalam konteks tabel kontingensi dua arah, inferensi digunakan untuk menganalisis hubungan antara dua variabel kategorikal yang disusun dalam tabel kontingensi.

Inferensi dalam tabel kontingensi dua arah dapat dibagi menjadi dua kategori utama: - Estimasi - Pengujian

1. Estimasi

Estimasi bertujuan untuk memperkirakan parameter populasi berdasarkan data sampel. Estimasi dibagi menjadi: - Estimasi Titik - Estimasi Interval

1.1 Estimasi Titik

Estimasi titik digunakan untuk menentukan satu nilai spesifik sebagai perkiraan terbaik dari parameter populasi.

1.2 Estimasi Interval

Estimasi interval bertujuan untuk memberikan rentang nilai yang diyakini mengandung parameter populasi dengan tingkat kepercayaan tertentu.

2. Uji Hipotesis

2.1 Uji Proporsi

Uji proporsi digunakan untuk membandingkan proporsi kejadian antara dua kelompok dalam tabel kontingensi, terutama untuk menentukan apakah terdapat perbedaan yang signifikan dalam proporsi kejadian antara dua kelompok yang berbeda.

Berikut merupakan contoh perhitungan kasus menggunakan R:

# Pastikan variabel data_matrix terdefinisi sebelum digunakan
set.seed(123)
data<- matrix(c(50, 30, 30, 50), nrow = 2, byrow = TRUE)
dimnames(data) <- list("Terpapar" = c("Ya", "Tidak"), "Kejadian" = c("Ya", "Tidak"))
print(data)
##         Kejadian
## Terpapar Ya Tidak
##    Ya    50    30
##    Tidak 30    50
# Uji Proporsi dengan variabel yang benar
prop_test <- prop.test(x = c(data[1,1], data[2,1]), 
                       n = c(sum(data[1,]), sum(data[2,])))
print(prop_test)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(data[1, 1], data[2, 1]) out of c(sum(data[1, ]), sum(data[2, ]))
## X-squared = 9.025, df = 1, p-value = 0.002663
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.08747151 0.41252849
## sample estimates:
## prop 1 prop 2 
##  0.625  0.375

2.2 Uji Asosiasi

n11 <- 50; n12 <- 30; n21 <- 30; n22 <- 50
n1. <- n11 + n12; n2. <- n21 + n22

2.2.1 Risk Difference (RD)

# Risk Difference
p1<-(n11/n1.)
p2<-(n21/n2.)
rd <- p1 - p2
se_rd <- sqrt((p1 * (1 - p1) / n1.) + p2*((1 - p2) / n2.))
z_rd <- rd / se_rd

2.2.2 Relative Risk (RR)

# Relative Risk
rr <- (n11/n1.) / (n21/n2.)
se_ln_rr <- sqrt((1/n11) - (1/n1.) + (1/n21) - (1/n2.))
z_rr <- log(rr) / se_ln_rr

2.2.3 Odds Ratio

# Odds Ratio
or <- (n11 * n22) / (n12 * n21)
se_ln_or <- sqrt((1/n11) + (1/n12) + (1/n21) + (1/n22))
z_or <- log(or) / se_ln_or

Hasil dari semua uji asosiasi:

# Hasil
list(RD = rd, SE_RD = se_rd, Z_RD = z_rd, RR = rr, SE_Ln_RR = se_ln_rr, Z_RR = z_rr, OR = or, SE_Ln_OR = se_ln_or, Z_OR = z_or)
## $RD
## [1] 0.25
## 
## $SE_RD
## [1] 0.07654655
## 
## $Z_RD
## [1] 3.265986
## 
## $RR
## [1] 1.666667
## 
## $SE_Ln_RR
## [1] 0.1683251
## 
## $Z_RR
## [1] 3.034756
## 
## $OR
## [1] 2.777778
## 
## $SE_Ln_OR
## [1] 0.3265986
## 
## $Z_OR
## [1] 3.128155

2.3 Uji Independensi

Uji independensi digunakan untuk menentukan apakah ada hubungan statistik antara dua variabel kategorikal.

2.3.1 Uji Chi- Square

Uji Chi-Square digunakan untuk menguji apakah ada hubungan antara dua variabel kategorikal.

Berikut merupakan contoh kasus dengan perhitungan menggunakan R:

# Contoh Data
set.seed(123)
data <- matrix(c(30, 10, 15, 45), nrow = 2, byrow = TRUE)
dimnames(data) <- list("Terpapar" = c("Ya", "Tidak"), "Kejadian" = c("Ya", "Tidak"))
print(data)
##         Kejadian
## Terpapar Ya Tidak
##    Ya    30    10
##    Tidak 15    45
# Uji Chi-Square
chisq_test <- chisq.test(data)
print(chisq_test)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data
## X-squared = 22.264, df = 1, p-value = 2.376e-06

2.3.2 Partisi Chi-Square

Berikut merupakan contoh kasus dengan perhitungan menggunakan R:

# Data Observasi
data_matrix <- matrix(c(495, 272, 590, 330, 265, 498), nrow = 2, byrow = TRUE)
colnames(data_matrix) <- c("Democrat", "Republican", "Independent")
rownames(data_matrix) <- c("Female", "Male")
# Uji Chi-Square
chi_test <- chisq.test(data_matrix)
# Hasil
list(Chi_Square = chi_test$statistic, P_Value = chi_test$p.value, Decision = ifelse(chi_test$p.value < 0.05, "Reject H0", "Fail to Reject H0"))
## $Chi_Square
## X-squared 
##  12.56926 
## 
## $P_Value
## [1] 0.00186475
## 
## $Decision
## [1] "Reject H0"
# Data Observasi
data_matrix <- matrix(c(495, 272, 330, 265), nrow = 2, byrow = TRUE)
colnames(data_matrix) <- c("Democrat", "Republican")
rownames(data_matrix) <- c("Female", "Male")

# Uji Chi-Square Partisi 1
chi_test1 <- chisq.test(data_matrix)

# Data Partisi 2
data_matrix2 <- matrix(c(767, 590, 595, 498), nrow = 2, byrow = TRUE)
colnames(data_matrix2) <- c("Dem+Rep", "Independent")
rownames(data_matrix2) <- c("Female", "Male")

# Uji Chi-Square Partisi 2
chi_test2 <- chisq.test(data_matrix2)

# Hasil
list(Chi_Square_Partisi1 = chi_test1, Chi_Square_Partisi2 = chi_test2)
## $Chi_Square_Partisi1
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_matrix
## X-squared = 11.178, df = 1, p-value = 0.0008279
## 
## 
## $Chi_Square_Partisi2
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  data_matrix2
## X-squared = 0.98267, df = 1, p-value = 0.3215

2.3.3 Uji Likelihood Ratio (G²)

Uji Likelihood Ratio (G²) adalah alternatif dari uji chi-square yang digunakan untuk menguji hipotesis independensi dalam tabel kontingensi I × J. Berikut merupakan contoh kasus dengan perhitungan menggunakan R:

# Data Observasi
data_matrix <- matrix(c(688, 650, 21, 59), nrow = 2, byrow = TRUE)
colnames(data_matrix) <- c("Cancer (+)", "Control (-)")
rownames(data_matrix) <- c("Smoker", "Non-Smoker")

# Hitung Frekuensi Ekspektasi
data_expected <- chisq.test(data_matrix)$expected

# Hitung Statistik G²
G2 <- 2 * sum(data_matrix * log(data_matrix / data_expected))

# Nilai kritis chi-square untuk df = 1 dan alpha = 0.05
critical_value <- qchisq(0.95, df = 1)

# Hasil
list(G2 = G2, Critical_Value = critical_value, Decision = ifelse(G2 > critical_value, "Reject H0", "Fail to Reject H0"))
## $G2
## [1] 19.87802
## 
## $Critical_Value
## [1] 3.841459
## 
## $Decision
## [1] "Reject H0"

2.3.4 Uji Exact Fisher

Uji Fisher’s Exact digunakan untuk menguji hubungan antara dua variabel kategorikal dalam tabel kontingensi kecil, dimana asumsi Chi-square tidak berlaku karena ukuran sampel yang kecil.

Misalkan diperoleh data sebagai berikut:

Ya Tidak Total
Grup A 18 2 20
Grup B 11 9 20
Total 29 11 40

Berikut merupakan contoh perhitungan menggunakan R dengan menghitung probabiitas tabel dengan distribusi hipergeometrik:

# Definisi parameter
N <- 40   # Total populasi
K <- 29   # Jumlah kategori sukses (bola putih)
n <- 20   # Jumlah sampel diambil
x <- 18   # Jumlah sukses dalam sampel

# Hitung probabilitas P(X = 18)
dhyper(x, m = K, n = N - K, k = n)
## [1] 0.01380413
choose(29, 18) * choose(11, 2) / choose(40, 20)
## [1] 0.01380413
choose(29, 20) * choose(11, 0) / choose(40, 20)
## [1] 7.26533e-05
choose(29, 19) * choose(11, 1) / choose(40, 20)
## [1] 0.001598373
choose(29, 18) * choose(11, 2) / choose(40, 20)
## [1] 0.01380413
choose(29, 17) * choose(11, 3) / choose(40, 20)
## [1] 0.06211857
choose(29, 16) * choose(11, 4) / choose(40, 20)
## [1] 0.162464
choose(29, 15) * choose(11, 5) / choose(40, 20)
## [1] 0.2599423
choose(29, 14) * choose(11, 6) / choose(40, 20)
## [1] 0.2599423
choose(29, 13) * choose(11, 7) / choose(40, 20)
## [1] 0.162464
choose(29, 12) * choose(11, 8) / choose(40, 20)
## [1] 0.06211857
choose(29, 11) * choose(11, 9) / choose(40, 20)
## [1] 0.01380413
choose(29, 10) * choose(11, 10) / choose(40, 20)
## [1] 0.001598373
choose(29, 9) * choose(11, 11) / choose(40, 20)
## [1] 7.26533e-05
choose(29, 18) * choose(11, 2) / choose(40, 20)
## [1] 0.01380413

p-value untuk uji Exact Fisher adalah kumulatif nilai p-value untuk setiap tabel yang lebih kecil sama dengan nilai p-value tabel empiris, yaitu:

p.value<-0.00007+0.00160+0.01380+0.01380+0.00160+0.00007
p.value
## [1] 0.03094

Berikut merupakan contoh perhitungan menggunakan R dengan fisher.test()

data <- matrix(c(18, 2, 11, 9), nrow = 2, byrow = TRUE)
fisher.test(data)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  data
## p-value = 0.03095
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##   1.147793 78.183838
## sample estimates:
## odds ratio 
##   6.994073

Hasilnya akan memberikan nilai p untuk menentukan apakah ada hubungan signifikan antara kedua variabel. Jika p-value < 0.05, kita menolak hipotesis nol, yang berarti ada hubungan signifikan antara dua variabel.

Tugas Mahasiswa

Buatlah fungsi untuk menghitung dan melakukan pegujian hipotesis untuk RD, RR, dan OR. Gunakan data berikut Dataset dari Agresti (2019, hlm. 35, Tabel 2.3):

Smoker Lung Cancer (Cases) Control
Yes 688 650
No 21 59

Struktur tabel untuk pembuatan function:

Exposure Cases Control Total
Yes a b a+b
No c d c+d
Total a+c b+d a+b+c+d

Berikut merupakan perhitungan menggunakan R:

a. Risk Difference

prop_diff <- function(a, b, c, d, alpha = 0.05) {
  ph <- a / (a + c)
  pi <- b / (b + d)
  nh <- a + c
  ni <- b + d
  
  se_bp <- sqrt((ph * (1 - ph) / nh) + (pi * (1 - pi) / ni))
  z_alpha <- qnorm(1 - alpha / 2)
  ci_lower <- (ph - pi) - z_alpha * se_bp
  ci_upper <- (ph - pi) + z_alpha * se_bp
  
  list(estimate = ph - pi, ci = c(ci_lower, ci_upper))
}
# Input data
hasil <- prop_diff(a = 688, b = 21, c = 650, d = 59)

# Menampilkan hasil
print(hasil)
## $estimate
## [1] 0.2517003
## 
## $ci
## [1] 0.1516343 0.3517663

Risk Difference (RD) = 0.2517 atau 25.17% yang artinya risiko terkena kanker paru-paru pada perokok lebih tinggi 25.17% secara absolut dibandingkan dengan non-perokok.

b. Relative Risk

relative_risk <- function(a, b, c, d, alpha = 0.05) {
  ph <- a / (a + c)
  pi <- b / (b + d)
  nh <- a + c
  ni <- b + d
  
  ln_rr <- log(ph / pi)
  se_ln_rr <- sqrt(((1 - ph) / (ph * nh)) + ((1 - pi) / (pi * ni)))
  z_alpha <- qnorm(1 - alpha / 2)
  ci_lower <- exp(ln_rr - z_alpha * se_ln_rr)
  ci_upper <- exp(ln_rr + z_alpha * se_ln_rr)
  
  list(estimate = exp(ln_rr), ci = c(ci_lower, ci_upper))
}
# Input data
hasil <- relative_risk(a = 688, b = 21, c = 650, d = 59)

# Menampilkan hasil
print(hasil)
## $estimate
## [1] 1.958858
## 
## $ci
## [1] 1.351735 2.838667

Relative Risk (RR) = 1.96 yang artinya perokok memiliki 1.96 kali lipat lebih tinggi risiko terkena kanker paru-paru dibandingkan dengan non-perokok.

c. Odds Ratio

odds_ratio <- function(a, b, c, d, alpha = 0.05) {
  ln_or <- log((a * d) / (b * c))
  se_ln_or <- sqrt(1/a + 1/b + 1/c + 1/d)
  z_alpha <- qnorm(1 - alpha / 2)
  ci_lower <- exp(ln_or - z_alpha * se_ln_or)
  ci_upper <- exp(ln_or + z_alpha * se_ln_or)
  
  list(estimate = exp(ln_or), ci = c(ci_lower, ci_upper))
}
# Input data
hasil <- odds_ratio(a = 688, b = 21, c = 650, d = 59)

# Menampilkan hasil
print(hasil)
## $estimate
## [1] 2.973773
## 
## $ci
## [1] 1.786737 4.949427

Odds Ratio (OR) = 2.97 yang artinya odds perokok terkena kanker paru-paru 2.97 kali lebih besar dibandingkan non-perokok.

Berikut merupakan perhitungan manual menggunakan R:

a <- 688
b <- 21
c <- 650
d <- 59

# Risk Difference
RD_manual <- (a / (a + c)) - (b / (b + d))
SE_RD <- sqrt((a/(a+c)*(1 - a/(a+c)))/(a+c) + (b/(b+d)*(1 - b/(b+d)))/(b+d))
CI_RD <- c(RD_manual - 1.96 * SE_RD, RD_manual + 1.96 * SE_RD)

# Relative Risk
RR_manual <- (a / (a + c)) / (b / (b + d))
SE_RR <- sqrt(1/a - 1/(a+c) + 1/b - 1/(b+d))
CI_RR <- exp(log(RR_manual) + c(-1.96, 1.96) * SE_RR)

# Odds Ratio
OR_manual <- (a * d) / (b * c)
SE_OR <- sqrt(1/a + 1/b + 1/c + 1/d)
CI_OR <- exp(log(OR_manual) + c(-1.96, 1.96) * SE_OR)

list(RD = RD_manual, CI_RD = CI_RD, RR = RR_manual, CI_RR = CI_RR, OR = OR_manual, CI_OR = CI_OR)
## $RD
## [1] 0.2517003
## 
## $CI_RD
## [1] 0.1516324 0.3517682
## 
## $RR
## [1] 1.958858
## 
## $CI_RR
## [1] 1.351726 2.838687
## 
## $OR
## [1] 2.973773
## 
## $CI_OR
## [1] 1.786720 4.949474

Perbandingan dengan output R:

library(epiR)
## Loading required package: survival
## Package epiR 2.0.91 is loaded
## Type help(epi.about) for summary information
## Type browseVignettes(package = 'epiR') to learn how to use epiR for applied epidemiological analyses
## 
table_data <- matrix(c(a, c, b, d), nrow = 2, byrow = TRUE)
colnames(table_data) <- c("Lung Cancer", "Control")
rownames(table_data) <- c("Yes", "No")
res <- epi.2by2(table_data)
print(res)
##              Outcome+    Outcome-      Total                 Inc risk *
## Exposure+         688         650       1338     51.42 (48.70 to 54.13)
## Exposure-          21          59         80     26.25 (17.04 to 37.29)
## Total             709         709       1418     50.00 (47.36 to 52.64)
## 
## Point estimates and 95% CIs:
## -------------------------------------------------------------------
## Inc risk ratio                                 1.96 (1.35, 2.84)
## Inc odds ratio                                 2.97 (1.79, 4.95)
## Attrib risk in the exposed *                   25.17 (15.16, 35.18)
## Attrib fraction in the exposed (%)            48.95 (28.08, 65.39)
## Attrib risk in the population *                23.75 (13.76, 33.74)
## Attrib fraction in the population (%)         47.50 (29.16, 64.02)
## -------------------------------------------------------------------
## Uncorrected chi2 test that OR = 1: chi2(1) = 19.129 Pr>chi2 = <0.001
## Fisher exact test that OR = 1: Pr>chi2 = <0.001
##  Wald confidence limits
##  CI: confidence interval
##  * Outcomes per 100 population units

Risk Difference, Relative Risk, dan Odds Ratio memberikan informasi tentang kekuatan hubungan antara paparan dan outcome. Perhitungan manual dan R memberikan hasil yang sama.

Tugas 6 Inferensi Tabel Kontingensi Dua Arah

Kasus 1: Tabel Kontingensi 2 × 2

1.1 Data dan Penyusunan Tabel

Berikut merupakan data tentang hubungan antara kebiasaan merokok dan kanker paru

Status Merokok Cancer (+) Control (-) Total
Smoker 688 650 1338
Non-Smoker 21 59 80
Total 709 709 1418

Penyusunan tabel data kasus 1 dengan software R:

tabel1 <- matrix(c(688, 650, 21, 59),
                 nrow = 2, byrow = TRUE,
                 dimnames = list(
                   "Status Merokok" = c("Smoker", "Non-Smoker"),
                   "Status Kanker"  = c("Cancer (+)", "Control (-)")
                 ))
tabel1
##               Status Kanker
## Status Merokok Cancer (+) Control (-)
##     Smoker            688         650
##     Non-Smoker         21          59
tabel1_df <- as.data.frame(tabel1)
tabel1_df$Total <- rowSums(tabel1_df)
tabel1_df <- rbind(tabel1_df, Total = colSums(tabel1_df))
tabel1_df
##            Cancer (+) Control (-) Total
## Smoker            688         650  1338
## Non-Smoker         21          59    80
## Total             709         709  1418

1.2 Hitung estimasi titik proporsi kejadian kanker paru pada kelompok Smoker dan Non-Smoker.

Estimasi titik digunakan untuk menentukan satu nilai spesifik sebagai perkiraan terbaik dari parameter populasi.

Secara matematis, estimasi titik diperoleh menggunakan rumus berikut:

\[ \hat{p} = \frac{x}{n} \]

Keterangan:

\(\hat{p}\) = Estimasi titik proporsi

\({x}\) = Jumlah individu dalam kategori tertentu

\({n}\) = Total jumlah individu dalam sampel

a. Estimasi titik proporsi kejadian kanker paru pada kelompok Smoker

Perhitungan secara manual:

\[ \hat{p}_1 = \frac{688}{1338} = 0.5142 \]

Perhitungan menggunakan software R:

# Mendefinisikan variabel
n_smoker <- 1338
n_nonsmoker <- 80
cancer_smoker <- 688
cancer_nonsmoker <- 21
notcancer_smoker <- 650
notcancer_nonsmoker <- 59

# Proporsi Kelompok Smoker
p_smoker <- cancer_smoker/n_smoker
p_smoker
## [1] 0.5142003

Proporsi kejadian kanker paru pada kelompok smoker adalah sebesar 0.5142 atau setara 51.42%

b. Estimasi titik proporsi kejadian kanker paru pada kelompok Non-Smoker

Perhitungan secara manual:

\[ \hat{p}_2 = \frac{21}{80} = 0.2625 \]

Perhitungan menggunakan software R:

# Proporsi Kelompok Non-Smoker
p_nonsmoker <- cancer_nonsmoker / n_nonsmoker
p_nonsmoker
## [1] 0.2625

Proporsi kejadian kanker paru pada kelompok Non-smoker adalah sebesar 0.2625 atau setara dengan 26.25%

Interpretasi: Hasil estimasi titik proporsi ini menunjukkan bahwa kejadian kanker paru pada kelompok Smoker lebih tinggi hampir dua kali lipat dibandingkan dengan kelompok Non-Smoker. Dengan demikian, estimasi titik ini memberikan gambaran awal bahwa merokok berpotensi menjadi faktor risiko penting terhadap kejadian kanker paru, untuk memastikan signifikansi hubungan tersebut masih diperlukan analisis inferensial yang akan dilakukan di tahap berikutnya.

1.3 Hitung interval kepercayaan 95% untuk proporsi masing-masing kelompok, RD, RR, dan OR.

Interval kepercayaan (confidence interval) adalah rentang nilai yang dihitung dari data sampel untuk mengestimasi nilai parameter populasi yang sebenarnya.

Uji asosiasi bertujuan untuk mengukur hubungan antara dua variabel kategori. Dalam uji asosiasi terdapat tiga ukuran utama yaitu:

  1. Risk Difference (RD): Mengukur selisih risiko absolut antara dua kelompok kategorik.

  2. Relative Risk (RR): Mengukur perbandingan risiko antara dua kelompok kategorik.

  3. Odds Ratio (OR): Mengukur perbandingan odds antara dua kelompok kategorik.

Berikut merupakan perhitungan menggunakan R:

# Data dari Tabel
n_smoker <- 1338
n_nonsmoker <- 80
cancer_smoker <- 688
cancer_nonsmoker <- 21

p_smoker <- cancer_smoker / n_smoker
p_nonsmoker <- cancer_nonsmoker / n_nonsmoker

# CI Proporsi kelompok Smoker
ci_smoker <- prop.test(cancer_smoker, n_smoker)
ci_smoker
## 
##  1-sample proportions test with continuity correction
## 
## data:  cancer_smoker out of n_smoker, null probability 0.5
## X-squared = 1.0232, df = 1, p-value = 0.3118
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4870445 0.5412736
## sample estimates:
##         p 
## 0.5142003
# CI Proporsi kelompok Non-Smoker
ci_nonsmoker <- prop.test(cancer_nonsmoker, n_nonsmoker)
ci_nonsmoker
## 
##  1-sample proportions test with continuity correction
## 
## data:  cancer_nonsmoker out of n_nonsmoker, null probability 0.5
## X-squared = 17.113, df = 1, p-value = 3.523e-05
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.1733064 0.3748263
## sample estimates:
##      p 
## 0.2625
# Risk Difference
RD <- p_smoker - p_nonsmoker
RD
## [1] 0.2517003
# Relative Risk
RR <- p_smoker / p_nonsmoker
RR
## [1] 1.958858
# Odds Ratio
a <- tabel1[1,1]
b <- tabel1[1,2]
c <- tabel1[2,1]
d <- tabel1[2,2]
OR <- (a*d)/(b*c)
OR
## [1] 2.973773

Interpretasi:

Proporsi kanker paru pada kelompok smoker berada pada interval kepercayaan 95% antara 0.4870445 hingga 0.5412736. Sedangkan pada kelompok non-smoker berada 0.1733064 hingga 0.3748263.

Nilai Risk Difference (RD) yang dihasilkan sebesar 0.2517 menunjukkan bahwa terdapat risiko absolut pada kelompok smoker lebih tinggi terkena kanker paru sebesar 25.17%.

Nilai Relative Risk (RR) yang dihasilkan sebesar 1.958858 menunjukkan bahwa individu yang termasuk kepada kelompok smoker memiliki risiko 1.96 kali lebih tinggi terkena kanker paru dibandingkan kelompok non-smoker.

Nilai Odds Ratio (OR) yang dihasilkan sebesar 2.973773 menunjukkan bahwa odds kejadian kanker paru pada kelompok smoker sekitar 2.97 kali lebih tinggi dibandingkan kelompok non-smoker.

Berdasarkan hasil analisis, diperoleh bahwa nilai Risk Difference (RD), Relative Risk (RR) dan Odds Ratio (OR) lebih besar dari 1. Hal ini menunjukkan bahwa kelompok yang merokok (smoker) memiliki risiko dan peluang yang lebih tinggi untuk mengalami kejadian kanker paru dibandingkan dengan kelompok yang tidak merokok (non-smoker).

1.4 Lakukan uji dua proporsi.

Uji dua proporsi digunakan untuk menguji apakah proporsi suatu kategori dalam suatu populasi berbeda dengan nilai tertentu atau proporsi dalam dua grup yang berbeda. Dalam kasus ini akan dilakukan uji dua proporsi untuk mengetahui apakah terdapat perbedaan proporsi kejadian kanker paru antara kelompok smoker dan non-smoker.

Hipotesis \[H_0 : p_1 = p_2\] (Tidak ada perbedaan proporsi antara kelompok Smoker dan Non-smoker)

\[H_1 : p_1 \neq p_2\] (Ada perbedaan proporsi antara kelompok Smoker dan Non-smoker)

Statisti Uji Berikut pengujian menggunakan R:

uji_proporsi <- prop.test(c(cancer_smoker, cancer_nonsmoker), c(n_smoker, n_nonsmoker),
                      alternative = "two.sided", correct = FALSE)
print(uji_proporsi)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(cancer_smoker, cancer_nonsmoker) out of c(n_smoker, n_nonsmoker)
## X-squared = 19.129, df = 1, p-value = 1.222e-05
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.1516343 0.3517663
## sample estimates:
##    prop 1    prop 2 
## 0.5142003 0.2625000

Kriteria Uji

Tolak \(H_0\) jika p-value < alpha = 0.05

Keputusan

\(p-value = 1.222^{-5} < 0.05\) maka \(H_0\) ditolak

Kesimpulan

Terdapat perbedaan proporsi kejadian kanker paru yang signifikan secara statistik antara kelompok Smoker dan Non-Smoker.

1.5 Lakukan uji chi-square independensi.

Uji Chi-Square digunakan untuk menguji apakah terdapat hubungan antara dua variabel kategorikal.

Hipotesis

\(H_0\) : Status merokok dan kejadian kanker paru saling independen

\(H_1\) : Status merokok dan kejadian kanker paru tidak independen

Statistik Uji

Berikut pengujian menggunakan R:

uji_chisq <- chisq.test(tabel1, correct = FALSE)
print(uji_chisq)
## 
##  Pearson's Chi-squared test
## 
## data:  tabel1
## X-squared = 19.129, df = 1, p-value = 1.222e-05

Kriteria Uji

Tolak \(H_0\) jika p-value < alpha = 0.05

Keputusan

\(\chi^2 = 19.129\) dengan \(df = 1\)

\(p-value = 1.222^{-5} < 0.05\) maka \(H_0\) ditolak

Kesimpulan

Terdapat hubungan yang signifikan antara status merokok dan kejadian kanker paru. Hal ini menunjukkan bahwa kejadian kanker paru tidak terjadi secara independen terhadap status merokok.

1.6 Lakukan uji likelihood ratio (\(G^2\)).

Dalam analisis data kategorik, uji likelihood ratio (\(G^2\)) merupakan alternatif dari uji chi-square untuk menguji independensi antara dua variabel dalam tabel kontingensi. Uji likelihood ratio sering digunakan sebagai alternatif uji chi square ketika ukuran sampel kecil.

Hipotesis

\(H_0\) : Status merokok dan kejadian kanker paru saling independen

\(H_1\) : Status merokok dan kejadian kanker paru tidak independen

Statistik Uji

Berikut pengujian menggunakan package R:

library(DescTools)

uji_g2 <- GTest(tabel1)
uji_g2
## 
##  Log likelihood ratio (G-test) test of independence without correction
## 
## data:  tabel1
## G = 19.878, X-squared df = 1, p-value = 8.254e-06

Kriteria Uji

Tolak \(H_0\) jika p-value < alpha = 0.05

Keputusan

\(p-value = 8.254^{-6} < 0.05\) maka \(H_0\) ditolak

Kesimpulan

Terdapat hubungan yang signifikan antara status merokok dan kejadian kanker paru. Hal ini menunjukkan bahwa kejadian kanker paru tidak terjadi secara independen terhadap status merokok dengan kelompok perokok (Smoker) cenderung lebih tinggi mengalami kanker paru dibandingkan kelompok non-perokok (Non-Smoker).

1.7 Lakukan Fisher exact test.

Uji Exact Fisher digunakan untuk menguji apakah terdapat hubungan atau ketergantungan antara dua variabel kategorik dalam sebuah tabel kontingensi, khususnya ketika jumlah sampel kecil atau terdapat frekuensi harapan.

Hipotesis

\(H_0\) : Status merokok dan kejadian kanker paru saling independen

\(H_1\) : Status merokok dan kejadian kanker paru tidak independen

Statistik Uji

Berikut pengujian menggunakan R:

uji_fisher <- fisher.test(tabel1)
print(uji_fisher)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  tabel1
## p-value = 1.476e-05
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  1.755611 5.210711
## sample estimates:
## odds ratio 
##   2.971634

Kriteria Uji

Tolak \(H_0\) jika p-value < alpha = 0.05

Keputusan

\(p-value = 1.476^{-5} < 0.05\) maka \(H_0\) ditolak

Kesimpulan

Terdapat hubungan yang signifikan antara status merokok dan kejadian kanker paru. Hal ini menunjukkan bahwa kejadian kanker paru tidak terjadi secara independen terhadap status merokok.

1.8 Bandingkan hasil butir 4 sampai 7 dari sisi hipotesis, statistik uji, p-value, keputusan, dan interpretasi substantif.

Berikut merupakan perbandingan hasil uji dua proporsi, chi-suare, likelihood ratio (\(G^2\)), dan fisher exact:

Metode Hipotesis Statistik Uji p-value Keputusan
Dua Proporsi \(p_1=p_2\) Z / \(\chi^2\) \(1.222^{-5}\) Tolak \(H_0\)
Chi-Square Independensi \(\chi^2 = 19.129\) \(1.222^{-5}\) Tolak \(H_0\)
Likelihood Ratio Independensi \(G^2=19.878\) \(8.254^{-6}\) Tolak \(H_0\)
Fisher Exact Independensi Exact Test \(1.476^{-5}\) Tolak \(H_0\)

Interpretasi secara substansif

Berdasarkan hasil pengujian menggunakan berbagai metode, yaitu uji dua proporsi, uji Chi-Square, Likelihood Ratio, dan Fisher Exact, seluruh metode menghasilkan p-value yang bernilai kecil (< 0,05) sehingga keputusan yang diperoleh secara konsisten untuk semua metode pengujian adalah menolak \(H_0\)

Proporsi kejadian kanker paru pada kelompok Smoker dan Non-Smoker tidak sama, sehingga dapat disimpulkan terdapat perbedaan nyata antara kedua kelompok.

Selain itu, hasil uji independensi (Chi-Square, Likelihood Ratio (\(G^2\)), dan Fisher Exact) menunjukkan bahwa status merokok tidak bersifat independen terhadap kejadian kanker paru.

Dengan kata lain, terdapat hubungan yang signifikan antara kebiasaan merokok dan kejadian kanker paru. Individu yang masuk pada kelompok Smoker atau perokok cenderung memiliki kemungkinan yang lebih besar untuk mengalami kanker paru dibandingkan dengan individu yang tidak merokok (Non-Smoker).

1.9 Buat kesimpulan akhir tentang hubungan antara merokok dan kanker paru

Berdasarkan hasil analisis, dapat disimpulkan bahwa terdapat hubungan yang signifikan antara kebiasaan merokok dan kejadian kanker paru. Individu yang merokok memiliki risiko dan peluang yang lebih tinggi untuk mengalami kanker paru dibandingkan dengan individu yang tidak merokok.

Dengan demikian, merokok dapat dianggap sebagai faktor risiko penting yang berkontribusi terhadap meningkatnya kejadian kanker paru.

Kasus 2: Tabel Kontingensi 2 × 3

2.1 Data dan Penyusunan Tabel

Berikut merupakan data tentang hubungan antara gender dan identifikasi partai politik

Gender Democrat Republican Independent Total
Female 495 272 590 1357
Male 330 265 498 1093
Total 825 537 1088 2450

Penyusunan tabel data kasus 2 dengan software R:

tabel2 <- matrix(c(495,272,590,
                   330,265,498),
                 nrow = 2,
                 byrow = TRUE)
colnames(tabel2) <- c("Democrat", "Republican", "Independent")
rownames(tabel2) <- c("Female", "Male")
tabel2
##        Democrat Republican Independent
## Female      495        272         590
## Male        330        265         498
tabel2_df <- as.data.frame(tabel2)
tabel2_df$Total <- rowSums(tabel2_df)
tabel2_df <- rbind(tabel2_df, Total = colSums(tabel2_df))
tabel2_df
##        Democrat Republican Independent Total
## Female      495        272         590  1357
## Male        330        265         498  1093
## Total       825        537        1088  2450

2.2 Hitung frekuensi harapan untuk setiap sel

Berikut merupakan rumus dari frekuensi harapan: \[ E_{ij} = \frac{R_i × C_j}{N} \]

Keterangan:

\(E_{ij}=\) nilai yang diharapkan

\(R_i=\) total baris ke-\(i\)

\(C_j=\) total kolom ke-\(j\)

\(N=\) total sampel

Berikut merupakan perhitungan frekuensi harapan menggunakan R:

expected <- chisq.test(tabel2)$expected
expected
##        Democrat Republican Independent
## Female  456.949   297.4322    602.6188
## Male    368.051   239.5678    485.3812

Interpretasi

Berdasarkan hasil perhitungan, seluruh nilai frekuensi harapan lebih dari 5 sehingga asumsi uji chi-square terpenuhi.

2.3 Lakukan uji chi-square independensi untuk tabel keseluruhan

Uji Chi-Square digunakan untuk menguji apakah terdapat hubungan antara dua variabel kategorikal.

Hipotesis

\(H_0\) : Gender dan identifikasi partai politik saling independen

\(H_1\) : Gender dan identifikasi partai politik tidak saling independen

Statistik Uji

Berikut pengujian menggunakan R:

uji_chisq2 <- chisq.test(tabel2, correct = FALSE)
print(uji_chisq2)
## 
##  Pearson's Chi-squared test
## 
## data:  tabel2
## X-squared = 12.569, df = 2, p-value = 0.001865

Kriteria Uji

Tolak \(H_0\) jika p-value < alpha = 0.05

Keputusan

\(\chi^2 = 12.569\) dengan \(df = 1\)

\(p-value = 0.001865 < 0.05\) maka \(H_0\) ditolak

Kesimpulan

Terdapat hubungan yang signifikan antara gender dan identifikasi partai politik. Artinya, distribusi pilihan atau kecenderungan identifikasi partai politik berbeda antara kelompok gender, sehingga gender dapat dianggap sebagai faktor yang berkaitan dengan preferensi politik seseorang.

2.4 Hitung dan interpretasikan residual Pearson atau standardized residual.

Residual dalam tabel kontingensi digunakan untuk mengidentifikasi sel mana yang menyumbang paling banyak terhadap hubungan antara variabel kategori. Residual mengukur selisih antara frekuensi yang diamati dan frekuensi yang diharapkan berdasarkan model independensi.

Pearson residuals adalah ukuran diagnostik statistik yang menghitung selisih antara nilai yang diamati (\(O_{ij}\)) dan nilai yang diharapkan (\(E_{ij}\)) oleh model, dibagi dengan akar dari nilai yang diharapkan (\(E_{ij}\)).

\[ e_{ij} = \frac{O_{ij} × E_{ij}}{\sqrt {E_{ij}}} \]

Berikut merupakan perhitungan frekuensi harapan menggunakan R:

residual <- chisq.test(tabel2)$residuals
residual
##         Democrat Republican Independent
## Female  1.780051  -1.474656  -0.5140388
## Male   -1.983409   1.643125   0.5727640

Interpretasi

Berdasarkan nilai residual Pearson yang dihasilkan, terlihat bahwa terdapat beberapa sel dengan nilai residual positif besar dan negatif besar, yang menunjukkan adanya penyimpangan dari kondisi independen. Hasil dari residual Pearson menunjukkan bahwa perempuan cenderung lebih banyak dari yang diharapkan mengidentifikasi sebagai Demokrat, sedangkan laki-laki cenderung lebih banyak sebagai Republican, sementara kategori Independent tidak menunjukkan perbedaan yang berarti.

2.5 Lakukan partisi chi-square untuk Democrat vs Republican dan (Democrat + Republican) vs Independent

Berikut merupakan hasil pengujian partisi chi-square menggunakan R:

# Tabel Democrat vs Republican
tabel_DR <- tabel2[, c("Democrat", "Republican")]
tabel_DR
##        Democrat Republican
## Female      495        272
## Male        330        265
uji_DR <- chisq.test(tabel_DR, correct = FALSE)
uji_DR
## 
##  Pearson's Chi-squared test
## 
## data:  tabel_DR
## X-squared = 11.555, df = 1, p-value = 0.0006758
# Gabungan Democrat + Republican vs Independent
DR <- tabel2[, "Democrat"] + tabel2[, "Republican"]

tabel_DI <- cbind(DR, tabel2[, "Independent"])
colnames(tabel_DI) <- c("Democrat+Republican", "Independent")
tabel_DI
##        Democrat+Republican Independent
## Female                 767         590
## Male                   595         498
uji_DI <- chisq.test(tabel_DI, correct = FALSE)
uji_DI
## 
##  Pearson's Chi-squared test
## 
## data:  tabel_DI
## X-squared = 1.0654, df = 1, p-value = 0.302

Interpretasi

Hasil partisi Chi-Square menunjukkan bahwa terdapat perbedaan yang signifikan antara gender dalam memilih Democrat vs Republican (p-value = 0.0006758 < 0.05), namun tidak terdapat perbedaan yang signifikan antara gender dalam memilih (Democrat + Republican) vs Independent (p-value = 0.302 > 0.05).

Artinya, perbedaan gender terjadi dalam preferensi antara Demokrat dan Republik, bukan pada kecenderungan menjadi Independent.

2.6 Bandingkan hasil partisi dengan hasil uji chi-square keseluruhan

Berdasarkan hasil partisi uji Chi-Square, diperoleh bahwa pada perbandingan Democrat vs Republican, nilai p-value = 0.0006758 < 0.05, sehingga menunjukkan adanya perbedaan yang signifikan antara gender dalam memilih kedua partai tersebut. Hal ini berarti laki-laki dan perempuan memiliki kecenderungan yang berbeda dalam memilih antara Demokrat dan Republik.

Sementara itu, pada perbandingan (Democrat + Republican) vs Independent, diperoleh p-value = 0.302 > 0.05, sehingga tidak terdapat perbedaan yang signifikan antara gender. Artinya, secara umum laki-laki dan perempuan memiliki kecenderungan yang relatif sama dalam memilih menjadi Independent atau tidak.

Secara keseluruhan, dapat disimpulkan bahwa pengaruh gender terhadap identifikasi partai politik lebih terlihat pada pilihan antara Demokrat dan Republik, sedangkan dalam hal kecenderungan menjadi Independent, gender tidak memberikan perbedaan yang berarti.

2.7 Jelaskan kategori mana yang paling berkontribusi terhadap hubungan antara Gender dan Identifikasi Partai Politik

Untuk mengetahui kategori mana yang paling berkontribusi terhadap hubungan antara Gender dan Identifikasi Partai Politik, dilakukan perhitungan kontribusi masing-masing sel terhadap statistik Chi-Square total menggunakan R:

kontribusi <- (tabel2 - uji_chisq2$expected)^2 / uji_chisq2$expected
pct <- round(kontribusi / uji_chisq2$statistic * 100, 2)
pct
##        Democrat Republican Independent
## Female    25.21      17.30        2.10
## Male      31.30      21.48        2.61

Interpretasi

Berdasarkan kontribusi masing-masing sel terhadap nilai Chi-Square, dapat disimpulkan bahwa kategori yang paling berperan dalam membentuk hubungan antara gender dan identifikasi partai politik adalah Democrat dan Republican, baik pada laki-laki maupun perempuan. Kontribusi terbesar berasal dari kategori Male–Democrat (31.30) dan Female–Democrat (25.21), diikuti oleh kategori Republican.

Sementara itu, kategori Independent memberikan kontribusi yang sangat kecil, sehingga dapat diambil kesimpulan hampir tidak memengaruhi hubungan yang terjadi.

Secara keseluruhan, hubungan antara gender dan identifikasi partai politik dipengaruhi oleh perbedaan preferensi antara partai Demokrat dan Republik.

Tugas Regresi Logistik Biner, Multinomial, Ordinal, dan Poisson

1. Regresi Logistik Biner

Regresi Logistik Biner adalah model regresi yang digunakan ketika variabel dependen (terikat) bersifat dikotomi (hanya memiliki dua kategori).

Pada kasus ini akan digunakan data Pima Indians Diabetes yang berasal dari National Institute of Diabetes and Digestive and Kidney Diseases. Tujuan dari dataset ini adalah untuk memprediksi apakah seorang pasien menderita diabetes atau tidak, berdasarkan pengukuran diagnostik tertentu. Variabel prediktor dalam dataset ini yaitu jumlah kehamilan yang pernah dialami pasien (npreg), BMI, kadar insulin/glukosa (glu), usia (age), ketebalan kulit (skin), tekanan darah (bp), dan riwayat keluarga (ped).

Dataset Pima Indians Diabetes terdiri dari 332 observasi yaitu perempuan berusia minimal 21 tahun dari suku Indian Pima. Dataset ini juga tersedia dalam R di dalam package MASS.

library(MASS)

data(Pima.te, package = "MASS")

str(Pima.te)
## 'data.frame':    332 obs. of  8 variables:
##  $ npreg: int  6 1 1 3 2 5 0 1 3 9 ...
##  $ glu  : int  148 85 89 78 197 166 118 103 126 119 ...
##  $ bp   : int  72 66 66 50 70 72 84 30 88 80 ...
##  $ skin : int  35 29 23 32 45 19 47 38 41 35 ...
##  $ bmi  : num  33.6 26.6 28.1 31 30.5 25.8 45.8 43.3 39.3 29 ...
##  $ ped  : num  0.627 0.351 0.167 0.248 0.158 0.587 0.551 0.183 0.704 0.263 ...
##  $ age  : int  50 31 21 26 53 51 31 33 27 29 ...
##  $ type : Factor w/ 2 levels "No","Yes": 2 1 1 2 2 2 2 1 1 2 ...
# Distribusi variabel respons (Diabetes)
print(table(Pima.te$type))
## 
##  No Yes 
## 223 109
# Proporsi
print(prop.table(table(Pima.te$type)))
## 
##        No       Yes 
## 0.6716867 0.3283133
# Konversi ke 0 dan 1 untuk memudahkan
Pima.te$diabetes <- ifelse(Pima.te$type == "Yes", 1, 0)
 
# Fit model logistik biner
fit_biner <- glm(diabetes ~ npreg + glu + bp + bmi + ped + age,
                 data   = Pima.te,
                 family = binomial(link = "logit"))

print(summary(fit_biner))
## 
## Call:
## glm(formula = diabetes ~ npreg + glu + bp + bmi + ped + age, 
##     family = binomial(link = "logit"), data = Pima.te)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -9.498006   1.230343  -7.720 1.17e-14 ***
## npreg        0.144472   0.059521   2.427   0.0152 *  
## glu          0.037504   0.005542   6.767 1.31e-11 ***
## bp          -0.008929   0.012561  -0.711   0.4772    
## bmi          0.090059   0.023071   3.904 9.48e-05 ***
## ped          1.114373   0.445481   2.502   0.0124 *  
## age          0.018333   0.018319   1.001   0.3169    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 420.30  on 331  degrees of freedom
## Residual deviance: 286.22  on 325  degrees of freedom
## AIC: 300.22
## 
## Number of Fisher Scoring iterations: 5
# Odds Ratio dan Confidence Interval
OR  <- exp(coef(fit_biner))
CI  <- exp(confint(fit_biner))
## Waiting for profiling to be done...
tbl_OR <- cbind("OR" = OR, CI)
print(round(tbl_OR, 4))
##                 OR  2.5 % 97.5 %
## (Intercept) 0.0001 0.0000 0.0007
## npreg       1.1554 1.0302 1.3021
## glu         1.0382 1.0274 1.0501
## bp          0.9911 0.9670 1.0161
## bmi         1.0942 1.0469 1.1466
## ped         3.0477 1.2877 7.4043
## age         1.0185 0.9825 1.0564

Berikut merupakan interpretasi odds ratio dari regresi logistik yang dihasilkan pada data Pima Indians Diabetes.

Log odds intercept bernilai 0.0001 ketika semua variabel prediktor bernilai 0.

Variabel prediktor Jumlah Kehamilan memiliki nilai odds ratio sebesar 1.1554 yang artinya setiap tambahan 1 kehamilan, odds diabetes naik sebesar 15.54 % dengan prediktor lain konstan.

Variabel prediktor Kadar Glukosa pada Plasma memiliki nilai odds ratio sebesar 1.0382 yang artinya setiap kenaikan 1 unit glukosa, odds diabetes naik 3.82 % dengan prediktor lain konstan.

Variabel prediktor Tekanan Darah memiliki nilai odds ratio sebesar 0.9911 yang artinya setiap kenaikan 1 satuan tekanan darah, odds diabetes turun 0.9911 kali dibandingkan sebelumnya dengan prediktor lain konstan.

Variabel prediktor BMI (Body Mass Index/Indeks Massa Tubuh) memiliki nilai odds ratio sebesar 1.0942 yang artinya setiap kenaikan 1 unit BMI, odds diabetes naik 9.42% dengan prediktor lain konstan.

Variabel prediktor Riwayat Keluarga memiliki nilai odds ratio sebesar 3.0477 yang artinya variabel Riwayat Keluarga lebih kuat meningkatkan odds diabetes.

Variabel prediktor Usia memiliki nilai odds ratio sebesar 1.0185 yang artinya setiap kenaikan 1 tahun usia, odds diabetes naik 1.85% dengan prediktor lain konstan.

# Akurasi Model
pred_prob <- predict(fit_biner, type = "response")
pred_kelas <- ifelse(pred_prob > 0.5, 1, 0)
akurasi <- mean(pred_kelas == Pima.te$diabetes)
cat(sprintf("Akurasi model (cut-off 0.5): %.1f%%\n", akurasi * 100))
## Akurasi model (cut-off 0.5): 79.8%

Akurasi model yang diperoleh untuk kasus regresi logistik biner ini adalah 79.8%

2. Regresi Logistik Multinomial

Regresi Logistik Multinomial adalah model regresi yang digunakan ketika variabel dependen memiliki lebih dari dua kategori namun pada kategori tersebut tidak memiliki urutan/tingkatan (setara).

Pada kasus ini digunakan data Iris yang tersedia pada package datasets di R. Dataset ini pertama kali dikumpulkan oleh Edgar Anderson pada tahun 1935 di Semenanjung Gaspé, Kanada, dan kemudian dipopulerkan oleh Ronald A. Fisher melalui makalah The Use of Multiple Measurements in Taxonomic Problems (1936). Tujuan analisis pada dataset ini adalah untuk mengklasifikasikan spesies bunga iris berdasarkan karakteristik morfologinya.

Variabel respons yang digunakan adalah Species, yang terdiri dari tiga kategori yaitu setosa, versicolor, dan virginica. Variabel prediktor dalam dataset ini meliputi panjang kelopak bunga (Sepal Length), lebar kelopak bunga (Sepal Width), panjang mahkota bunga (Petal Length), dan lebar mahkota bunga (Petal Width). Dataset ini terdiri dari 150 observasi dengan masing-masing 50 observasi untuk setiap spesies bunga iris.

data(iris)

print(table(iris$Species))
## 
##     setosa versicolor  virginica 
##         50         50         50
# Ubah level referensi ke setosa (default pertama secara alfabet)
iris$Species <- relevel(iris$Species, ref = "setosa")

# Fit model multinomial
fit_multi <- nnet::multinom(
  Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
  data  = iris,
  trace = FALSE
)

print(summary(fit_multi))
## Call:
## nnet::multinom(formula = Species ~ Sepal.Length + Sepal.Width + 
##     Petal.Length + Petal.Width, data = iris, trace = FALSE)
## 
## Coefficients:
##            (Intercept) Sepal.Length Sepal.Width Petal.Length Petal.Width
## versicolor    18.69037    -5.458424   -8.707401     14.24477   -3.097684
## virginica    -23.83628    -7.923634  -15.370769     23.65978   15.135301
## 
## Std. Errors:
##            (Intercept) Sepal.Length Sepal.Width Petal.Length Petal.Width
## versicolor    34.97116     89.89215    157.0415     60.19170    45.48852
## virginica     35.76649     89.91153    157.1196     60.46753    45.93406
## 
## Residual Deviance: 11.89973 
## AIC: 31.89973
# Hitung z-score dan p-value 
z_multi <- summary(fit_multi)$coefficients /
  summary(fit_multi)$standard.errors
p_multi  <- 2 * (1 - pnorm(abs(z_multi)))

print(round(z_multi, 4))
##            (Intercept) Sepal.Length Sepal.Width Petal.Length Petal.Width
## versicolor      0.5345      -0.0607     -0.0554       0.2367     -0.0681
## virginica      -0.6664      -0.0881     -0.0978       0.3913      0.3295
print(round(p_multi, 4))
##            (Intercept) Sepal.Length Sepal.Width Petal.Length Petal.Width
## versicolor      0.5930       0.9516      0.9558       0.8129      0.9457
## virginica       0.5051       0.9298      0.9221       0.6956      0.7418
# Relative Risk Ratio 
RRR <- exp(coef(fit_multi))
print(round(RRR, 4))
##            (Intercept) Sepal.Length Sepal.Width Petal.Length  Petal.Width
## versicolor   130956303       0.0043       2e-04      1536120       0.0452
## virginica            0       0.0004       0e+00  18850009278 3742635.3040
# Prediksi & Akurasi Model
pred_multi <- predict(fit_multi)
akurasi_multi <- mean(pred_multi == iris$Species)
cat(sprintf("Akurasi model: %.1f%%\n", akurasi_multi * 100))
## Akurasi model: 98.7%

Berdasarkan hasil regresi logistik multinomial dengan kategori referensi setosa, diperoleh nilai Relative Risk Ratio (RRR) untuk variabel Petal Length sebesar 1536120 pada kategori versicolor dan 18850009278 pada kategori virginica. Hal ini menunjukkan bahwa setiap kenaikan 1 cm panjang mahkota bunga (Petal Length) akan meningkatkan risiko relatif bunga termasuk ke dalam spesies versicolor dibandingkan setosa sebesar 1536120 kali, dengan asumsi variabel lain tetap. Selain itu, setiap kenaikan 1 cm panjang mahkota bunga juga meningkatkan risiko relatif bunga termasuk ke dalam spesies virginica dibandingkan setosa sebesar 18850009278 kali.

Nilai RRR yang sangat besar menunjukkan bahwa panjang mahkota bunga merupakan salah satu variabel yang sangat kuat dalam membedakan spesies bunga iris, khususnya antara spesies setosa, versicolor, dan virginica.

Berdasarkan hasil prediksi, model menghasilkan tingkat akurasi sebesar 98,7%, yang menunjukkan bahwa model mampu mengklasifikasikan spesies bunga iris dengan sangat baik.

3. Regresi Logistik Ordinal

Regresi Logistik Ordinal adalah model regresi yang digunakan ketika variabel dependen memiliki lebih dari dua kategori dan kategorinya memiliki urutan/tingkatan.

Pada kasus ini digunakan data housing yang tersedia pada package MASS di R. Dataset ini berasal dari Copenhagen Housing Conditions Survey, yaitu survei mengenai kondisi perumahan di Kopenhagen, Denmark, yang dipublikasikan oleh B. Madsen pada tahun 1976. Tujuan analisis pada dataset ini adalah untuk mempelajari faktor-faktor yang memengaruhi tingkat kepuasan penghuni terhadap kondisi hunian mereka.

Variabel respons yang digunakan adalah Sat (Satisfaction) yang memiliki tiga kategori berurutan, yaitu Low, Medium, dan High. Variabel prediktor yang digunakan meliputi pengaruh lingkungan (Influence), jenis tempat tinggal (Type), dan tingkat kontak penghuni dengan sesama tetangga (Contact). Dataset asli berbentuk data frekuensi sebanyak 72 baris dan dapat dikembangkan (expanded) menjadi 1.681 observasi individu untuk analisis regresi logistik ordinal menggunakan model Proportional Odds.

data(housing, package = "MASS")

str(housing)
## 'data.frame':    72 obs. of  5 variables:
##  $ Sat : Ord.factor w/ 3 levels "Low"<"Medium"<..: 1 2 3 1 2 3 1 2 3 1 ...
##  $ Infl: Factor w/ 3 levels "Low","Medium",..: 1 1 1 2 2 2 3 3 3 1 ...
##  $ Type: Factor w/ 4 levels "Tower","Apartment",..: 1 1 1 1 1 1 1 1 1 2 ...
##  $ Cont: Factor w/ 2 levels "Low","High": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Freq: int  21 21 28 34 22 36 10 11 36 61 ...
housing_expand <- housing[rep(seq_len(nrow(housing)), housing$Freq), -5]

print(table(housing_expand$Sat))
## 
##    Low Medium   High 
##    567    446    668
# Proporsi
print(round(prop.table(table(housing_expand$Sat)), 3))
## 
##    Low Medium   High 
##  0.337  0.265  0.397
# Variabel Sat sebagai ordered factor
housing_expand$Sat <- factor(housing_expand$Sat,
                             levels = c("Low", "Medium", "High"),
                             ordered = TRUE)

# Fit model ordinal (proportional odds)
fit_ord <- MASS::polr(Sat ~ Infl + Type + Cont,
                      data   = housing_expand,
                      method = "logistic",
                      Hess   = TRUE)

print(summary(fit_ord))
## Call:
## MASS::polr(formula = Sat ~ Infl + Type + Cont, data = housing_expand, 
##     Hess = TRUE, method = "logistic")
## 
## Coefficients:
##                 Value Std. Error t value
## InflMedium     0.5664    0.10465   5.412
## InflHigh       1.2888    0.12716  10.136
## TypeApartment -0.5724    0.11924  -4.800
## TypeAtrium    -0.3662    0.15517  -2.360
## TypeTerrace   -1.0910    0.15149  -7.202
## ContHigh       0.3603    0.09554   3.771
## 
## Intercepts:
##             Value   Std. Error t value
## Low|Medium  -0.4961  0.1248    -3.9739
## Medium|High  0.6907  0.1255     5.5049
## 
## Residual Deviance: 3479.149 
## AIC: 3495.149
# Hitung p-value 
koef_ord <- coef(summary(fit_ord))
p_ord    <- pnorm(abs(koef_ord[, "t value"]), lower.tail = FALSE) * 2
koef_ord <- cbind(koef_ord, "p value" = p_ord)

print(round(koef_ord, 4))
##                 Value Std. Error t value p value
## InflMedium     0.5664     0.1047  5.4121  0.0000
## InflHigh       1.2888     0.1272 10.1357  0.0000
## TypeApartment -0.5724     0.1192 -4.8001  0.0000
## TypeAtrium    -0.3662     0.1552 -2.3599  0.0183
## TypeTerrace   -1.0910     0.1515 -7.2021  0.0000
## ContHigh       0.3603     0.0955  3.7712  0.0002
## Low|Medium    -0.4961     0.1248 -3.9739  0.0001
## Medium|High    0.6907     0.1255  5.5049  0.0000
# Odds Ratio untuk Regresi Ordinal
OR_ord <- exp(coef(fit_ord))
CI_ord <- exp(confint(fit_ord))
## Waiting for profiling to be done...
tbl_OR_ord <- cbind("OR" = OR_ord, CI_ord)
print(round(tbl_OR_ord, 4))
##                   OR  2.5 % 97.5 %
## InflMedium    1.7619 1.4357 2.1640
## InflHigh      3.6285 2.8320 4.6626
## TypeApartment 0.5642 0.4462 0.7122
## TypeAtrium    0.6934 0.5114 0.9398
## TypeTerrace   0.3359 0.2492 0.4514
## ContHigh      1.4337 1.1893 1.7297
# Predicted probabilities
pred_prob_ord <- predict(fit_ord, type = "probs")
# Contoh 5 observasi pertama (probabilitas prediksi per kategori)
print(round(head(pred_prob_ord, 5), 4))
##        Low Medium   High
## 1   0.3784 0.2877 0.3339
## 1.1 0.3784 0.2877 0.3339
## 1.2 0.3784 0.2877 0.3339
## 1.3 0.3784 0.2877 0.3339
## 1.4 0.3784 0.2877 0.3339
pred_ord_kelas <- as.character(predict(fit_ord))
sat_chr <- as.character(housing_expand$Sat)

# Akurasi Model
akurasi_ord <- mean(pred_ord_kelas == sat_chr)
cat(sprintf("\nAkurasi model: %.1f%%\n", akurasi_ord * 100))
## 
## Akurasi model: 48.8%

Berdasarkan hasil regresi logistik ordinal dengan model Proportional Odds, diketahui bahwa seluruh variabel prediktor berpengaruh signifikan terhadap tingkat kepuasan penghuni karena memiliki nilai p-value kurang dari 0,05.

Variabel Infl (Influence) memiliki pengaruh positif terhadap tingkat kepuasan. Dibandingkan dengan penghuni yang memiliki tingkat pengaruh rendah terhadap manajemen, penghuni dengan tingkat pengaruh sedang memiliki peluang 1,7619 kali lebih besar untuk berada pada kategori kepuasan yang lebih tinggi (Medium atau High dibanding Low, serta High dibanding Medium). Sementara itu, penghuni dengan tingkat pengaruh tinggi memiliki peluang 3,6285 kali lebih besar untuk berada pada kategori kepuasan yang lebih tinggi.

Variabel Type (Tipe Hunian) menunjukkan bahwa dibandingkan dengan penghuni yang tinggal di rumah tipe Tower (kategori referensi), penghuni yang tinggal di tipe Apartment memiliki peluang 0,5642 kali untuk berada pada kategori kepuasan yang lebih tinggi. Penghuni yang tinggal di tipe Atrium memiliki peluang 0,6934 kali, sedangkan penghuni yang tinggal di tipe Terrace memiliki peluang 0,3359 kali untuk berada pada kategori kepuasan yang lebih tinggi. Hal ini menunjukkan bahwa penghuni rumah tipe Tower cenderung memiliki tingkat kepuasan yang lebih tinggi dibandingkan tipe hunian lainnya.

Variabel Cont (Contact) juga memberikan pengaruh positif terhadap kepuasan penghuni. Penghuni yang memiliki tingkat kontak tinggi dengan tetangga memiliki peluang 1,4337 kali lebih besar untuk berada pada kategori kepuasan yang lebih tinggi dibandingkan penghuni yang memiliki tingkat kontak rendah, dengan asumsi variabel lain konstan.

Berdasarkan probabilitas prediksi yang dihasilkan model, untuk observasi pertama diperoleh probabilitas sebesar 37,84% berada pada kategori kepuasan rendah (Low), 28,77% pada kategori kepuasan sedang (Medium), dan 33,39% pada kategori kepuasan tinggi (High). Karena probabilitas terbesar berada pada kategori Low, maka observasi tersebut diprediksi masuk ke dalam kategori kepuasan rendah.

Model menghasilkan tingkat akurasi klasifikasi sebesar 48,8%. Nilai ini menunjukkan bahwa model mampu mengklasifikasikan tingkat kepuasan penghuni dengan ketepatan sekitar 48,8% berdasarkan variabel pengaruh terhadap manajemen, tipe hunian, dan kontak dengan tetangga.

4. Regresi Logistik Poisson

Regresi Logistik Poisson adalah model regresi yang digunakan ketika variabel dependen berupa data cacah (count) atau jumlah kejadian yang terjadi dalam interval waktu tertentu.

Pada kasus ini digunakan data ships yang tersedia pada package MASS di R. Dataset ini berasal dari data asuransi pelayaran yang dikumpulkan oleh Lloyd’s Register of Shipping dan dipublikasikan dalam buku Peter McCullagh dan John Nelder yang berjudul Generalized Linear Models (1989). Tujuan analisis pada dataset ini adalah untuk memodelkan jumlah insiden kerusakan yang terjadi pada kapal kargo berdasarkan karakteristik kapal dan periode operasinya. Variabel respons yang digunakan adalah incidents, yaitu jumlah kejadian kerusakan kapal yang tercatat selama masa pengamatan.

Variabel prediktor dalam dataset ini meliputi jenis kapal (type), tahun pembangunan kapal (year), dan periode operasi kapal (period). Selain itu, digunakan variabel service sebagai offset melalui transformasi logaritma untuk memperhitungkan lama waktu operasi kapal, sehingga model yang dihasilkan menggambarkan laju (rate) insiden kerusakan per satuan waktu operasi. Dataset ini terdiri dari 40 observasi, atau 34 observasi setelah menghapus data dengan nilai service sama dengan nol.

data(ships, package = "MASS")

# Hapus baris dengan service = 0 (tidak ada waktu operasi)
ships_clean <- subset(ships, service > 0)

str(ships_clean)
## 'data.frame':    34 obs. of  5 variables:
##  $ type     : Factor w/ 5 levels "A","B","C","D",..: 1 1 1 1 1 1 1 2 2 2 ...
##  $ year     : int  60 60 65 65 70 70 75 60 60 65 ...
##  $ period   : int  60 75 60 75 60 75 75 60 75 60 ...
##  $ service  : int  127 63 1095 1095 1512 3353 2244 44882 17176 28609 ...
##  $ incidents: int  0 0 3 4 6 18 11 39 29 58 ...
print(summary(ships_clean$incidents))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    1.00    4.00   10.47   11.75   58.00
# Distribusi Insiden
print(table(ships_clean$incidents))
## 
##  0  1  2  3  4  5  6  7 11 12 18 29 39 44 53 58 
##  8  5  2  1  2  1  2  2  2  2  2  1  1  1  1  1
# Fit model Poisson dengan offset
fit_pois <- glm(incidents ~ type + year + period + offset(log(service)),
                data   = ships_clean,
                family = poisson(link = "log"))

print(summary(fit_pois))
## 
## Call:
## glm(formula = incidents ~ type + year + period + offset(log(service)), 
##     family = poisson(link = "log"), data = ships_clean)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -10.079076   0.876149 -11.504  < 2e-16 ***
## typeB        -0.546090   0.178415  -3.061 0.002208 ** 
## typeC        -0.632631   0.329500  -1.920 0.054862 .  
## typeD        -0.232257   0.287979  -0.807 0.419951    
## typeE         0.405975   0.234933   1.728 0.083981 .  
## year          0.042247   0.012826   3.294 0.000988 ***
## period        0.023705   0.008091   2.930 0.003392 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 146.328  on 33  degrees of freedom
## Residual deviance:  59.375  on 27  degrees of freedom
## AIC: 171.24
## 
## Number of Fisher Scoring iterations: 5
# Incidence Rate Ratio (IRR = exp(koef))
IRR    <- exp(coef(fit_pois))
CI_IRR <- exp(confint(fit_pois))
## Waiting for profiling to be done...
tbl_IRR <- cbind("IRR" = IRR, CI_IRR)
print(round(tbl_IRR, 4))
##                IRR  2.5 % 97.5 %
## (Intercept) 0.0000 0.0000 0.0002
## typeB       0.5792 0.4123 0.8312
## typeC       0.5312 0.2665 0.9813
## typeD       0.7927 0.4390 1.3683
## typeE       1.5008 0.9405 2.3719
## year        1.0432 1.0172 1.0697
## period      1.0240 1.0079 1.0404
# UJI GOODNESS-OF-FIT
cat(sprintf("Deviance: %.4f  (df = %d)\n",
            fit_pois$deviance, fit_pois$df.residual))
## Deviance: 59.3746  (df = 27)
cat(sprintf("Null Deviance: %.4f  (df = %d)\n",
            fit_pois$null.deviance, fit_pois$df.null))
## Null Deviance: 146.3283  (df = 33)
cat(sprintf("AIC: %.4f\n", AIC(fit_pois)))
## AIC: 171.2410

Berdasarkan hasil regresi Poisson dengan variabel respons berupa jumlah insiden kerusakan kapal dan offset berupa lama operasi kapal (dalam bulan), diperoleh bahwa beberapa variabel berpengaruh signifikan terhadap laju kejadian kerusakan kapal.

Variabel tipe kapal (type) menunjukkan bahwa dibandingkan dengan kapal tipe A sebagai kategori referensi, kapal tipe B memiliki laju insiden kerusakan sebesar 0,5792 kali lebih rendah (IRR = 0,5792), sedangkan kapal tipe C memiliki laju insiden sebesar 0,5312 kali lebih rendah (IRR = 0,5312). Kapal tipe D memiliki laju insiden sebesar 0,7927 kali dibandingkan kapal tipe A, meskipun pengaruhnya tidak signifikan secara statistik. Sementara itu, kapal tipe E memiliki laju insiden sebesar 1,5008 kali lebih tinggi dibandingkan kapal tipe A.

Variabel tahun konstruksi kapal (year) memiliki nilai IRR sebesar 1,0432. Hal ini menunjukkan bahwa setiap peningkatan satu satuan pada variabel tahun konstruksi dikaitkan dengan peningkatan laju insiden kerusakan kapal sebesar 4,32%, dengan asumsi variabel lain tetap. Pengaruh variabel ini signifikan pada taraf signifikansi 5%.

Variabel periode operasi (period) memiliki nilai IRR sebesar 1,024. Artinya, setiap peningkatan satu satuan periode operasi dikaitkan dengan peningkatan laju insiden kerusakan kapal sebesar 2,40%, dengan asumsi variabel lain tetap. Variabel ini juga berpengaruh signifikan terhadap jumlah insiden kerusakan kapal.

Berdasarkan uji kecocokan model, nilai deviance residual sebesar 59,3746 lebih kecil dibandingkan null deviance sebesar 146,3283. Hal ini menunjukkan bahwa model yang melibatkan variabel tipe kapal, tahun konstruksi, dan periode operasi mampu menjelaskan variasi jumlah insiden kerusakan kapal dengan lebih baik dibandingkan model tanpa prediktor.

Selain itu, diperoleh nilai AIC sebesar 171,24 yang dapat digunakan sebagai ukuran kecocokan model dan sebagai dasar perbandingan dengan model alternatif lainnya. Rasio deviance terhadap derajat bebas sebesar 2,1991 menunjukkan adanya indikasi overdispersi ringan karena nilainya lebih besar dari 1. Oleh karena itu, pada analisis lanjutan dapat dipertimbangkan penggunaan model Negative Binomial untuk memperoleh estimasi yang lebih robust apabila overdispersi dianggap cukup berarti

Referensi

Agresti, A. (2013). Categorical Data Analysis. Wiley.