Buatlah fungsi di R untuk menghitung nilai dugaan koefisien regresi berganda dengan rumus beta_duga = (X’X)^-1 X’y.
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.
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)
}
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