Soal

Buatlah fungsi di R untuk menghitung nilai dugaan koefisien regresi berganda dengan rumus beta_duga = (X’X)^-1 X’y.

Algoritma:

1.Tambahkan kolom pada bagian kiri matriks X dengan nilai 1 untuk peubah b0.

2.Memeriksa syarat perkalian matriks (X’y) yaitu jumlah baris X = jumlah baris y.

3.Menghitung hasil dari X’X.

4.Memeriksa syarat invers ((X’X)^-1) yaitu determinan X’X != 0.

5.Menghitung beta_duga = (X’X)^-1 X’y.

6.Menyimpan nama koefisien beta.

7.Mencetak hasil dalam bentuk data frame yang berisi nama koefisien dan nilai dugaan beta.

Fungsi

regresi_berganda <- function(X, y) {
  
  X <- cbind(1, X)
  
  if (nrow(X) != nrow(y)) {
    stop("Jumlah baris X harus sama dengan jumlah baris y.")
  }
  
  XtX <- t(X) %*% X
  if (det(XtX) == 0) {
    stop("Determinan dari X^T X sama dengan nol. Matriks tidak dapat diinverskan.")
  }
  
  beta_duga <- solve(XtX) %*% t(X) %*% y
  
  nama_koefisien <- paste0("b", 0:(ncol(X) - 1))
  
  hasil <- data.frame(Nama = nama_koefisien, Beta = beta_duga)
  
  return(hasil)
}

Contoh

X <- matrix(c(1000, 500, 700, 200, 400, 600), ncol = 2) 
y <- matrix(c(1500, 1700, 1300), nrow =3)
X
##      [,1] [,2]
## [1,] 1000  200
## [2,]  500  400
## [3,]  700  600
y
##      [,1]
## [1,] 1500
## [2,] 1700
## [3,] 1300
regresi_berganda(X,y)
##   Nama         Beta
## 1   b0 2585.7142857
## 2   b1   -0.8571429
## 3   b2   -1.1428571
(model <- lm(y ~ X))
## 
## Call:
## lm(formula = y ~ X)
## 
## Coefficients:
## (Intercept)           X1           X2  
##   2585.7143      -0.8571      -1.1429