Korelasi bilang “jam belajar dan nilai naik bersama”; regresi melangkah lebih jauh: “setiap tambahan satu jam menambah nilai 4.9 poin”. Model linear mengubah hubungan menjadi angka yang bisa dipakai memprediksi, menganggarkan, dan merencanakan — inti dari analisis data bisnis. Chapter ini membangun model y = a + bx dari fondasi, menghitungnya dua cara, lalu mengaudit kualitasnya. Cakupan materinya:
- Model linear dan metode least squares
- Solusi lewat operator backslash
A\bdanpolyfit - Prediksi dengan
polyvalserta tafsir slope dan intercept - Kualitas fit: R² dan analisis residu
Model Linear dan Least Squares #
Model yang kita pasang berbentuk y = a + b·x: intercept a adalah level dasar, slope b adalah perubahan y per satu satuan x. Masalahnya, data nyata tidak jatuh tepat pada satu garis, jadi kita butuh kriteria “terbaik”. Metode least squares memilih garis yang meminimumkan jumlah kuadrat residu — selisih antara data dan prediksi, dijumlahkan dalam bentuk kuadratnya agar simpangan besar dihukum lebih berat.
Mekanismenya di MATLAB: bentuk matriks desain A = [1, x] (kolom pertama konstanta untuk intercept, kolom kedua variabel x) membuat sistem persamaan overdetermined — 8 baris data, 2 koefisien. Operator backslash A\b mendeteksi sistem seperti ini dan otomatis menyelesaikannya sebagai masalah least squares. Dataset kita: anggaran iklan bulanan sebuah toko versus unit terjual.
Solusi dengan Operator Backslash #
iklan = [1 2 3 4 5 6 7 8]; % ratusan ribu rupiah
jual = [52 59 66 70 76 82 85 90]; % unit terjual
n = numel(iklan);
A = [ones(n,1), iklan(:)];
b = A \ jual(:);
fprintf('intercept = %.4f\n', b(1));
fprintf('slope = %.4f\n', b(2));Output yang Dihasilkan:
intercept = 48.3929
slope = 5.3571Mari kita bedah baris-baris kode di atas:
- Baris 3 (
ones(n,1)): kolom satu menyalakan intercept — tanpa kolom ini, garis dipaksa melewati titik nol. - Baris 3 (
iklan(:)): operator(:)memaksa x menjadi kolom;jual(:)di baris berikutnya sama, karenaA\bmenuntut vektor kolom berdimensi cocok. - Baris 4 (
A \ jual(:)): matriks A berukuran 8×2 — lebih banyak persamaan daripada variabel; backslash menyelesaikan least squares tanpa kita merumuskannya.
polyfit dan polyval #
Jalur kedua: polyfit(x, y, 1) memasang polinomial derajat 1 — regresi linear — dan mengembalikan koefisien [slope, intercept] (urutan pangkat menurun, kebalikan dari kebiasaan y = a + bx). polyval mengevaluasi polinomial hasilnya pada x baru.
p = polyfit(iklan, jual, 1);
fprintf('polyfit : slope = %.4f, intercept = %.4f\n', p(1), p(2));
pred45 = polyval(p, 4.5);
pred10 = polyval(p, 10);
fprintf('prediksi iklan 4.5 -> %.4f unit\n', pred45);
fprintf('prediksi iklan 10 -> %.4f unit\n', pred10);Output yang Dihasilkan:
polyfit : slope = 5.3571, intercept = 48.3929
prediksi iklan 4.5 -> 72.5000 unit
prediksi iklan 10 -> 101.9643 unitMari kita bedah baris-baris kode di atas:
- Baris 1 (
polyfit(iklan, jual, 1)): derajat1= garis lurus; hasilnya persis koefisien backslash — dua jalur, satu definisi least squares. - Baris 3 (
polyval(p, 4.5)): x = 4.5 berada di antara data (1..8) — interpolasi; hasil 72.5 unit. - Baris 4 (
polyval(p, 10)): x = 10 di luar rentang data — ekstrapolasi; angka 101.96 hanya sah jika garis terus berlaku (lihat peringatan di akhir chapter).
Membaca Koefisien #
Angka koefisien baru berguna setelah diterjemahkan ke bahasa bisnis. Slope 5.3571 berarti setiap tambahan Rp100 ribu anggaran iklan dikaitkan dengan 5.36 unit penjualan tambahan; intercept 48.3929 adalah level penjualan saat iklan nol — di luar rentang data kita, jadi tafsirannya harus hati-hati.
| Koefisien | Nilai | Tafsir |
|---|---|---|
| slope | 5.3571 | +1 ratus ribu iklan → +5.36 unit terjual |
| intercept | 48.3929 | level dasar saat iklan = 0 (ekstrapolasi) |
Kualitas Fit: R² dan Residu #
Model yang belum diaudit bukan model. Dua alat auditnya: R² — proporsi variasi y yang dijelaskan model — dan residu — sisa galat per titik. Mekanismenya: R² = 1 − SSE/SST dengan SSE jumlah kuadrat residu dan SST variasi total data terhadap mean-nya; R² = 1 berarti prediksi sempurna.
yhat = polyval(p, iklan);
residu = jual - yhat;
SSE = sum(residu.^2);
SST = sum((jual - mean(jual)).^2);
fprintf('SSE = %.4f, SST = %.4f\n', SSE, SST);
fprintf('R^2 = 1 - SSE/SST = %.6f\n', 1 - SSE/SST);
fprintf('std residu = %.4f unit\n', std(residu));
for k = 1:n
fprintf('iklan %d: residu = %.4f\n', iklan(k), residu(k));
endOutput yang Dihasilkan:
SSE = 10.6429, SST = 1216.0000
R^2 = 1 - SSE/SST = 0.991248
std residu = 1.2330 unit
iklan 1: residu = -1.7500
iklan 2: residu = -0.1071
iklan 3: residu = 1.5357
iklan 4: residu = 0.1786
iklan 5: residu = 0.8214
iklan 6: residu = 1.4643
iklan 7: residu = -0.8929
iklan 8: residu = -1.2500Mari kita bedah baris-baris kode di atas:
- Baris 1 (
polyval(p, iklan)): prediksi model pada setiap titik data — nilai di garis, bukan data aslinya. - Baris 2 (
jual - yhat): residu per titik; tanda positif berarti data di atas garis. - Baris 5-6 (
1 - SSE/SST): R² = 0.9912 — 99.1% variasi penjualan terjelaskan oleh anggaran iklan; sisanya 0.9% masuk residu. - Hasil loop: residu bergantian tanda tanpa pola sistematis — indikasi garis lurus adalah bentuk yang memadai; bila residu berpola lengkung, model perlu derajat lebih tinggi.
std(residu): 1.23 unit — galat tipikal prediksi; berguna sebagai “margin of error” bisnis.
Bahaya Ekstrapolasi #
Prediksi x = 10 (101.96 unit) terlihat meyakinkan karena angkanya presisi — padahal fondasinya rapuh. Model dilatih pada data iklan 1..8; di luar rentang itu, dunia nyata sering berubah kelas: audiens iklan jenuh, pasar menyaturasi, pesaing merespons.
Ringkasan #
Regresi linear memasang garis y = a + bx lewat least squares: operator backslash pada matriks desain dan polyfit menghasilkan koefisien yang sama, polyval mengevaluasi prediksi. Slope dan intercept diterjemahkan ke bahasa bisnis, kualitas diaudit lewat R² = 1 − SSE/SST dan pola residu. Ekstrapolasi di luar rentang data adalah area bahaya yang harus diakui. Model linear hanya permulaan — ketika hubungan berbelok atau banyak variabel ikut bermain, kita membutuhkan keluarga model yang lebih kaya.