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
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
## [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
## [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
## 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
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.
### Histogram kelas B
### Histogram kelas C
### 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")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.
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.