Regresi linier sederhana adalah metode statistik yang digunakan untuk menganalisis hubungan antara satu variabel independen (\(X\)) dan satu variabel dependen (\(Y\)). Model ini dapat digunakan untuk memperkirakan nilai \(Y\) berdasarkan nilai \(X\).
Model matematis dari regresi linier sederhana:
\[ Y = \beta_0 + \beta_1 X + \varepsilon \]
Berikut adalah definisi fungsi simulate_ols_data() yang digunakan dalam simulasi, lengkap dengan dokumentasi roxygen-style, sebagai bagian dari kerangka package yang sedang dikembangkan: ## Bukti Kerangka Package: Fungsi simulate_ols_data()
r
#' Simulasi Data untuk Regresi Linier
#'
#' @param n jumlah data
#' @param beta0 intercept
#' @param beta1 slope
#' @param sigma standar deviasi error
#' @return data.frame berisi x dan y
#' @export
simulate_ols_data <- function(n, beta0, beta1, sigma) {
x <- runif(n, 0, 10)
e <- rnorm(n, 0, sigma)
y <- beta0 + beta1 * x + e
data.frame(x = x, y = y)
}
Fungsi simulate_ols_data() merupakan bagian dari kerangka awal pembuatan package R yang disusun menggunakan konvensi dokumentasi roxygen2. Sintaks @param, @return, dan @export menunjukkan bahwa fungsi ini telah disiapkan untuk dikompilasi sebagai bagian dari dokumentasi dan namespace package, sehingga dapat digunakan ulang dan diakses oleh pengguna melalui sistem package R. Dengan menyertakan dokumentasi langsung di atas definisi fungsi dan memastikan struktur yang konsisten, terbukti bahwa kerangka kerja pembuatan package termasuk integrasi dokumentasi otomatis—telah berhasil diterapkan.
Kita akan mensimulasikan 100 data observasi dengan parameter berikut: - Intercept (\(\beta_0\)) = 2 - Slope (\(\beta_1\)) = 1.5 - Galat (\(\sigma\)) = 0.8
data_simulasi <- simulate_ols_data(n = 100, beta0 = 2, beta1 = 1.5, sigma = 0.8)
head(data_simulasi)## x y
## 1 1.33608926 2.4868578
## 2 5.15266375 9.2088386
## 3 6.22804889 11.9117127
## 4 0.25499247 0.9974173
## 5 0.07296221 1.7988335
## 6 4.85703202 10.5075421
Fungsi simple_ols() merupakan implementasi manual dari
metode Ordinary Least Squares (OLS) untuk regresi linier sederhana.
Fungsi ini ditulis dengan standar dokumentasi roxygen2,
yang memudahkan proses pembuatan dokumentasi otomatis dalam package R.
Ia menerima dua vektor numerik sebagai input (variabel independen dan
dependen), kemudian menghitung estimasi parameter regresi berupa
intercept dan slope, nilai prediksi (fitted values), residual, serta
koefisien determinasi (R-squared). Dengan dokumentasi yang rapi serta
disertai bagian @examples, fungsi ini siap untuk
di-export dalam package simpleOLSkel1 dan
digunakan secara langsung oleh pengguna untuk analisis regresi linier
sederhana.
#' Ordinary Least Squares (OLS) Estimator
#'
#' Fungsi ini menghitung estimasi parameter regresi linier sederhana menggunakan metode OLS.
#'
#' @param x Vektor variabel independen (predictor)
#' @param y Vektor variabel dependen (response)
#' @return List yang berisi:
#' \itemize{
#' \item coefficients - vektor yang berisi intercept (beta0) dan slope (beta1)
#' \item fitted.values - nilai prediksi model
#' \item residuals - residual/error
#' \item r.squared - koefisien determinasi
#' }
#' @examples
#' x <- 1:10
#' y <- 2*x + rnorm(10)
#' hasil <- simple_ols(x, y)
#' print(hasil$coefficients)
#' @export
simple_ols <- function(x, y) {
if (length(x) != length(y)) {
stop("Panjang x dan y harus sama")
}
n <- length(x)
x_bar <- mean(x)
y_bar <- mean(y)
# Hitung slope (beta1)
Sxy <- sum((x - x_bar) * (y - y_bar))
Sxx <- sum((x - x_bar)^2)
beta1 <- Sxy / Sxx
# Hitung intercept (beta0)
beta0 <- y_bar - beta1 * x_bar
# Hitung fitted values dan residuals
y_hat <- beta0 + beta1 * x
residuals <- y - y_hat
# Hitung R-squared
SS_total <- sum((y - y_bar)^2)
SS_res <- sum(residuals^2)
r_squared <- 1 - (SS_res / SS_total)
# Kembalikan hasil sebagai list
list(
coefficients = c(Intercept = beta0, Slope = beta1),
fitted.values = y_hat,
residuals = residuals,
r.squared = r_squared
)
}simple_ols# Input Data
data_bilfagi <- data.frame(
x = c(756, 752, 764, 1704, 1668, 250,
175, 350, 300, 4300, 4250, 4680), # Persediaan
y = c(550, 600, 640, 1500, 1700, 200,
280, 400, 370, 2500, 3000, 3650) # Produksi
)
# Model OLS
model1 <- simple_ols(x = data_bilfagi$x, y = data_bilfagi$y)
print(model1$coefficients)## Intercept Slope
## 169.5578710 0.6694724
## R-squared: 0.9566522
lm()##
## Call:
## lm(formula = y ~ x, data = data_bilfagi)
##
## Residuals:
## Min 1Q Median 3Q Max
## -548.29 -86.17 -10.77 47.12 413.76
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 169.55787 105.82045 1.602 0.14
## x 0.66947 0.04506 14.856 3.84e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 258.9 on 10 degrees of freedom
## Multiple R-squared: 0.9567, Adjusted R-squared: 0.9523
## F-statistic: 220.7 on 1 and 10 DF, p-value: 3.836e-08
Fungsi plot_ols() bertugas untuk membuat visualisasi
hasil regresi linier sederhana yang dihitung dari fungsi
simple_ols(). Fungsi ini menerima dua argumen: sebuah
data.frame yang memuat kolom x dan
y, serta sebuah model berupa list hasil dari
fungsi simple_ols(). Visualisasi akan menampilkan scatter
plot dari data serta garis regresi linier berdasarkan koefisien hasil
estimasi. Fungsi ini juga telah ditulis dengan dokumentasi
roxygen2, siap untuk di-export dalam package
simpleOLSkel1.
#' Plot Regresi Linier
#'
#' @param data data.frame berisi x dan y
#' @param model list dari simple_ols()
#' @export
plot_ols <- function(data, model) {
# Membuat scatter plot dari data x dan y
plot(data$x, data$y,
main = "Regresi Linier Manual", # Judul grafik
xlab = "X", # Label sumbu X
ylab = "Y", # Label sumbu Y
pch = 19, # Bentuk titik (bulat solid)
col = "black") # Warna titik
# Mengambil nilai koefisien dari model (hasil simple_ols)
beta0 <- model$coefficients["Intercept"] # Intercept (β₀)
beta1 <- model$coefficients["Slope"] # Slope (β₁)
# Menambahkan garis regresi ke plot dengan warna maroon dan ketebalan 2
abline(beta0, beta1, col = "maroon", lwd = 2)
}Regresi linier sederhana memberikan cara yang mudah namun efektif
untuk memahami hubungan antara dua variabel. Dengan bantuan simulasi dan
visualisasi, kita dapat melihat bagaimana parameter \(\beta_0\) dan \(\beta_1\) memengaruhi bentuk dan posisi
garis regresi. Fungsi dari paket OLSkelompok1 mempermudah
proses estimasi dan interpretasi model.