RLB merupakan perluasan dari regresi linier sederhana (RLS) dengan dua atau lebih variabel 𝑋1, 𝑋2, … , 𝑋𝑘 sebagai variabel independen dan variabel Y sebagai variabel dependen. Pada metode kuadrat terkecil akan diperoleh suatu sistem persamaan linier yang dapat dibentuk ke dalam perkalian matriks. Perhitungan nilai koefisien regresi dilakukan dengan menyelesaikan solusi sistem. Solusi sistem tersebut dapat dicari dengan menggunakan eliminasi Gauss(Khatimah, 2024)
Bagaimana melakukan analisis regresi linier berganda yang meliputi eksplorasi data, statistik deskriptif, estimasi model, pengujian asumsi klasik, uji signifikansi parameter, serta identifikasi dan pengujian outlier menggunakan program R?
Melakukan analisis regresi linier berganda, menguji asumsi klasik dan signifikansi parameter, serta mengidentifikasi outlier menggunakan Influence Plot dan uji Bonferroni.
Analisis menggunakan data sekunder tahun 2024 dari 38 provinsi di Indonesia. Variabel dependen yang digunakan adalah garis kemiskinan menurut provinsi (Y), sedangkan variabel independen terdiri atas PDRB (X1), tingkat penganguran terbuka(TPT)(X2), rata-rata lama sekolah (RLS) (X3), Tahapan analisis mengikuti batasan masalah Komstat Pertemuan 9, yaitu eksplorasi data, statistik deskriptif, pembentukan model regresi, pengujian asumsi klasik, uji F dan uji t, serta deteksi outlier menggunakan Influence Plot dan uji Bonferroni.
Regresi linier berganda digunakan untuk mengetahui hubungan satu variabel dependen dengan dua atau lebih variabel independen. Model yang digunakan dalam analisis ini adalah:
\[ Y_i = \beta_0+\beta_1X_{1i}+\beta_2X_{2i}+\beta_3X_{3i}+\varepsilon_i \]
Uji Asumsi klasik adalah analisis yang dilakukan untuk menilai apakah di dalam sebuah model regresi linear OLS terdapat masalahmasalah asumsi klasik. Pengujian asumsi klasik meliputi uji normalitas residual, multikolinieritas, heteroskedastisitas, dan autokorelasi. Pengujian dilakukan untuk memeriksa kelayakan model regresi berdasarkan asumsi yang digunakan (Mardiatmoko, 2020).
Uji signifikansi parameter merupakan pengujian statistik yang dilakukan untuk mengetahui apakah variabel independen memiliki pengaruh yang signifikan terhadap variabel dependen dalam model regresi. Pengujian ini bertujuan untuk mengetahui keberartian parameter regresi, baik secara bersama-sama maupun secara individual. Menurut pembahasan dalam Jurnal Berkala Ilmiah Efisiensi (2024), pengujian signifikansi parameter dapat dilakukan melalui Uji F untuk mengetahui pengaruh variabel independen secara simultan dan Uji t untuk mengetahui pengaruh variabel independen secara parsial. Pengujian dilakukan dengan menggunakan taraf signifikansi sebesar 5% atau 0,05 (Dauda, 2024).
Identifikasi outlier merupakan proses untuk mendeteksi pengamatan yang memiliki nilai berbeda secara ekstrem dibandingkan dengan sebagian besar pengamatan lainnya. Menurut Sihombing et al. (2023), keberadaan outlier dapat memengaruhi hasil analisis statistik dan menyebabkan data tidak berdistribusi normal. Identifikasi outlier dapat dilakukan menggunakan beberapa metode, seperti boxplot, histogram, dan uji Grubbs. Pengamatan yang teridentifikasi sebagai outlier perlu diperiksa lebih lanjut untuk menentukan penanganan yang sesuai, seperti transformasi Box-Cox, winsorizing, atau trimming. Oleh karena itu, identifikasi outlier diperlukan untuk mengetahui adanya pengamatan ekstrem yang berpotensi memengaruhi hasil analisis regresi (Sihombing, 2023). ## 2.5 Bentuk Umum Model Regresi
Model regresi linier berganda dengan lima variabel independen dapat dituliskan sebagai berikut:
\[ Y_i=\beta_0+\beta_1X_{1i}+\beta_2X_{2i} +\beta_3X_{3i}+\varepsilon_i \]
Keterangan: \(Y_i\) merupakan PDRB per kapita, \(\beta_0\) merupakan konstanta, \(\beta_j\) merupakan koefisien regresi, \(X_{ji}\) merupakan variabel independen, dan \(\varepsilon_i\) merupakan galat.
Taraf signifikansi yang digunakan dalam pengujian adalah \(\alpha=0,05\). Keputusan pengujian didasarkan pada nilai p-value dengan ketentuan: - Jika p-value < 0,05, maka \(H_0\) ditolak. - Jika p-value ≥ 0,05, maka \(H_0\) gagal ditolak.
Data yang digunakan merupakan data kuantitatif sekunder tahun 2024 yang mencakup 38 provinsi di Indonesia. Data variabel penelitian disusun berdasarkan data yang digunakan pada laporan praktikum sebelumnya.
| Variabel | Keterangan |
|---|---|
| Y | garis kemiskinan menurut provinsi |
| X1 | PDRB |
| X2 | tingkat penganguran terbuka(TPT) |
| X3 | rata-rata lama sekolah (RLS) |
Tahapan analisis dilakukan dengan memasukkan data, mengeksplorasi data, menghitung statistik deskriptif, membentuk model regresi linier berganda, menguji asumsi klasik, melakukan uji F dan uji t, serta mengidentifikasi outlier menggunakan Influence Plot dan uji Bonferroni.
Analisis dilakukan menggunakan perangkat lunak R melalui RStudio dan
disusun dalam dokumen R Markdown. Paket car digunakan untuk
menghitung VIF, Influence Plot, dan uji Bonferroni, sedangkan
paket lmtest digunakan untuk uji Breusch-Pagan dan
Durbin-Watson.
Data dimasukkan langsung ke dalam R Markdown agar dokumen dapat dijalankan tanpa bergantung pada clipboard atau lokasi file di komputer.
data <- data.frame(
Provinsi = c(
"ACEH", "SUMATERA UTARA", "SUMATERA BARAT", "RIAU", "JAMBI", "SUMATERA SELATAN", "BENGKULU", "LAMPUNG", "KEP. BANGKA BELITUNG",
"KEP. RIAU", "DKI JAKARTA", "JAWA BARAT", "JAWA TENGAH", "DI YOGYAKARTA",
"JAWA TIMUR", "BANTEN", "BALI", "NUSA TENGGARA BARAT", "NUSA TENGGARA TIMUR", "KALIMANTAN BARAT", "KALIMANTAN TENGAH", "KALIMANTAN SELATAN", "KALIMANTAN TIMUR", "KALIMANTAN UTARA", "SULAWESI UTARA", "SULAWESI TENGAH", "SULAWESI SELATAN", "SULAWESI TENGGARA", "GORONTALO", "SULAWESI BARAT", "MALUKU", "MALUKU UTARA", "PAPUA BARAT", "PAPUA BARAT DAYA", "PAPUA"
),
Y = c(
191045, 188409, 211031, 232973, 203731, 168760, 206349, 180432, 268739, 280821, 281994, 156523, 144676, 191862, 147232, 204440, 216691, 151033, 199649, 189526, 172558, 218635, 287577, 250972, 134737, 181401, 150176, 161781, 135617, 110448, 236964, 206663, 283306, 253567, 278055
),
X1 = c(
36609.38, 165279.82, 48190.93, 106144, 37078.07, 114257.23, 17340.95, 84775.22, 16363, 41669.33, 643137.82, 523482.56, 307257.1, 33704.49, 546463.32, 132548.86, 44521.29, 29662.55, 24404.67, 42715.35, 23491.03, 34195.94, 41879.65, 6053.54, 22873.13, 29936.29, 107975.45, 24774.67, 9708.21, 8808.32, 12699.72, 8162.58, 4105.78, 4946.05, 12932.58
),
X2 = c(
0.211805556, 5.05, 5.69, 4.12, 4.48, 3.89, 3.24, 4.07, 4.17, 6.89, 6.18, 6.74, 4.33, 3.18, 3.61, 6.64, 1.58, 3.22, 3.23, 4.23, 3.47, 3.94, 5.33, 3.9, 6.03, 3.02, 4.96, 3.27, 3.12, 3.17, 5.95, 4.26, 4.21, 6.61, 6.92
),
X3 = c(
10.07, 10.36, 9.35, 9.38, 10.75, 8.93, 10.37, 10.34, 10.81, 9.78, 9.99, 9.59, 9.28, 9.28, 9.53, 9.72, 9.6, 10.43, 10.03, 13.47, 11.35, 11.7, 11.71, 9.31, 10.25, 7.69, 9.37, 9.88, 9.21, 10.73, 10.94, 9.74, 9.31, 9.94, 10.15
)
)
head(data)
#> Provinsi Y X1 X2 X3
#> 1 ACEH 191045 36609.38 0.2118056 10.07
#> 2 SUMATERA UTARA 188409 165279.82 5.0500000 10.36
#> 3 SUMATERA BARAT 211031 48190.93 5.6900000 9.35
#> 4 RIAU 232973 106144.00 4.1200000 9.38
#> 5 JAMBI 203731 37078.07 4.4800000 10.75
#> 6 SUMATERA SELATAN 168760 114257.23 3.8900000 8.93
dim(data)
#> [1] 35 5
str(data)
#> 'data.frame': 35 obs. of 5 variables:
#> $ Provinsi: chr "ACEH" "SUMATERA UTARA" "SUMATERA BARAT" "RIAU" ...
#> $ Y : num 191045 188409 211031 232973 203731 ...
#> $ X1 : num 36609 165280 48191 106144 37078 ...
#> $ X2 : num 0.212 5.05 5.69 4.12 4.48 ...
#> $ X3 : num 10.07 10.36 9.35 9.38 10.75 ...
# Memeriksa struktur dan tipe data
str(data)
#> 'data.frame': 35 obs. of 5 variables:
#> $ Provinsi: chr "ACEH" "SUMATERA UTARA" "SUMATERA BARAT" "RIAU" ...
#> $ Y : num 191045 188409 211031 232973 203731 ...
#> $ X1 : num 36609 165280 48191 106144 37078 ...
#> $ X2 : num 0.212 5.05 5.69 4.12 4.48 ...
#> $ X3 : num 10.07 10.36 9.35 9.38 10.75 ...
# Memeriksa jumlah observasi dan variabel
cat("Jumlah observasi:", nrow(data), "\n")
#> Jumlah observasi: 35
cat("Jumlah variabel:", ncol(data), "\n")
#> Jumlah variabel: 5
# Memeriksa data kosong
colSums(is.na(data))
#> Provinsi Y X1 X2 X3
#> 0 0 0 0 0
# Memeriksa baris data
head(data)
#> Provinsi Y X1 X2 X3
#> 1 ACEH 191045 36609.38 0.2118056 10.07
#> 2 SUMATERA UTARA 188409 165279.82 5.0500000 10.36
#> 3 SUMATERA BARAT 211031 48190.93 5.6900000 9.35
#> 4 RIAU 232973 106144.00 4.1200000 9.38
#> 5 JAMBI 203731 37078.07 4.4800000 10.75
#> 6 SUMATERA SELATAN 168760 114257.23 3.8900000 8.93
tail(data)
#> Provinsi Y X1 X2 X3
#> 30 SULAWESI BARAT 110448 8808.32 3.17 10.73
#> 31 MALUKU 236964 12699.72 5.95 10.94
#> 32 MALUKU UTARA 206663 8162.58 4.26 9.74
#> 33 PAPUA BARAT 283306 4105.78 4.21 9.31
#> 34 PAPUA BARAT DAYA 253567 4946.05 6.61 9.94
#> 35 PAPUA 278055 12932.58 6.92 10.15
# Statistik deskriptif
summary(data[, c("Y", "X1", "X2", "X3")])
#> Y X1 X2 X3
#> Min. :110448 Min. : 4106 Min. :0.2118 Min. : 7.690
#> 1st Qu.:165271 1st Qu.: 16852 1st Qu.:3.2550 1st Qu.: 9.375
#> Median :199649 Median : 34196 Median :4.1700 Median : 9.940
#> Mean :202239 Mean : 95661 Mean :4.3689 Mean :10.067
#> 3rd Qu.:234969 3rd Qu.: 95460 3rd Qu.:5.5100 3rd Qu.:10.400
#> Max. :287577 Max. :643138 Max. :6.9200 Max. :13.470
# Rata-rata dan standar deviasi
sapply(data[, c("Y", "X1", "X2", "X3")],
function(x) c(Mean = mean(x), SD = sd(x)))
#> Y X1 X2 X3
#> Mean 202239.23 95661.4 4.368909 10.0668571
#> SD 48701.54 159813.1 1.527733 0.9981358
regresi <- lm(Y ~ X1 + X2 + X3, data = data)
# Ringkasan model
summary(regresi)
#>
#> Call:
#> lm(formula = Y ~ X1 + X2 + X3, data = data)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -93980 -25034 -547 36980 89034
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 1.229e+05 8.356e+04 1.471 0.1514
#> X1 -5.962e-02 5.241e-02 -1.138 0.2640
#> X2 1.302e+04 5.420e+03 2.402 0.0225 *
#> X3 2.798e+03 8.132e+03 0.344 0.7331
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 46340 on 31 degrees of freedom
#> Multiple R-squared: 0.1744, Adjusted R-squared: 0.09448
#> F-statistic: 2.183 on 3 and 31 DF, p-value: 0.11
# Koefisien regresi
coef(regresi)
#> (Intercept) X1 X2 X3
#> 1.229034e+05 -5.962218e-02 1.301865e+04 2.797510e+03
# Persamaan regresi
cat("Y =", round(coef(regresi)[1], 4),
"+", round(coef(regresi)[2], 4), "X1",
"+", round(coef(regresi)[3], 4), "X2",
"+", round(coef(regresi)[4], 4), "X5\n")
#> Y = 122903.4 + -0.0596 X1 + 13018.65 X2 + 2797.51 X5
# Memuat paket yang diperlukan
library(car)
library(lmtest)
shapiro.test(residuals(regresi))
#>
#> Shapiro-Wilk normality test
#>
#> data: residuals(regresi)
#> W = 0.98572, p-value = 0.9203
# Q-Q Plot
qqnorm(residuals(regresi),
main = "Normal Q-Q Plot Residual")
qqline(residuals(regresi), col = "red", lwd = 2)
Kriteria keputusan: jika p-value lebih besar dari 0,05, maka tidak terdapat cukup bukti untuk menyatakan residual tidak berdistribusi normal.
vif(regresi)
#> X1 X2 X3
#> 1.110771 1.085474 1.042887
Kriteria keputusan: nilai VIF di bawah 10 menunjukkan tidak terdapat indikasi multikolinieritas yang serius.
bptest(regresi)
#>
#> studentized Breusch-Pagan test
#>
#> data: regresi
#> BP = 1.682, df = 3, p-value = 0.641
Kriteria keputusan: jika p-value lebih besar dari 0,05, maka tidak terdapat cukup bukti adanya heteroskedastisitas.
dwtest(regresi)
#>
#> Durbin-Watson test
#>
#> data: regresi
#> DW = 1.7468, p-value = 0.173
#> alternative hypothesis: true autocorrelation is greater than 0
Kriteria keputusan: jika p-value lebih besar dari 0,05, maka tidak terdapat cukup bukti adanya autokorelasi. Karena data ini merupakan data lintas provinsi, urutan observasi perlu diperhatikan dalam menafsirkan uji Durbin-Watson.
hasil_model <- summary(regresi)
hasil_model$fstatistic
#> value numdf dendf
#> 2.182555 3.000000 31.000000
p_value_f <- pf(
hasil_model$fstatistic[1],
hasil_model$fstatistic[2],
hasil_model$fstatistic[3],
lower.tail = FALSE
)
cat("P-value Uji F =", p_value_f, "\n")
#> P-value Uji F = 0.1099985
if (p_value_f < 0.05) {
cat("Keputusan: Tolak H0. Variabel independen secara simultan berpengaruh signifikan terhadap Y.")
} else {
cat("Keputusan: Gagal menolak H0. Belum terdapat bukti pengaruh simultan yang signifikan.")
}
#> Keputusan: Gagal menolak H0. Belum terdapat bukti pengaruh simultan yang signifikan.
koefisien <- coef(summary(regresi))
koefisien
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 1.229034e+05 8.356132e+04 1.4708163 0.15141933
#> X1 -5.962218e-02 5.241445e-02 -1.1375141 0.26403941
#> X2 1.301865e+04 5.420178e+03 2.4018856 0.02249189
#> X3 2.797510e+03 8.131678e+03 0.3440262 0.73314931
# Keputusan uji t untuk setiap variabel independen
hasil_uji_t <- data.frame(
Variabel = rownames(koefisien),
Koefisien = koefisien[, "Estimate"],
t_hitung = koefisien[, "t value"],
p_value = koefisien[, "Pr(>|t|)"],
Keputusan = ifelse(
koefisien[, "Pr(>|t|)"] < 0.05,
"Tolak H0",
"Gagal menolak H0"
)
)
hasil_uji_t
#> Variabel Koefisien t_hitung p_value Keputusan
#> (Intercept) (Intercept) 1.229034e+05 1.4708163 0.15141933 Gagal menolak H0
#> X1 X1 -5.962218e-02 -1.1375141 0.26403941 Gagal menolak H0
#> X2 X2 1.301865e+04 2.4018856 0.02249189 Tolak H0
#> X3 X3 2.797510e+03 0.3440262 0.73314931 Gagal menolak H0
Kriteria keputusan: jika p-value lebih kecil dari 0,05, maka H0 ditolak. Artinya, variabel independen yang diuji berpengaruh signifikan secara parsial terhadap Y.
influencePlot(
regresi,
id.method = "noteworthy",
main = "Influence Plot",
sub = "Ukuran lingkaran menunjukkan Cook's Distance"
)
#> StudRes Hat CookD
#> 11 2.678407 0.38305147 0.92859274
#> 12 -1.262658 0.26352536 0.13993588
#> 20 -0.638545 0.37710348 0.06291370
#> 25 -2.248730 0.08035339 0.09767588
# Menghitung ukuran pengaruh setiap pengamatan
pengaruh <- data.frame(
Provinsi = data$Provinsi,
StudRes = rstudent(regresi),
Hat = hatvalues(regresi),
CookD = cooks.distance(regresi)
)
# Menampilkan pengamatan dengan Cook's Distance terbesar
pengaruh[order(-pengaruh$CookD), ][1:10, ]
#> Provinsi StudRes Hat CookD
#> 11 DKI JAKARTA 2.678407 0.38305147 0.92859274
#> 12 JAWA BARAT -1.262658 0.26352536 0.13993588
#> 25 SULAWESI UTARA -2.248730 0.08035339 0.09767588
#> 1 ACEH 0.982199 0.25177916 0.08125004
#> 23 KALIMANTAN TIMUR 1.525058 0.11741002 0.07417735
#> 20 KALIMANTAN BARAT -0.638545 0.37710348 0.06291370
#> 30 SULAWESI BARAT -1.935913 0.06340912 0.05826800
#> 33 PAPUA BARAT 1.844264 0.06089135 0.05117104
#> 17 BALI 1.139550 0.13023920 0.04814885
#> 10 KEP. RIAU 1.006558 0.13626206 0.03994167
# Pengamatan dengan |studentized residual| > 3
subset(pengaruh, abs(StudRes) > 3)
#> [1] Provinsi StudRes Hat CookD
#> <0 rows> (or 0-length row.names)
# Pengamatan dengan leverage di atas 2p/n
n <- nobs(regresi)
p <- length(coef(regresi))
batas_leverage <- 2 * p / n
batas_leverage
#> [1] 0.2285714
subset(pengaruh, Hat > batas_leverage)
#> Provinsi StudRes Hat CookD
#> 1 ACEH 0.9821990 0.2517792 0.08125004
#> 11 DKI JAKARTA 2.6784068 0.3830515 0.92859274
#> 12 JAWA BARAT -1.2626581 0.2635254 0.13993588
#> 15 JAWA TIMUR -0.4291702 0.3096286 0.02120995
#> 20 KALIMANTAN BARAT -0.6385450 0.3771035 0.06291370
outlierTest(regresi, cutoff = 0.05, n.max = 10)
#> No Studentized residuals with Bonferroni p < 0.05
#> Largest |rstudent|:
#> rstudent unadjusted p-value Bonferroni p
#> 11 2.678407 0.011885 0.41599
Hipotesis pengujian:
Kriteria keputusan: jika Bonferroni p-value lebih kecil dari 0,05, maka H0 ditolak sehingga pengamatan tersebut teridentifikasi sebagai outlier secara statistik.
cat("Jumlah observasi =", nobs(regresi), "\n")
#> Jumlah observasi = 35
cat("R-squared =", summary(regresi)$r.squared, "\n")
#> R-squared = 0.1743827
cat("Adjusted R-squared =", summary(regresi)$adj.r.squared, "\n")
#> Adjusted R-squared = 0.09448428
cat("P-value uji F =", p_value_f, "\n")
#> P-value uji F = 0.1099985
cat("\nP-value uji t:\n")
#>
#> P-value uji t:
print(coef(summary(regresi))[, "Pr(>|t|)"])
#> (Intercept) X1 X2 X3
#> 0.15141933 0.26403941 0.02249189 0.73314931
Kesimpulan disusun berdasarkan hasil analisis yang diperoleh setelah seluruh bagian R Markdown dijalankan. Kesimpulan mencakup gambaran data, persamaan regresi linier berganda, hasil pengujian asumsi klasik, hasil uji F dan uji t, serta hasil identifikasi dan pengujian outlier menggunakan Influence Plot dan uji Bonferroni.
Penelitian selanjutnya diharapkan dapat menggunakan data yang lebih lengkap dan memperhatikan karakteristik data sebelum membentuk model regresi. Pengamatan yang terindikasi sebagai outlier perlu diperiksa lebih lanjut berdasarkan konteks data dan hasil pengujian statistik, bukan langsung dihapus dari analisis.
Dauda, L. I., Masinambow, V. A. J., & Maramis, M. T. B. (2024). Pengaruh sektor pariwisata terhadap pertumbuhan ekonomi dan penyerapan tenaga kerja di Kota Bitung. Jurnal Berkala Ilmiah Efisiensi, 24(1).
Khotimah, A. K., Rahman, A. A., Alam, M. Z., Adawiyah, R., Nur, Y. H., Aufi, T. R., & Sifriyani, S. (2024). Analisis Regresi Linier Berganda Dalam Estimasi Indeks Pembangunan Manusia di Indonesia. EKSPONENSIAL, 15(2), 90-99.
Mardiatmoko, G. (2020). Pentingnya uji asumsi klasik pada analisis regresi linier berganda. BAREKENG: Jurnal Ilmu Matematika Dan Terapan.
Rini, D. S. (2026). Modul Praktikum Analisis Regresi dan Korelasi. Bengkulu: Laboratorium Matematika FMIPA Universitas Bengkulu.
Sihombing, P. R., Suryadiningrat, S., Sunarjo, D. A., & Yuda, Y. P. A. C. (2023). Identifikasi data outlier (pencilan) dan kenormalan data pada data univariat serta alternatif penyelesaiannya. Jurnal Ekonomi dan Statistik Indonesia, 2(3), 307–316