Praktikum Pemrograman Statistika

Learning by Resampling: Bootstrap & Jackknife Made Practical

Author

Muhammad Yusran

Published

November 25, 2025

Pendahuluan

Dalam banyak situasi analisis data, asumsi mengenai bentuk sebaran populasi tidak selalu mudah dipenuhi. Data berukuran kecil, distribusi yang tidak diketahui, atau adanya pencilan dapat membuat metode analitik berbasis distribusi parametrik menjadi kurang tepat. Kondisi semacam ini menuntut pendekatan yang lebih fleksibel agar pendugaan parameter tetap dapat dilakukan secara andal tanpa bergantung pada asumsi sebaran tertentu.

Metode resampling muncul sebagai solusi praktis untuk permasalahan tersebut. Dengan membangun kembali distribusi empiris statistik yang diinginkan melalui pengambilan sampel ulang dari data yang tersedia, resampling memungkinkan kita memperoleh informasi tentang sifat-sifat estimator seperti bias, ragam, standard error, dan selang kepercayaan. Dua pendekatan resampling yang paling banyak digunakan adalah Bootstrap dan Jackknife. Bootstrap menggunakan pengambilan sampel dengan pengembalian untuk menghasilkan ribuan versi sampel baru, sedangkan Jackknife memanfaatkan pendekatan leave-one-out untuk mengukur sensitivitas estimator terhadap setiap observasi.

Melalui pendekatan ini, analisis tidak lagi bergantung pada asumsi bentuk distribusi tertentu, melainkan pada informasi yang terkandung dalam data itu sendiri. Oleh karena itu, Bootstrap dan Jackknife menjadi alat yang sangat penting dalam statistika modern, terutama ketika ukuran sampel terbatas atau distribusi populasi tidak diketahui. Praktikum ini akan memperkenalkan penerapan kedua metode tersebut dalam R untuk mendukung pendugaan parameter secara lebih fleksibel dan robust.

Konsep Dasar Resampling

Resampling merupakan pendekatan nonparametrik yang memanfaatkan data contoh sebagai basis utama untuk membangun kembali distribusi suatu statistik. Alih-alih mengandalkan asumsi bentuk distribusi populasi, metode ini bekerja dengan mengambil sampel ulang (resample) dari data yang tersedia sehingga menghasilkan banyak versi sampel yang menyerupai karakteristik populasi sebenarnya. Dari kumpulan sampel ulang tersebut, kita dapat mempelajari sifat-sifat estimator seperti bias, ragam, standard error, maupun selang kepercayaan.

Dua metode resampling yang paling populer adalah Bootstrap dan Jackknife. Keduanya memiliki tujuan serupa, yaitu memperoleh distribusi empiris dari suatu statistik, tetapi mekanisme kerja dan sensitivitasnya berbeda.

Bootstrap

Bootstrap merupakan metode resampling yang diperkenalkan oleh Bradley Efron (1979) untuk memperoleh gambaran empiris mengenai distribusi suatu statistik ketika distribusi populasi tidak diketahui. Metode ini berangkat dari prinsip bahwa sampel yang tersedia dapat diperlakukan sebagai representasi terbaik dari populasi (pseudo-population), sehingga dengan melakukan resampling terhadap sampel tersebut, kita dapat mengevaluasi ketidakpastian dari estimator tanpa bergantung pada asumsi bentuk distribusi tertentu.

Misalkan \(x = (x_1, x_2, \ldots, x_n)\) adalah sampel berukuran \(n\) yang digunakan untuk menduga suatu parameter populasi \(\theta\) melalui estimator \(\hat{\theta}\). Bootstrap mempelajari sifat estimator tersebut melalui pembentukan distribusi resampling.

Prosedur Dasar Bootstrap

  1. Bangkitkan sampel bootstrap

    Bentuk sampel baru $ x^{}$ berukuran sama dengan \(n\) melalui penarikan sampel dengan pengembalian (sampling with replacement*) dari sampel asli.
    Ulangi proses ini sebanyak \(B\) kali sehingga diperoleh:

    \[ x^{*(1)},\; x^{*(2)},\; \ldots,\; x^{*(B)}. \]

  2. Hitung penduga untuk setiap sampel bootstrap

    Untuk setiap sampel bootstrap \(x^{*(b)}\), hitung estimator:

    \[ \hat{\theta}^{*}_b = \hat{\theta}\big(x^{*(b)}\big), \quad b = 1,2,\ldots,B. \]

    Kumpulan nilai ini membentuk distribusi bootstrap:

    \[ \tilde{\theta}^{*} = \big( \hat{\theta}^{*}_1,\; \hat{\theta}^{*}_2,\; \ldots,\; \hat{\theta}^{*}_B \big). \]

  3. Hitung rata-rata dan ragam bootstrap

    \[ \bar{\theta}^{*} = \frac{1}{B} \sum_{b=1}^B \hat{\theta}^{*}_b, \]

    \[ V(\tilde{\theta}^{*}) = \frac{1}{B-1} \sum_{b=1}^B \left( \hat{\theta}^{*}_b - \bar{\theta}^{*} \right)^2. \]

  4. Penduga bootstrap dan ragamnya

    Penduga bootstrap untuk parameter adalah:

    \[ \hat{\theta}^{(B)} = \bar{\theta}^{*}, \]

    sedangkan ragam penduga bootstrap adalah:

    \[ V\big( \hat{\theta}^{(B)} \big) = V(\tilde{\theta}^{*}). \]

Distribusi bootstrap \(\tilde{\theta}^{*}\) inilah yang menjadi dasar untuk mengevaluasi standard error, bias, dan selang kepercayaan dari estimator.

Selang Kepercayaan Bootstrap

Bootstrap menyediakan beberapa pendekatan untuk membangun selang kepercayaan. Pendekatan yang paling umum digunakan adalah Bootstrap Percentile Confidence Interval.

Percentile Bootstrap Interval

Untuk tingkat kepercayaan 95%, selangnya diberikan oleh:

\[ \big[\, \theta^{*}_{(0.025)},\;\theta^{*}_{(0.975)} \,\big], \]

di mana:

  • \(\theta^{*}_{(0.025)}\) adalah persentil ke–2.5% dari distribusi bootstrap
  • \(\theta^{*}_{(0.975)}\) adalah persentil ke–97.5%

Metode ini bersifat nonparametrik dan tidak memerlukan asumsi normalitas.

Normal Approximation Interval

Jika distribusi bootstrap mendekati normal, selangnya dapat ditulis sebagai:

\[ \hat{\theta} \pm z_{\alpha/2}\,\widehat{SE}_{\text{boot}}. \]

Pendekatan ini tidak disarankan bila distribusi tidak simetris.

Basic Bootstrap Interval

Selang kepercayaan diberikan oleh:

\[ \left[\, 2\hat{\theta} - \theta^{*}_{(0.975)},\;\; 2\hat{\theta} - \theta^{*}_{(0.025)} \right]. \]

Selang kepercayaan bootstrap mencerminkan bagaimana estimator berubah ketika data di-perturbasi melalui resampling. Jika distribusi bootstrap sempit dan stabil, SE kecil dan CI menjadi sempit; jika distribusinya lebar, maka ketidakpastian estimator lebih besar dan CI menjadi lebih lebar. Pendekatan ini memungkinkan pendugaan yang fleksibel bahkan ketika distribusi populasi tidak diketahui.

Implementasi di R

Bagian ini menunjukkan bagaimana prosedur bootstrap dapat diimplementasikan menggunakan bahasa R. Contoh yang digunakan adalah data univariat berukuran kecil, sesuai dengan banyak ilustrasi resampling klasik.

x <- c(
  8.26, 6.33, 10.40, 5.27, 5.35, 5.61, 6.12, 6.19, 5.20, 7.01,
  8.74, 7.78, 7.02, 6.00, 6.50, 5.80, 5.12, 7.41, 6.52, 6.21,
  12.28, 5.60, 5.38, 6.60, 8.74
)

Bootstrap untuk Estimasi Rata-Rata

Prosedur bootstrap dilakukan dengan:

  1. Mengambil sampel ulang dengan pengembalian sebanyak \(B\) kali.
  2. Menghitung rata-rata dari masing-masing sampel bootstrap.
  3. Membentuk distribusi bootstrap penduga rata-rata.
  4. Menghitung standard error, bias, dan selang kepercayaan.
set.seed(123)

x <- as.matrix(x)
n <- nrow(x)
B <- 5000

boot_mean <- numeric(B)

for (b in 1:B) {
  samp <- sample(x, n, replace = TRUE)
  boot_mean[b] <- mean(samp)
}

# Estimasi asli
mean_original <- mean(x)

# Standard Error bootstrap
se_boot_mean <- sqrt(var(boot_mean))

# Bias bootstrap
bias_boot_mean <- mean(boot_mean) - mean_original

# Selang Kepercayaan Percentile 95%
ci_boot_mean <- quantile(boot_mean, c(0.025, 0.975))

mean_original
[1] 6.8576
se_boot_mean
[1] 0.3357513
bias_boot_mean
[1] -0.00256104
ci_boot_mean
   2.5%   97.5% 
6.25120 7.56122 

Bootstrap untuk Estimasi Median

Median bersifat lebih robust terhadap pencilan dan sering menghasilkan distribusi bootstrap yang berbeda dari mean. Prosedurnya sama seperti sebelumnya, tetapi statistiknya adalah median.

set.seed(123)

boot_median <- numeric(B)

for (b in 1:B) {
  samp <- sample(x, n, replace = TRUE)
  boot_median[b] <- median(samp)
}

median_original <- median(x)

# Standard error median
se_boot_median <- sqrt(var(boot_median))

# Selang Kepercayaan Percentile 95%
ci_boot_median <- quantile(boot_median, c(0.025, 0.975))

median_original
[1] 6.33
se_boot_median
[1] 0.2812818
ci_boot_median
 2.5% 97.5% 
 5.80  7.02 

Visualisasi Distribusi Bootstrap

Distribusi hasil bootstrap dapat divisualisasikan untuk memahami bentuk, sebaran, dan simetri penduga.

# Distribusi Bootstrap Mean
library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.4.3
df_boot <- data.frame(boot_mean = boot_mean)

ggplot(df_boot, aes(x = boot_mean)) +
  geom_histogram(bins = 40, color = "white") +
  geom_vline(xintercept = mean_original, linewidth = 1) +
  labs(
    title = "Distribusi Bootstrap untuk Rata-Rata",
    x = "Bootstrap Mean",
    y = "Frekuensi"
  )

Jackknife: Konsep Dasar

Jackknife merupakan metode resampling yang diperkenalkan oleh Quenouille (1949) dan dikembangkan lebih lanjut oleh Tukey (1958). Berbeda dengan bootstrap yang menggunakan penarikan sampel dengan pengembalian, jackknife menggunakan pendekatan leave-one-out, yaitu menghilangkan satu observasi dari sampel pada setiap iterasi untuk mengevaluasi sensitivitas suatu estimator.

Misalkan diberikan sampel berukuran \(n\):

\[ x = (x_1, x_2, \ldots, x_n) \]

dan sebuah estimator untuk parameter populasi \(\theta\), yaitu \(\hat{\theta} = \hat{\theta}(x)\).

Prosedur Dasar Jackknife

  1. Bangkitkan sampel leave-one-out

    Untuk setiap observasi ke-\(i\), bentuk sampel jackknife:

    \[ x_{(i)} = (x_1, \ldots, x_{i-1}, x_{i+1}, \ldots, x_n) \]

    yang memiliki ukuran \(n-1\).

  2. Hitung estimator leave-one-out

    Untuk setiap sampel jackknife, hitung:

    \[ \hat{\theta}_{(i)} = \hat{\theta}(x_{(i)}), \quad i = 1,2,\ldots,n. \]

    Kumpulan nilai ini membentuk distribusi jackknife:

    \[ \tilde{\theta}_{\text{jack}} = \left( \hat{\theta}_{(1)}, \hat{\theta}_{(2)}, \ldots, \hat{\theta}_{(n)} \right). \]

  3. Hitung penduga jackknife

    Rata-rata dari estimator leave-one-out adalah:

    \[ \bar{\theta}_{\text{jack}} = \frac{1}{n} \sum_{i=1}^n \hat{\theta}_{(i)}. \]

    Penduga jackknife untuk parameter adalah:

    \[ \hat{\theta}_{\text{jack}} = n \hat{\theta} - (n-1)\,\bar{\theta}_{\text{jack}}. \]

  4. Pendugaan bias

    Bias estimator dapat diperkirakan melalui:

    \[ \widehat{\text{Bias}}_{\text{jack}} = (n-1)\left( \bar{\theta}_{\text{jack}} - \hat{\theta} \right). \]

  5. Pendugaan ragam dan standard error

    Ragam jackknife didefinisikan sebagai:

    \[ V_{\text{jack}} = \frac{n-1}{n} \sum_{i=1}^n \left( \hat{\theta}_{(i)} - \bar{\theta}_{\text{jack}} \right)^2. \]

    sehingga standard error adalah:

    \[ SE_{\text{jack}} = \sqrt{V_{\text{jack}}}. \]

Pseudo-Values

Jackknife sering menggunakan pseudo-values, didefinisikan untuk setiap \(i\):

\[ \psi_i = n\hat{\theta} - (n-1)\hat{\theta}_{(i)}. \]

Rata-rata pseudo-values merupakan penduga jackknife:

\[ \hat{\theta}_{\text{jack}} = \frac{1}{n} \sum_{i=1}^n \psi_i. \]

Ragam pseudo-values diberikan oleh:

\[ V(\hat{\theta}_{\text{jack}}) = \frac{1}{n(n-1)} \sum_{i=1}^n (\psi_i - \bar{\psi})^2, \]

dengan \(\bar{\psi} = \frac{1}{n} \sum_{i=1}^n \psi_i\).

Selang Kepercayaan Jackknife

Selang kepercayaan dapat dibentuk menggunakan pseudo-values. Untuk tingkat kepercayaan 95%, selangnya adalah:

\[ \hat{\theta}_{\text{jack}} \pm t_{0.975, \, n-1}\,\sqrt{V(\hat{\theta}_{\text{jack}})}. \]

Metode ini bekerja dengan baik untuk estimator yang halus (smooth estimators) dan memberikan pendekatan nonparametrik terhadap pendugaan bias dan ketidakpastian tanpa memerlukan resampling sebanyak bootstrap.

Implementasi Jackknife di R

Bagian ini menunjukkan bagaimana metode jackknife dapat diterapkan menggunakan bahasa R untuk menduga bias, standard error, dan penduga parameter menggunakan pendekatan leave-one-out. Contoh berikut menggunakan dataset yang sama seperti pada bagian bootstrap agar hasil dapat dibandingkan.

x <- c(
  8.26, 6.33, 10.40, 5.27, 5.35, 5.61, 6.12, 6.19, 5.20, 7.01,
  8.74, 7.78, 7.02, 6.00, 6.50, 5.80, 5.12, 7.41, 6.52, 6.21,
  12.28, 5.60, 5.38, 6.60, 8.74
)

Jackknife untuk Estimasi Median

Jackknife sangat sering digunakan untuk median karena median tidak memiliki bentuk varian analitik sederhana. Pendekatan leave-one-out memberikan cara sistematis untuk mengukur sensitivitas median terhadap setiap observasi.

x <- as.matrix(x)
n <- nrow(x)

# Estimasi asli
theta_hat <- median(x)

# Vektor untuk menyimpan nilai leave-one-out
theta_jack <- numeric(n)

# Hitung estimator jackknife untuk tiap penghilangan satu observasi
for (i in 1:n) {
  theta_jack[i] <- median(x[-i])
}

# Rata-rata estimator leave-one-out
theta_jack_bar <- mean(theta_jack)

# Penduga Jackknife
theta_jack_est <- n * theta_hat - (n - 1) * theta_jack_bar

# Bias Jackknife
bias_jack <- (n - 1) * (theta_jack_bar - theta_hat)

# Standard Error Jackknife
se_jack <- sqrt((n - 1) * mean((theta_jack - theta_jack_bar)^2))

theta_hat
[1] 6.33
theta_jack_est
[1] 6.018
bias_jack
[1] 0.312
se_jack
[1] 0.3482068

Jackknife Menggunakan Pseudo-Values

Pseudo-values memberikan cara alternatif untuk menghitung penduga jackknife, varians, dan selang kepercayaan.

pseudo <- numeric(n)

for (i in 1:n) {
  pseudo[i] <- n * theta_hat - (n - 1) * theta_jack[i]
}

# Penduga Jackknife = rata-rata pseudo-values
theta_jack_pseudo <- mean(pseudo)

# Ragam pseudo-values
var_pseudo <- var(pseudo)

# Ragam penduga jackknife
var_theta_jack <- var_pseudo / n

# Selang Kepercayaan 95%
lower_ci <- theta_jack_pseudo - qt(0.975, df = n - 1) * sqrt(var_theta_jack)
upper_ci <- theta_jack_pseudo + qt(0.975, df = n - 1) * sqrt(var_theta_jack)

theta_jack_pseudo
[1] 6.018
var_theta_jack
[1] 0.121248
c(lower_ci, upper_ci)
[1] 5.299336 6.736664

Visualisasi Estimator Leave-One-Out

Visualisasi sederhana berikut dapat membantu mengamati seberapa sensitif median terhadap setiap observasi.

df_jack <- data.frame(
  index = 1:n,
  theta_jack = theta_jack
)

ggplot(df_jack, aes(x = index, y = theta_jack)) +
  geom_point(size = 2) +
  geom_hline(yintercept = theta_hat, linewidth = 1.1) +
  labs(
    title = "Nilai Estimator Leave-One-Out (Jackknife Median)",
    x = "Observasi yang Dihilangkan",
    y = "Median Leave-One-Out"
  )

Jackknife untuk Estimasi Mean

Berbeda dengan median, mean adalah estimator yang smooth, sehingga jackknife sangat efisien digunakan untuk menduga bias, ragam, dan standard error mean.

x <- as.matrix(x)
n <- nrow(x)

# Estimasi asli
theta_hat <- mean(x)

# Vektor leave-one-out
theta_jack <- numeric(n)

for (i in 1:n) {
  theta_jack[i] <- mean(x[-i])
}

# Rata-rata estimator leave-one-out
theta_jack_bar <- mean(theta_jack)

# Estimator Jackknife
theta_jack_est <- n * theta_hat - (n - 1) * theta_jack_bar

# Bias Jackknife
bias_jack <- (n - 1) * (theta_jack_bar - theta_hat)

# Standard Error Jackknife
se_jack <- sqrt((n - 1) * mean((theta_jack - theta_jack_bar)^2))

theta_hat
[1] 6.8576
theta_jack_est
[1] 6.8576
bias_jack
[1] 0
se_jack
[1] 0.3462693

Pseudo-values juga dapat digunakan untuk mean:

pseudo <- numeric(n)

for (i in 1:n) {
  pseudo[i] <- n * theta_hat - (n - 1) * theta_jack[i]
}

theta_jack_pseudo <- mean(pseudo)
var_theta_jack <- var(pseudo) / n

lower_ci <- theta_jack_pseudo - qt(0.975, df=n-1) * sqrt(var_theta_jack)
upper_ci <- theta_jack_pseudo + qt(0.975, df=n-1) * sqrt(var_theta_jack)

theta_jack_pseudo
[1] 6.8576
c(lower_ci, upper_ci)
[1] 6.142935 7.572265

Cross Validation (CV)

Cross Validation (CV) merupakan pendekatan resampling yang digunakan untuk menilai kemampuan generalisasi model prediksi. Berbeda dengan bootstrap dan jackknife yang fokus pada pendugaan karakteristik statistik, CV berfokus pada evaluasi performa model ketika dihadapkan pada data baru.

CV bekerja dengan mempartisi data menjadi beberapa subset (fold), kemudian membangun model menggunakan sebagian data (training set) dan mengevaluasinya pada bagian lain (validation set). Proses ini diulang sehingga semua observasi berperan sebagai data uji.

Tujuan utama CV adalah memperoleh estimasi yang stabil untuk prediction error.

K-Fold Cross Validation

K-Fold CV membagi data ke dalam \(k\) subset berukuran hampir sama (fold). Prosedurnya:

  1. Partisi data menjadi \(k\) fold: \[ D = D_1, D_2, \ldots, D_k. \]

  2. Untuk setiap fold ke-\(j\):

    • Gunakan \(D_j\) sebagai validation set,
    • Gunakan gabungan fold lainnya sebagai training set,
    • Bangun model dari training set dan prediksi data validation set.
  3. Hitung galat prediksi untuk setiap fold.

  4. Rata-rata galat prediksi merupakan k-fold CV error: \[ CV_k = \frac{1}{k} \sum_{j=1}^k \frac{1}{|D_j|} \sum_{i \in D_j} (y_i - \hat{y}_i)^2. \]

Leave-One-Out Cross Validation (LOOCV)

LOOCV adalah kasus khusus dari k-fold CV dengan \(k = n\). Setiap fold hanya terdiri dari satu observasi.

Prosedur LOOCV:

  1. Hilangkan observasi ke-\(i\).
  2. Bangun model dari \(n - 1\) observasi lainnya.
  3. Prediksi nilai observasi yang dihilangkan.
  4. Ulangi untuk semua observasi.

LOOCV error diberikan oleh: \[ CV_{\text{LOO}} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_{(i)})^2. \]

Keunggulan LOOCV:

  • Memanfaatkan hampir seluruh data untuk training,
  • Tidak membutuhkan partisi acak,
  • Bias rendah.

Kekurangan:

  • Komputasi mahal untuk model kompleks,
  • Varians error tinggi,
  • Sensitif terhadap outlier.

Implementasi K-Fold CV di R

Untuk ilustrasi metode, digunakan dataset ironslag yang berasal dari package DAAG di R. Dataset ironslag berisi data hasil percobaan mengenai hubungan antara:

  • Chemical composition suatu bahan (variabel: chemical)
  • Magnetic field intensity yang dihasilkan (variabel: magnetic)

Data ini digunakan untuk mengevaluasi model prediksi, bukan untuk inferensi. Karena itu, dataset ini sangat cocok untuk menunjukkan perbedaan performa model lewat teknik resampling seperti CV.

library(DAAG)
Warning: package 'DAAG' was built under R version 4.4.3
data(ironslag)

set.seed(123)

mag <- ironslag$magnetic
chem <- ironslag$chemical

n <- length(mag)
k <- 10

folds <- sample(rep(1:k, length.out = n))

cv1 <- cv2 <- cv3 <- cv4 <- numeric(k)

for (j in 1:k) {
  test_idx  <- which(folds == j)
  train_idx <- setdiff(1:n, test_idx)

  y  <- mag[train_idx]
  x  <- chem[train_idx]

  yt <- mag[test_idx]
  xt <- chem[test_idx]

  # Linear
  M1 <- lm(y ~ x)
  pred1 <- M1$coef[1] + M1$coef[2] * xt
  cv1[j] <- mean((yt - pred1)^2)

  # Quadratic
  M2 <- lm(y ~ x + I(x^2))
  pred2 <- M2$coef[1] + M2$coef[2] * xt + M2$coef[3] * xt^2
  cv2[j] <- mean((yt - pred2)^2)

  # Exponential
  M3 <- lm(log(y) ~ x)
  pred3 <- exp(M3$coef[1] + M3$coef[2] * xt)
  cv3[j] <- mean((yt - pred3)^2)

  # Log-Log
  M4 <- lm(log(y) ~ log(x))
  pred4 <- exp(M4$coef[1] + M4$coef[2] * log(xt))
  cv4[j] <- mean((yt - pred4)^2)
}

c(
  linear     = mean(cv1),
  quadratic  = mean(cv2),
  exponential = mean(cv3),
  loglog     = mean(cv4)
)
     linear   quadratic exponential      loglog 
   20.21033    17.78244    19.09567    21.46440 

Implementasi LOO-CV di R

n <- length(mag)

e1 <- e2 <- e3 <- e4 <- numeric(n)

for (i in 1:n) {
  y  <- mag[-i]
  x  <- chem[-i]

  yt <- mag[i]
  xt <- chem[i]

  # Linear
  M1 <- lm(y ~ x)
  yhat1 <- M1$coef[1] + M1$coef[2] * xt
  e1[i] <- yt - yhat1

  # Quadratic
  M2 <- lm(y ~ x + I(x^2))
  yhat2 <- M2$coef[1] + M2$coef[2] * xt + M2$coef[3] * xt^2
  e2[i] <- yt - yhat2

  # Exponential
  M3 <- lm(log(y) ~ x)
  yhat3 <- exp(M3$coef[1] + M3$coef[2] * xt)
  e3[i] <- yt - yhat3

  # Log-Log
  M4 <- lm(log(y) ~ log(x))
  yhat4 <- exp(M4$coef[1] + M4$coef[2] * log(xt))
  e4[i] <- yt - yhat4
}

c(
  linear     = mean(e1^2),
  quadratic  = mean(e2^2),
  exponential = mean(e3^2),
  loglog     = mean(e4^2)
)
     linear   quadratic exponential      loglog 
   19.55644    17.85248    18.44188    20.45424 

Perbandingan K-Fold CV vs LOO-CV

Metode Kelebihan Kekurangan Cocok Untuk
K-Fold CV Komputasi ringan, varians rendah Bias sedikit meningkat Dataset kecil–menengah
LOOCV Bias rendah, tidak butuh partisi acak Varians tinggi, komputasi mahal Dataset kecil, model sederhana
  • CV fokus pada prediction error, berbeda dengan bootstrap/jackknife yang fokus pada distribusi estimator.
  • k-fold CV (k = 10) adalah standar yang paling umum digunakan untuk evaluasi model modern.
  • LOO-CV ideal untuk dataset kecil.
  • K-Fold CV dan LOO-CV mengurangi risiko overfitting dengan menguji model pada data yang tidak pernah dilihat saat pelatihan.

Muhammad Yusran
Program Studi Magister Statistika dan Sains Data
Sekolah Sains Data, Matematika, dan Informatika
IPB University

Email: muhammadyusran@apps.ipb.ac.id
LinkedIn: Muhammad Yusran
Instagram: mhammad.yusran_