Seorang peneliti ingin menganalisis faktor-faktor yang mempengaruhi
nilai ujian mahasiswa (Y). Diduga bahwa nilai ujian dipengaruhi
oleh:
X1 = jumlah jam belajar (jam/minggu)
X2 = tingkat kehadiran (%)
Peneliti mengumpulkan data dari 10 mahasiswa sebagai berikut:
Y_nilai <- c(65,70,75,80,85,78,72,90,88,95)
X1_jambelajar <- c(2,3,4,5,6,5,3,7,6,8)
X2_kehadiran <- c(60,65,70,75,80,72,68,85,83,90)
data_mahasiswa <- data.frame(Y_nilai, X1_jambelajar, X2_kehadiran)
colnames(data_mahasiswa) <- c("Y", "X1", "X2")
data_mahasiswa
Pada data ini diminta untuk:
Secara umum, persamaan regesi linier adalah sebagai berikut. \[Y = \beta_0 + \beta_1 X + \varepsilon\] Keterangan:
Karena pada studi kasus mempunyai lebih dari satu variabel independen, maka akan digunakan persamaan regresi linier berganda. Berikut ini persamaan umumnya. \[Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \varepsilon\]
Dalam membuat persamaan regresi linier, maka kita perlu menentukan
beta yang menjadi koefisien dari persamaan. Untuk membandingkan
hasilnya, maka akan dilakukan penyelesaian secara manual dan menggunakan
fungsi lm yang tersedia di R.
Karena studi kasus yang diberikan merupakan data dengan 2 variabel independen, maka bisa menggunakan matrix dengan rumus berikut. \[\hat{\boldsymbol{\beta}} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{Y}\] Berikut penyelesaian menggunakan R.
# Membentuk matrix Y dan X
Y <- as.matrix(data_mahasiswa$Y,ncol=1)
print(Y)
## [,1]
## [1,] 65
## [2,] 70
## [3,] 75
## [4,] 80
## [5,] 85
## [6,] 78
## [7,] 72
## [8,] 90
## [9,] 88
## [10,] 95
matrix_X <- data.frame(rep(1,times=10), data_mahasiswa$X1, data_mahasiswa$X2)
colnames(matrix_X) <- c("intercept", "b1", "b2")
X <- as.matrix(matrix_X)
print(X)
## intercept b1 b2
## [1,] 1 2 60
## [2,] 1 3 65
## [3,] 1 4 70
## [4,] 1 5 75
## [5,] 1 6 80
## [6,] 1 5 72
## [7,] 1 3 68
## [8,] 1 7 85
## [9,] 1 6 83
## [10,] 1 8 90
# Perhitungan nilai Beta
beta_hat <- (solve(t(X)%*%X))%*%(t(X)%*%Y)
print(beta_hat)
## [,1]
## intercept 16.1360113
## b1 1.1698379
## b2 0.7744891
Pada hasil yang diberikan menunjukkan bahwa intercept atau \(\beta_0\) bernilai 16.1360, \(\beta_1\) sebesar 1.1698, dan \(\beta_2\) sebesar 0.7745. Maka dapat dituliskan dalam persamaan regresi linear berganda sebagai berikut. \[\hat{\boldsymbol{Y}} = 16.1360 + 1.1698 X_1 - 0.7745 X_2 \]
Selain menggunakan cara manual yang memerlukan rumus dan beberapa langkah, kita bisa menentukan penduga parameter hanya dengan satu fungsi, yaitu fungsi linear model (lm) yang sudah disediakan R. Berikut penggunaannya.
# Menentukan persamaan linier dengan fungsi lm
model <- lm(Y ~ X1 + X2, data = data_mahasiswa)
model
##
## Call:
## lm(formula = Y ~ X1 + X2, data = data_mahasiswa)
##
## Coefficients:
## (Intercept) X1 X2
## 16.1360 1.1698 0.7745
Menurut hasil di atas, maka dapat dituliskan persamaan regresi linearnya sebagai berikut. \[\hat{\boldsymbol{Y}} = 16.1360 + 1.1698 X_1 - 0.7745 X_2 \]
Interpretasi dari persamaan regresi linear yang melibatkan nilai
ujian mahasiswa sebagai variabel dependen, jam belajar sebagai variabel
independen pertama dan tingkat kehadiran sebagai variabel independen
kedua yaitu sebagai berikut:
Uji-F digunakan untuk mengetahui apakah variabel-variabel independen
memiliki pengaruh secara besama-sama atau secara simultan terhadap
variabel dependen. Dimana derajat signifikansi yang digunakan adalah
0.05. Apabila nilai signifikan lebih kecil dari derajat kepercayaan maka
kita menerima hipotesis alternatif yang menyatakan bahwa
variabelvariabel independen secara simultan mempengaruhi variabel
dependen (Sudariani & Yoedani, 2022).
Hipotesis:
\(H_0: \beta_1=\beta_2=0\)
\(H_1:\) minimal ada satu \(\beta_i=0\) dimana \(i=1,2\)
Statistik Uji
# Menentukan Y duga dan Y bar
Yduga <- X%*%beta_hat
print(Yduga)
## [,1]
## [1,] 64.94503
## [2,] 69.98732
## [3,] 75.02960
## [4,] 80.07188
## [5,] 85.11416
## [6,] 77.74841
## [7,] 72.31078
## [8,] 90.15645
## [9,] 87.43763
## [10,] 95.19873
galat <- Y-Yduga
print(galat)
## [,1]
## [1,] 0.05496829
## [2,] 0.01268499
## [3,] -0.02959831
## [4,] -0.07188161
## [5,] -0.11416490
## [6,] 0.25158562
## [7,] -0.31078224
## [8,] -0.15644820
## [9,] 0.56236786
## [10,] -0.19873150
n <- nrow(Y)
Ybar <- rep(mean(Y),n)
print(Ybar)
## [1] 79.8 79.8 79.8 79.8 79.8 79.8 79.8 79.8 79.8 79.8
# Jumlah kuadrat
JKT <- sum((Y-Ybar)^2)
JKG <- sum(galat^2)
JKR <- JKT-JKG
# Derajat bebas
dbR <- 2
dbT <- n-1
dbG <- dbT-dbR
# Kuadrat Tengah
KTR <- JKR/dbR
KTG <- JKG/dbG
# F-hitung
Fhit <- KTR/KTG
cat("F-hitung:", Fhit)
## F-hitung: 5172.116
# F-tabel
Ftab <- pf(0.05,dbR,dbG)
cat("F-tabel:", Ftab)
## F-tabel: 0.04843399
# P-value
Pvalue_F <- pf(Fhit,2,7,lower.tail=FALSE)
cat("P-value:", Pvalue_F)
## P-value: 8.042129e-12
Keputusan
Karena \(F-hitung > F-tabel\) atau
\(P-value < \alpha(0.05)\), maka
tolak \(H_0\).
Kesimpulan
Pada taraf nyata 5%, terbukti secara statistik bahwa minimal ada salah
satu variabel X (jam belajar dan tingkat kehadiran) yang mempengaruhi
variabel Y (nilai ujian).
Uji-t digunakan untuk mengetahui apakah variabel-variabel independen
memiliki pengaruh secara individual atau secara parsial terhadap
variabel dependen. Dimana derajat signifikansi yang digunakan adalah
0,05. Apabila nilai signifikan lebih kecil dari derajat kepercayaan maka
kita menerima hipotesis alternatif yang menyatakan bahwa
variabel-variabel independen secara parsial mempengaruhi variabel
dependen.
Hipotesis untuk uji ini adalah:
\(H_0:\beta_i=0\) (Tidak ada
pengaruh dari variabel X ke-i terhadap variabel Y)
\(H_1:\beta_i\not=0\) (Terdapat
pengaruh dari variabel X ke-i terhadap variabel Y)
Berikut ini implementasi menggunakan R.
Hipotesis
Statistik Uji
# Uji t menggunakan rumus manual
k <- 3
sd <- rep(0,k)
for(i in 1:k){sd[i]=sqrt(KTG*(solve(t(X)%*%X))[i,i])}
print(sd)
## [1] 2.83677490 0.27843551 0.05571759
thit <- beta_hat/sd
print(thit)
## [,1]
## intercept 5.688154
## b1 4.201468
## b2 13.900261
pvalue_t <- 2*pt(abs(thit),dbG,lower.tail=FALSE)
print(pvalue_t)
## [,1]
## intercept 7.444177e-04
## b1 4.028204e-03
## b2 2.357834e-06
Keputusan
Kesimpulan
Koefisien determinasi menunjukkan sejauh mana kontribusi variabel bebas dalam model regresi mampu menjelaskan variasi dari variabel terikatnya. Untuk menghitungnya bisa menggunakan rumus \[R^2 = \frac{JKR}{JKT}\] atau \[Adj{R}^2 = 1 - \frac{JKG/(n - k - 1)}{JKT/(n - 1)}\] Berikut implementasi menggunakan R.
# Hitung R-Square
Rsquare <- JKR/JKT
print(Rsquare)
## [1] 0.9993238
# Hitung Adjusted R-Squared
n <- nrow(Y)
k <- 2 # jumlah variabel independen
Adj_R2 <- 1-((JKG/(n-k-1))/(JKT/(n-1)))
print(Adj_R2)
## [1] 0.9991305
Interpretasi
Dari hasil perhitungan diperoleh nilai \(R^2\) sebesar 0.9993 dan Adjusted \(R^2\) sebesar 0.9991. Hal ini menunjukkan bahwa variabel jam belajar (X1) dan tingkat kehadiran (X2) mampu menjelaskan keragaman variasi nilai ujian mahasiswa (Y) sebesar 99.91%, sedangkan sisanya sebesar 0.09% dijelaskan oleh variabel lain di luar model. Dengan demikian, model regresi yang digunakan memiliki tingkat kecocokan yang sangat baik.
# Model
model <- lm(Y_nilai ~ X1_jambelajar + X2_kehadiran, data = data_mahasiswa)
print(model)
##
## Call:
## lm(formula = Y_nilai ~ X1_jambelajar + X2_kehadiran, data = data_mahasiswa)
##
## Coefficients:
## (Intercept) X1_jambelajar X2_kehadiran
## 16.1360 1.1698 0.7745
summary(model)
##
## Call:
## lm(formula = Y_nilai ~ X1_jambelajar + X2_kehadiran, data = data_mahasiswa)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.31078 -0.14588 -0.05074 0.04440 0.56237
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 16.13601 2.83677 5.688 0.000744 ***
## X1_jambelajar 1.16984 0.27844 4.201 0.004028 **
## X2_kehadiran 0.77449 0.05572 13.900 2.36e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2834 on 7 degrees of freedom
## Multiple R-squared: 0.9993, Adjusted R-squared: 0.9991
## F-statistic: 5172 on 2 and 7 DF, p-value: 8.042e-12
Setelah dilakukan perhitungan baik manual maupun dengan fungsi lm, berikut ini perbandingan hasil antara keduanya:
Aspek <- c("Estimasi Model","Uji-F","Uji-t intercept", "Uji-t beta1","Uji-t beta2","R^2","Adjusted R^2")
Manual <- c("Y_hat=16.1360+1.1698 X1-0.7745X2",Fhit,pvalue_t,Rsquare,Adj_R2)
Modellm <- c("Y_hat=16.1360+1.1698 X1-0.7745X2",
5172,0.000744,0.004028,2.36e-06,0.9993,0.9991)
tabel_perbandingan <- data.frame(Aspek, Manual, Modellm)
tabel_perbandingan
Hasil perhitungan manual dan fungsi lm() menunjukkan
nilai yang konsisten dan hampir identik. Estimasi model regresi, uji F,
uji t, serta nilai \(R^2\) dan Adjusted
\(R^2\) tidak berbeda secara
signifikan, sehingga dapat disimpulkan bahwa perhitungan manual telah
dilakukan dengan benar. Perbedaan kecil hanya disebabkan oleh
pembulatan, dan penggunaan lm() lebih praktis serta
efisien. Model regresi yang diperoleh sangat kuat dan signifikan, baik
secara simultan (uji F) maupun parsial (uji t).
Berikut ini prediksi nilai ujian mahasiswa jika jumlah jam belajar 1 jam/minggu namun kehadirannya 100%.
# Data baru yang ingin diprediksi
data_baru <- data.frame(X1 = 1, X2 = 100)
# Prediksi nilai Y
prediksi <- predict(model, newdata = data_baru)
## Warning: 'newdata' had 1 row but variables found have 10 rows
print(prediksi)
## 1 2 3 4 5 6 7 8
## 64.94503 69.98732 75.02960 80.07188 85.11416 77.74841 72.31078 90.15645
## 9 10
## 87.43763 95.19873