TL;DR
Uji regresi linear ngecek apakah satu variabel bisa dipakai buat memprediksi variabel lain, dan seberapa kuat pengaruhnya. Outputnya punya tiga bagian yang harus dibaca berurutan: R square buat proporsi keragaman yang terjelaskan, uji F buat kelayakan model secara keseluruhan, dan uji t buat tiap koefisien. Sebelum semua itu dipercaya, lima asumsi harus lolos, termasuk normalitas residual yang sering dikira normalitas variabel.
Uji regresi linear adalah prosedur buat ngecek apakah satu variabel bisa dipakai memprediksi variabel lain, sekaligus ngukur seberapa besar perubahannya.
Menjalankan ujinya gampang. SPSS butuh empat klik, Python butuh tiga baris.
Yang bikin skripsi kena revisi itu cara bacanya. Di bawah ini urutan asumsi yang wajib dicek, langkah ujinya, dan arti tiap baris output.
Uji regresi linear adalah metode statistik yang nyusun persamaan garis lurus buat memprediksi variabel terikat dari satu atau beberapa variabel bebas. Hasilnya berupa koefisien yang nunjukin berapa banyak variabel terikat berubah tiap satu satuan kenaikan variabel bebas. Uji statistiknya ngecek apakah koefisien itu beda dari nol secara nyata.
Bentuk persamaannya:
Y = a + bX + e
Y itu yang mau diprediksi, X itu prediktornya, a titik potong sumbu Y, b kemiringan garisnya, dan e sisa yang nggak kejelasin model.
Konsep dasarnya udah dibahas di regresi linear. Artikel ini fokus ke bagian ujinya.
Ada tiga lapis pengujian, dan ketiganya harus dibaca berurutan. Uji F ngecek kelayakan model secara keseluruhan. Uji t ngecek tiap koefisien satu per satu. R square ngukur seberapa besar keragaman variabel terikat yang kejelasin model. Ketiganya jawab pertanyaan berbeda.
| Bagian output | Pertanyaan yang dijawab | Cara baca |
|---|---|---|
| R square | Berapa persen keragaman Y yang kejelasin model? | 0 sampai 1, makin tinggi makin banyak yang kejelasin |
| Adjusted R square | Sama, tapi udah dihukum karena jumlah variabel | Dipakai kalau variabel bebasnya lebih dari satu |
| Uji F (ANOVA) | Modelnya layak nggak secara keseluruhan? | Sig di bawah 0,05 berarti model layak |
| Uji t (Coefficients) | Variabel ini ngaruh nggak secara sendiri? | Sig di bawah 0,05 berarti koefisiennya nyata |
| Beta terstandarisasi | Variabel mana yang paling kuat? | Bandingin nilai mutlaknya antar variabel |
Arti angka 0,05 dan cara nafsirin batasnya ada di glossary p-value.
Ada lima asumsi utama. Kalau salah satunya gagal, angka di output tetap keluar, tapi kesimpulannya bisa nyasar. Urutan pengecekannya: linearitas, normalitas residual, homoskedastisitas, bebas multikolinearitas, dan bebas autokorelasi.
Asumsi kedua yang paling sering salah dijalankan. Banyak mahasiswa nguji normalitas kolom X dan panik waktu hasilnya signifikan, padahal sebaran X boleh menceng.
Lima langkah, sama urutannya di SPSS maupun Python. Yang beda cuma tombolnya.
Sebelum ngitung apa pun, lihat bentuk hubungannya. Kalau titiknya melengkung, regresi linear bukan alat yang tepat.
Ini juga saat paling gampang buat ngeliat titik ekstrem yang bisa narik garis. Bahasan soal titik semacam ini ada di glossary outlier.
Di SPSS: buka Analyze, pilih Regression, lalu Linear. Masukin variabel terikat ke kotak Dependent dan variabel bebas ke kotak Independent.
Di Python, versi paling ringkas pakai scipy buat regresi satu variabel:
from scipy import stats
promo = [3.0, 4.5, 2.0, 6.5, 5.0, 8.0, 7.0, 4.0]
omzet = [59.4, 62.1, 54.8, 70.2, 64.9, 74.5, 71.8, 61.0]
hasil = stats.linregress(promo, omzet)
print("intercept:", round(hasil.intercept, 2))
print("slope:", round(hasil.slope, 2))
print("r squared:", round(hasil.rvalue ** 2, 3))
print("p-value:", round(hasil.pvalue, 5))
Daftar lengkap nilai yang dibalikin fungsi ini ada di dokumentasi scipy linregress.
Di SPSS, klik tombol Save, lalu centang Unstandardized pada Residuals dan Predicted Values. Dua kolom baru bakal muncul di data view.
Kolom inilah bahan buat ngecek asumsi 2 dan 3. Tanpa ini, pengecekan asumsinya cuma tebak-tebakan.
Jalanin Shapiro-Wilk ke kolom residual. Plot residual versus prediksi buat lihat homoskedastisitas.
Kalau variabel bebasnya lebih dari satu, minta VIF lewat tombol Statistics dan centang Collinearity diagnostics.
Urutannya: Model Summary, lalu tabel ANOVA, lalu tabel Coefficients. Jangan langsung lompat ke Sig di tabel terakhir.
Tiga tabel, tiga pertanyaan. Model Summary jawab seberapa besar yang kejelasin, ANOVA jawab apakah modelnya layak, dan Coefficients jawab arah serta besar pengaruh tiap variabel. Baca ketiganya berurutan, karena tabel bawah cuma masuk akal kalau tabel atas lolos.
Di sini ada R, R square, adjusted R square, dan standard error of the estimate.
R square 0,58 artinya 58 persen keragaman variabel terikat kejelasin model. Sisanya 42 persen dijelasin faktor yang nggak masuk model.
Adjusted R square selalu lebih kecil. Angka ini menghukum penambahan variabel yang nggak berguna, jadi pakai ini kalau variabel bebasnya lebih dari satu.
Baris yang dilihat cuma nilai F dan Sig. Kalau Sig di bawah 0,05, model kamu layak dipakai.
Kalau Sig di atas 0,05, berhenti di sini. Nggak ada gunanya nafsirin koefisien dari model yang secara keseluruhan nggak lolos.
Kolom B berisi koefisien dalam satuan asli. Ini yang kamu tulis di persamaan.
Kolom Beta berisi koefisien terstandarisasi. Angka ini nggak bersatuan, jadi bisa dipakai buat bandingin kekuatan antar variabel bebas.
Kolom t dan Sig ngetes apakah koefisiennya beda dari nol. Kolom Tolerance dan VIF buat cek multikolinearitas.
Dataset latihan toko_berkah di ngulikdata punya catatan mingguan selama 26 minggu. Variabel bebasnya biaya promo digital per minggu, variabel terikatnya omzet mingguan. Dua-duanya dalam juta rupiah.
Hasil modelnya:
omzet = 48,6 + 3,21 x promo
| Statistik | Nilai | Arti singkat |
|---|---|---|
| R square | 0,580 | 58 persen keragaman omzet kejelasin promo |
| Adjusted R square | 0,562 | Versi yang udah dihukum jumlah variabel |
| F (1, 24) | 33,1 | Model layak |
| Sig uji F | 0,000006 | Jauh di bawah 0,05 |
| Koefisien promo (B) | 3,21 | Tiap Rp 1 juta promo, omzet naik Rp 3,21 juta |
| t koefisien | 5,75 | Sig di bawah 0,05 |
Terjemahan bisnisnya: rata-rata tiap tambahan Rp 1 juta belanja promo dibarengi kenaikan omzet Rp 3,21 juta di minggu yang sama.
Sekarang bagian yang sering dilewat. Data promo di dataset ini cuma bergerak antara Rp 2 juta sampai Rp 9 juta per minggu.
Jadi persamaan itu cuma berlaku di rentang tersebut. Masukin angka Rp 50 juta ke rumus bakal ngasih ramalan Rp 209 juta, dan itu omong kosong. Nggak ada satu pun data yang mendukung rentang segitu.
Titik potong 48,6 juga bukan angka ajaib. Dia cuma nilai omzet waktu promo nol, dan di dataset ini nggak pernah ada minggu dengan promo nol. Angkanya jadi hasil perpanjangan garis, bukan pengamatan.
Terakhir, 42 persen keragaman omzet masih nggak kejelasin. Hari libur, cuaca, dan promo pesaing nggak masuk model. Itu ruang yang cukup besar buat salah tebak.
1. Nguji normalitas variabel, bukan residual. Yang punya asumsi normal itu sisa model. Sebaran X boleh menceng.
2. Ngejar R square tinggi dengan nambah variabel. R square selalu naik tiap variabel ditambah, walau variabelnya nggak nyambung. Pakai adjusted R square biar ketahuan.
3. Nafsirin koefisien padahal uji F gagal. Kalau model secara keseluruhan nggak lolos, koefisien per variabel nggak layak dibahas.
4. Ngeklaim sebab akibat. Regresi nunjukin pola hubungan. Buat klaim sebab akibat, kamu butuh desain eksperimen.
5. Meramal di luar rentang data. Garis regresi cuma valid di rentang nilai X yang kamu amati. Di luar itu, dia cuma perpanjangan garis tanpa bukti.
6. Bandingin koefisien B antar variabel dengan satuan berbeda. Koefisien jumlah karyawan dan koefisien biaya iklan nggak bisa diadu langsung. Pakai kolom Beta terstandarisasi.
7. Ngabaikan VIF di regresi berganda. Dua variabel yang isinya mirip bikin koefisien jadi liar dan tandanya bisa kebalik. Detailnya dibahas di regresi linear berganda.
Uji F ngetes model secara keseluruhan, apakah semua variabel bebas bareng-bareng punya pengaruh ke variabel terikat. Uji t ngetes satu koefisien per satu, apakah variabel itu punya kontribusi sendiri setelah variabel lain dikendalikan. Di regresi sederhana dengan satu variabel bebas, dua uji ini selalu ngasih kesimpulan sama, dan nilai F persis sama dengan t kuadrat.
Nggak ada patokan tunggal. Di data eksperimen laboratorium, R square 0,90 itu biasa. Di data perilaku manusia kayak survei kepuasan, 0,30 udah dianggap lumayan. Yang lebih penting: apakah koefisiennya masuk akal secara bisnis dan asumsinya lolos. R square tinggi dari model yang asumsinya berantakan itu nggak berguna.
Residualnya, yaitu selisih antara nilai asli dan nilai prediksi. Variabel bebas boleh sebarannya menceng, itu nggak melanggar asumsi apa pun. Banyak yang jalanin Shapiro-Wilk ke kolom X dan panik waktu hasilnya signifikan. Uji normalitas di regresi harusnya dijalankan ke kolom residual yang kamu simpan setelah model jalan.
Tergantung asumsi mana. Multikolinearitas tinggi dibenerin dengan ngeluarin salah satu variabel yang kembar. Heteroskedastisitas bisa diatasi pakai robust standard error atau transformasi logaritma pada variabel terikat. Residual nggak normal di sampel besar biasanya masih aman. Autokorelasi pada data runtun waktu butuh model deret waktu, bukan regresi biasa.
Nggak bisa sendirian. Regresi cuma nunjukin pola hubungan di data yang kamu punya. Buat klaim sebab akibat, kamu butuh desain yang ngendaliin faktor lain, misalnya eksperimen dengan penugasan acak. Tanpa itu, koefisien positif antara biaya promo dan omzet bisa aja muncul karena dua-duanya naik di bulan yang sama.
Urutannya nggak boleh dibalik. Scatter plot dulu, lalu model, lalu simpan residual, lalu cek lima asumsi, baru baca output dari Model Summary ke bawah.
Dua jebakan yang paling mahal: nguji normalitas di kolom yang salah, dan meramal di luar rentang data. Dua-duanya bikin kesimpulan kelihatan rapi padahal keliru.
Coba ambil satu pasang variabel dari datamu, jalanin regresinya, lalu simpan residualnya dan cek sebarannya. Kalau mau balik ke dasar hipotesis dulu, baca uji hipotesis.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Kolom datetime nyimpen tanggal, jam, hari, semuanya nempel jadi satu. Accessor .dt di pandas ngeluarin tiap bagian jadi kolom sendiri buat dianalisa.
Nama toko ketik campur huruf besar-kecil, spasi nyasar di ujung, atau kode produk nempel jadi satu. Accessor .str di pandas ngerapiin semua itu tanpa loop.
Model machine learning cuma ngerti angka, bukan teks kayak merah atau biru. get_dummies ngubah kolom kategori jadi kolom 0/1 dalam satu baris kode.