Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika
Regresi linier merupakan metode yang digunakan dalam memperoleh hubungan antara 1 variable dependen dengan 1 atau lebih variabel independen. Apabila variable idependen yang digunakan hanya satu maka disebut regresi linear sederhana sedangkan apabila lebih dari satu maka disebut regresi linear berganda. Berikut contoh regresi linear berganda pada data Self Isolation Covid-19 & Google Mobility Index pada bulan Mei 2020.
library(readxl)
## Warning: package 'readxl' was built under R version 4.1.3
Data<- read_excel(path = "Data Riwayat Covid-19 & Google Mobility Index Mei 2020.xlsx")
Data
## # A tibble: 31 x 13
## Tanggal Nama_provinsi POSITIF Dirawat Sembuh Meninggal
## <dttm> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 2020-05-01 00:00:00 DKI Jakarta 4283 2151 427 393
## 2 2020-05-02 00:00:00 DKI Jakarta 4355 2089 562 400
## 3 2020-05-03 00:00:00 DKI Jakarta 4417 2062 622 410
## 4 2020-05-04 00:00:00 DKI Jakarta 4472 2080 650 412
## 5 2020-05-05 00:00:00 DKI Jakarta 4641 2146 711 414
## 6 2020-05-06 00:00:00 DKI Jakarta 4709 2195 713 420
## 7 2020-05-07 00:00:00 DKI Jakarta 4775 2196 718 430
## 8 2020-05-08 00:00:00 DKI Jakarta 4901 2281 763 431
## 9 2020-05-09 00:00:00 DKI Jakarta 4958 2312 767 437
## 10 2020-05-10 00:00:00 DKI Jakarta 5140 2360 803 444
## # ... with 21 more rows, and 7 more variables: Self_Isolation <dbl>,
## # retail_and_recreation_percent_change_from_baseline <dbl>,
## # grocery_and_pharmacy_percent_change_from_baseline <dbl>,
## # parks_percent_change_from_baseline <dbl>,
## # transit_stations_percent_change_from_baseline <dbl>,
## # workplaces_percent_change_from_baseline <dbl>,
## # residential_percent_change_from_baseline <dbl>
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.1.3
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.1.3
x <- Data$Self_Isolation
retail <- Data$retail_and_recreation_percent_change_from_baseline
grocery <- Data$grocery_and_pharmacy_percent_change_from_baseline
park <- Data$parks_percent_change_from_baseline
station <- Data$transit_stations_percent_change_from_baseline
workplace <- Data$workplaces_percent_change_from_baseline
residental <- Data$residential_percent_change_from_baseline
df <- data.frame(x, retail, grocery, park, station, workplace,residental )
# melt the data to a long format
df2 <- melt(data = df, id.vars = "x")
# plot, using the aesthetics argument 'colour'
ggplot(data = df2, aes(x = x, y = value, colour = variable))+
geom_point() +
geom_line() +
theme(legend.justification = "top") +
labs(title = "Google Mobility Index",
subtitle = "Provinsi DKI Jakarta Indonesia Bulan Mei 2020",
y = "Mobility", x = "Data Self_Isolation") +
theme(axis.text.x = element_text(angle = -90))
model <- lm(Data$Self_Isolation~Data$retail_and_recreation_percent_change_from_baseline+Data$grocery_and_pharmacy_percent_change_from_baseline+Data$parks_percent_change_from_baseline+Data$transit_stations_percent_change_from_baseline+Data$workplaces_percent_change_from_baseline+Data$residential_percent_change_from_baseline)
model
##
## Call:
## lm(formula = Data$Self_Isolation ~ Data$retail_and_recreation_percent_change_from_baseline +
## Data$grocery_and_pharmacy_percent_change_from_baseline +
## Data$parks_percent_change_from_baseline + Data$transit_stations_percent_change_from_baseline +
## Data$workplaces_percent_change_from_baseline + Data$residential_percent_change_from_baseline)
##
## Coefficients:
## (Intercept)
## 2984.3712
## Data$retail_and_recreation_percent_change_from_baseline
## 77.9410
## Data$grocery_and_pharmacy_percent_change_from_baseline
## -0.7385
## Data$parks_percent_change_from_baseline
## -13.0861
## Data$transit_stations_percent_change_from_baseline
## -77.4220
## Data$workplaces_percent_change_from_baseline
## -21.9884
## Data$residential_percent_change_from_baseline
## -173.2946
Uji normalitas dalam contoh regresi dipakai untuk menguji apakah nilai residual yang didapatkan menurut regresi terdistribusi secara normal atau tidak. Model regresi yang baik mempunyai nilai residual yang terdistribusi secara normal. Pada contoh berikut akan dilakukakan uji normalitas menggunakan metode One-sample Kolmogorov-Smirnov
ks.test(model$residuals, ecdf(model$residuals))
##
## One-sample Kolmogorov-Smirnov test
##
## data: model$residuals
## D = 0.032258, p-value = 1
## alternative hypothesis: two-sided
Uji multikolinearitas merupakan pengujian untuk memastikan apakah pada sebuah model regresi terdapat interkorelasi atau kolinearitas antar variabel bebas. Interkorelasi merupakan hubungan yang linear antara satu variabel bebas atau variabel prediktor dengan variabel prediktor lainnya di dalam sebuah model regresi. Interkorelasi itu dapat dilihat dengan nilai koefisien korelasi antara variabel bebas, nilai VIF dan Tolerance, nilai Eigenvalue dan Condition Index, serta nilai standar error koefisien beta atau koefisien regresi parsial. Pada contoh berikut akan dilakukakan uji multikolinearitas dengan menggunakan tolerance
dimana pada bahasa program R kita membutuhkan package olsrr
.
library(olsrr)
## Warning: package 'olsrr' was built under R version 4.1.3
##
## Attaching package: 'olsrr'
## The following object is masked from 'package:datasets':
##
## rivers
ols_vif_tol(model)
## Variables Tolerance VIF
## 1 Data$retail_and_recreation_percent_change_from_baseline 0.2151619 4.647663
## 2 Data$grocery_and_pharmacy_percent_change_from_baseline 0.1903505 5.253467
## 3 Data$parks_percent_change_from_baseline 0.5952791 1.679884
## 4 Data$transit_stations_percent_change_from_baseline 0.1202990 8.312623
## 5 Data$workplaces_percent_change_from_baseline 0.2211583 4.521648
## 6 Data$residential_percent_change_from_baseline 0.1622959 6.161586
Uji Autokorelasi merupakan pengujian yang dilakukan untuk mengetahui adakah korelasi variabel yang ada di dalam model prediksi dengan perubahan waktu. Oleh karena itu, apabila asumsi autokorelasi terjadi pada sebuah model prediksi, maka nilai disturbance tidak lagi berpasangan secara bebas, melainkan berpasangan secara autokorelasi. Pada contoh berikut akan dilakukakan uji normalitas menggunakan metode Durbin-Watson
.
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.1.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.1.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(car)
## Warning: package 'car' was built under R version 4.1.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.1.3
dwtest(model)
##
## Durbin-Watson test
##
## data: model
## DW = 0.86417, p-value = 1.532e-05
## alternative hypothesis: true autocorrelation is greater than 0
p-value
> 0.05 maka tidak terjadi autokorelasi. Namun apabila sebaliknya maka terjadi autokorelasi. Sehingga dapat disimpulkan pada model diatas terdapat gejala autokorelasi.Uji homogenitas dimaksudkan untuk memperlihatkan bahwa dua atau lebih kelompok data sampel berasal dari populasi yang memiliki variansi yang sama. Pada contoh berikut akan dilakukakan uji homogenitas menggunakan metode studentized Breusch-Pagan
.
bptest(model)
##
## studentized Breusch-Pagan test
##
## data: model
## BP = 5.9263, df = 6, p-value = 0.4315
p-value
> 0.05 maka variansi setiap sampel sama (homogen). Namun apabila sebaliknya nilai p-value
< 0.05, maka variansi setiap sampel tidak sama (tidak homogen). Sehingga dapat disimpulkan bahwa data tersebut homogen.Dalam menampilkan hasil regresi kita dapat menggunakan fungsi summary
.
summary(model)
##
## Call:
## lm(formula = Data$Self_Isolation ~ Data$retail_and_recreation_percent_change_from_baseline +
## Data$grocery_and_pharmacy_percent_change_from_baseline +
## Data$parks_percent_change_from_baseline + Data$transit_stations_percent_change_from_baseline +
## Data$workplaces_percent_change_from_baseline + Data$residential_percent_change_from_baseline)
##
## Residuals:
## Min 1Q Median 3Q Max
## -390.54 -129.82 -42.64 104.01 537.78
##
## Coefficients:
## Estimate Std. Error
## (Intercept) 2984.3712 1753.5144
## Data$retail_and_recreation_percent_change_from_baseline 77.9410 19.6407
## Data$grocery_and_pharmacy_percent_change_from_baseline -0.7385 12.6077
## Data$parks_percent_change_from_baseline -13.0861 4.3367
## Data$transit_stations_percent_change_from_baseline -77.4220 33.3912
## Data$workplaces_percent_change_from_baseline -21.9884 7.5879
## Data$residential_percent_change_from_baseline -173.2946 29.2032
## t value Pr(>|t|)
## (Intercept) 1.702 0.101688
## Data$retail_and_recreation_percent_change_from_baseline 3.968 0.000571 ***
## Data$grocery_and_pharmacy_percent_change_from_baseline -0.059 0.953774
## Data$parks_percent_change_from_baseline -3.018 0.005953 **
## Data$transit_stations_percent_change_from_baseline -2.319 0.029252 *
## Data$workplaces_percent_change_from_baseline -2.898 0.007900 **
## Data$residential_percent_change_from_baseline -5.934 4.01e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 261.3 on 24 degrees of freedom
## Multiple R-squared: 0.7867, Adjusted R-squared: 0.7334
## F-statistic: 14.76 on 6 and 24 DF, p-value: 5.196e-07
Nilai Minimum adalah -390.54
Nilai Quartal ke-1 adalah -129.82
Nilai Tengah adalah -42.64
Nilai Quartal ke-3 adalah 104.01
Nilai Maksimum adalah 537.78
Dasar teori yang digunakan dalam interpretasi hasil regresi adalah apabila nilai signifikansi (Pr(>|t|)
) < 0.05 maka variabel independent (variabel x) secara parsial berpengaruh terhadap variable dependent (variable y). Sehingga dapat disimpulkan :
Selain itu kita dapat disimpulkan apakah seluruh variable independent berpengaruh secara simultan terhadap variable dependent dimana dasar dari penentuan tersebut yaitu apabila nilai p-value
dari F-statistic
< 0.05 maka keseluruahan variable independent signifikan berpengaruh secara simultan (bersama-sama) terhadap variable dependent (variable Self Isolation). Besar pengaruh tersebut dapat dilihat dari nilai R-squared
dimana pada model diatas bernilai 0.7864. Sehingga dapat disimpulkan variable independent signifikan berpengaruh terhadap variable dependent sebesar 78.64 %.
plot(Data$retail_and_recreation_percent_change_from_baseline, Data$Self_Isolation, col = "dodgerblue")
plot(Data$grocery_and_pharmacy_percent_change_from_baseline, Data$Self_Isolation, col = "red")
plot(Data$parks_percent_change_from_baseline, Data$Self_Isolation, col = "darkorange")
plot(Data$transit_stations_percent_change_from_baseline, Data$Self_Isolation, col = "darkgreen")
plot(Data$workplaces_percent_change_from_baseline, Data$Self_Isolation, col = "blueviolet")
plot(Data$residential_percent_change_from_baseline, Data$Self_Isolation, col = "darkcyan")
plot(model)
https://bookdown.org/moh_rosidi2610/Metode_Numerik/datamod.html#reglin
https://rpubs.com/suhartono-uinmaliki/861286
https://duwiconsultant.blogspot.com/2011/11/uji-normalitas-regresi.html
https://www.statistikian.com/2016/11/uji-multikolinearitas.html
https://www.statistikian.com/2017/01/uji-autokorelasi-durbin-watson-spss.html
https://belalangtue.wordpress.com/2010/08/05/uji-homogenitas-dengan-spss/