1 STUDI KASUS

Kelas A, Kelas B, dan Kelas C masing-masing terdiri dari 30 siswa. Ketiga kelas telah menyelesaikan ujian, dan nilai ujian untuk setiap siswa sudah diketahui dengan rentang 0–100.

Penelitian ini bertujuan untuk melakukan analisis statistik terhadap nilai ujian mahasiswa, dengan fokus pada dua hal utama:

  • Uji proporsi

  • ANOVA

2 MEMBANGKITKAN DATA

Kami membangkitkan data menggunakan fungsi set.seed untuk mendapatkan bilangan acaknya, lalu fungsi rnorm() untuk nilai ujian nya tidak berubah setiap kita jalankan. lalu menggunakan fungsi round agar nilai nya dibulatkan saja.

set.seed(123) #sebenarnya bebas mau menggunakan angka apa aja tetapi kami menggunakan angka 123, angka yang digunakan harus konsisten agar mudah untuk replikasi nya

kelasA <- round(pmin(pmax(rnorm(30, mean = 78, sd = 8), 0), 100))
kelasB <- round(pmin(pmax(rnorm(30, mean = 74, sd = 10), 0), 100))
kelasC <- round(pmin(pmax(rnorm(30, mean = 72, sd = 9), 0), 100))

#(rnorm(30, mean = 78, sd = 8), 0), 100)) mengartikan bahwa syntax menghasilkan 30 bilangan acak dengan rata-rata = 78/74/72, dan standar deviasi nya 8/10/9 

nilai <- data.frame(
  Kelas = rep(c("A", "B", "C"), each = 30),
  # data.frame digunakan untuk menyatukan ketiga kolom menjadi tabel data frame bernama nilai
  Nilai = c(kelasA, kelasB, kelasC)
  #Syntax diatas bertujuan untuk membuat vektor dari semua nilai (90 elemen)
  )
print(kelasA)
##  [1] 74 76 90 79 79 92 82 68 73 74 88 81 81 79 74 92 82 62 84 74 69 76 70 72 73
## [26] 65 85 79 69 88
print(kelasB)
##  [1] 78 71 83 83 82 81 80 73 71 70 67 72 61 96 86 63 70 69 82 73 77 74 74 88 72
## [26] 89 59 80 75 76
print(kelasC)
##  [1] 75 67 69 63 62 75 76 72 80 90 68 51 81 66 66 81 69 61 74 71 72 75 69 78 70
## [26] 75 82 76 69 82
#Menampilkan 30 nilai perkelas

3 Statistika Deskriptif dan visualisasi

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
Kelas = rep(c("A", "B", "C"), each = 30)
Nilai = c(kelasA, kelasB, kelasC)
# Statistik deskriptif per kelas
statistik_deskriptif <- nilai %>%
  group_by(Kelas) %>%
  summarise(
    rata_rata = mean(Nilai),
    median = median(Nilai),
    std_deviasi = sd(Nilai),
    varian = var(Nilai)
  )

print(statistik_deskriptif)
## # A tibble: 3 × 5
##   Kelas rata_rata median std_deviasi varian
##   <chr>     <dbl>  <dbl>       <dbl>  <dbl>
## 1 A          77.7   77.5        7.84   61.4
## 2 B          75.8   74.5        8.38   70.3
## 3 C          72.2   72          7.78   60.5

4 Visualisasi awal

Ini adalah gambaran awal di R dimana proses membuat representasi grafis dari data untuk mendapatkan pemahaman pertama tentang struktur, pola, dan hubungan antar variabel. Tanpa visualisasi, data mentah seringkali hanya berupa tabel angka—sulit untuk diinterpretasi. Visualisasi awal membantu kita melihat tren, mengidentifikasi outlier (nilai ekstrem), dan mendeteksi distribusi data yang tidak terduga, yang mungkin tidak terlihat dari statistik deskriptif saja. Dengan melihat boxplot yang membandingkan nilai ujian antar kelas, kita bisa langsung melihat perbedaan rata-rata dan sebaran nilai sebelum melakukan uji hipotesis formal. Visualisasi awal adalah langkah pertama yang krusial dalam eksplorasi data, berfungsi sebagai pemeriksaan visual yang memandu langkah analisis statistik selanjutnya.

4.1 Histogram kelas A

hist(kelasA, col = "cyan",
     main= "Histogram Nilai Ujian Kelas A",
     xlab = "Nilai")

### Histogram kelas B

hist(kelasB, col = "brown",
     main= "Histogram Nilai Ujian Kelas B",
     xlab = "Nilai")

### Histogram kelas C

hist(kelasC, col = "lightblue",
     main= "Histogram Nilai Ujian Kelas C",
     xlab = "Nilai")

### Histogram keseluruhan kelas

# Pastikan kolom numerik
nilai$Nilai <- as.numeric(nilai$Nilai)

# Histogram semua kelas
hist(nilai$Nilai,
     main = "Distribusi Nilai Ujian (Semua Kelas)",
     xlab = "Nilai",
     col = "skyblue",
     border = "white")

5 Uji Proporsi

Uji proporsi adalah uji statistik untuk membandingkan proporsi suatu kejadian dalam satu atau dua kelompok. Contoh:

  • proporsi nilai ≥75 di kelas A lebih tinggi daripada kelas C

  • Proporsi siswa yang lulus ujian di Kelas A.

  • Proporsi pelanggan yang puas dengan layanan.

Pada laporan ini kami ingin mengetahui apakah proporsi siswa dengan nilai >= 75 dikelas A lebih tinggi daripada kelas C

Dengan Hipotesis :

H0 : Proporsi nilai siswa yang sama dengan atau lebih dari 75 di kelas A tidak lebih tinggi atau sama dengan kelas C

H1 : Proporsi nilai siswa yang sama dengan atau lebih dari 75 di kelas A lebih tinggi daripada kelas C

prop_test_res <- prop.test(
  c(sum(kelasA >= 75), sum(kelasC >= 75)),  # jumlah siswa nilai ≥75
  c(length(kelasA), length(kelasC)),        # total siswa per kelas
  alternative = "greater",                  # H1: proporsi A > C
  correct = FALSE                           # matikan Yates correction
)

prop_test_res
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(sum(kelasA >= 75), sum(kelasC >= 75)) out of c(length(kelasA), length(kelasC))
## X-squared = 1.0667, df = 1, p-value = 0.1508
## alternative hypothesis: greater
## 95 percent confidence interval:
##  -0.07712034  1.00000000
## sample estimates:
##    prop 1    prop 2 
## 0.5666667 0.4333333

Pada hasil output diatas kita bisa lihat pada prop 1 dan 2: prop 1 = 0.567 berarti proporsi kelas A dengan nilai >= 75 = 56.7% prop 2 = 0.433 berarti proporsi kelas B dengan nilai >= 75 = 43.3% p-value = 0.1508 Nilai p-value adalah 0.1508. Nilai ini lebih besar dari tingkat signifikansi yang digunakan (yaitu, 0.05) yang artinya, gagal tolak H0.

6 Uji ANAVA

H0 : Tidak ada perbedaan yang signifikan pada nilai rata-rata di antara ketiga kelas tersebut (Kelas A, B, dan C) secara keseluruhan

H1 : Terdapat perbedaan yang signifikan pada nilai rata-rata di antara ketiga kelas tersebut (Kelas A, B, dan C) secara keseluruhan

Kelas = rep(c("A", "B", "C"), each = 30)
Nilai = c(kelasA, kelasB, kelasC)
anova_model = aov(Nilai~Kelas)
summary(anova_model)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## Kelas        2    471  235.28   3.673 0.0294 *
## Residuals   87   5573   64.06                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

INTERPRETASI: Nilai P adalah 0.0294. Nilai ini lebih kecil dari tingkat signifikansi yang digunakan (yaitu 0.05), yang artinya tolak H0 dan terima H1

6.1 TukeyHSD

Sintaks TukeyHSD (anova_model) digunakan dalam R untuk melakukan uji lanjutan (post-hoc test) setelah analisis ANOVA satu arah (one-way ANOVA), dengan tujuan ntuk mengetahui pasangan kelompok mana yang memiliki perbedaan signifikan setelah diketahui bahwa ada perbedaan rata-rata secara keseluruhan dari hasil ANOVA.

TukeyHSD(anova_model)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Nilai ~ Kelas)
## 
## $Kelas
##          diff        lwr        upr     p adj
## B-A -1.833333  -6.760904  3.0942375 0.6498206
## C-A -5.500000 -10.427571 -0.5724292 0.0248769
## C-B -3.666667  -8.594237  1.2609042 0.1842472

Kesimpulan Tukey HSD:

Kelas B vs Kelas A: Nilai p-value (0.6498) lebih besar dari 0.05

Kelas C vs Kelas A: Nilai p-value (0.02489) lebih kecil dari 0.05

Kelas C vs Kelas B: Nilai p-value (0.1842) lebih besar dari 0.05

7 Visualisasi ANAVA

Kelas = rep(c("A", "B", "C"), each = 30)
Nilai = c(kelasA, kelasB, kelasC)
boxplot(Nilai ~ Kelas, Data = nilai,
        main = "Boxplot Nilai per Kelas",
        xlab = "Kelas", ylab = "Nilai",
        col = c("red","gold","lightgreen"))

8 KESIMPULAN

  • Nilai rata-rata siswa Kelas A lebih tinggi dibanding Kelas B dan C.

  • Penyebaran nilai di Kelas A juga relatif lebih sempit dibanding Kelas C, artinya performa siswa Kelas A lebih konsisten.

  • Histogram menunjukkan distribusi nilai tiap kelas, Kelas A cenderung lebih banyak siswa dengan nilai tinggi.

  • Boxplot memperlihatkan median nilai Kelas A lebih tinggi, serta beberapa outlier muncul di Kelas B dan C.

  • Proporsi siswa dengan nilai ≥75 di Kelas A lebih tinggi dibanding Kelas C, namun tergantung dataset, perbedaan ini bisa signifikan atau tidak signifikan secara statistik.

-Secara keseluruhan, Kelas A menunjukkan performa akademik lebih baik dibanding Kelas B dan C.