## ------------------------------------------------------------ ## REGRESI LINEAR SEDERHANA – STATISTIKA PENDIDIKAN ## Contoh: Jam belajar (X) → Nilai ujian matematika (Y) ## ------------------------------------------------------------ # 1. Membuat contoh data -------------------------------------- set.seed(123) # supaya hasil acak bisa diulang # Misal 40 siswa n <- 40 # Jam belajar per minggu (X): antara 1–10 jam jam_belajar <- runif(n, min = 1, max = 10) # Rumus "benar"-nya (teoritis): # nilai = 40 + 5 * jam_belajar + error # artinya: setiap tambahan 1 jam belajar → nilai naik ±5 poin nilai_ujian <- 40 + 5 * jam_belajar + rnorm(n, mean = 0, sd = 5) # Susun ke dalam data frame data_pendidikan <- data.frame( jam_belajar, nilai_ujian ) head(data_pendidikan) # 2. Eksplorasi awal ------------------------------------------ # Plot sebaran (scatter plot) plot(data_pendidikan$jam_belajar, data_pendidikan$nilai_ujian, main = "Jam Belajar vs Nilai Ujian Matematika", xlab = "Jam belajar per minggu", ylab = "Nilai ujian", pch = 19, col = "blue") # Tambahkan garis regresi kasar (nanti pakai hasil model) # (akan diperbarui setelah model dibuat) # 3. Membuat model regresi ------------------------------------ # Model regresi linear: nilai_ujian ~ jam_belajar model_reg <- lm(nilai_ujian ~ jam_belajar, data = data_pendidikan) # Ringkasan hasil regresi summary(model_reg) # Tambahkan garis regresi ke scatter plot abline(model_reg, col = "red", lwd = 2) # 4. Interpretasi output utama (dilihat di summary) ----------- # Di summary(model_reg), perhatikan: # - Coefficients: # (Intercept) → taksiran nilai ketika jam_belajar = 0 # jam_belajar → berapa kenaikan rata-rata nilai untuk # setiap tambahan 1 jam belajar # - Pr(>|t|) → p-value untuk uji signifikansi koefisien # - Multiple R-squared → seberapa besar variasi nilai ujian # yang dijelaskan oleh jam belajar # - F-statistic → uji signifikansi model secara keseluruhan # 5. Diagnostik asumsi sederhana ------------------------------ par(mfrow = c(2, 2)) # 4 plot standar diagnostik plot(model_reg) par(mfrow = c(1, 1)) # Plot-plot ini dipakai untuk: # - Residuals vs Fitted : cek pola (harus acak sekitar 0) # - Normal Q-Q : cek apakah residual ~ normal # - Scale-Location : cek homoskedastisitas # - Residuals vs Leverage: cek pengaruh pencilan # 6. Prediksi nilai siswa baru ------------------------------- # Misal ada siswa dengan jam belajar 2, 5, dan 8 jam/minggu jam_baru <- data.frame(jam_belajar = c(2, 5, 8)) # Prediksi nilai ujian mereka prediksi_nilai <- predict(model_reg, newdata = jam_baru) jam_baru$prediksi_nilai <- prediksi_nilai jam_baru