Lewati ke konten utama

Cara Melakukan Regresi Linear di R

Pelajari regresi linear, model statistik yang menganalisis hubungan antar variabel. Ikuti panduan langkah demi langkah untuk mempelajari fungsi lm() di R.
Diperbarui 28 Sep 2026  · 12 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Regresi linear adalah salah satu teknik statistik yang paling penting dan mendasar. Menguasai teknik ini sangat penting bagi setiap analis data dan data scientist karena, seperti yang akan Anda lihat, teknik ini menjadi dasar bagi banyak metode yang lebih lanjut.

Tutorial ini akan memandu Anda melalui proses melakukan regresi linear di R, yang merupakan bahasa pemrograman penting. Di akhir tutorial ini, Anda akan memahami cara menerapkan dan menafsirkan model regresi linear, sehingga lebih mudah menerapkan pengetahuan ini pada tugas analisis data Anda.

Jika Anda belum familiar dengan bahasa pemrograman R, kami sarankan tutorial berikut untuk memulai: Exploratory Data Analysis in R for Absolute Beginners dan Mastering Data Structures in the R Programming Language.

Apa Itu Regresi Linear?

Regresi linear adalah model statistik yang menganalisis hubungan antara variabel respons (sering disebut y) dan satu atau lebih variabel beserta interaksinya (sering disebut x atau variabel penjelas). Anda kerap membangun hubungan semacam ini secara intuitif, misalnya saat Anda memperkirakan usia seorang anak berdasarkan tinggi badannya, Anda berasumsi semakin tua usianya, semakin tinggi pula badannya.

Regresi linear adalah salah satu model statistik paling dasar. Hasilnya bisa ditafsirkan oleh hampir semua orang, dan telah ada sejak awal abad ke-19. Inilah yang membuat regresi linear begitu populer. Model ini sederhana, dan telah bertahan selama ratusan tahun. Meskipun tidak secanggih algoritme lain seperti jaringan saraf tiruan atau random forest, menurut survei KD Nuggets, regresi merupakan algoritme yang paling banyak digunakan oleh data scientist pada 2016 dan 2017. Bahkan diperkirakan algoritme ini masih akan digunakan pada tahun 2118!

Dalam tutorial regresi linear ini, kita akan mempelajari cara membuat regresi linear di R, menelusuri langkah-langkah yang perlu Anda lakukan dengan contoh yang bisa Anda praktikkan. 

Untuk menjalankan semua contoh kode dalam tutorial ini dengan mudah, Anda bisa membuat workbook DataLab secara gratis yang sudah berisi R dan mencakup semua contoh kode. Untuk latihan lebih lanjut tentang regresi linear, lihat latihan praktis DataCamp kami.

Cara Membuat Regresi Linear di R

Tidak semua masalah bisa diselesaikan dengan algoritme yang sama. Regresi linear dikenal baik digunakan ketika ada hubungan linear antara respons dan luaran. Dengan kata lain, regresi linear mengasumsikan bahwa terdapat hubungan linear antara variabel respons dan variabel penjelas. Pada kasus dua variabel, ini berarti Anda bisa memadankan sebuah garis di antara keduanya. Kembali ke contoh usia anak tadi, jelas ada hubungan antara usia anak dan tinggi badannya.

Creating a Linear Regression in R

Pada contoh khusus ini, Anda dapat menghitung tinggi seorang anak jika Anda mengetahui usianya:

linear regression equation example

Dalam hal ini, a dan b masing-masing disebut intersep dan kemiringan (slope). Dengan contoh yang sama, a, atau intersep, adalah nilai titik awal pengukuran. Bayi yang baru lahir dengan usia nol bulan tidak memiliki tinggi nol sentimeter. Inilah fungsi intersep. Kemiringan mengukur perubahan tinggi terhadap usia dalam bulan. Secara umum, setiap kali usia anak bertambah satu bulan, tinggi badannya akan bertambah sebesar b.

lm() di R

Regresi linear dapat dihitung di R dengan perintah lm(). Pada contoh berikut, kita menggunakan perintah ini untuk menghitung perkiraan tinggi berdasarkan usia anak.

Pertama, impor pustaka readxl untuk membaca file Microsoft Excel. Kursus Introduction to Importing Data in R kami merupakan sumber yang bagus jika Anda belum familiar dengan cara mengimpor file Excel atau CSV ke lingkungan R seperti RStudio.

Anda dapat mengunduh data yang digunakan untuk tutorial ini sebelum memulai. Unduh data ke sebuah objek bernama ageandheight lalu buat regresi linear pada baris ketiga. Fungsi lm() menerima variabel dalam format:

lm([target] ~ [predictor], data = [data source])

Pada kode berikut, kita menggunakan fungsi lm() untuk membuat objek model linear, yang kita sebut lmHeight. Kita kemudian menggunakan fungsi summary() pada lmHeight untuk melihat informasi terperinci tentang kinerja model dan koefisiennya.

library(readxl)

ageandheight <- read_excel("ageandheight.xls", sheet = "Hoja2") #Upload the data

lmHeight = lm(height~age, data = ageandheight) #Create the linear regression

summary(lmHeight) #Review the results
linear regression in R model output

Apa itu koefisien?

Pada kotak merah, Anda dapat melihat nilai intersep (nilai “a”) dan kemiringan (nilai “b”) untuk usia. Nilai “a” dan “b” ini memplot sebuah garis di antara semua titik data. Jadi, dalam kasus ini, jika ada seorang anak berusia 20,5 bulan, a adalah 64,92, dan b adalah 0,635, maka model memprediksi (rata-rata) tinggi badannya dalam sentimeter sekitar 64,92 + (0,635 * 20,5) = 77,93 cm.

Ketika sebuah regresi mempertimbangkan dua atau lebih prediktor untuk membentuk regresi linear, itu disebut regresi linear berganda. Dengan logika yang sama seperti contoh sederhana sebelumnya, tinggi badan anak akan diukur oleh:

Tinggi = a + Usia × b1 + (Jumlah Saudara} × b2

Sekarang Anda melihat tinggi badan sebagai fungsi dari usia dalam bulan dan jumlah saudara yang dimiliki anak. Pada gambar di atas, persegi panjang merah menunjukkan koefisien (b1 dan b2). Anda dapat menafsirkan koefisien ini sebagai berikut:

Saat membandingkan anak-anak dengan jumlah saudara yang sama, tinggi badan rata-rata yang diprediksi meningkat sebesar 0,63 cm untuk setiap pertambahan satu bulan usia. Demikian pula, saat membandingkan anak-anak dengan usia yang sama, tinggi badan menurun (karena koefisiennya negatif) sebesar -0,01 cm untuk setiap kenaikan jumlah saudara.

Di R, untuk menambahkan koefisien lain, tambahkan simbol "+" untuk setiap variabel tambahan yang ingin Anda masukkan ke dalam model.

lmHeight2 = lm(height~age + no_siblings, data = ageandheight) #Create a linear regression with two variables
summary(lmHeight2) #Review the results

Coefficients

Seperti yang mungkin sudah Anda perhatikan, melihat jumlah saudara adalah cara yang kurang masuk akal untuk memprediksi tinggi seorang anak. Aspek lain yang perlu diperhatikan dalam model linear Anda adalah nilai p dari koefisien. Pada contoh sebelumnya, persegi panjang biru menunjukkan nilai p untuk koefisien usia dan jumlah saudara. Secara sederhana, nilai p menunjukkan apakah Anda dapat menolak atau menerima sebuah hipotesis. Hipotesis, dalam hal ini, adalah bahwa prediktor tidak bermakna bagi model Anda.

  • Nilai p untuk usia adalah 4,34*e-10 atau 0,000000000434. Nilai yang sangat kecil berarti usia kemungkinan besar merupakan tambahan yang sangat baik untuk model Anda.
  • Nilai p untuk jumlah saudara adalah 0,85. Dengan kata lain, ada kemungkinan 85% bahwa prediktor ini tidak bermakna untuk regresi.

Cara standar untuk menguji apakah prediktor tidak bermakna adalah dengan melihat apakah nilai p lebih kecil dari 0,05.

Apa itu residual?

Cara yang baik untuk menguji kualitas kecocokan model adalah dengan melihat residual atau selisih antara nilai sebenarnya dan nilai yang diprediksi. Garis lurus pada gambar di atas merepresentasikan nilai yang diprediksi. Garis vertikal merah dari garis lurus ke nilai data teramati adalah residual.

Residuals

Gagasannya adalah jumlah residual kira-kira nol atau serendah mungkin. Dalam praktik, sebagian besar kasus tidak akan mengikuti garis lurus yang sempurna, sehingga residual dapat diharapkan. Pada ringkasan fungsi lm() di R, Anda bisa melihat statistik deskriptif tentang residual model; pada contoh yang sama, kotak merah menunjukkan bagaimana residual kira-kira bernilai nol.

Residuals

Cara Menguji Apakah Model Linear Anda Memiliki Kecocokan yang Baik

Salah satu ukuran yang sangat umum digunakan untuk menguji seberapa baik model Anda adalah koefisien determinasi atau R². Ukuran ini didefinisikan sebagai proporsi variabilitas total yang dijelaskan oleh model regresi.

R-squared equation for linear regression in R

Ini mungkin terlihat agak rumit, tetapi secara umum, untuk model yang sesuai dengan data dengan baik, R² mendekati 1. Model yang kurang sesuai dengan data memiliki R² mendekati 0. Pada contoh di bawah, yang pertama memiliki R² sebesar 0,02; ini berarti model hanya menjelaskan 2% dari variabilitas data. Yang kedua memiliki R² sebesar 0,99, dan model dapat menjelaskan 99% dari variabilitas total.**

How to Test if your Linear Model has a Good Fit?

How to Test if your Linear Model has a Good Fit?

Namun, penting diingat bahwa terkadang R² yang tinggi tidak selalu berarti bagus (lihat plot residual di bawah) dan R² yang rendah tidak selalu buruk. Dalam kehidupan nyata, kejadian tidak selalu pas pada garis lurus sempurna. Misalnya, Anda bisa saja menemukan anak yang lebih tinggi atau lebih pendek pada usia yang sama. Di beberapa bidang, R² sebesar 0,5 sudah dianggap baik.

Dengan contoh yang sama seperti di atas, lihat ringkasan model linear untuk melihat nilai R²-nya.

How to Test if your Linear Model has a Good Fit?

Pada persegi panjang biru, perhatikan ada dua R² yang berbeda, yaitu multiple dan adjusted. Multiple adalah R² yang Anda lihat sebelumnya. Satu masalah dengan R² ini adalah nilainya tidak dapat menurun saat Anda menambahkan lebih banyak variabel independen ke model; nilainya akan terus meningkat seiring model makin kompleks, bahkan jika variabel-variabel tersebut tidak menambah apa pun pada prediksi Anda (seperti contoh jumlah saudara). Karena alasan ini, adjusted R² kemungkinan lebih baik dilihat jika Anda menambahkan lebih dari satu variabel ke dalam model, karena ia hanya meningkat jika benar-benar mengurangi galat keseluruhan dari prediksi.

Periksa residual

Anda bisa saja memiliki R² yang cukup baik pada model Anda, tetapi jangan buru-buru mengambil kesimpulan. Mari lihat contohnya. Anda akan memprediksi tekanan suatu material di laboratorium berdasarkan temperaturnya.

Mari plot datanya (dalam scatterplot sederhana) dan tambahkan garis yang Anda bangun dengan model linear Anda. Dalam contoh ini, biarkan R membaca data terlebih dahulu, lagi-lagi dengan perintah read_excel, untuk membuat sebuah dataframe berisi data, lalu buat regresi linear dengan data baru Anda. Perintah plot() menerima sebuah data frame dan memplot variabel-variabel di dalamnya. Dalam hal ini, ia memplot tekanan terhadap temperatur material. Lalu, tambahkan garis yang dibuat oleh regresi linear dengan perintah abline.

pressure <- read_excel("pressure.xlsx") #Upload the data
lmTemp = lm(Pressure~Temperature, data = pressure) #Create the linear regression
plot(pressure, pch = 16, col = "blue") #Plot the results
abline(lmTemp) #Add a regression line

line chart

Jika Anda melihat ringkasan model baru Anda, Anda akan melihat hasil yang cukup baik (lihat R² dan adjusted R²)

summary(lmTemp)
Call:
lm(formula = Pressure ~ Temperature, data = pressure)

Residuals:
   Min     1Q Median     3Q    Max
-41.85 -34.72 -10.90  24.69  63.51

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -81.5000    29.1395  -2.797   0.0233 *  
Temperature   4.0309     0.4696   8.583 2.62e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 42.66 on 8 degrees of freedom
Multiple R-squared:  0.902,    Adjusted R-squared:  0.8898
F-statistic: 73.67 on 1 and 8 DF,  p-value: 2.622e-05

Idealnya, saat Anda memplot residual, tampilannya acak. Jika tidak, bisa jadi ada pola tersembunyi yang tidak dipertimbangkan oleh model linear. Untuk memplot residual, gunakan perintah plot(lmTemp$residuals).

plot(lmTemp$residuals, pch = 16, col = "red")

scatter plot

Ini bisa menjadi masalah. Jika Anda memiliki lebih banyak data, model linear sederhana Anda tidak akan mampu melakukan generalisasi dengan baik. Pada gambar sebelumnya, perhatikan adanya pola (seperti kurva pada residual). Ini sama sekali tidak acak.

Yang dapat Anda lakukan adalah melakukan transformasi variabel. Ada banyak kemungkinan transformasi yang dapat diterapkan pada data Anda, seperti menambahkan suku kuadratik (x2), kubik (x3), atau yang lebih kompleks seperti ln(X), ln(X+1), sqrt(X), 1/x, Exp(X). Pemilihan transformasi yang tepat memerlukan sedikit pengetahuan fungsi aljabar, latihan, serta coba-coba.

Mari coba dengan suku kuadratik. Untuk ini, tambahkan istilah “I” (huruf kapital "I") sebelum transformasi Anda, misalnya ini akan menjadi rumus regresi linear normal:

lmTemp2 = lm(Pressure~Temperature + I(Temperature^2), data = pressure) #Create a linear regression with a quadratic coefficient
summary(lmTemp2) #Review the results
Call:
lm(formula = Pressure ~ Temperature + I(Temperature^2), data = pressure)

Residuals:
    Min      1Q  Median      3Q     Max
-4.6045 -1.6330  0.5545  1.1795  4.8273

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      33.750000   3.615591   9.335 3.36e-05 ***
Temperature      -1.731591   0.151002 -11.467 8.62e-06 ***
I(Temperature^2)  0.052386   0.001338  39.158 1.84e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.074 on 7 degrees of freedom
Multiple R-squared:  0.9996,    Adjusted R-squared:  0.9994
F-statistic:  7859 on 2 and 7 DF,  p-value: 1.861e-12

Perhatikan bahwa model meningkat secara signifikan. Jika Anda memplot residual model baru, tampilannya akan seperti ini:

plot(lmTemp2$residuals, pch = 16, col = "red")

scatter plot

Sekarang Anda tidak melihat pola yang jelas pada residual, dan itu bagus!

Deteksi titik berpengaruh

Pada data Anda, mungkin ada titik berpengaruh yang dapat menyimpangkan model, terkadang tanpa perlu. Bayangkan terjadi kesalahan entri data, dan alih-alih menulis “2,3” tertulis “23”. Jenis titik berpengaruh yang paling umum adalah outlier, yaitu titik data di mana respons teramati tidak tampak mengikuti pola yang dibentuk oleh data lainnya.

Anda dapat mendeteksi titik berpengaruh dengan melihat objek yang memuat model linear, menggunakan fungsi cooks.distance() lalu memplot jarak ini. Ubah sebuah nilai dengan sengaja untuk melihat tampilannya pada plot Cook’s Distance. Untuk mengubah nilai tertentu, Anda dapat menunjuknya langsung dengan ageandheight[nomor baris, nomor kolom] = [nilai baru]. Dalam kasus ini, tinggi pada contoh kedua diubah menjadi 7,7:

ageandheight[2, 2] = 7.7
head(ageandheight)
age height no_siblings
18 76.1 0
19 7.7 2
20 78.1 0
21 78.2 3
22 78.8 4
23 79.7 1

Buat kembali modelnya dan lihat bagaimana ringkasan model menunjukkan kecocokan yang buruk, lalu plot Cook’s Distances. Untuk ini, setelah membuat regresi linear, gunakan perintah cooks.distance([linear model] , dan kemudian, jika Anda mau, Anda dapat memplot jarak ini dengan perintah plot().

lmHeight3 = lm(height~age, data = ageandheight)#Create the linear regression
summary(lmHeight3)#Review the results
plot(cooks.distance(lmHeight3), pch = 16, col = "blue") #Plot the Cooks Distances.
Call:
lm(formula = height ~ age, data = ageandheight)

Residuals:
    Min      1Q  Median      3Q     Max
-53.704  -2.584   3.609   9.503  17.512

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)    7.905     38.319   0.206    0.841
age            2.816      1.613   1.745    0.112

Residual standard error: 19.29 on 10 degrees of freedom
Multiple R-squared:  0.2335,    Adjusted R-squared:  0.1568
F-statistic: 3.046 on 1 and 10 DF,  p-value: 0.1115

plot

Perhatikan bahwa ada satu titik yang tidak mengikuti pola, dan mungkin memengaruhi model. Di sini Anda dapat mengambil keputusan terkait titik ini; secara umum, ada tiga alasan mengapa sebuah titik sangat berpengaruh:

  1. Ada yang membuat kesalahan pencatatan
  2. Ada yang membuat kesalahan mendasar saat mengumpulkan observasi
  3. Titik data tersebut sepenuhnya valid, sehingga model tidak dapat menjelaskan perilakunya.

Jika kejadiannya 1 atau 2, maka Anda bisa menghapus (atau memperbaiki) titik tersebut. Jika 3, tidak ada gunanya menghapus titik yang valid; mungkin Anda bisa mencoba model non-linear alih-alih model linear seperti regresi linear.

Waspadalah bahwa titik berpengaruh bisa jadi merupakan titik yang valid; pastikan untuk memeriksa data dan sumbernya sebelum menghapus. Dalam buku-buku statistik, sering dijumpai kutipan ini: “Terkadang kita membuang data yang sebenarnya baik ketika yang seharusnya dibuang adalah model yang meragukan.”

Kesimpulan

Anda sampai di akhir! Regresi linear adalah topik besar, dan akan terus relevan. Di sini, kami menyajikan beberapa kiat yang dapat membantu menyetel dan memaksimalkan manfaat dari algoritme yang kuat namun sederhana ini. Anda juga mempelajari cara memahami apa yang ada di balik model statistik sederhana ini dan bagaimana Anda dapat memodifikasinya sesuai kebutuhan. Anda juga dapat mengeksplorasi opsi lain dengan mengetik ?lm pada konsol R dan melihat parameter berbeda yang tidak dibahas di sini. Lihat juga Regularization Tutorial: Ridge, Lasso and Elastic Net. Jika Anda tertarik mendalami model statistik, silakan lihat kursus Statistical Modeling in R.

Tingkatkan Keterampilan Data Tim Anda dengan Pembelajaran Berkelanjutan

Karena regresi linear menjadi fondasi banyak teknik analitis tingkat lanjut, memastikan tim Anda memiliki pemahaman yang kuat tentang ini dan keterampilan penting lainnya sangat krusial untuk kesuksesan jangka panjang.

DataCamp for Business menyediakan solusi yang disesuaikan bagi organisasi yang ingin meningkatkan keterampilan timnya dalam data science dan analitik. Dengan jalur pembelajaran khusus dan kursus praktis yang mencakup beragam metode statistik, termasuk regresi dan pemodelan prediktif, tim Anda dapat dengan percaya diri menangani tantangan data yang kompleks.

Minta demo hari ini dan berinvestasilah pada masa depan organisasi Anda dengan memungkinkan tim Anda untuk tetap mengikuti alat dan teknik terbaru dalam analisis data.

Pertanyaan yang Sering Diajukan

Apa itu R^2 dalam regresi linear?

R^2, atau koefisien determinasi, mengukur proporsi varians pada variabel dependen yang dapat diprediksi dari variabel independen. Nilainya berkisar dari 0 hingga 1, dengan nilai yang lebih tinggi menunjukkan kecocokan yang lebih baik.

Apa rumus R squared?

R squared dihitung sebagai proporsi dari total variabilitas pada variabel dependen yang dijelaskan oleh model regresi. Perhitungannya membandingkan jumlah kuadrat selisih antara nilai teramati dan nilai yang diprediksi dengan jumlah kuadrat selisih total dari mean nilai teramati.

Apa arti r dalam regresi linear?

Dalam regresi linear, r merepresentasikan koefisien korelasi antara nilai teramati dan nilai yang diprediksi dari variabel dependen. Nilai ini menunjukkan kekuatan dan arah hubungan linear.

Topik
R
Data Science
Analisis Data

Kursus R

Kursus

Pengantar R

4 jam
3.1M
Kuasai dasar analisis data di R, termasuk vectors, lists, dan data frames, lalu praktikkan R dengan data sets nyata.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya