Mata Kuliah : Linear Algebra (C)
Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Fakultas : Sains dan Teknologi
Jurusan : Teknik Informatika
NIM : 210605110050
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).
Excel adalah salah satu jenis file eksternal yang sering digunakan untuk menyimpan data. Kita dapat menggunakan package {readxl} dengan fungsi read_excel() untuk import data dari file Excel. Argumen path = adalah lokasi dan nama file Excel yang akan kita gunakan.
library(readxl)
DataDirawatJanuari2021 <- read_excel((path = "DataDirawatJanuari2021.xlsx"))
DataDirawatJanuari2021
## # A tibble: 30 x 8
## Tanggal DIRAWAT retail_and_recreation_percent_c~ grocery_and_pha~
## <dttm> <dbl> <dbl> <dbl>
## 1 2021-01-01 00:00:00 5789 -25 -8
## 2 2021-01-02 00:00:00 4599 -20 3
## 3 2021-01-03 00:00:00 4410 -21 -2
## 4 2021-01-04 00:00:00 4499 -15 5
## 5 2021-01-05 00:00:00 4479 -18 3
## 6 2021-01-06 00:00:00 4254 -15 4
## 7 2021-01-07 00:00:00 4601 -16 4
## 8 2021-01-08 00:00:00 4236 -18 0
## 9 2021-01-09 00:00:00 5237 -22 -4
## 10 2021-01-10 00:00:00 4863 -20 -1
## # ... with 20 more rows, and 4 more variables:
## # 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>
Nilai statistik yang dicari adalah minimum, Q1, median, mean, Q3, dan maximum.
summary(DataDirawatJanuari2021)
## Tanggal DIRAWAT
## Min. :2021-01-01 00:00:00 Min. :3056
## 1st Qu.:2021-01-08 06:00:00 1st Qu.:4292
## Median :2021-01-15 12:00:00 Median :4532
## Mean :2021-01-15 12:00:00 Mean :4546
## 3rd Qu.:2021-01-22 18:00:00 3rd Qu.:4788
## Max. :2021-01-30 00:00:00 Max. :5789
## retail_and_recreation_percent_change_from_baseline
## Min. :-32.00
## 1st Qu.:-27.75
## Median :-25.00
## Mean :-24.33
## 3rd Qu.:-20.25
## Max. :-15.00
## grocery_and_pharmacy_percent_change_from_baseline
## Min. :-20.000
## 1st Qu.:-15.000
## Median :-10.500
## Mean : -8.733
## 3rd Qu.: -2.000
## Max. : 5.000
## parks_percent_change_from_baseline
## Min. :-36.00
## 1st Qu.:-30.00
## Median :-24.50
## Mean :-20.37
## 3rd Qu.:-14.50
## Max. : 18.00
## transit_stations_percent_change_from_baseline
## Min. :-46.00
## 1st Qu.:-43.00
## Median :-40.00
## Mean :-37.43
## 3rd Qu.:-33.00
## Max. :-22.00
## workplaces_percent_change_from_baseline
## Min. :-66.00
## 1st Qu.:-32.00
## Median :-28.50
## Mean :-27.80
## 3rd Qu.:-23.25
## Max. : -8.00
## residential_percent_change_from_baseline
## Min. : 7.00
## 1st Qu.:10.00
## Median :11.00
## Mean :10.97
## 3rd Qu.:12.00
## Max. :19.00
pairs(DataDirawatJanuari2021)
pairs(DataDirawatJanuari2021, lower.panel=NULL)
plot(DataDirawatJanuari2021$DIRAWAT ~ DataDirawatJanuari2021$Tanggal, data = DataDirawatJanuari2021)
Visualisasikan Data dengan Data Data DiRawat sebagai Variable Y dan Google Mobility Index sebagai Variable X
plot(DataDirawatJanuari2021$DIRAWAT, DataDirawatJanuari2021$retail_and_recreation_percent_change_from_baseline+DataDirawatJanuari2021$grocery_and_pharmacy_percent_change_from_baseline+DataDirawatJanuari2021$parks_percent_change_from_baseline+DataDirawatJanuari2021$transit_stations_percent_change_from_baseline+DataDirawatJanuari2021$workplaces_percent_change_from_baseline+DataDirawatJanuari2021$residential_percent_change_from_baseline, data = DataDirawatJanuari2021)
## Warning in plot.window(...): "data" is not a graphical parameter
## Warning in plot.xy(xy, type, ...): "data" is not a graphical parameter
## Warning in axis(side = side, at = at, labels = labels, ...): "data" is not a
## graphical parameter
## Warning in axis(side = side, at = at, labels = labels, ...): "data" is not a
## graphical parameter
## Warning in box(...): "data" is not a graphical parameter
## Warning in title(...): "data" is not a graphical parameter
a.) Korelasi Variable Y dengan X1
cor(DataDirawatJanuari2021$DIRAWAT,DataDirawatJanuari2021$
retail_and_recreation_percent_change_from_baseline)
## [1] -0.1572981
b.) Korelasi Variable Y dengan X2
cor( DataDirawatJanuari2021$DIRAWAT, DataDirawatJanuari2021$
grocery_and_pharmacy_percent_change_from_baseline)
## [1] -0.1774817
c.) Korelasi Variable Y dengan X3
cor( DataDirawatJanuari2021$DIRAWAT, DataDirawatJanuari2021$
parks_percent_change_from_baseline)
## [1] 0.2705232
d.) Korelasi Variable Y dengan X4
cor( DataDirawatJanuari2021$DIRAWAT,DataDirawatJanuari2021$
transit_stations_percent_change_from_baseline)
## [1] -0.2098359
e.) Korelasi Variable Y dengan X5
cor( DataDirawatJanuari2021$DIRAWAT, DataDirawatJanuari2021$
workplaces_percent_change_from_baseline)
## [1] -0.3353958
f.) Korelasi Variable Y dengan X6
cor( DataDirawatJanuari2021$DIRAWAT, DataDirawatJanuari2021$
residential_percent_change_from_baseline)
## [1] 0.4480891
model <- lm( DataDirawatJanuari2021$DIRAWAT ~ DataDirawatJanuari2021$Tanggal, data = DataDirawatJanuari2021)
summary(model)
##
## Call:
## lm(formula = DataDirawatJanuari2021$DIRAWAT ~ DataDirawatJanuari2021$Tanggal,
## data = DataDirawatJanuari2021)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1108.11 -293.87 -96.94 336.37 1232.47
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.949e+05 1.920e+05 2.578 0.0155 *
## DataDirawatJanuari2021$Tanggal -3.044e-04 1.192e-04 -2.554 0.0164 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 488.2 on 28 degrees of freedom
## Multiple R-squared: 0.189, Adjusted R-squared: 0.16
## F-statistic: 6.525 on 1 and 28 DF, p-value: 0.01636
Di atas merupakan rincian dari model yang telah dibuat.
setelah menjalankan fungsi summary() maka akan didapat 5 nilai residual. Residual adalah perbedaan antara nilai nyata dan nilai prediksi. Yang mana semakin kecil nilai residual maka semakin baik atau benar model yang kita buat. Berikut nilai-nilai residual yang dihasilkan:
Nilai minimum = -1108.11
Nilai maximum = 1232.47
Nilai median = -96.94
Nilai quartil 1 = -293.87
Nilai quartil 3 = 336.37
Dari nilai-nilai tersebut dapat kita lihat bahwa dalam konteks ini berupa nilai minimum, maximum, median, quartil 1 dan quartil 3. Dapat kita simpulkan bahwa model yang telah kita buat belum bisa dikatakan baik atau benar karena nilai-nilai yang dihasilkan tidak mendekati nol.
Di bawah nilai residual terdapat koefisien, yang mana dalam koefisien tersebut terdapat nilai intersep, dan tanggal. Selain itu juga terdapat nilai-p dari koefisien
Selanjutnya terdapat dua R2 yaitu:
Multiple R-squared: 0.189. hal ini menunjukkan bahwa 0.00189% variasi variabel respon, y, dapat dijelaskan oleh variabel prediktor x. Multiple R-squared tidak dapat berkurang saat kita menambahkan lebih banyak variabel independen ke model yang kita buat.
Adjusted R-squared: 0.16 Adjusted R-squared lebih baik ada penambahan variabel. Jadi jika kita menambahkan lebih dari satu variabel ke model, itu hanya meningkat jika itu mengurangi kesalahan prediksi secara keseluruhan.
Uji Anova(Analysis of Variance Table) berfungsi untuk membandingkan rata-rata populasi untuk mengetahui perbedaan signifikan dari dua atau lebih kelompok data.
anova(model)
## Analysis of Variance Table
##
## Response: DataDirawatJanuari2021$DIRAWAT
## Df Sum Sq Mean Sq F value Pr(>F)
## DataDirawatJanuari2021$Tanggal 1 1554902 1554902 6.525 0.01636 *
## Residuals 28 6672337 238298
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(DataDirawatJanuari2021$DIRAWAT ~ DataDirawatJanuari2021$Tanggal, data = DataDirawatJanuari2021, col = "purple", pch = 20, cex = 1.5, main = "Data Covid Dirawat DKI Jakarta Maret 2021 dan Google Mobility Index")
abline(model)
plot(cooks.distance(model), pch = 16, col = "purple") #Plot the Cooks Distances.
plot(model)
AIC berarti Kriteria Informasi Akaike dan BIC berarti Kriteria Informasi Bayesian. Meskipun kedua istilah ini membahas pemilihan model, keduanya tidak sama. Seseorang dapat menemukan perbedaan antara dua pendekatan pemilihan model.
AIC(model)
## [1] 460.5048
BIC(model)
## [1] 464.7084
head(predict(model), n = 11)
## 1 2 3 4 5 6 7 8
## 4926.890 4900.588 4874.285 4847.982 4821.679 4795.376 4769.074 4742.771
## 9 10 11
## 4716.468 4690.165 4663.863
plot(head(predict(model), n = 10))
head(resid(model), n = 11)
## 1 2 3 4 5 6 7 8
## 862.1097 -301.5875 -464.2848 -348.9820 -342.6792 -541.3764 -168.0736 -506.7709
## 9 10 11
## 520.5319 172.8347 -258.8625
coef(model)
## (Intercept) DataDirawatJanuari2021$Tanggal
## 4.948951e+05 -3.044303e-04
DataDirawatJanuari2021$residuals <- model$residuals
DataDirawatJanuari2021$predicted <- model$fitted.values
DataDirawatJanuari2021
## # A tibble: 30 x 10
## Tanggal DIRAWAT retail_and_recreation_percent_c~ grocery_and_pha~
## <dttm> <dbl> <dbl> <dbl>
## 1 2021-01-01 00:00:00 5789 -25 -8
## 2 2021-01-02 00:00:00 4599 -20 3
## 3 2021-01-03 00:00:00 4410 -21 -2
## 4 2021-01-04 00:00:00 4499 -15 5
## 5 2021-01-05 00:00:00 4479 -18 3
## 6 2021-01-06 00:00:00 4254 -15 4
## 7 2021-01-07 00:00:00 4601 -16 4
## 8 2021-01-08 00:00:00 4236 -18 0
## 9 2021-01-09 00:00:00 5237 -22 -4
## 10 2021-01-10 00:00:00 4863 -20 -1
## # ... with 20 more rows, and 6 more variables:
## # 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>, residuals <dbl>,
## # predicted <dbl>
scatter.smooth(x=DataDirawatJanuari2021$Tanggal, y=DataDirawatJanuari2021$DIRAWAT, main="Tanggal ~ DIRAWAT")
boxplot(DataDirawatJanuari2021$DIRAWAT, main="DIRAWAT", boxplot.stats(DataDirawatJanuari2021$DIRAWAT)$out)
plot(density(DataDirawatJanuari2021$DIRAWAT), main="Google Mobility Index :DIRAWAT", ylab="Frequency")
coefs <- coef(model)
plot(DIRAWAT ~ Tanggal, data = DataDirawatJanuari2021)
abline(coefs)
text(x = 12, y = 10, paste('expression = ', round(coefs[1], 2), '+', round(coefs[2], 2), '*DIRAWAT'))
### Uji Korelasi AntarVariable Adanya korelasi antar variabel dapat dilakukan melalui visualisasi menggunakan scatterplot dan perhitungan matematis menggunakan metode Pearson untuk metode parametrik dan metode rangking Spearman dan Kendall untuk metode non-parametrik.
a.) Uji Korelasi Variable Y dengan X1
cor.test(DataDirawatJanuari2021$retail_and_recreation_percent_change_from_baseline, DataDirawatJanuari2021$DIRAWAT)
##
## Pearson's product-moment correlation
##
## data: DataDirawatJanuari2021$retail_and_recreation_percent_change_from_baseline and DataDirawatJanuari2021$DIRAWAT
## t = -0.84284, df = 28, p-value = 0.4065
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.4898100 0.2151644
## sample estimates:
## cor
## -0.1572981
b.) Uji Korelasi Variable Y dengan X2
cor.test(DataDirawatJanuari2021$grocery_and_pharmacy_percent_change_from_baseline, DataDirawatJanuari2021$DIRAWAT)
##
## Pearson's product-moment correlation
##
## data: DataDirawatJanuari2021$grocery_and_pharmacy_percent_change_from_baseline and DataDirawatJanuari2021$DIRAWAT
## t = -0.9543, df = 28, p-value = 0.3481
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.5054330 0.1952735
## sample estimates:
## cor
## -0.1774817
c.) Uji Korelasi Variable Y dengan X3
cor.test(DataDirawatJanuari2021$parks_percent_change_from_baseline, DataDirawatJanuari2021$DIRAWAT)
##
## Pearson's product-moment correlation
##
## data: DataDirawatJanuari2021$parks_percent_change_from_baseline and DataDirawatJanuari2021$DIRAWAT
## t = 1.4869, df = 28, p-value = 0.1482
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.09943726 0.57477427
## sample estimates:
## cor
## 0.2705232
d.) Uji Korelasi Variable Y dengan X4
cor.test(DataDirawatJanuari2021$transit_stations_percent_change_from_baseline, DataDirawatJanuari2021$DIRAWAT)
##
## Pearson's product-moment correlation
##
## data: DataDirawatJanuari2021$transit_stations_percent_change_from_baseline and DataDirawatJanuari2021$DIRAWAT
## t = -1.1356, df = 28, p-value = 0.2657
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.5300358 0.1627358
## sample estimates:
## cor
## -0.2098359
cor.test(DataDirawatJanuari2021$workplaces_percent_change_from_baseline, DataDirawatJanuari2021$DIRAWAT)
##
## Pearson's product-moment correlation
##
## data: DataDirawatJanuari2021$workplaces_percent_change_from_baseline and DataDirawatJanuari2021$DIRAWAT
## t = -1.8839, df = 28, p-value = 0.07001
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.62066795 0.02829208
## sample estimates:
## cor
## -0.3353958
cor.test(DataDirawatJanuari2021$residential_percent_change_from_baseline, DataDirawatJanuari2021$DIRAWAT)
##
## Pearson's product-moment correlation
##
## data: DataDirawatJanuari2021$residential_percent_change_from_baseline and DataDirawatJanuari2021$DIRAWAT
## t = 2.6522, df = 28, p-value = 0.01302
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.1047261 0.6960010
## sample estimates:
## cor
## 0.4480891