Analisis Data Kategorik

BAGIAN A : Pendugaan Parameter & Uji Satu Proporsi

Data Simulasi : Status Kelulusan Peserta Pelatihan Statistik

# Membuat data peserta
data_peserta <- data.frame(
  No = 1:40,
  Peserta = paste("Peserta", 1:40),
  Status_Kelulusan = c(
    "Lulus", "Lulus", "Lulus", "Lulus", "Tidak Lulus",
    "Lulus", "Tidak Lulus", "Lulus", "Lulus", "Lulus",
    "Lulus", "Lulus", "Lulus", "Lulus", "Lulus",
    "Lulus", "Lulus", "Lulus", "Tidak Lulus", "Lulus",
    "Tidak Lulus", "Lulus", "Lulus", "Lulus", "Tidak Lulus",
    "Lulus", "Lulus", "Lulus", "Tidak Lulus", "Lulus",
    "Tidak Lulus", "Tidak Lulus", "Lulus", "Tidak Lulus", "Lulus",
    "Lulus", "Tidak Lulus", "Lulus", "Tidak Lulus", "Lulus"
  )
)

# Tabel data peserta
knitr::kable(data_peserta)
No Peserta Status_Kelulusan
1 Peserta 1 Lulus
2 Peserta 2 Lulus
3 Peserta 3 Lulus
4 Peserta 4 Lulus
5 Peserta 5 Tidak Lulus
6 Peserta 6 Lulus
7 Peserta 7 Tidak Lulus
8 Peserta 8 Lulus
9 Peserta 9 Lulus
10 Peserta 10 Lulus
11 Peserta 11 Lulus
12 Peserta 12 Lulus
13 Peserta 13 Lulus
14 Peserta 14 Lulus
15 Peserta 15 Lulus
16 Peserta 16 Lulus
17 Peserta 17 Lulus
18 Peserta 18 Lulus
19 Peserta 19 Tidak Lulus
20 Peserta 20 Lulus
21 Peserta 21 Tidak Lulus
22 Peserta 22 Lulus
23 Peserta 23 Lulus
24 Peserta 24 Lulus
25 Peserta 25 Tidak Lulus
26 Peserta 26 Lulus
27 Peserta 27 Lulus
28 Peserta 28 Lulus
29 Peserta 29 Tidak Lulus
30 Peserta 30 Lulus
31 Peserta 31 Tidak Lulus
32 Peserta 32 Tidak Lulus
33 Peserta 33 Lulus
34 Peserta 34 Tidak Lulus
35 Peserta 35 Lulus
36 Peserta 36 Lulus
37 Peserta 37 Tidak Lulus
38 Peserta 38 Lulus
39 Peserta 39 Tidak Lulus
40 Peserta 40 Lulus
# Tabel jumlah berdasarkan status
status <- data_peserta$Status_Kelulusan
tabel_status <- table(status)
knitr::kable(tabel_status)
status Freq
Lulus 29
Tidak Lulus 11
# Menghitung jumlah peserta
n <- length(status)

# Menghitung jumlah peserta yang lulus
x <- sum(status == "Lulus")

# Tabel hasil
hasil <- data.frame(
  Keterangan = c("Jumlah peserta", "Jumlah yang lulus"),
  Hasil = c(n, x)
)

knitr::kable(hasil)
Keterangan Hasil
Jumlah peserta 40
Jumlah yang lulus 29

1. Hitung proporsi sampel (p̂) peserta yang “Lulus” beserta selang kepercayaan 95%-nya

Perhitungan Manual

# Proporsi sampel
p_hat <- x / n

# Standard error
se <- sqrt(p_hat * (1 - p_hat) / n)

# Menentukan nilai Z
alpha <- 1 - 0.95
alpha_2 <- alpha / 2
z <- qnorm(1 - alpha_2)

# Selang kepercayaan 95%
batas_bawah <- p_hat - z * se
batas_atas <- p_hat + z * se

# Hasil
hasil_ci <- data.frame(
  Keterangan = c("Proporsi sampel (p_hat)", "SE(p_hat)", "Z(a/2)",
                 "Batas bawah", "Batas atas"),
  Hasil = c(p_hat, se, z, batas_bawah, batas_atas)
)
knitr::kable(hasil_ci, digits = 4)
Keterangan Hasil
Proporsi sampel (p_hat) 0.7250
SE(p_hat) 0.0706
Z(a/2) 1.9600
Batas bawah 0.5866
Batas atas 0.8634

Interpretasi : Berdasarkan hasil perhitungan, diperoleh proporsi sampel (p̂) peserta yang lulus sebesar 0,725. Selang kepercayaan 95% untuk proporsi tersebut berada pada rentang 0,5866 hingga 0,8634. Artinya, dengan tingkat kepercayaan 95%, proporsi kelulusan peserta yang sebenarnya di populasi diperkirakan berada di antara 0,5866 sampai dengan 0,8634.

Verifikasi dengan fungsi R (prop.test)

# Pendugaan parameter
prop.test(x = 29, n = 40, conf.level = 0.95, correct = FALSE)
## 
##  1-sample proportions test without continuity correction
## 
## data:  29 out of 40, null probability 0.5
## X-squared = 8.1, df = 1, p-value = 0.004427
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.5716504 0.8389198
## sample estimates:
##     p 
## 0.725

Interpretasi: Hasil verifikasi menggunakan prop.test() diperoleh proporsi sampel (p) sebesar 0,725, dengan selang kepercayaan 95% antara 0,5717 sampai 0,8389. Hasil ini tidak jauh berbeda dengan perhitungan manual (0,5866 – 0,8634), sehingga dapat dikatakan perhitungan manual sesuai dan konsisten dengan hasil verifikasi R.

2. Perusahaan menargetkan tingkat kelulusan pelatihan minimal 80% (p0 = 0,80). Periksa apakah syarat kecukupan sampel untuk pendekatan normal terpenuhi.

Perhitungan Manual

# Data
p0 <- 0.80

# Syarat kecukupan sampel
np0 <- n * p0
n_1_p0 <- n * (1 - p0)

# Hasil pengecekan
hasil_syarat <- data.frame(
  Syarat = c("n x p0", "n x (1-p0)"),
  Nilai  = c(np0, n_1_p0),
  Keterangan = c(
    ifelse(np0 >= 5, "Terpenuhi (>= 5)", "Tidak terpenuhi"),
    ifelse(n_1_p0 >= 5, "Terpenuhi (>= 5)", "Tidak terpenuhi")
  )
)
knitr::kable(hasil_syarat)
Syarat Nilai Keterangan
n x p0 32 Terpenuhi (>= 5)
n x (1-p0) 8 Terpenuhi (>= 5)

Kedua syarat terpenuhi, maka pendekatan normal valid, gunakan uji Z proporsi (bukan uji eksak Binomial).

3. Lakukan pengujian hipotesis yang sesuai (Uji Z Proporsi atau Uji Eksak Binomial : pilih berdasarkan hasil langkah 2) untuk menguji apakah tingkat kelulusan aktual berada di bawah target 80%, pada α = 0,05.

Hipotesis:

  • H0 : p ≥ 0,80 (proporsi kelulusan mencapai atau melebihi target 80%)

  • H1 : p < 0,80 (proporsi kelulusan tidak mencapai target 80%)

Perhitungan Manual

# Statistik uji Z
z_hitung <- (p_hat - p0) / sqrt(p0 * (1 - p0) / n)

# Nilai kritis (uji satu arah kiri)
z_kritis <- qnorm(alpha)

# p-value
p_value <- pnorm(z_hitung)

# Keputusan
keputusan <- ifelse(p_value > alpha, "Gagal tolak H0", "Tolak H0")

# Hasil
hasil_uji <- data.frame(
  Keterangan = c("Z hitung", "Z kritis", "p-value", "Keputusan"),
  Hasil = c(round(z_hitung, 4), round(z_kritis, 4),
            round(p_value, 4), keputusan)
)
knitr::kable(hasil_uji)
Keterangan Hasil
Z hitung -1.1859
Z kritis -1.6449
p-value 0.1178
Keputusan Gagal tolak H0

Kriteria keputusan: p-value = 0,1178 > α = 0,05, maka gagal tolak H0.

Verifikasi dengan R (prop.test)

# Uji Z Proporsi (H1: p < 0,80)
prop.test(x = 29, n = 40, p = 0.80, alternative = "less", conf.level = 0.95, correct = FALSE)
## 
##  1-sample proportions test without continuity correction
## 
## data:  29 out of 40, null probability 0.8
## X-squared = 1.4063, df = 1, p-value = 0.1178
## alternative hypothesis: true p is less than 0.8
## 95 percent confidence interval:
##  0.000000 0.824034
## sample estimates:
##     p 
## 0.725

Interpretasi: Hasil verifikasi prop.test() diperoleh p-value sebesar 0,1178, yaitu nilai yang sama dengan hasil perhitungan manual sebelumnya. Keputusan yang diambil tetap gagal tolak H0, karena p-value (0,1178) lebih besar dari α (0,05).

4. Tuliskan kesimpulan dalam kalimat yang mudah dipahami, sesuai konteks permasalahan.

Berdasarkan hasil pengujian, proporsi peserta yang lulus dalam sampel adalah 72,5%, sedangkan target kelulusan sebesar 80%. Hasil pengujian manual diperoleh Z hitung = -1,1859 dengan p-value = 0,1178, dan hasil ini konsisten dengan verifikasi menggunakan prop.test() di R (p-value = 0,1178), walaupun hasilnya beda dikit. Karena p-value (0,1178) lebih besar dari α = 0,05, maka H0 gagal ditolak. Jadi, perbedaan antara proporsi sampel 72,5% dan target 80% belum terbukti signifikan. Maka belum ada cukup bukti untuk menyatakan bahwa proporsi kelulusan peserta tidak mencapai target 80%.

BAGIAN B : Uji Kebaikan Suai Chi-Square

Data Simulasi : Jenis Pertanyaan Layanan Akademik

# Membuat data kategori
data_gof <- data.frame(
  Kategori = c("Akademik", "Administrasi", "Teknis Sistem", "Lainnya"),
  Proporsi_Historis = c("40%", "30%", "20%", "10%"),
  Observasi = c(70, 40, 25, 15)
)

knitr::kable(data_gof)
Kategori Proporsi_Historis Observasi
Akademik 40% 70
Administrasi 30% 40
Teknis Sistem 20% 25
Lainnya 10% 15

1. Susun hipotesis nol dan alternatif

HIPOTESIS

  • H0 : proporsi jenis pertanyaan sesuai proporsi historis (Akademik 40%, Administrasi 30%, Teknis Sistem 20%, Lainnya 10%)

  • H1 : minimal ada satu proporsi yang berbeda dari proporsi historis

2. Hitung nilai harapan (expected frequency) untuk setiap kategori

Perhitungan Manual

# Total observasi
n <- sum(data_gof$Observasi)

# Nilai harapan Ei = n x pi0
data_gof$Expected <- n * as.numeric(sub("%", "", data_gof$Proporsi_Historis)) / 100

knitr::kable(data_gof)
Kategori Proporsi_Historis Observasi Expected
Akademik 40% 70 60
Administrasi 30% 40 45
Teknis Sistem 20% 25 30
Lainnya 10% 15 15

Semua Ei (60, 45, 30, 15) ≥ 5, maka syarat kecukupan sampel terpenuhi, aproksimasi chi-square valid.

3. Hitung statistik uji Chi-Square dan derajat bebasnya, bandingkan dengan nilai kritis pada α = 0,05

Perhitungan Manual

# Kontribusi tiap kategori
data_gof$Kontribusi <- (data_gof$Observasi - data_gof$Expected)^2 / data_gof$Expected

knitr::kable(data_gof)
Kategori Proporsi_Historis Observasi Expected Kontribusi
Akademik 40% 70 60 1.6666667
Administrasi 30% 40 45 0.5555556
Teknis Sistem 20% 25 30 0.8333333
Lainnya 10% 15 15 0.0000000
# Statistik uji Chi-Square
chi_hitung <- sum(data_gof$Kontribusi)

# Derajat bebas
df <- nrow(data_gof) - 1

# Nilai kritis
chi_kritis <- qchisq(0.95, df)

# p-value
p_value_chi <- 1 - pchisq(chi_hitung, df)

# Keputusan
keputusan_chi <- ifelse(p_value_chi > 0.05, "Gagal tolak H0", "Tolak H0")

# Tabel ringkasan hasil
hasil_chi <- data.frame(
  Keterangan = c("Chi-square hitung", "df", "Chi-square kritis", "p-value", "Keputusan"),
  Hasil = c(round(chi_hitung, 4), df, round(chi_kritis, 4),
            round(p_value_chi, 4), keputusan_chi)
)
knitr::kable(hasil_chi)
Keterangan Hasil
Chi-square hitung 3.0556
df 3
Chi-square kritis 7.8147
p-value 0.3831
Keputusan Gagal tolak H0

Kriteria keputusan: Chi-square hitung (3,0556) < Chi-square kritis (7,8147), atau p-value (0,383) > α (0,05)

Maka: chi-square hitung tidak melewati nilai kritis, dan berada di daerah penerimaan H0. Maka, H0 gagal ditolak.

4. Verifikasi hasil perhitungan manual menggunakan R Studio (fungsi chisq.test()).

chisq.test(x = data_gof$Observasi, p = c(0.40, 0.30, 0.20, 0.10))
## 
##  Chi-squared test for given probabilities
## 
## data:  data_gof$Observasi
## X-squared = 3.0556, df = 3, p-value = 0.3831

Interpretasi: Hasil verifikasi chisq.test() diperoleh chi-square = 3,0556 dan p-value = 0,3831, sama persis dengan perhitungan manual. Keputusannya tetap gagal tolak H0, karena p-value (0,3831) lebih besar dari α (0,05).

5. Simpulkan apakah distribusi jenis pertanyaan layanan akademik saat ini masih konsisten dengan proporsi historis

Berdasarkan hasil uji chi-square baik secara manual maupun verifikasi menggunakan chisq.test() di R, diperoleh chi-square hitung = 3,0556 < chi-square tabel = 7,8147 dan p-value = 0,383 > α = 0,05. Maka H0 gagal ditolak. Artinya, distribusi jenis pertanyaan layanan akademik saat ini tidak berbeda secara signifikan dari proporsi historis. Maka distribusi saat ini masih konsisten dengan proporsi historis, yaitu Akademik 40%, Administrasi 30%, Teknik Sistem 20%, dan Lainnya 10%.