Kursus

Metode regresi digunakan di berbagai industri untuk memahami variabel mana yang memengaruhi suatu topik yang diminati.
Misalnya, ekonom dapat menggunakannya untuk menganalisis hubungan antara pengeluaran konsumen dan pertumbuhan Produk Domestik Bruto (PDB). Pejabat kesehatan masyarakat mungkin ingin memahami biaya per individu berdasarkan informasi historisnya. Pada kedua kasus, fokusnya bukan memprediksi skenario individual, melainkan memperoleh gambaran hubungan secara keseluruhan.
Dalam artikel ini, kita akan mulai dengan memberikan pemahaman umum tentang regresi. Lalu, kita akan menjelaskan apa yang membedakan regresi linier sederhana dan berganda sebelum membahas implementasi teknis dan menyediakan alat untuk membantu Anda memahami serta menafsirkan hasil regresi.
Apa Itu Regresi Linier Berganda?
Mari pahami dulu apa itu regresi linier sederhana sebelum membahas regresi linier berganda, yang pada dasarnya merupakan perluasan dari regresi linier sederhana.
Regresi linier sederhana vs. regresi linier berganda
Regresi linier sederhana bertujuan memodelkan hubungan antara besaran satu variabel independen X dan variabel dependen Y dengan mencoba mengestimasi secara tepat seberapa besar Y akan berubah ketika X berubah sejumlah tertentu.
-
Variabel independen
X, juga disebut prediktor, adalah variabel yang digunakan untuk membuat prediksi. -
Variabel dependen
Y, juga dikenal sebagai respons, adalah variabel yang ingin kita prediksi.
Aspek “linier” dari regresi linier adalah bahwa kita mencoba memprediksi Y dari X menggunakan persamaan “linier” berikut.
Y = b0 + b1X
-
b0adalah intersep garis regresi, yang sesuai dengan nilai prediksi ketikaXbernilai nol. -
b1adalah kemiringan (slope) garis regresi.
Lalu, bagaimana dengan regresi linier berganda?
Ini adalah penggunaan regresi linier dengan banyak variabel, dan persamaannya adalah:
Y = b0 + b1X1 + b2X2 + b3X3 + … + bnXn + e
-
Ydanb0sama seperti pada model regresi linier sederhana. -
b1X1merepresentasikan koefisien regresi (b1) pada variabel independen pertama (X1). Analisis yang sama berlaku untuk semua koefisien regresi dan variabel lainnya. -
eadalah galat model (residual), yang mendefinisikan seberapa besar variasi yang diperkenalkan ke dalam model saat mengestimasiY.
Kita mungkin tidak selalu mendapatkan garis lurus untuk kasus regresi berganda. Namun, kita dapat mengendalikan bentuk garis dengan menyesuaikan model yang lebih tepat.
Berikut beberapa elemen kunci yang dihitung oleh regresi linier berganda untuk menemukan garis terbaik untuk setiap prediktor.
- Koefisien taksiran untuk setiap prediktor.
- R-kuadrat model, yang menunjukkan proporsi varians yang dijelaskan oleh model, dan mengukur kekuatan hubungan antara model dan variabel dependen Y pada skala praktis 0 hingga 100%.
- p-value dan t-statistik untuk setiap koefisien regresi dalam model. Kedua metrik ini dianggap saling mencerminkan dan mengukur sejauh mana suatu koefisien signifikan secara statistik. Semakin tinggi t-statistik (yang disertai p-value mendekati 0), semakin signifikan prediktor tersebut, artinya prediktor ini sebaiknya dipertahankan dalam model. Sebaliknya, t-statistik yang sangat rendah (p-value lebih tinggi) berarti prediktor tersebut sebaiknya dihapus.
Asumsi Regresi Linier Berganda
Aspek penting saat membangun model regresi linier berganda adalah memastikan asumsi-asumsi kunci berikut terpenuhi.
- Nilai residual berdistribusi normal. Ini dapat diperiksa dengan menggunakan plot probabilitas normal atau histogram.
- Harus ada hubungan linier antara variabel dependen dan independen. Ini dapat ditunjukkan oleh scatterplot yang menampilkan hubungan linier atau kurvilinier.
- Kemudian, multikolinearitas adalah asumsi lain, yang berarti variabel independen tidak berkorelasi tinggi satu sama lain. Multikolinearitas menyulitkan identifikasi variabel mana yang lebih baik menjelaskan variabel dependen. Asumsi ini diverifikasi dengan menghitung matriks korelasi bivariat Pearson di antara semua variabel independen. Jika tidak ada kolinearitas dalam data, maka semua nilainya harus kurang dari 0,8.
- Homoskedastisitas mengasumsikan bahwa varians galat residual serupa di seluruh nilai setiap variabel independen. Salah satu cara memeriksanya adalah melalui plot nilai prediksi terhadap nilai residual yang distandardisasi untuk melihat apakah titik-titik tersebar merata di seluruh nilai variabel independen.
Pada bagian selanjutnya, kita akan membahas beberapa asumsi ini.
Panduan Langkah demi Langkah Regresi Linier Berganda di R
Pada bagian ini, kita akan membahas implementasi teknis model regresi linier berganda menggunakan bahasa pemrograman R.
Kita akan menggunakan set data customer churn dari workspace DataCamp untuk mengestimasi nilai pelanggan.
Apa yang dimaksud dengan nilai pelanggan? Secara sederhana, ini menentukan seberapa bernilai suatu produk atau layanan bagi pelanggan, dan kita dapat menghitungnya sebagai berikut:
Customer Value = Benefit — Cost. Di mana Benefit dan Cost masing-masing adalah manfaat dan biaya dari suatu produk atau layanan.
Nilai ini lebih tinggi jika perusahaan dapat menawarkan manfaat lebih besar dan biaya lebih rendah kepada konsumen, atau idealnya, kombinasi keduanya.
Analisis ini dapat membantu bisnis mengidentifikasi peluang target yang paling menjanjikan atau tindakan terbaik berikutnya berdasarkan nilai pelanggan tertentu.
Eksplorasi data cepat
Mari melihat sekilas set data sehingga kita dapat menerapkan prapemrosesan yang relevan sebelum menyesuaikan model.
churn_data = read_csv('data/customer_churn.csv', show_col_types = FALSE)
# Look at the first 6 observations
head(churn_data)
# Check the dimension
dim(churn_data)

Enam baris pertama data (Animasi oleh Penulis)
Dari hasil sebelumnya, kita dapat melihat bahwa set data memiliki 3150 observasi dan 14 kolom.
Namun, berdasarkan pernyataan masalah, kita tidak memerlukan kolom churn karena kita sekarang menangani masalah regresi.
Sebelum menyesuaikan model, mari praproses nama kolom dengan mengganti spasi pada nama kolom menjadi garis bawah untuk menghindari penulisan tanda kutip ganda di sekitar nama variabel setiap saat.
# Change the column names
names(churn_data) = gsub(" ", "_", names(churn_data))
head(churn_data)

Enam baris pertama setelah transformasi nama kolom (animasi oleh penulis)
Menyesuaikan model regresi linier berganda
Dengan data yang telah diformat ulang ini, kita dapat memasukkannya ke dalam kerangka regresi berganda menggunakan fungsi lm() di R sebagai berikut:
# Fit the multiple linear regression model
cust_value_model = lm(formula = Customer_Value ~ Call_Failure +
Complaints + Subscription_Length + Charge_Amount +
Seconds_of_Use +Frequency_of_use + Frequency_of_SMS +
Distinct_Called_Numbers + Age_Group + Tariff_Plan +
Status + Age,data = churn_data)
Mari pahami apa yang baru saja kita lakukan.
Fungsi lm() berbentuk sebagai berikut: lm(formula = Y ~Sum(Xi), data = our_data)
-
Y adalah kolom
Customer_Valuekarena itulah yang kita coba estimasi. -
Sum(Xi) merepresentasikan ekspresi jumlah pada persamaan regresi linier berganda.
-
our_dataadalahchurn_data.
Anda dapat mempelajari lebih lanjut dari kursus kami Intermediate Regression in R.
Alternatif untuk R adalah Python: Intermediate Regression with statsmodels in Python. Keduanya membantu Anda mempelajari regresi linier dan logistik dengan banyak variabel penjelas.
Apa yang Diberitahukan Model Regresi Linier Berganda?
Sekarang kita telah membangun model, langkah berikutnya adalah memeriksa asumsi dan menafsirkan hasilnya. Demi kesederhanaan, kita tidak akan membahas semua aspeknya.
Distribusi residual model
Ini dapat ditampilkan di R menggunakan fungsi hist().
# Get the model residuals
model_residuals = cust_value_model$residuals
# Plot the result
hist(model_residuals)

Distribusi residual model (Gambar oleh Penulis)
Histogram terlihat miring ke kiri; karenanya, kita tidak dapat menyimpulkan normalitas dengan cukup yakin. Alih-alih histogram, mari lihat residual pada plot Q-Q normal. Jika ada normalitas, maka nilainya akan mengikuti garis lurus.
# Plot the residuals
qqnorm(model_residuals)
# Plot the Q-Q line
qqline(model_residuals)

Plot Q-Q dan residual (Gambar oleh Penulis)
Dari plot, kita dapat mengamati bahwa beberapa bagian residual berada pada garis lurus. Maka kita dapat mengasumsikan bahwa residual model tidak mengikuti distribusi normal.
Pemeriksaan asumsi multikolinearitas
Ini dilakukan melalui kode R berikut. Namun kita harus menghapus kolom Customer_Value terlebih dahulu.
# Install and load the ggcorrplot package
install.packages("ggcorrplot")
library(ggcorrplot)
# Remove the Customer Value column
reduced_data <- subset(churn_data, select = -Customer_Value)
# Compute correlation at 2 decimal places
corr_matrix = round(cor(reduced_data), 2)
# Compute and show the result
ggcorrplot(corr_matrix, hc.order = TRUE, type = "lower",
lab = TRUE)

Hasil korelasi dari data (Gambar oleh Penulis)
Kita dapat melihat dua korelasi kuat karena nilainya lebih tinggi dari 0,8.
-
AgedanAge_Group: 0,96 -
Frequency_of_usedanSeconds_of_Use: 0,95
Hasil ini masuk akal karena Age_Group dihitung dari Age. Selain itu, total jumlah detik (Seconds_of_Use) diturunkan dari total jumlah panggilan (Frequency_of_Use).
Dalam kasus ini, kita dapat menyingkirkan Age_Group dan Seconds_of_Use dari dataset.
Mari coba membangun model kedua tanpa kedua variabel tersebut.
second_model = lm(formula = Customer_Value ~ Call_Failure + Complaints +
Subscription_Length + Charge_Amount +
Frequency_of_use + Frequency_of_SMS +
Distinct_Called_Numbers + Tariff_Plan +
Status + Age,
data = churn_data)

Plot Q-Q dari model pertama (kiri) dan model kedua (kanan)
Kita dapat melihat bahwa menyingkirkan multikolinearitas dalam data membantu karena pada model kedua, lebih banyak nilai residual berada pada garis lurus dibandingkan model pertama.
Cara Membandingkan Model Regresi Linier Berganda
Sekarang tersisa satu pertanyaan: Manakah dari dua model regresi linier berganda yang lebih baik?
Salah satu cara menjawab pertanyaan ini adalah menjalankan uji analisis varians (ANOVA) pada kedua model. Uji ini menguji hipotesis nol (H0), bahwa variabel yang sebelumnya kita hapus tidak signifikan, terhadap hipotesis alternatif (H1) bahwa variabel-variabel tersebut signifikan.
Jika model baru merupakan peningkatan dari model asli, maka kita gagal menolak H0. Jika bukan demikian, artinya variabel-variabel tersebut signifikan; karenanya, kita menolak H0.
Berikut ekspresi umumnya: anova(original_model, new_model)
# Anova test
anova(cust_value_model, second_model)

Hasil uji ANOVA (Gambar oleh Penulis)
Dari hasil ANOVA, kita mengamati bahwa p-value (8.0893e-316) sangat kecil (kurang dari 0,05), sehingga kita menolak hipotesis nol, yang berarti model kedua bukan peningkatan dari model pertama.
Cara lain untuk melihat variabel penting dalam model adalah melalui uji signifikansi.
Sebuah variabel akan signifikan jika p-value kurang dari 0,05. Hasil ini dapat dihasilkan oleh fungsi summary(). Selain memberikan informasi tersebut tentang model, fungsi ini juga menampilkan adjusted R-square, yang mengevaluasi kinerja model satu sama lain.
# Print the result of the model
summary(cust_value_model)

Hasil ringkasan untuk model asli dengan semua prediktor (Gambar oleh Penulis)
Ada dua bagian kunci dalam tabel: Residuals dan Coefficients. Plot Q-Q memberikan informasi yang sama seperti bagian Residuals. Pada bagian Coefficients, Call_Failure, Complaints, dan Age_Group tidak dianggap signifikan oleh model karena p-value-nya lebih tinggi dari 0,05. Mempertahankannya tidak memberikan nilai tambah bagi model.
Menerapkan analisis yang sama pada model kedua, kita memperoleh hasil berikut:
summary(second_model)

Hasil ringkasan untuk model kedua dengan semua prediktor (Gambar oleh Penulis)
Model asli memiliki adjusted R-square sebesar 0,98, yang lebih tinggi daripada adjusted R-square model kedua (0,97). Ini berarti model asli dengan semua prediktor lebih baik daripada model kedua.
Meningkatkan Model Regresi Linier Berganda
Langkah logis berikut dari analisis ini adalah menghapus variabel yang tidak signifikan dan menyesuaikan model untuk melihat apakah kinerjanya meningkat.
Strategi lain untuk memilih prediktor relevan secara efisien adalah melalui Akaike Information Criteria (AIC).
Ia mulai dengan semua fitur, lalu secara bertahap menghapus prediktor terburuk satu per satu hingga menemukan model terbaik. Semakin kecil skor AIC, semakin baik modelnya. Ini dapat dilakukan menggunakan fungsi stepAIC().
Kesimpulan
Tutorial ini telah membahas aspek-aspek utama regresi linier berganda dan mengeksplorasi beberapa strategi untuk membangun model yang tangguh.
Semoga tutorial ini memberi Anda keterampilan yang relevan untuk memperoleh insight yang dapat ditindaklanjuti dari data Anda. Anda dapat mencoba meningkatkan model-model ini dengan menerapkan pendekatan berbeda menggunakan kode sumber yang tersedia dari workspace kami.
FAQ Regresi Linier Berganda
Masalah seperti apa yang dapat diselesaikan oleh regresi linier berganda?
Ada tiga area utama masalah yang diselesaikan oleh analisis regresi linier berganda — (1) analisis kausal, (2) peramalan suatu efek, dan (3) peramalan tren.
Apa keuntungan regresi linier berganda?
Dapat menghasilkan pemahaman yang lebih akurat dan presisi tentang keterkaitan masing-masing prediktor dengan variabel dependen.
Mengapa regresi linier berganda disebut multiple?
Karena memerlukan setidaknya dua variabel prediktor.
Seorang data scientist serbabisa yang senang berbagi pengetahuan dan memberi dampak bagi orang lain, Zoumana adalah pembuat konten di YouTube dan penulis teknologi teratas di Medium. Ia menikmati berbicara di depan umum, ngoding, dan mengajar. Zoumana meraih dua gelar magister: yang pertama di bidang ilmu komputer dengan fokus Machine Learning di Paris, Prancis, dan yang kedua di bidang Data Science dari Texas Tech University di AS. Kariernya dimulai sebagai Pengembang Perangkat Lunak di Groupe OPEN, Prancis, lalu bergabung dengan IBM sebagai Konsultan Machine Learning, di mana ia mengembangkan solusi AI end-to-end untuk perusahaan asuransi. Zoumana kemudian bergabung dengan Axionable, startup AI Berkelanjutan pertama yang berbasis di Paris dan Montreal. Di sana, ia berperan sebagai Data Scientist dan mengimplementasikan produk AI, terutama use case NLP, untuk klien dari Prancis, Montreal, Singapura, dan Swiss. Selain itu, 5% dari waktunya didedikasikan untuk Riset dan Pengembangan. Saat ini, ia bekerja sebagai Senior Data Scientist di IFC - World Bank Group.

