Data Studi Kasus

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:

  1. Estimasikan model regresi linier berganda menggunakan metode OLS berbasis matriks dan interpretasikan hasilnya?
  2. Hitung Uji F dan uji t secara manual dan interpretasikan hasilnya?
  3. Hitung nilai R² dan Adjusted R² secara manual dan interpretasikan hasilnya?
  4. Bandingkan hasil no 1 s.d 3 dengan fungsi lm.
  5. Prediksikan nilai ujian mahasiswa jika jumlah jam belajar 1 jam/minggu namun kehadirannya 100%?

1. Persamaan Model Regresi Linier

Secara umum, persamaan regesi linier adalah sebagai berikut. \[Y = \beta_0 + \beta_1 X + \varepsilon\] Keterangan:

  • \(Y\) : variabel dependen
  • \(X\) : variabel independen
  • \(\beta_0\) : intercept
  • \(\beta_1\) : koefisien regresi
  • \(\varepsilon\) : error

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\]

Pendugaan Parameter

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.

Menghitung beta secara manual

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 \]

Menentukan beta dengan fungsi lm

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

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:

  • Setiap kenaikan sebesar 1 jam pada jam belajar, maka akan meningkatkan nilai ujian mahasiswa sebesar 1.1698 dimana variabel lain dianggap tetap.
  • Setiap kenaikan sebesar 1 persen pada tingkat kehadiran, maka akan meningkatkan nilai ujian mahasiswa sebesar 0.7745 dimana variabel lain dianggap tetap
  • Konstanta 16.1360 merupakan nilai ujian mahasiswa saat \(X_1\) (jam belajar) dan \(X_2\) (tingkat kehadiran) konstan (=0)

2. Uji Signifikansi

a. Uji Signifikansi Simultan (Uji-F)

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).

b. Uji Signifikansi Parsial (Uji-t)

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

  1. \(H_0:\beta_1=0\) ; \(H_1:\beta_1\not=0\)
  2. \(H_0:\beta_2=0\) ; \(H_1:\beta_2\not=0\)

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

  1. Variabel \(X_1\): Karena \(p-value = 4.028204e-03 < \alpha(0.05)\), maka tolak \(H_0\)
  2. Variabel \(X_2\): Karena \(p-value = 2.357834e-06 < \alpha(0.05)\), maka tolak \(H_0\)

Kesimpulan 

  1. Pada taraf nyata 5%, terbukti secara statistik bahwa jam belajar (\(X_1\)) berpengaruh secara signifikan terhadap nilai UAS (\(Y\)).
  2. Pada taraf nyata 5%, terbukti secara statistik bahwa tingkat kehadiran (\(X_2\)) berpengaruh secara signifikan terhadap nilai UAS (\(Y\)).

3. Koefisien Determinasi (\(R^2\))

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.

4. Perbandingan Hasil Perhitungan Manual dengan Fungsi LM

# 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).

5. Prediksi Model

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