1 Pendahuluan

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

  • \(\beta_0\): Intersep atau konstanta
  • \(\beta_1\): Koefisien regresi (kemiringan garis)
  • \(\varepsilon\): Galat (error) yang diasumsikan berdistribusi normal dengan rata-rata nol

1.1 Bukti Kerangka Package: Fungsi simulate_ols_data()

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.

Plot Regresi Linier
Plot Regresi Linier

2 Simulasi Data & Estimasi Model

2.1 Simulasi Dataset

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

2.2 Bukti Kerangka Package: Fungsi simple_ols()

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
  )
}
Plot Regresi Linier
Plot Regresi Linier

2.3 Estimasi Model dengan 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
# Cetak nilai R-squared
cat("R-squared:", model1$r.squared, "\n")
## R-squared: 0.9566522

2.4 Perbandingan dengan lm()

model2 <- lm(y ~ x, data = data_bilfagi)
summary(model2)
## 
## 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

2.5 Bukti Kerangka Package: Fungsi plot_ols()

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)
}
Plot Regresi Linier
Plot Regresi Linier

2.6 Visualisasi Hasil Regresi

plot_ols(data = data_bilfagi, model = model1)

2.7 Contoh 1: Hubungan Positif

data_pos <- simulate_ols_data(n = 50, beta0 = 3, beta1 = 1.5, sigma = 1)
model_pos <- simple_ols(data_pos$x, data_pos$y)
plot_ols(data_pos, model_pos)

2.8 Contoh 2: Hubungan Negatif

data_neg <- simulate_ols_data(n = 100, beta0 = 10, beta1 = -2, sigma = 5)
model_neg <- simple_ols(data_neg$x, data_neg$y)
plot_ols(data_neg, model_neg)

3 Kesimpulan

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.

4 QR code