library(readxl) #untuk impor .xlsx
library(lmtest) # untuk membuat model regresi
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
data2 = read_xlsx("Data Potik.xlsx")
head(data2)
## # A tibble: 6 × 5
## `Kabupaten/ Kota` AHH AKB ABH MCK
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 ACEH 69.9 19.4 1.58 76.5
## 2 SUMATERA UTARA 69.1 18.3 0.77 87.3
## 3 SUMATERA BARAT 69.5 16.4 0.77 76.2
## 4 RIAU 71.6 15.7 0.71 91.8
## 5 JAMBI 71.2 17.0 1.64 85.0
## 6 SUMATERA SELATAN 69.9 16.8 1.16 82.5
summary(data2)
## Kabupaten/ Kota AHH AKB ABH
## Length:34 Min. :65.06 Min. :10.38 Min. : 0.2600
## Class :character 1st Qu.:68.67 1st Qu.:15.55 1st Qu.: 0.9875
## Mode :character Median :69.96 Median :17.23 Median : 1.7050
## Mean :70.04 Mean :19.74 Mean : 3.3024
## 3rd Qu.:71.53 3rd Qu.:24.30 3rd Qu.: 4.6750
## Max. :74.99 Max. :38.17 Max. :20.3500
## MCK
## Min. :61.74
## 1st Qu.:76.27
## Median :82.33
## Mean :80.92
## 3rd Qu.:85.49
## Max. :93.55
x1 <- data2$AKB # mendefinisikan data AKB sebagai variabel x1
x2 <- data2$ABH # mendefinisikan data ABH sebagai variabel x2
x3 <- data2$MCK # mendefinisikan data MCK sebagai variabel x3
y <- data2$AHH # mendefinisikan data Y sebagai variabel y
model<- lm(y ~ x1+x2+x3)
model$coefficients
## (Intercept) x1 x2 x3
## 73.50365681 -0.27919661 0.03234640 0.02398661
summary(model)
##
## Call:
## lm(formula = y ~ x1 + x2 + x3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.24410 -0.94660 -0.06875 1.10792 2.88728
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 73.50366 4.83556 15.201 1.23e-15 ***
## x1 -0.27920 0.05565 -5.017 2.22e-05 ***
## x2 0.03235 0.07309 0.443 0.661
## x3 0.02399 0.04878 0.492 0.627
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.478 on 30 degrees of freedom
## Multiple R-squared: 0.688, Adjusted R-squared: 0.6568
## F-statistic: 22.05 on 3 and 30 DF, p-value: 9.75e-08
res <- model$residuals # mendefinisikan residual
1. ASUMSI LINIERITAS Asumsi linieritas harus terpenuhi sebelum melakukan pemodelan regresi linier. Untuk melihat bagaimana pola data apakah linier atau tidak, kita bisa menggunakan plot dari sebaran data.
#install.packages("car")
library(car)
## Loading required package: carData
crPlots(model)
2. PENGUJIAN ASUMSI HOMOSKEDASTISITAS Model regresi yang memenuhi persayaratan adalah model regresi yang memiliki kesamaan varians residual dari satu pengamatan ke pengamatan yang lain tetap atau disebut homoskedastis. Uji heterokedastisitas adalah uji untuk melihat apakah terdapat ketidaksamaan varians dari residual satu pengamatan ke pengamatan yang lain.
# BENTUK VARIABEL NILAI ABSOLUT DARI RESIDUAL
abs_res <- abs(res)
# REGRESIKAN SELURUH VARIABEL BEBAS TERHADAP NILAI ABSOLUT DARI RESIDUAL
model_glejser <- lm(abs_res~x1+x2+x3)
summary(model_glejser)
##
## Call:
## lm(formula = abs_res ~ x1 + x2 + x3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.0862 -0.5511 -0.0331 0.5326 1.6869
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.534740 2.640061 0.203 0.841
## x1 0.004533 0.030381 0.149 0.882
## x2 0.008996 0.039904 0.225 0.823
## x3 0.006287 0.026634 0.236 0.815
##
## Residual standard error: 0.8071 on 30 degrees of freedom
## Multiple R-squared: 0.003005, Adjusted R-squared: -0.09669
## F-statistic: 0.03014 on 3 and 30 DF, p-value: 0.9928
3. PEMERIKSAAN ASUMSI NONMULTIKOLINIERITAS multikolinearitas adalah uji untuk melihat ada atau tidaknya korelasi yang tinggi antara variabel bebas dalam suatu model regresi linear berganda. Jika ada korelasi yang tinggi di antara variabel-variabel bebasnya, maka hubungan antara variabel bebas dengan variabel respon (variabel terikat) nya terganggu. Alat statistik yang sering digunakan untuk menguji gangguan multikolinearitas adalah variance inflation factor (VIF)
vif(model)
## x1 x2 x3
## 2.369611 1.238668 2.443183
Karena nilai VIF < 10 maka asumsi nonmultikolineritas terpenuhi semua
4. Non Autokorelasi
car::durbinWatsonTest(model)
## lag Autocorrelation D-W Statistic p-value
## 1 0.2804502 1.429213 0.054
## Alternative hypothesis: rho != 0
lmtest::dwtest(model, alternative = 'two.sided')
##
## Durbin-Watson test
##
## data: model
## DW = 1.4292, p-value = 0.0502
## alternative hypothesis: true autocorrelation is not 0
lmtest::bgtest(model, order=1)
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: model
## LM test = 2.9432, df = 1, p-value = 0.08624
5. ASUMSI NORMAL Uji normalitas untuk melihat apakah nilai residual terdistribusi normal atau tidak. Model regresi yang baik adalah memiliki nilai residual yang berdistribusi normal, bukan pada masing-masing variabelnya. QQ-plot adalah uji kenormalan secara visual dengan grafik. Selain dengan QQ-plot bisa menggunakan uji Kolmogorov-Smirnov.
# Evaluasi Normalitas
# Menggunakan QQ-plot
qqPlot(model, main='QQ-Plot Regresi Linier Berganda')
## [1] 14 23
ks.test(res, "pnorm", mean=mean(res),sd=sd(res)) # Uji Kolmogorov-Smirnov --uji kenormalan
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: res
## D = 0.079896, p-value = 0.9696
## alternative hypothesis: two-sided