Pengertian
Uji statistik yang diterapkan pada kumpulan data untuk mendefinisikan dan mengukur hubungan antara variabel yang dipertimbangkan (chang 2004).
Regresi linier Merupakan sebuah hitungan statistik untuk menentukan pengaruh antara variabel satu dan yang lainnya (P. Katemba dan R.K Dioh 2017).
Kesimpulan Maka, dapat disimpulkan bahwa pengertian regresi liner adalah sebuah perhitungan uji statistik yang diterapkan pada sekumpulan data untuk menentukan pengaruh antara variable satu dengan yang lainnya.
Tahapan Algoritma
Siapkan Dataset
Disini kita akan menggunakan dataset “Salary_Data” yang memiliki dua variabel yaitu variabel “Salary” yang mana menunjukkan gaji, dan “YearsExperience” yang mana menunjukkan pengalaman dalam satuan tahun, tujuan dari dataset ini adalah untuk mengetahui pengaruh antara pengalaman pekerjaan dan gaji/upah yang didapatkan.
Memanggil data dengan menuliskan alamat file dari data tersebut.
library(readxl)
Salary_Data <- read_excel("D:/R stuff/Algoritma-linear-regression/Salary_Data.xls")Memanggil data dengan menampilkan data tersebut.
data.table::as.data.table(Salary_Data)## YearsExperience Salary
## 1: 1.1 39343
## 2: 1.3 46205
## 3: 1.5 37731
## 4: 2.0 43525
## 5: 2.2 39891
## 6: 2.9 56642
## 7: 3.0 60150
## 8: 3.2 54445
## 9: 3.2 64445
## 10: 3.7 57189
## 11: 3.9 63218
## 12: 4.0 55794
## 13: 4.0 56957
## 14: 4.1 57081
## 15: 4.5 61111
## 16: 4.9 67938
## 17: 5.1 66029
## 18: 5.3 83088
## 19: 5.9 81363
## 20: 6.0 93940
## 21: 6.8 91738
## 22: 7.1 98273
## 23: 7.9 101302
## 24: 8.2 113812
## 25: 8.7 109431
## 26: 9.0 105582
## 27: 9.5 116969
## 28: 9.6 112635
## 29: 10.3 122391
## 30: 10.5 121872
## YearsExperience Salary
Agar lebih mudah untuk dilihat, buatlah diagram scatter plot untuk mengetahui kolerasi antara kedua variabel tersebut.
library(ggplot2)ggplot(Salary_Data, aes(x = YearsExperience, y = Salary)) + geom_point() + labs(x = 'Pengalaman kerja (tahun)', y = 'Gaji/Upah', title = "Hubungan antara Gaji dan Pengalaman kerja")dilihat dari scatter plot diatas, dapat diketahui bahwa kedua variabel tersebut memiliki hubungan (kolerasi) positif, maka dengan begitu dapat dilanjutkan dengan regresi. Salah satu syarat untuk melanjutkan ke tahap regresi adalah kedua variabel memiliki kolerasi baik positif maupun negatif.
Persamaan Regresi Linier Sederhana
Rumus permodelan regresi linier sederhana dapat dilihat pada rumus dibawah ini,
\[\begin{equation} Y=\beta_1+\beta_2 * \mathrm{X}+\epsilon \end{equation}\]
Masukkan data kedalam persamaan, dengan “Salary” sebagai Y atau variabel dependent, dan “YearsExperience” sebagai X atau variabel independent.
\[\begin{equation} \text { Salary }=\beta_1+\beta_2 * \text { YearsExperience }+\epsilon \end{equation}\]
Menentukan nilai b1 dan b2
mod1 <- lm(Salary ~ YearsExperience , data = Salary_Data) #model linier nya
smod1<- summary(mod1) #summary
smod1##
## Call:
## lm(formula = Salary ~ YearsExperience, data = Salary_Data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7958.0 -4088.5 -459.9 3372.6 11448.0
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 25792.2 2273.1 11.35 5.51e-12 ***
## YearsExperience 9450.0 378.8 24.95 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5788 on 28 degrees of freedom
## Multiple R-squared: 0.957, Adjusted R-squared: 0.9554
## F-statistic: 622.5 on 1 and 28 DF, p-value: < 2.2e-16
b1 <- coef(mod1)[[1]] #nilai dari b1 nya
b2 <- coef(mod1)[[2]]#nilai dari b2 nyanilai b1
b1## [1] 25792.2
nilai b2
b2## [1] 9449.962
Jadi, didapatkan model regresi linier sederhana sebagai berikut,
\[\begin{equation} \widehat{Y}=\beta_1+\beta_2 * X \end{equation}\] dimasukkan kedalam persamaan maka,
\[\begin{equation} \text { Salary }=25792.2+9449.962 * \text { YearsExperience } \end{equation}\]
Agar lebih mudah untuk dilihat maka buatlah diagram scatter plot, untuk mengetahui posisi model dan data sebenarnya
ggplot(Salary_Data, aes(x = YearsExperience, y = Salary)) + geom_point() + labs(x = 'Pengalaman kerja (tahun)', y = 'Gaji/Upah', title = "Regresi antara Gaji dan Pengalaman kerja") + geom_smooth(method = "lm", se = FALSE)## `geom_smooth()` using formula = 'y ~ x'
Eksperimen Prediksi Menggunakan Model
Kita ingin mengetahui berapa kira-kira gaji seseorang yang memiliki pengalaman kerja selama 12 tahun
\[\begin{equation} \begin{aligned} \text { Salary } & =25792.2+9449.962 * 12 \\ & =$139.191,744 \end{aligned} \end{equation}\]
Masukkan perkiraan lama pengalaman kerja (tahun) (11,12,9)
mod1 <- lm(Salary~YearsExperience, data=Salary_Data)
newx <- data.frame(YearsExperience = c(11, 12, 9))
yhat <- predict(mod1, newx)
yhat #memunculkan hasil## 1 2 3
## 129741.8 139191.7 110841.9
Hasil prediksi dapat dilihat pada output diatas, hasil prediksi upah/ gaji dengan pengalaman kerja (tahun) (11, 12, 9) adalah (1. 129741.8, 2. 139191.7, 3. 110841.9).
Regresi Linier Berganda
Regresi linear berganda merupakan model regresi yang melibatkan lebih dari satu variabel independen. Analisis regresi linear berganda dilakukan untuk mengetahui arah dan seberapa besar pengaruh variabel independen terhadap variabel dependen. (Ghozali, 2018)
Jadi, pada dasarnya regresi linier berganda adalah uji statistik yang digunakan untuk memprediksi suatu nilai yang didapatkan dari model, yang memiliki lebih dari satu variabel independent dan satu variabel dependent.
Persamaan Regresi Linier Berganda
Persamaan regresi linier berganda adalah sebagai berikut, \[\begin{equation} Y=\alpha+\beta_1 X_1+\beta_2 X_2+\cdots+\beta_n X_n \end{equation}\]
Disini kita akan menggunakan dataset “Marketing_data” untuk pengaplikasikan kepada regresi linier berganda.
Tahapan Algoritma
Pertama siapkan library yang dibutuhkan,
library(ggplot2)
library(kableExtra)
library(dplyr)##
## Attaching package: 'dplyr'
## The following object is masked from 'package:kableExtra':
##
## group_rows
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(caTools)
library(ggplot2)Kemudian memanggil dataset “Marketing_Data” untuk analisa regresi linier berganda, dan mengganti namanya menjadi “marketing”.
library(readr)
marketing <- read.csv("D:/R stuff/Algoritma-linear-regression/Marketing_Data.csv") Kemudian tampilkan data dalam bentuk tabel sebagai berikut.
data.table::as.data.table(marketing)## youtube facebook newspaper sales
## 1: 84.72 19.20 48.96 12.60
## 2: 351.48 33.96 51.84 25.68
## 3: 135.48 20.88 46.32 14.28
## 4: 116.64 1.80 36.00 11.52
## 5: 318.72 24.00 0.36 20.88
## ---
## 167: 45.84 4.44 16.56 9.12
## 168: 113.04 5.88 9.72 11.64
## 169: 212.40 11.16 7.68 15.36
## 170: 340.32 50.40 79.44 30.60
## 171: 278.52 10.32 10.44 16.08
Untuk mengetahui hubungan antar variabel maka dibuatlah scatterplot agar lebih mudah untuk dilihat.
plot(marketing, col="violet")library(GGally)## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
ggpairs(marketing,lower = list(continuous = wrap('points', colour = "cyan")),
diag = list(continuous = wrap("barDiag", colour = "black"))
)## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
dilihat dari scatterplot diatas dapat dilihat kolerasi positif antara ‘sales’ dan ‘youtube’, dan antara ‘sales’ dan ‘facebook’.
Persiapan data
Pada step ini kita akan memisahlan data marketing menjadi 2 yaitu data training dan data testing.
set.seed(2)
sample = sample.split(marketing$sales, SplitRatio = 0.75)
train = subset(marketing, sample == TRUE)
test = subset(marketing, sample == FALSE)
print(dim(train))## [1] 128 4
Seperti yang dilihat diatas, terdapat 128 data training dalam 4 kolom tabel.
print(dim(test))## [1] 43 4
Kemudian, terdapat 43 data testing dalam 4 kolom tabel.
Membuat Model Regresi Berganda
Membuat model regresi dengan code sebagai berikut.
modelsales <- lm(sales ~ youtube + facebook + newspaper, data = marketing)
summary(modelsales)##
## Call:
## lm(formula = sales ~ youtube + facebook + newspaper, data = marketing)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.6212 -0.9316 0.2776 1.4111 3.3701
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.505871 0.399647 8.772 1.96e-15 ***
## youtube 0.045235 0.001516 29.830 < 2e-16 ***
## facebook 0.188398 0.009016 20.895 < 2e-16 ***
## newspaper 0.004279 0.006501 0.658 0.511
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.01 on 167 degrees of freedom
## Multiple R-squared: 0.9005, Adjusted R-squared: 0.8987
## F-statistic: 503.7 on 3 and 167 DF, p-value: < 2.2e-16
Dengan output diatas didapatkan persamaan model regresi linear berganda sebagai berikut,
\[\begin{equation} \text { sales }=3.505+0.045 * \text { youtube }+0.188 * \text { facebook }+0.004 * \text { newspaper } \end{equation}\]
Prediksi Data menggunakan Regresi Linier Berganda
Kita masukkan permisalan jumlah dari setiap media untuk memprediksi sales.
youtube <- 100
facebook <- 40
newspaper <- 70Kemudian masukkan kedalam model.
sales = 3.505871 + 0.045235*youtube + 0.188398*facebook + 0.004279*newspaper
print(sales)## [1] 15.86482
Didapatkan nilai prediksi sejumlah 15.864. Maka dapat disimpulkan bahwa jika jumlah nilai dari media youtube = 100, facebook = 40, newspaper = 70, didapatkan hasil prediksi sales sebanyak = 15.86482.
Referensi
- https://github.com/auliahasna/Algoritma-linear-regression
- https://rpubs.com/dsciencelabs/econometrics2
- https://rpubs.com/Subhalaxmi/700597#:~:text=Multiple%20linear%20regression%20is%20the,can%20be%20continuous%20or%20categorical.
- https://www.kaggle.com/code/vivinbarath/simple-linear-regression-for-salary-data/notebook#y-=-25202.8-+-9731.2x
- https://www.kaggle.com/datasets/fayejavad/marketing-linear-multiple-regression
- K. Kumari, and S. Yadav, “Linear Regression Analysis Study”, vol. 4, no.1, pp. 33-36, 2018, [Online].Available:https://www.j-pcs.org/article.asp?issn=2395-5414;year=2018;volume=4;issue=1;spage=33;epage=36;aulast=Kumari
- P. Katemba and R. K. Djoh, “Prediksi TingkatProduksi Kopi Menggunakan Reg resi Linear,” vol. 3, no. 1, pp. 42–51, 2017, [Online].Available:http://jurnal.pnk.ac.id/index.php/flash/article/view/136
- Ghozali, Imam. 2018. Aplikasi Analisis Multivariate dengan Program IBM SPSS 25. Badan Penerbit Universitas Diponegoro: Semarang.