LABORATORIUM STATISTIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS BENGKULU 2026
| Nama | Fadillah Riski NST |
| NPM | F1F025027 |
| Dosen Pengampu | Dr. Pepi Novianti, S.Si., M.Si.; Riwi Dyah Pangesti, S.Si., M.Si.; Susi Wijuniamurti, S.Si., M.Stat.; Wina Ayu Lestari, S.Si., M.Stat. |
| Asisten Praktikum | Mustika Surya Ningsih (F1F023018); Khalisa Qori Shofa (F1F024048); Rameza Elia (F1F024056); Carolin Veronika (F1F024060) |
Analisis data merupakan tahapan penelitian yang dilakukan setelah seluruh data yang diperlukan terkumpul. Ketepatan pemilihan alat analisis sangat menentukan keakuratan kesimpulan, sehingga tahap ini tidak boleh diabaikan (Qomusuddin & Romlah, 2021). Perhitungan statistik yang cepat dan tepat dapat dibantu perangkat lunak seperti SPSS, MINITAB, MATLAB, dan R. Program R termasuk perangkat lunak open source yang banyak dipakai untuk komputasi statistik (Barus, 2023).
Analisis regresi merupakan metode statistika untuk mempelajari hubungan antara variabel independen (prediktor) dan variabel dependen (kriterium), serta untuk memodelkan dan mengestimasi nilai variabel dependen berdasarkan informasi pada variabel independen. Hubungan tersebut dinyatakan dalam suatu persamaan regresi.
Model regresi linier berganda yang baik harus dievaluasi secara menyeluruh. Pertama, model harus memenuhi asumsi klasik, yaitu normalitas residual, tidak adanya multikolinieritas, homoskedastisitas, dan tidak adanya autokorelasi. Pelanggaran asumsi dapat membuat estimasi menjadi bias, tidak efisien, dan menyesatkan dalam pengambilan kesimpulan. Kedua, model harus diuji signifikansinya, baik secara simultan (Uji F) maupun parsial (Uji t). Ketiga, model perlu diperiksa dari kemungkinan adanya pencilan (outlier), yaitu pengamatan yang jauh dari pola mayoritas data dan berpotensi memengaruhi koefisien regresi (Fadlilah dkk., 2022).
Laporan ini menggabungkan seluruh tahapan tersebut dalam satu rangkaian analisis menggunakan data sekunder dari Badan Pusat Statistik (BPS), yaitu data pembangunan manusia 37 provinsi di Indonesia tahun 2024. Variabel dependen yang dianalisis adalah Pengeluaran Riil per Kapita, dengan Indeks Pembangunan Manusia, Rata-rata Lama Sekolah, dan Harapan Lama Sekolah sebagai variabel independen.
Berdasarkan latar belakang di atas, rumusan masalah dalam laporan ini adalah:
Tujuan yang ingin dicapai adalah mahasiswa mampu:
Batasan masalah pada laporan ini adalah membuat laporan analisis regresi dengan format R Markdown yang mengikuti sistematika laporan praktikum (Bab I sampai Bab V dan Daftar Pustaka). Analisis mencakup:
Data yang digunakan berjumlah lebih dari 35 observasi, dengan satu variabel dependen dan tiga variabel independen.
Sistematika penulisan laporan ini adalah sebagai berikut:
Regresi linier berganda adalah metode untuk menjelaskan hubungan antara satu variabel dependen dengan dua atau lebih variabel independen. Dengan \(k\) variabel independen, model untuk pengamatan ke-\(i\) dituliskan:
\[Y_i = \beta_0 + \beta_1 X_{1i} + \beta_2 X_{2i} + \dots + \beta_k X_{ki} + \varepsilon_i, \quad i = 1, 2, \dots, n\]
Dalam notasi matriks, \(\mathbf{y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}\). Parameter diestimasi dengan metode kuadrat terkecil biasa (Ordinary Least Squares, OLS):
\[\hat{\boldsymbol{\beta}} = (\mathbf{X}^{\top}\mathbf{X})^{-1}\mathbf{X}^{\top}\mathbf{y}\]
Koefisien determinasi \(R^2 = 1 - \frac{JKG}{JKT}\) menyatakan proporsi variasi \(Y\) yang dijelaskan oleh seluruh variabel independen. \(R^2_{adj}\) adalah versi \(R^2\) yang telah dikoreksi oleh banyaknya parameter dalam model.
Statistik deskriptif merangkum data dalam bentuk ukuran pemusatan (rata-rata, median) dan ukuran penyebaran (minimum, kuartil, maksimum, simpangan baku). Penyajian ini, bersama grafik seperti boxplot, histogram, dan diagram pencar, digunakan pada tahap eksplorasi data untuk mengenali sebaran, kecenderungan hubungan antarvariabel, dan kemungkinan nilai ekstrem sebelum pemodelan.
Uji asumsi klasik memastikan bahwa model regresi linier berganda tidak melanggar prinsip-prinsip dasar statistik, sehingga hasil estimasi dan inferensinya dapat dipercaya (Mardiatmoko, 2020).
Asumsi normalitas mensyaratkan galat (residual) berdistribusi normal. Asumsi ini penting bagi validitas Uji F, Uji t, dan selang kepercayaan (Mardiatmoko, 2020). Deteksi dapat dilakukan secara visual (histogram residual dan Normal Q-Q Plot) maupun uji formal seperti Shapiro-Wilk, Anderson-Darling, dan Kolmogorov-Smirnov. Kombinasi pemeriksaan grafis dan uji formal dianjurkan karena kinerja uji normalitas bergantung pada ukuran sampel, kemencengan, dan keruncingan data (LaFromboise, 2024). Pada uji Shapiro-Wilk, hipotesisnya adalah:
\(H_0\) ditolak jika p-value \(< \alpha\).
Heteroskedastisitas adalah keadaan ketika varians galat tidak konstan antarpengamatan. Kondisi ini membuat estimasi menjadi tidak efisien dan kesimpulan menjadi bias (Rachman & Kurniawati, 2024). Uji yang umum dipakai adalah Uji Glejser, Breusch-Pagan, dan White. Pada Uji Breusch-Pagan, hipotesisnya adalah:
Statistik ujinya berdistribusi \(\chi^2\) dengan derajat bebas sebanyak variabel independen, dan \(H_0\) ditolak jika p-value \(< \alpha\). Bila heteroskedastisitas terjadi, penanganannya dapat dilakukan dengan transformasi data atau Weighted Least Squares (WLS) (Rini, 2026).
Autokorelasi adalah korelasi antara galat pada pengamatan ke-\(t\) dengan galat pada pengamatan sebelumnya (\(t-1\)). Model yang baik tidak mengalami autokorelasi (Mardiatmoko, 2020). Pengujian dilakukan dengan statistik Durbin-Watson (Uyanto, 2024):
\[DW = \frac{\sum_{t=2}^{n}(e_t - e_{t-1})^2}{\sum_{t=1}^{n}e_t^2}\]
Nilai \(DW\) yang mendekati 2 menunjukkan tidak adanya autokorelasi. Hipotesisnya adalah \(H_0\): tidak ada autokorelasi dan \(H_1\): ada autokorelasi, dengan \(H_0\) ditolak jika p-value \(< \alpha\).
Multikolinieritas adalah hubungan linier yang sempurna atau mendekati sempurna antarvariabel independen. Kondisi ini meningkatkan varians koefisien regresi sehingga galat baku membesar dan uji signifikansi menjadi tidak valid (Razek, 2022). Gejalanya dideteksi dengan Variance Inflation Factor (VIF) dan Tolerance:
\[VIF_j = \frac{1}{1 - R_j^2}, \qquad Tolerance_j = \frac{1}{VIF_j}\]
Tidak terjadi multikolinieritas jika \(VIF < 10\) dan \(Tolerance > 0{,}1\) (Mardiatmoko, 2020).
Uji signifikansi parameter menentukan apakah hipotesis yang dirumuskan diterima atau ditolak, dan dilakukan secara simultan maupun parsial (Rini, 2025).
Uji F menguji apakah model regresi secara keseluruhan dapat diterima, yaitu apakah minimal ada satu variabel independen yang memiliki hubungan linier dengan variabel dependen (Rini, 2025). Hipotesisnya:
\[H_0: \beta_1 = \beta_2 = \dots = \beta_k = 0 \qquad H_1: \text{tidak semua } \beta_j = 0\]
\[F_{hit} = \frac{KT_{Regresi}}{KT_{Galat}} = \frac{JKR/k}{JKG/(n-k-1)}\]
\(H_0\) ditolak jika \(F_{hit} > F_{(\alpha;\,k,\,n-k-1)}\) atau p-value \(< \alpha\). Jika \(H_0\) ditolak, variabel independen secara bersama-sama berpengaruh signifikan terhadap variabel dependen dan model dapat digunakan (Chamidah, 2020; Adnyani dkk., 2020).
Uji t menguji kontribusi masing-masing variabel independen terhadap variabel dependen secara individual (Rini, 2025; Firmansyah & Triastie, 2021). Hipotesisnya:
\[H_0: \beta_j = 0 \qquad H_1: \beta_j \neq 0, \quad j = 1, 2, \dots, k\]
\[t_{hit} = \frac{b_j}{SE(b_j)}\]
\(H_0\) ditolak jika \(|t_{hit}| > t_{(\alpha/2;\,n-k-1)}\) atau p-value \(< \alpha\) (Wahyono, 2021).
Outlier (pencilan) adalah pengamatan yang menyimpang dari pola mayoritas data. Keberadaannya dapat membuat estimasi parameter menjadi bias, memengaruhi signifikansi pengujian, dan membuat distribusi data menjadi tidak normal (Barus, 2023). Deteksinya dilakukan dengan diagnostika regresi, yaitu statistik per kasus yang dihitung untuk setiap pengamatan (Hakim, 2016).
a. Outlier pada pengamatan Y. Dideteksi dengan studentized deleted residual (Rini, 2026):
\[t_i = e_i\sqrt{\frac{n-p-1}{SSE(1-h_{ii}) - e_i^2}}\]
dengan hipotesis \(H_0\): kasus ke-\(i\) bukan outlier dan \(H_1\): kasus ke-\(i\) adalah outlier.
b. Outlier pada pengamatan X (leverage). Elemen diagonal matriks HAT, \(h_{ii}\), memenuhi \(0 \le h_{ii} \le 1\) dan \(\sum_i h_{ii} = p\). Pengamatan ke-\(i\) disebut outlier pengamatan-X jika \(h_{ii} > 2p/n\) (Rini, 2026).
c. Pengaruh pengamatan (Cook’s Distance). Ukuran ini menggabungkan besar residual dan leverage:
\[D_i = \frac{e_i^2\, h_{ii}}{p\, s^2 (1-h_{ii})^2}\]
Nilai \(D_i\) yang besar (misalnya \(D_i > 4/n\)) menandakan pengamatan tersebut berpengaruh besar terhadap koefisien regresi.
d. Influence Plot. Grafik yang memetakan studentized residual (sumbu-Y) terhadap hat value (sumbu-X), dengan ukuran lingkaran sebanding dengan Cook’s Distance. Observasi yang jauh dari pusat grafik merupakan kandidat outlier atau pengamatan berpengaruh.
e. Uji Bonferroni. Karena studentized deleted residual terbesar dipilih dari \(n\) pengamatan, p-value harus dikoreksi atas banyaknya pengujian:
\[p_{Bonferroni} = \min\{1,\; n \times p_{tak\ terkoreksi}\}\]
Observasi dinyatakan outlier jika \(p_{Bonferroni} < \alpha\).
Jenis data yang digunakan adalah data kuantitatif, yaitu data berbentuk angka yang dapat diolah dengan analisis statistik. Data yang digunakan merupakan data sekunder, yaitu data yang diperoleh tidak secara langsung oleh peneliti dari sumber yang sudah tersedia. Data bersumber dari situs resmi Badan Pusat Statistik (BPS), berupa indikator pembangunan manusia 37 provinsi di Indonesia tahun 2024 (BPS, 2024).
Pemilihan data mengikuti kriteria berikut:
| Simbol | Variabel | Keterangan |
|---|---|---|
| \(Y\) | Pengeluaran Riil per Kapita (variabel dependen) | Rata-rata pengeluaran riil penduduk per kapita yang disesuaikan |
| \(X_1\) | Indeks Pembangunan Manusia (IPM) | Capaian pembangunan manusia pada dimensi kesehatan, pendidikan, dan standar hidup layak |
| \(X_2\) | Rata-rata Lama Sekolah (RLS) | Rata-rata jumlah tahun pendidikan formal yang telah ditempuh penduduk |
| \(X_3\) | Harapan Lama Sekolah (HLS) | Perkiraan lamanya pendidikan formal yang dapat ditempuh anak pada masa mendatang |
Seluruh analisis dilakukan dengan program R menggunakan paket
car dan lmtest. Langkah-langkah analisis
adalah sebagai berikut:
lm().outlierTest()).Gambar 3.1 Diagram alir penelitian
Data sekunder dari BPS dimasukkan ke dalam program R sebagai data
frame bernama ipm. Data lengkap disajikan pada
Lampiran 1.
| Pemeriksaan | Hasil |
|---|---|
| Jumlah observasi (n) | 37 |
| Jumlah variabel dependen | 1 |
| Jumlah variabel independen | 3 |
| Jumlah data hilang (NA) | 0 |
| Jumlah nama provinsi ganda | 0 |
Tabel 4.1 menunjukkan bahwa data terdiri dari 37 observasi (provinsi), satu variabel dependen, dan tiga variabel independen, tanpa data hilang maupun duplikasi. Dengan demikian data memenuhi kriteria pemilihan data pada Bab III, yaitu minimal 35 observasi dan minimal tiga variabel independen.
Gambar 4.1 Boxplot masing-masing variabel
Gambar 4.2 Diagram pencar antara Y dengan masing-masing variabel independen
| Y | X1 | X2 | X3 | |
|---|---|---|---|---|
| Y | 1,0000 | 0,8872 | 0,6282 | 0,4997 |
| X1 | 0,8872 | 1,0000 | 0,8779 | 0,7817 |
| X2 | 0,6282 | 0,8779 | 1,0000 | 0,7850 |
| X3 | 0,4997 | 0,7817 | 0,7850 | 1,0000 |
Gambar 4.1 memperlihatkan sebaran data tiap variabel. Terdapat beberapa pengamatan yang menjauh dari kelompok utama data, baik pada sisi nilai rendah maupun nilai tinggi, dan pengamatan tersebut perlu diperhatikan kembali pada tahap evaluasi outlier. Gambar 4.2 dan Tabel 4.2 menunjukkan hubungan linier yang positif antara \(Y\) dengan ketiga variabel independen. Korelasi terkuat dengan \(Y\) dimiliki \(X_1\) (IPM) sebesar 0,8872. Korelasi antarvariabel independen juga tinggi, misalnya \(X_1\) dengan \(X_2\) sebesar 0,8779. Hal ini wajar karena IPM memuat komponen pendidikan yang diukur oleh RLS dan HLS, sehingga perlu diperiksa melalui uji multikolinieritas.
| Variabel | Min | Q1 | Median | Mean | Q3 | Max | SD |
|---|---|---|---|---|---|---|---|
| Y | 5.707 | 10.208 | 11.606 | 11.366 | 12.276 | 15.573 | 2.060 |
| X1 | 54,43 | 72,01 | 73,87 | 73,21 | 75,36 | 81,62 | 4,88 |
| X2 | 4,21 | 8,29 | 8,87 | 8,77 | 9,44 | 10,50 | 1,16 |
| X3 | 9,63 | 12,86 | 13,23 | 13,20 | 13,72 | 15,70 | 1,03 |
Tabel 4.3 merangkum data dari 37 provinsi:
Nilai minimum keempat variabel seluruhnya berasal dari provinsi di wilayah Papua (Papua Pegunungan dan Papua Tengah), yang berbeda jauh dari provinsi lain. Hal ini menjadi salah satu alasan dilakukannya evaluasi outlier pada Subbab 4.7 dan 4.8.
| Koefisien | Estimate | Std.Error | t.value | p.value |
|---|---|---|---|---|
| (Intercept) | -20.975,30 | 1.834,34 | -11,435 | 0,00000000000050870000 |
| X1 | 680,92 | 41,41 | 16,445 | < 2,2e-16 |
| X2 | -880,70 | 175,25 | -5,026 | 0,00001711000000000000 |
| X3 | -741,40 | 151,10 | -4,907 | 0,00002427000000000000 |
Ukuran kecocokan model: Residual standard error = 552 dengan derajat bebas 33; Multiple R-squared = 0,9342; Adjusted R-squared = 0,9282; \(F\) = 156,1 pada 3 dan 33 derajat bebas dengan p-value < 2,2e-16.
Berdasarkan Tabel 4.4, model regresi linier berganda yang terbentuk adalah:
\[\hat{Y} = -20.975,30 + 680,92X_1 - 880,70X_2 - 741,40X_3\]
Interpretasi koefisien (dengan variabel independen lainnya dianggap tetap):
Tanda negatif pada \(X_2\) dan \(X_3\) berbeda dari tanda korelasi sederhananya yang positif (Tabel 4.2). Hal ini terjadi karena koefisien regresi berganda mengukur pengaruh parsial, yaitu pengaruh setelah \(X_1\) dikendalikan. Karena IPM sendiri disusun dari komponen pendidikan, efek RLS dan HLS yang tersisa di luar IPM dapat berbalik arah. Koefisien \(X_2\) dan \(X_3\) sebaiknya tidak ditafsirkan sebagai hubungan sebab-akibat.
Nilai \(R^2\) sebesar 0,9342 berarti 93,42% variasi pengeluaran riil per kapita dapat dijelaskan oleh IPM, RLS, dan HLS secara bersama-sama, sedangkan sisanya sebesar 6,58% dijelaskan oleh faktor lain di luar model. Nilai \(R^2_{adj}\) sebesar 0,9282 hanya sedikit lebih rendah dari \(R^2\), sehingga model tidak mengalami penambahan variabel yang berlebihan.
Gambar 4.3 Histogram residual dan Normal Q-Q Plot
| W | p-value |
|---|---|
| 0,9720 | 0,4653 |
Uji Shapiro-Wilk menghasilkan \(W\) = 0,9720 dan p-value = 0,4653. Pengujian hipotesisnya:
| BP | DF | p-value |
|---|---|---|
| 2,3802 | 3 | 0,4973 |
Gambar 4.4 Plot residual terhadap nilai dugaan (fitted values)
Gambar 4.4 mendukung hasil uji, yaitu residual tersebar acak di sekitar nol tanpa pola corong yang jelas.
| DW | p-value |
|---|---|
| 1,6917 | 0,1097 |
Catatan: data penelitian ini merupakan data antarwilayah (cross-section), bukan deret waktu. Nilai statistik Durbin-Watson bergantung pada urutan observasi, sehingga hasil uji ini sebaiknya dipandang sebagai pemeriksaan formal terhadap urutan data yang digunakan.
| Variabel | VIF | Tolerance | Keputusan |
|---|---|---|---|
| X1 | 4,8312 | 0,2070 | Tidak multikolinier |
| X2 | 4,8962 | 0,2042 | Tidak multikolinier |
| X3 | 2,8871 | 0,3464 | Tidak multikolinier |
Nilai VIF untuk \(X_1\) sebesar 4,8312, \(X_2\) sebesar 4,8962, dan \(X_3\) sebesar 2,8871. Seluruh nilai VIF lebih kecil dari 10 dan nilai Tolerance lebih besar dari 0,1, sehingga tidak terjadi multikolinieritas pada model regresi. Walaupun korelasi antarvariabel independen tinggi (Tabel 4.2), tingkatnya masih berada di batas yang dapat diterima.
| Asumsi | Uji | Statistik | p-value | Keputusan |
|---|---|---|---|---|
| Normalitas | Shapiro-Wilk | 0,9720 | 0,4653 | Terpenuhi |
| Homoskedastisitas | Breusch-Pagan | 2,3802 | 0,4973 | Terpenuhi |
| Non-autokorelasi | Durbin-Watson | 1,6917 | 0,1097 | Terpenuhi |
| Non-multikolinieritas | VIF | maks. 4,8962 | - | Terpenuhi |
Berdasarkan Tabel 4.9, keempat asumsi klasik terpenuhi, sehingga model layak dilanjutkan ke pengujian hipotesis.
| Sumber Variasi | db | JK | KT | F hitung | p-value |
|---|---|---|---|---|---|
| Regresi | 3 | 142.687.365 | 47.562.455 | 156,110 | < 2,2e-16 |
| Galat | 33 | 10.054.205 | 304.673 | ||
| Total | 36 | 152.741.570 |
| Variabel | Estimate | Std. Error | t hitung | t tabel | p-value | Keputusan |
|---|---|---|---|---|---|---|
| X1 (IPM) | 680,92 | 41,41 | 16,445 | 2,035 | < 2,2e-16 | Tolak H0 |
| X2 (RLS) | -880,70 | 175,25 | -5,026 | 2,035 | 0,00001711000000000000 | Tolak H0 |
| X3 (HLS) | -741,40 | 151,10 | -4,907 | 2,035 | 0,00002427000000000000 | Tolak H0 |
Untuk setiap variabel independen \(X_j\) (\(j = 1, 2, 3\)) digunakan langkah pengujian berikut.
Dengan demikian, seluruh variabel independen berpengaruh signifikan terhadap pengeluaran riil per kapita pada taraf nyata 5%, dengan pengaruh terbesar dari IPM (nilai |t| tertinggi).
Gambar 4.5 Influence plot (ukuran lingkaran sebanding dengan Cook’s Distance)
| Observasi | Provinsi | StudRes | Hat | CookD |
|---|---|---|---|---|
| 10 | Kepulauan Riau | 2,7176 | 0,1910 | 0,3653 |
| 13 | DI Yogyakarta | 2,6263 | 0,2764 | 0,5589 |
| 36 | Papua Tengah | 0,6573 | 0,3799 | 0,0673 |
| 37 | Papua Pegunungan | 1,8654 | 0,4756 | 0,7339 |
Influence plot pada Gambar 4.5 menandai empat observasi, yaitu 10 (Kepulauan Riau), 13 (DI Yogyakarta), 36 (Papua Tengah), 37 (Papua Pegunungan). Ketiga ukuran diagnostik dibaca dengan batas berikut:
Pembacaan terhadap observasi pada Tabel 4.12 adalah sebagai berikut. Observasi dengan StudRes besar tetapi leverage kecil merupakan kandidat outlier pada arah \(Y\), yaitu pengeluaran riil yang menyimpang dari nilai dugaan model. Observasi dengan leverage tinggi merupakan wilayah yang kombinasi nilai \(X_1\), \(X_2\), dan \(X_3\)-nya berbeda dari pola umum, misalnya Papua Tengah dan Papua Pegunungan yang indikator pembangunan manusianya sangat rendah, atau DI Yogyakarta yang sangat tinggi. Observasi dengan Cook’s Distance terbesar, yaitu Papua Pegunungan (CookD = 0,7339), adalah pengamatan yang paling memengaruhi koefisien regresi. Grafik ini hanya berfungsi sebagai identifikasi awal, sehingga status outlier diuji secara formal dengan Uji Bonferroni.
Output fungsi outlierTest() pada R:
No Studentized residuals with Bonferroni p < 0.05
Largest |rstudent|:
rstudent unadjusted p-value Bonferroni p
10 2.717634 0.010524 0.38938
| Observasi | Provinsi | rstudent | p-value tak terkoreksi | Bonferroni p |
|---|---|---|---|---|
| 10 | Kepulauan Riau | 2,717634 | 0,01052 | 0,3894 |
Observasi dengan nilai mutlak studentized residual terbesar adalah observasi ke-10 (Kepulauan Riau). Pengujian hipotesisnya:
Perlu dicatat bahwa p-value tak terkoreksi (0,01052) tampak signifikan jika dilihat sendiri, tetapi koreksi Bonferroni memperhitungkan bahwa nilai terbesar dipilih dari 37 pengamatan, sehingga p-value menjadi 0,3894. Hasil ini menunjukkan bahwa observasi yang tampak menonjol pada influence plot tidak cukup ekstrem untuk dinyatakan sebagai outlier secara formal. Observasi tersebut tetap perlu dicermati (misalnya Papua Pegunungan yang memiliki Cook’s Distance terbesar, serta Kepulauan Riau dan DI Yogyakarta yang residualnya besar), tetapi tidak ada dasar statistik untuk menghapusnya dari data. Model yang diperoleh dapat dipertahankan.
Berdasarkan hasil analisis regresi linier berganda terhadap 37 provinsi di Indonesia dengan satu variabel dependen (Pengeluaran Riil per Kapita) dan tiga variabel independen (IPM, Rata-rata Lama Sekolah, dan Harapan Lama Sekolah), diperoleh kesimpulan sebagai berikut:
Adnyani, N. P. S., Endiana, I. D. M., & Arizona, P. E. (2020). Pengaruh Penerapan Good Corporate Governance dan Corporate Social Responsibility terhadap Kinerja Perusahaan. Jurnal Kharisma.
Badan Pusat Statistik (BPS). (2024). Indeks Pembangunan Manusia (IPM) Indonesia tahun 2024 mencapai 75,02, meningkat 0,63 poin atau 0,85% dibandingkan tahun sebelumnya yang sebesar 74,39. Badan Pusat Statistik Republik Indonesia.
Barus, F. M. (2023). Mendeteksi Outlier pada Data Multivariat dengan Metode Jarak Mahalanobis-Minimum Covariance Determinant (MMCD). Indonesian Journal of Multidisciplinary, 1(1), 1-10.
Chamidah, S. (2020). Pengaruh Kepemimpinan, Kedisiplinan, dan Lingkungan Kerja terhadap Prestasi Kerja Guru. ASET: Jurnal Manajemen dan Bisnis.
Fadlilah, A. F., Chrisnanto, Y. H., & Ningsih, A. K. (2022). Identifikasi Anomali Data Akademik Menggunakan DBSCAN Outlier Detection. Prosiding Seminar Nasional Sains dan Teknologi, 12(1), 336-342.
Firmansyah, A., & Triastie, G. A. (2021). Bagaimana Peran Tata Kelola Perusahaan dalam Penghindaran Pajak, Pengungkapan Risiko, Efisiensi Investasi? Indramayu: Penerbit ADAB.
Hakim, L. (2016). Analisis Regresi pada Data Outlier dengan Metode MM-Estimasi. Malang: Universitas Islam Negeri Maulana Malik Ibrahim.
LaFromboise, L. (2024). Power Comparisons of Tests for Normality and Recommendations.
Mardiatmoko, G. (2020). Pentingnya Uji Asumsi Klasik pada Analisis Regresi Linier Berganda (Studi Kasus Penyusunan Persamaan Allometrik Kenari Muda [Canarium indicum L.]). BAREKENG: Jurnal Ilmu Matematika dan Terapan, 14(3), 333-342.
Qomusuddin, I. F., & Romlah, S. (2021). Analisis Data Kuantitatif dengan Program IBM SPSS Statistic 20.0. Yogyakarta: CV Budi Utama.
Rachman, T., & Kurniawati, D. (2024). Identifikasi dan Penanganan Heteroskedastisitas pada Model Regresi dengan Data Keuangan Perusahaan.
Razek, A. M. A. E. (2022). Detecting of Multicollinearity, Autocorrelation and Heteroscedasticity in Regression Analysis.
Rini, D. S. (2025). Modul Praktikum Analisis Regresi dan Korelasi. Bengkulu: Laboratorium Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Bengkulu.
Rini, D. S. (2026). Modul Analisis Regresi. Bengkulu: Laboratorium Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Bengkulu.
Uyanto, S. (2024). Power Comparisons of Five Most Commonly Used Autocorrelation Tests. Pakistan Journal of Statistics and Operation Research, 16(1).
Wahyono, K. (2021). Analisis Regresi Sederhana dan Berganda. Yogyakarta: UAD PRESS.
| No | Provinsi | Y | X1 | X2 | X3 |
|---|---|---|---|---|---|
| 1 | Aceh | 10811 | 75.36 | 9.64 | 14.39 |
| 2 | Sumatera Utara | 11460 | 75.76 | 9.93 | 13.49 |
| 3 | Sumatera Barat | 11718 | 76.43 | 9.44 | 14.30 |
| 4 | Riau | 11857 | 75.67 | 9.43 | 13.42 |
| 5 | Jambi | 11621 | 74.36 | 8.90 | 13.14 |
| 6 | Sumatera Selatan | 12015 | 73.84 | 8.57 | 12.64 |
| 7 | Bengkulu | 11733 | 74.91 | 9.04 | 13.75 |
| 8 | Lampung | 11258 | 73.13 | 8.36 | 12.78 |
| 9 | Kepulauan Bangka Belitung | 13667 | 74.55 | 8.33 | 12.49 |
| 10 | Kepulauan Riau | 15573 | 79.89 | 10.50 | 13.27 |
| 11 | Jawa Barat | 12157 | 74.92 | 8.87 | 12.80 |
| 12 | Jawa Tengah | 12276 | 73.87 | 8.02 | 12.86 |
| 13 | DI Yogyakarta | 15361 | 81.62 | 9.92 | 15.70 |
| 14 | Jawa Timur | 12852 | 75.35 | 8.28 | 13.43 |
| 15 | Banten | 13097 | 76.35 | 9.23 | 13.10 |
| 16 | Bali | 14920 | 78.63 | 9.54 | 13.62 |
| 17 | Nusa Tenggara Barat | 11606 | 73.10 | 7.87 | 13.98 |
| 18 | Nusa Tenggara Timur | 8534 | 69.14 | 8.02 | 13.23 |
| 19 | Kalimantan Barat | 10321 | 71.19 | 7.78 | 12.68 |
| 20 | Kalimantan Tengah | 12303 | 74.28 | 8.81 | 12.77 |
| 21 | Kalimantan Selatan | 13399 | 75.19 | 8.62 | 12.87 |
| 22 | Kalimantan Timur | 13793 | 78.79 | 10.02 | 14.03 |
| 23 | Kalimantan Utara | 10197 | 73.41 | 9.35 | 13.21 |
| 24 | Sulawesi Utara | 11998 | 75.68 | 9.84 | 12.97 |
| 25 | Sulawesi Tengah | 10536 | 72.24 | 9.04 | 13.34 |
| 26 | Sulawesi Selatan | 12275 | 75.18 | 8.86 | 13.55 |
| 27 | Sulawesi Tenggara | 10606 | 73.62 | 9.42 | 13.71 |
| 28 | Gorontalo | 11539 | 72.01 | 8.29 | 13.17 |
| 29 | Sulawesi Barat | 10208 | 70.46 | 8.15 | 12.89 |
| 30 | Maluku | 9684 | 73.40 | 10.26 | 14.09 |
| 31 | Maluku Utara | 9320 | 71.84 | 9.37 | 13.75 |
| 32 | Papua Barat | 8805 | 67.69 | 7.86 | 13.17 |
| 33 | Papua Barat Daya | 8733 | 69.65 | 8.39 | 13.88 |
| 34 | Papua | 11037 | 73.83 | 9.82 | 13.72 |
| 35 | Papua Selatan | 9756 | 68.86 | 8.38 | 12.67 |
| 36 | Papua Tengah | 7809 | 60.25 | 6.12 | 9.63 |
| 37 | Papua Pegunungan | 5707 | 54.43 | 4.21 | 9.97 |
Seluruh sintaks R yang digunakan dalam laporan ini (termasuk data dan pemanggilan paket) adalah sebagai berikut.
knitr::opts_chunk$set(
echo = FALSE, warning = FALSE, message = FALSE,
fig.align = "center", fig.width = 7, fig.height = 4.5, dpi = 110
)
# Paket yang dibutuhkan (install sekali saja bila belum ada):
# install.packages(c("car", "lmtest", "knitr", "rmarkdown"))
library(car) # vif(), influencePlot(), outlierTest()
library(lmtest) # bptest(), dwtest()
library(knitr) # kable()
# Fungsi bantu: format angka gaya Indonesia (koma desimal, titik ribuan)
fmt <- function(x, d = 2) formatC(x, format = "f", digits = d,
big.mark = ".", decimal.mark = ",")
# Fungsi bantu: format p-value
fp <- function(p) {
ifelse(p < 2.2e-16, "< 2,2e-16",
gsub("\\.", ",", format(signif(p, 4), scientific = FALSE)))
}
steps <- c(
"Mulai",
"Pengumpulan dan pemilihan data sekunder (BPS)",
"Eksplorasi data dan statistik deskriptif",
"Pembentukan dan estimasi model regresi linier berganda",
"Uji asumsi klasik\n(normalitas, heteroskedastisitas,\nautokorelasi, multikolinieritas)",
"Uji hipotesis: Uji F (simultan) dan Uji t (parsial)",
"Evaluasi model: Influence Plot dan Uji Bonferroni",
"Interpretasi hasil",
"Kesimpulan dan saran",
"Selesai"
)
m <- length(steps)
gap <- 1.6
op <- par(mar = c(0.2, 0.2, 0.2, 0.2))
plot.new()
plot.window(xlim = c(0, 10), ylim = c(0, m * gap))
for (i in seq_len(m)) {
y <- (m - i + 1) * gap - 0.5
terminal <- i %in% c(1, m)
rect(1.8, y - 0.5, 8.2, y + 0.5,
col = ifelse(terminal, "#2c3e50", "#ecf0f1"), border = "#2c3e50", lwd = 1.5)
text(5, y, steps[i], cex = 0.85, col = ifelse(terminal, "white", "black"))
if (i < m) arrows(5, y - 0.5, 5, y - gap + 0.5, length = 0.1, lwd = 1.5)
}
par(op)
ipm <- data.frame(
Provinsi = c("Aceh", "Sumatera Utara", "Sumatera Barat", "Riau", "Jambi",
"Sumatera Selatan", "Bengkulu", "Lampung", "Kepulauan Bangka Belitung",
"Kepulauan Riau", "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",
"Papua Selatan", "Papua Tengah", "Papua Pegunungan"),
Y = c(10811, 11460, 11718, 11857, 11621, 12015, 11733, 11258, 13667, 15573,
12157, 12276, 15361, 12852, 13097, 14920, 11606, 8534, 10321, 12303,
13399, 13793, 10197, 11998, 10536, 12275, 10606, 11539, 10208, 9684,
9320, 8805, 8733, 11037, 9756, 7809, 5707),
X1 = c(75.36, 75.76, 76.43, 75.67, 74.36, 73.84, 74.91, 73.13, 74.55, 79.89,
74.92, 73.87, 81.62, 75.35, 76.35, 78.63, 73.10, 69.14, 71.19, 74.28,
75.19, 78.79, 73.41, 75.68, 72.24, 75.18, 73.62, 72.01, 70.46, 73.40,
71.84, 67.69, 69.65, 73.83, 68.86, 60.25, 54.43),
X2 = c(9.64, 9.93, 9.44, 9.43, 8.90, 8.57, 9.04, 8.36, 8.33, 10.50,
8.87, 8.02, 9.92, 8.28, 9.23, 9.54, 7.87, 8.02, 7.78, 8.81,
8.62, 10.02, 9.35, 9.84, 9.04, 8.86, 9.42, 8.29, 8.15, 10.26,
9.37, 7.86, 8.39, 9.82, 8.38, 6.12, 4.21),
X3 = c(14.39, 13.49, 14.30, 13.42, 13.14, 12.64, 13.75, 12.78, 12.49, 13.27,
12.80, 12.86, 15.70, 13.43, 13.10, 13.62, 13.98, 13.23, 12.68, 12.77,
12.87, 14.03, 13.21, 12.97, 13.34, 13.55, 13.71, 13.17, 12.89, 14.09,
13.75, 13.17, 13.88, 13.72, 12.67, 9.63, 9.97)
)
vars <- c("Y", "X1", "X2", "X3")
n <- nrow(ipm)
cek <- data.frame(
Pemeriksaan = c("Jumlah observasi (n)", "Jumlah variabel dependen", "Jumlah variabel independen",
"Jumlah data hilang (NA)", "Jumlah nama provinsi ganda"),
Hasil = c(n, 1, 3, sum(is.na(ipm[, vars])), sum(duplicated(ipm$Provinsi)))
)
kable(cek, caption = "Tabel 4.1 Hasil pemeriksaan data")
par(mfrow = c(1, 4), mar = c(3, 4, 3, 1))
for (v in vars) {
boxplot(ipm[[v]], main = v, col = "#aed6f1", ylab = "", outpch = 19)
}
par(mfrow = c(1, 1))
par(mfrow = c(1, 3), mar = c(4, 4, 2, 1))
for (v in c("X1", "X2", "X3")) {
plot(ipm[[v]], ipm$Y, pch = 19, col = "#2980b9", xlab = v, ylab = "Y",
main = paste("Y vs", v))
abline(lm(ipm$Y ~ ipm[[v]]), col = "#c0392b", lwd = 2)
}
par(mfrow = c(1, 1))
kor <- cor(ipm[, vars])
kable(round(kor, 4), caption = "Tabel 4.2 Matriks korelasi Pearson antarvariabel", format.args = list(decimal.mark = ","))
desk <- t(sapply(ipm[, vars], function(v) c(
Min = min(v), Q1 = unname(quantile(v, 0.25)), Median = median(v),
Mean = mean(v), Q3 = unname(quantile(v, 0.75)), Max = max(v), SD = sd(v)
)))
desk_tab <- data.frame(
Variabel = rownames(desk),
Min = c(fmt(desk["Y", "Min"], 0), fmt(desk[-1, "Min"], 2)),
Q1 = c(fmt(desk["Y", "Q1"], 0), fmt(desk[-1, "Q1"], 2)),
Median = c(fmt(desk["Y", "Median"], 0), fmt(desk[-1, "Median"], 2)),
Mean = c(fmt(desk["Y", "Mean"], 0), fmt(desk[-1, "Mean"], 2)),
Q3 = c(fmt(desk["Y", "Q3"], 0), fmt(desk[-1, "Q3"], 2)),
Max = c(fmt(desk["Y", "Max"], 0), fmt(desk[-1, "Max"], 2)),
SD = c(fmt(desk["Y", "SD"], 0), fmt(desk[-1, "SD"], 2))
)
kable(desk_tab, row.names = FALSE, align = "lrrrrrrr",
caption = "Tabel 4.3 Statistik deskriptif")
model <- lm(Y ~ X1 + X2 + X3, data = ipm)
sm <- summary(model)
b <- coef(model)
p_par <- length(b) # banyaknya parameter (termasuk intersep)
dfres <- df.residual(model)
fst <- unname(sm$fstatistic) # F, db1, db2
pF <- pf(fst[1], fst[2], fst[3], lower.tail = FALSE)
koef <- data.frame(
Koefisien = c("(Intercept)", "X1", "X2", "X3"),
Estimate = fmt(sm$coefficients[, 1], 2),
Std.Error = fmt(sm$coefficients[, 2], 2),
t.value = fmt(sm$coefficients[, 3], 3),
p.value = fp(sm$coefficients[, 4])
)
kable(koef, row.names = FALSE, align = "lrrrr",
caption = "Tabel 4.4 Summary regresi linier berganda")
res <- residuals(model)
alpha <- 0.05
sw <- shapiro.test(res)
bp <- bptest(model)
dw <- dwtest(model)
vf <- vif(model)
par(mfrow = c(1, 2), mar = c(4, 4, 3, 1))
hist(res, breaks = 10, col = "#aed6f1", border = "white", freq = FALSE,
main = "Histogram Residual", xlab = "Residual")
curve(dnorm(x, mean(res), sd(res)), add = TRUE, col = "#c0392b", lwd = 2)
qqnorm(res, pch = 19, col = "#2980b9", main = "Normal Q-Q Plot Residual")
qqline(res, col = "#c0392b", lwd = 2)
par(mfrow = c(1, 1))
kable(data.frame(W = fmt(sw$statistic, 4), `p-value` = fp(sw$p.value), check.names = FALSE),
row.names = FALSE, align = "cc",
caption = "Tabel 4.5 Hasil uji normalitas Shapiro-Wilk")
kable(data.frame(BP = fmt(unname(bp$statistic), 4), DF = unname(bp$parameter),
`p-value` = fp(bp$p.value), check.names = FALSE),
row.names = FALSE, align = "ccc",
caption = "Tabel 4.6 Hasil uji heteroskedastisitas Breusch-Pagan")
plot(fitted(model), res, pch = 19, col = "#2980b9",
xlab = "Nilai dugaan (fitted)", ylab = "Residual", main = "Residual vs Fitted")
abline(h = 0, col = "#c0392b", lwd = 2, lty = 2)
kable(data.frame(DW = fmt(unname(dw$statistic), 4), `p-value` = fp(dw$p.value), check.names = FALSE),
row.names = FALSE, align = "cc",
caption = "Tabel 4.7 Hasil uji autokorelasi Durbin-Watson")
vif_tab <- data.frame(Variabel = names(vf), VIF = fmt(unname(vf), 4),
Tolerance = fmt(1 / unname(vf), 4),
Keputusan = ifelse(vf < 10, "Tidak multikolinier", "Multikolinier"))
kable(vif_tab, row.names = FALSE, align = "lrrl",
caption = "Tabel 4.8 Nilai VIF dan Tolerance")
ring <- data.frame(
Asumsi = c("Normalitas", "Homoskedastisitas", "Non-autokorelasi", "Non-multikolinieritas"),
Uji = c("Shapiro-Wilk", "Breusch-Pagan", "Durbin-Watson", "VIF"),
Statistik = c(fmt(sw$statistic, 4), fmt(unname(bp$statistic), 4),
fmt(unname(dw$statistic), 4), paste0("maks. ", fmt(max(vf), 4))),
`p-value` = c(fp(sw$p.value), fp(bp$p.value), fp(dw$p.value), "-"),
Keputusan = c(ifelse(sw$p.value > alpha, "Terpenuhi", "Tidak terpenuhi"),
ifelse(bp$p.value > alpha, "Terpenuhi", "Tidak terpenuhi"),
ifelse(dw$p.value > alpha, "Terpenuhi", "Tidak terpenuhi"),
ifelse(all(vf < 10), "Terpenuhi", "Tidak terpenuhi")),
check.names = FALSE
)
kable(ring, row.names = FALSE, align = "llrrl",
caption = "Tabel 4.9 Ringkasan hasil uji asumsi klasik")
jkr <- sum((fitted(model) - mean(ipm$Y))^2)
jkg <- sum(res^2)
jkt <- jkr + jkg
k_var <- p_par - 1
ktr <- jkr / k_var
ktg <- jkg / dfres
Fhit <- ktr / ktg
Ftab <- qf(1 - alpha, k_var, dfres)
anova_tab <- data.frame(
`Sumber Variasi` = c("Regresi", "Galat", "Total"),
db = c(k_var, dfres, n - 1),
JK = fmt(c(jkr, jkg, jkt), 0),
KT = c(fmt(ktr, 0), fmt(ktg, 0), ""),
`F hitung` = c(fmt(Fhit, 3), "", ""),
`p-value` = c(fp(pF), "", ""),
check.names = FALSE
)
kable(anova_tab, row.names = FALSE, align = "lrrrrr",
caption = "Tabel 4.10 Tabel ANOVA untuk Uji F")
ttab <- qt(1 - alpha / 2, dfres)
thit <- sm$coefficients[, 3]
pt_val <- sm$coefficients[, 4]
ut_tab <- data.frame(
Variabel = c("X1 (IPM)", "X2 (RLS)", "X3 (HLS)"),
Estimate = fmt(sm$coefficients[-1, 1], 2),
`Std. Error` = fmt(sm$coefficients[-1, 2], 2),
`t hitung` = fmt(thit[-1], 3),
`t tabel` = fmt(ttab, 3),
`p-value` = fp(pt_val[-1]),
Keputusan = ifelse(pt_val[-1] < alpha, "Tolak H0", "Terima H0"),
check.names = FALSE
)
kable(ut_tab, row.names = FALSE, align = "lrrrrrl",
caption = "Tabel 4.11 Hasil Uji t (parsial)")
inf <- influencePlot(model, main = "Influence Plot")
ids <- as.integer(rownames(inf))
inf_tab <- data.frame(
Observasi = ids,
Provinsi = ipm$Provinsi[ids],
StudRes = fmt(inf$StudRes, 4),
Hat = fmt(inf$Hat, 4),
CookD = fmt(inf$CookD, 4)
)
kable(inf_tab, row.names = FALSE, align = "rlrrr",
caption = "Tabel 4.12 Observasi yang teridentifikasi pada influence plot")
batas_lev <- 2 * p_par / n
batas_cook <- 4 / n
hat_all <- hatvalues(model)
cook_all <- cooks.distance(model)
rs_all <- rstudent(model)
lev_ids <- which(hat_all > batas_lev)
cook_ids <- which(cook_all > batas_cook)
res_ids <- which(abs(rs_all) > 2)
lst <- function(v) paste0(v, " (", ipm$Provinsi[v], ")", collapse = ", ")
ot <- outlierTest(model)
rt <- rstudent(model)
imax <- which.max(abs(rt))
df_t <- dfres - 1 # n - p - 1
p_unadj <- 2 * pt(abs(rt[imax]), df_t, lower.tail = FALSE)
p_bonf <- min(1, n * p_unadj)
t_krit <- qt(1 - alpha / (2 * n), df_t) # nilai kritis terkoreksi Bonferroni
print(ot)
bon_tab <- data.frame(
Observasi = unname(imax), Provinsi = ipm$Provinsi[imax],
`rstudent` = fmt(rt[imax], 6), `p-value tak terkoreksi` = fp(p_unadj),
`Bonferroni p` = fp(p_bonf), check.names = FALSE
)
kable(bon_tab, row.names = FALSE, align = "rlrrr",
caption = "Tabel 4.13 Hasil Uji Bonferroni untuk observasi dengan |rstudent| terbesar")
lamp <- data.frame(No = seq_len(n), ipm)
kable(lamp, row.names = FALSE, align = "rlrrrr",
caption = "Data pengeluaran riil per kapita (Y), IPM (X1), rata-rata lama sekolah (X2), dan harapan lama sekolah (X3) 37 provinsi")
summary(model)
shapiro.test(res)
bptest(model)
dwtest(model)
vif(model)
outlierTest(model)
print(inf)
Call:
lm(formula = Y ~ X1 + X2 + X3, data = ipm)
Residuals:
Min 1Q Median 3Q Max
-925.89 -404.68 -75.06 344.74 1235.00
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -20975.30 1834.34 -11.435 5.09e-13 ***
X1 680.92 41.41 16.445 < 2e-16 ***
X2 -880.70 175.25 -5.026 1.71e-05 ***
X3 -741.40 151.10 -4.907 2.43e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 552 on 33 degrees of freedom
Multiple R-squared: 0.9342, Adjusted R-squared: 0.9282
F-statistic: 156.1 on 3 and 33 DF, p-value: < 2.2e-16
Shapiro-Wilk normality test
data: res
W = 0.972, p-value = 0.4653
studentized Breusch-Pagan test
data: model
BP = 2.3802, df = 3, p-value = 0.4973
Durbin-Watson test
data: model
DW = 1.6917, p-value = 0.1097
alternative hypothesis: true autocorrelation is greater than 0
X1 X2 X3
4.831156 4.896164 2.887140
No Studentized residuals with Bonferroni p < 0.05
Largest |rstudent|:
rstudent unadjusted p-value Bonferroni p
10 2.717634 0.010524 0.38938
StudRes Hat CookD
10 2.717634 0.1910178 0.3652868
13 2.626319 0.2764380 0.5589187
36 0.657289 0.3798931 0.0673267
37 1.865448 0.4756132 0.7339058