Analisis regresi dan korelasi adalah metode statistik yang digunakan untuk memahami hubungan antara dua variabel. Regresi bertujuan untuk memodelkan hubungan antara variabel independen (X) dan variabel dependen (Y), sementara korelasi mengukur kekuatan dan arah hubungan linear antara dua variabel. Pada praktikum ini, kita akan menggunakan RStudio untuk melakukan analisis regresi dan korelasi serta melakukan uji hipotesis terkait regresi linear.
Seorang dosen di sebuah universitas ingin mengetahui apakah jumlah jam belajar yang dihabiskan oleh mahasiswa sebelum ujian memiliki pengaruh terhadap nilai ujian mereka. Dosen tersebut mengumpulkan data dari 100 mahasiswa yang mencakup jumlah jam belajar sebelum ujian dan nilai yang mereka dapatkan pada ujian tersebut.
Dataset yang digunakan dalam praktikum ini terdiri dari dua variabel, X (jam belajar siswa) dan Y (nilai siswa). Data ini akan digunakan untuk melakukan analisis regresi dan korelasi. Berikut adalah data yang digunakan:
read.csv("path/to/your/file.csv")
: Fungsi ini digunakan
untuk membaca file CSV ke dalam R.
Gantilah “path/to/your/file.csv” dengan jalur (path) ke file CSV Anda. Jika file berada di direktori kerja Anda saat ini, Anda hanya perlu menuliskan nama file, misalnya “file.csv”.
head(data)
: Fungsi ini akan menampilkan beberapa baris
pertama dari data yang Anda baca. Ini berguna untuk memeriksa apakah
data sudah dibaca dengan benar.
Jika ingin membaca data dari file CSV, misalnya “study_hours_exam_scores.csv”:
# Set the working directory to the location of your CSV file (optional)
#setwd("path/to/your/directory")
# Membaca data menggunakan dialog pemilihan file
#data <- read.csv(file.choose())
# Membaca data dari file CSV
data <- read.csv("study_hours_exam_scores_rounded.csv", sep=";")
# Melihat beberapa baris pertama dari data
head(data)
## Jam_Belajar Nilai_Ujian
## 1 10.99 86.90
## 2 9.72 86.79
## 3 11.30 93.47
## 4 13.05 98.17
## 5 9.53 87.32
## 6 9.53 90.15
Periksa apakah ada data yang hilang (missing values) dalam dataset.
summary(data)
## Jam_Belajar Nilai_Ujian
## Min. : 4.760 Min. : 70.43
## 1st Qu.: 8.800 1st Qu.: 84.41
## Median : 9.745 Median : 88.48
## Mean : 9.792 Mean : 89.28
## 3rd Qu.:10.810 3rd Qu.: 93.86
## Max. :13.700 Max. :112.06
# Plot scatter plot untuk memvisualisasikan hubungan antara Jam Belajar dan Nilai Ujian
plot(data$Jam_Belajar, data$Nilai_Ujian,
main = "Scatter Plot Jam Belajar vs Nilai Ujian",
xlab = "Jam Belajar",
ylab = "Nilai Ujian",
pch = 19, col = "blue")
Scatter plot menunjukkan adanya hubungan positif antara jam belajar dan nilai ujian.
# Plot histogram untuk memeriksa distribusi Jam Belajar
hist(data$Jam_Belajar,
main = "Histogram Jam Belajar",
xlab = "Jam Belajar",
col = "lightblue",
border = "black")
# Plot histogram untuk memeriksa distribusi Nilai Ujian
hist(data$Nilai_Ujian,
main = "Histogram Nilai Ujian",
xlab = "Nilai Ujian",
col = "lightgreen",
border = "black")
Histogram dari Jam_Belajar dan Nilai_Ujian menunjukkan distribusi data yang cukup normal, dengan distribusi yang simetris.
# Menghitung korelasi antara Jam Belajar dan Nilai Ujian
correlation <- cor(data$Jam_Belajar, data$Nilai_Ujian)
# Menampilkan hasil korelasi
print(correlation)
## [1] 0.8137691
Korelasi antara Jam_Belajar dan Nilai_Ujian mendekati 1, menunjukkan adanya hubungan linear positif yang kuat antara kedua variabel ini.
# Melakukan analisis regresi linear
model <- lm(Nilai_Ujian ~ Jam_Belajar, data = data)
# Menampilkan ringkasan hasil regresi
summary(model)
##
## Call:
## lm(formula = Nilai_Ujian ~ Jam_Belajar, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.9517 -3.9701 0.2021 2.8410 12.1532
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 53.6281 2.6156 20.50 <2e-16 ***
## Jam_Belajar 3.6410 0.2627 13.86 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.748 on 98 degrees of freedom
## Multiple R-squared: 0.6622, Adjusted R-squared: 0.6588
## F-statistic: 192.1 on 1 and 98 DF, p-value: < 2.2e-16
Matematis Model Regresi:
Model matematis dari regresi linear yang kita lakukan adalah sebagai berikut:
\[ Y = \beta_0 + \beta_1 X + \epsilon \]
Dimana:
\(Y\) adalah nilai ujian (variabel dependen).
\(X\) adalah jumlah jam belajar (variabel independen).
\(\beta_0\) adalah intercept (nilai \(Y\) saat \(X = 0\)).
\(\beta_1\) adalah koefisien regresi (slope), yang menunjukkan besarnya perubahan \(Y\) untuk setiap unit perubahan pada \(X\).
\(\epsilon\) adalah error term atau residual.
Berdasarkan hasil regresi, persamaan model yang didapat adalah:
\[ \hat{Y} = 53.63 + 3.64 X \]
\[ \hat{Nilai Ujian} = 53.63 + 3.64 * JamBelajar \]
Dengan \(\hat{Y}\) adalah prediksi dari \(Y\) dan \(\hat{\beta_0}\) serta \(\hat{\beta_1}\) adalah nilai estimasi dari parameter regresi.
Hasil regresi menunjukkan bahwa Jam_Belajar secara signifikan mempengaruhi Nilai_Ujian.
Koefisien regresi (slope) menunjukkan bahwa setiap tambahan satu jam belajar rata-rata meningkatkan nilai ujian sebesar 3-4 poin, tergantung pada model hasil regresi.
Koefisien Determinasi atau R-squared (\(R^2\)) adalah statistik yang memberikan informasi mengenai seberapa baik model regresi yang kita buat dalam menjelaskan variabilitas dari data yang diamati. Nilai \(R^2\) berkisar antara 0 dan 1, dan dapat diinterpretasikan sebagai berikut:
(\(R^2=0\)), artinya Model tidak mampu menjelaskan variabilitas dalam data sama sekali. Semua variasi dalam data dianggap acak dan tidak dapat dijelaskan oleh model regresi.
(\(R^2=1\)): Model mampu menjelaskan seluruh variabilitas dalam data secara sempurna. Tidak ada variabilitas yang tersisa yang tidak dijelaskan oleh model.
Pada model regresi yang digunakan untuk memprediksi nilai ujian berdasarkan jam belajar, didapatkan nilai (\(R^2= 0.66\)), sebesar 66%. Interpretasi dari nilai \(R^2\) ini adalah sebagai berikut:
66% Variabilitas Dijelaskan oleh Model:
Nilai \(R^2\) sebesar 0,66 berarti 66% dari variabilitas dalam nilai ujian siswa dapat dijelaskan oleh jumlah jam belajar yang mereka lakukan. Ini menunjukkan bahwa jam belajar memiliki pengaruh yang cukup signifikan terhadap nilai ujian, dan model regresi ini cukup mampu menjelaskan hubungan antara kedua variabel tersebut.
34% Variabilitas Tidak Dijelaskan oleh Model:
Sebanyak 34% dari variabilitas dalam nilai ujian tidak dapat dijelaskan oleh model. Ini menunjukkan bahwa ada faktor-faktor lain yang berkontribusi terhadap perbedaan nilai ujian siswa yang tidak termasuk dalam model. Faktor-faktor ini mungkin mencakup variabel lain seperti: Kualitas tidur siswa, metode belajar yang digunakan, tingkat kecemasan atau stres saat ujian, dan faktor lingkungan atau sosial lainnya.
Ada ruang untuk perbaikan model, misalnya dengan menambahkan variabel lain yang mungkin relevan atau dengan menggunakan teknik model lain yang dapat menangkap lebih banyak variasi dalam data. Perlu juga untuk memeriksa asumsi-asumsi regresi (seperti normalitas residual, homoskedastisitas, dan independensi residual) untuk memastikan bahwa model valid dan hasil interpretasi dapat dipercaya.
# Plot scatter plot untuk memvisualisasikan hubungan antara Jam Belajar dan Nilai Ujian dengan penambahan garis model regresi
plot(data$Jam_Belajar, data$Nilai_Ujian,
main = "Scatter Plot Jam Belajar vs Nilai Ujian",
xlab = "Jam Belajar",
ylab = "Nilai Ujian",
pch = 19, col = "blue")
# Menambahkan garis regresi ke scatter plot
abline(lm(Nilai_Ujian ~ Jam_Belajar, data = data), col = "red")
Untuk memeriksa apakah residual dari model regresi terdistribusi normal, kita melakukan uji Shapiro-Wilk dengan hipotesis sebagai berikut:
\[ \begin{aligned} H_0 &: \text{Residuals berdistribusi normal} \\ H_1 &: \text{Residuals tidak berdistribusi normal} \end{aligned} \]
# Mengambil residuals dari model
residuals <- model$residuals
# Q-Q Plot untuk memeriksa normalitas residual
qqnorm(residuals)
qqline(residuals, col = "red")
# Uji Shapiro-Wilk untuk normalitas residual
shapiro.test(residuals)
##
## Shapiro-Wilk normality test
##
## data: residuals
## W = 0.9812, p-value = 0.1647
Uji Normalitas Residual juga dapat menggunakan Q-Q plot dan uji Shapiro-Wilk untuk memeriksa apakah residuals terdistribusi normal. Q-Q plot menunjukkan bahwa titik-titik residual mengikuti garis diagonal, yang menandakan bahwa residual terdistribusi normal.
Uji Shapiro-Wilk memiliki p-value > 0.05, sehingga tidak ada alasan untuk menolak hipotesis 0, bahwa residuals berdistribusi normal.
Memeriksa apakah varians residuals konsisten di seluruh rentang fitted values.
Uji asumsi yang dapat dilakukan untuk menguji homoskedastisitas adalah Breush-Pagan Test
\[ \begin{aligned} H_0 &: \text{Varian residuals bersifat konstan (homoskedastisitas)} \\ H_1 &: \text{Varian residuals tidak bersifat konstan (heteroskedastisitas)} \end{aligned} \]
# Plot Residuals vs Fitted values untuk memeriksa homoskedastisitas
plot(model$fitted.values, residuals)
abline(h = 0, col = "red")
# Uji Breusch-Pagan untuk homoskedastisitas (opsional)
# install.packages("lmtest") # Pastikan paket 'lmtest' terinstal
library(lmtest)
bptest(model)
##
## studentized Breusch-Pagan test
##
## data: model
## BP = 0.73419, df = 1, p-value = 0.3915
Plot Residuals vs Fitted values tidak menunjukkan pola tertentu, yang mengindikasikan tidak adanya masalah heteroskedastisitas.
Karena uji Breusch-Pagan memberikan p-value > 0.05 (Terima \(H_0\)), menunjukkan homoskedastisitas atau varians residual yang konstan.
Menggunakan uji Durbin-Watson untuk memeriksa apakah residuals independen.
[ \[\begin{aligned} H_0 &: \text{Residuals bersifat independen (tidak ada autokorelasi)} \\ H_1 &: \text{Residuals bersifat tidak independen (terdapat autokorelasi)} \end{aligned}\]]
# Uji Durbin-Watson untuk independensi residual
dwtest(model)
##
## Durbin-Watson test
##
## data: model
## DW = 2.194, p-value = 0.8369
## alternative hypothesis: true autocorrelation is greater than 0
Uji Durbin-Watson memberikan nilai mendekati 2 dan p-value DW test > 0.05, gagal tolak \(H_0\) menunjukkan bahwa residuals tidak berkorelasi satu sama lain (tidak ada autokorelasi).
Selain Q-Q plot, kita juga bisa menampilkan grafik tambahan untuk memeriksa residuals dan fitted values.
# Menyiapkan layout untuk 3 grafik dalam 1 halaman
par(mfrow = c(1, 3)) # 1 baris, 3 kolom
# Grafik 1: Residuals vs Fitted values
plot(model$fitted.values, residuals,
main = "Residuals vs Fitted Values",
xlab = "Fitted Values",
ylab = "Residuals",
pch = 19, col = "blue")
abline(h = 0, col = "red")
# Grafik 2: Histogram of Residuals
hist(residuals, breaks = 10,
main = "Histogram of Residuals",
xlab = "Residuals",
col = "lightblue", border = "black")
# Grafik 3: Q-Q Plot of Residuals
qqnorm(residuals, main = "Q-Q Plot of Residuals")
qqline(residuals, col = "red")
par(mfrow = c(1, 3))
: Mengatur layout grafik menjadi 1
baris dan 3 kolom, sehingga tiga grafik akan ditampilkan dalam satu
halaman.
Grafik 1: Residuals vs Fitted Values Menampilkan residuals terhadap fitted values untuk memeriksa homoskedastisitas.
Grafik 2: Histogram of Residuals Menampilkan distribusi residuals, memungkinkan kita untuk melihat apakah residuals terdistribusi normal.
Grafik 3: Q-Q Plot of Residuals Memeriksa normalitas residuals dengan membandingkan distribusi residuals dengan distribusi normal.
Setelah melakukan analisis regresi dan korelasi, serta uji asumsi, kita dapat menyimpulkan bahwa:
Korelasi: Nilai korelasi memberikan indikasi kekuatan dan arah hubungan linear antara variabel X dan Y. Nilai korelasi yang mendekati 1 menunjukkan hubungan positif yang kuat.
Koefisien Regresi: Koefisien regresi menunjukkan besarnya perubahan variabel Y (nilai) untuk setiap unit perubahan pada variabel X (jam belajar).Hasil regresi menunjukkan bahwa jam belajar secara signifikan mempengaruhi nilai ujian.
R-squared: R-squared mengukur seberapa baik model regresi memprediksi variabel dependen. Nilai yang lebih tinggi menunjukkan model yang lebih baik.
Garis Regresi: Garis regresi pada plot visual memberikan representasi grafis dari hubungan yang dimodelkan antara X dan Y.
Semua asumsi regresi (normalitas residual, homoskedastisitas, dan independensi residual) terpenuhi, sehingga model regresi ini dapat dianggap valid dan dapat digunakan untuk prediksi.
Kesimpulan Dalam praktikum ini, kita telah melakukan analisis regresi dan korelasi menggunakan RStudio, serta melakukan uji asumsi regresi untuk memastikan model memenuhi kriteria yang diperlukan. Hasil analisis menunjukkan adanya hubungan linear yang signifikan antara kedua variabel tersebut dan model yang dihasilkan dapat digunakan untuk prediksi.