Import Dataset
#Import Data
library(readxl)
Data_Final <- read_excel("C:/Diah time/Urusan Kuliah/TA/DATA/Data Final ke R.xlsx")
View(Data_Final)
Import Library
#Import Library
library("plm") #Lib data panel
library(performance)
library(normtest) #Uji normalitas
library(nortest)
library(pcse) #model regresi
library(car)
## Warning: package 'car' was built under R version 4.3.3
## Loading required package: carData
Membaca Data
#Membaca Dataset
panel <- Data_Final
head(panel)
## # A tibble: 6 × 10
## PROVINSI TAHUN TPT INFLASI PDRB IHK UMP APKSD APKSMP APKSMA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NANGROE ACEH DARUS… 2014 7.88 2.09 4.02 121. 1.75e6 107. 95.9 81.5
## 2 NANGROE ACEH DARUS… 2015 9.93 1.53 4.28 116. 1.9 e6 109. 97.9 83.3
## 3 NANGROE ACEH DARUS… 2016 7.57 3.95 4.26 120. 2.12e6 108. 99.2 87.5
## 4 NANGROE ACEH DARUS… 2017 6.57 4.25 4.13 126. 2.5 e6 107. 98.7 87.5
## 5 NANGROE ACEH DARUS… 2018 6.34 1.84 4.49 128. 2.70e6 107. 99.3 84.8
## 6 NANGROE ACEH DARUS… 2019 6.17 1.69 4.14 130. 2.92e6 106. 97.4 90.1
Melihat tipe data
#Melihat tipe dataset
str(panel)
## tibble [340 × 10] (S3: tbl_df/tbl/data.frame)
## $ PROVINSI: chr [1:340] "NANGROE ACEH DARUSSALAM" "NANGROE ACEH DARUSSALAM" "NANGROE ACEH DARUSSALAM" "NANGROE ACEH DARUSSALAM" ...
## $ TAHUN : num [1:340] 2014 2015 2016 2017 2018 ...
## $ TPT : num [1:340] 7.88 9.93 7.57 6.57 6.34 ...
## $ INFLASI : num [1:340] 2.09 1.53 3.95 4.25 1.84 1.69 3.59 2.24 5.89 1.53 ...
## $ PDRB : num [1:340] 4.02 4.28 4.26 4.13 4.49 ...
## $ IHK : num [1:340] 121 116 120 126 128 ...
## $ UMP : num [1:340] 1750000 1900000 2118500 2500000 2700000 ...
## $ APKSD : num [1:340] 107 109 108 107 107 ...
## $ APKSMP : num [1:340] 95.9 97.9 99.2 98.7 99.3 ...
## $ APKSMA : num [1:340] 81.5 83.3 87.5 87.5 84.8 ...
Analisis Deskriptif
#EDA
summary(panel)
## PROVINSI TAHUN TPT INFLASI
## Length:340 Min. :2014 Min. : 1.400 Min. :-0.180
## Class :character 1st Qu.:2016 1st Qu.: 3.828 1st Qu.: 2.015
## Mode :character Median :2018 Median : 4.777 Median : 2.990
## Mean :2018 Mean : 5.207 Mean : 3.408
## 3rd Qu.:2021 3rd Qu.: 6.357 3rd Qu.: 4.303
## Max. :2023 Max. :10.950 Max. :11.910
## PDRB IHK UMP APKSD
## Min. :-7.020 Min. :103.5 Min. : 910000 Min. : 90.67
## 1st Qu.: 3.464 1st Qu.:112.9 1st Qu.:1821984 1st Qu.:105.93
## Median : 4.990 Median :120.8 Median :2303711 Median :108.38
## Mean : 4.376 Mean :121.7 Mean :2329354 Mean :108.07
## 3rd Qu.: 5.755 3rd Qu.:130.7 3rd Qu.:2757949 3rd Qu.:110.76
## Max. :20.600 Max. :149.6 Max. :5532624 Max. :116.97
## APKSMP APKSMA
## Min. : 71.02 Min. :61.53
## 1st Qu.: 87.55 1st Qu.:80.36
## Median : 90.72 Median :85.19
## Mean : 90.14 Mean :84.59
## 3rd Qu.: 93.18 3rd Qu.:89.12
## Max. :102.95 Max. :99.51
Cek Outlier
# Fungsi untuk deteksi outlier menggunakan metode IQR
detect_outliers <- function(panel, column_name) {
Q1 <- quantile(panel[[column_name]], 0.25, na.rm = TRUE) # Kuartil pertama
Q3 <- quantile(panel[[column_name]], 0.75, na.rm = TRUE) # Kuartil ketiga
IQR_value <- Q3 - Q1 # Rentang antar-kuartil
lower_bound <- Q1 - 1.5 * IQR_value
upper_bound <- Q3 + 1.5 * IQR_value
# Menandai data outlier
outliers <- panel[panel[[column_name]] < lower_bound | panel[[column_name]] > upper_bound, ]
return(outliers)
}
# membuat boxplot dan menampilkan outlier
create_boxplot_with_outliers <- function(panel, column_name) {
Q1 <- quantile(panel[[column_name]], 0.25, na.rm = TRUE)
Q3 <- quantile(panel[[column_name]], 0.75, na.rm = TRUE)
IQR_value <- Q3 - Q1
lower_bound <- Q1 - 1.5 * IQR_value
upper_bound <- Q3 + 1.5 * IQR_value
# Plot boxplot
boxplot(panel[[column_name]], main = paste("Outlier", column_name),
ylab = column_name, col = "lightblue", border = "darkblue")
# Tambahkan garis batas outlier
abline(h = c(lower_bound, upper_bound), col = "coral3", lty = 2)
}
# Deteksi outlier dan buat boxplot untuk setiap variabel
numeric_columns <- c("TPT", "INFLASI", "PDRB", "IHK", "UMP", "APKSD", "APKSMP", "APKSMA")
for (column in numeric_columns) {
cat("Outlier pada variabel", column, ":\n")
outliers <- detect_outliers(panel, column)
print(outliers)
# Buat boxplot
create_boxplot_with_outliers(panel, column)
}
## Outlier pada variabel TPT :
## # A tibble: 4 × 10
## PROVINSI TAHUN TPT INFLASI PDRB IHK UMP APKSD APKSMP APKSMA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 KEPULAUAN RIAU 2020 10.3 1.18 -3.8 105. 3005460 108. 94.0 87.5
## 2 DKI JAKARTA 2020 11.0 1.59 -2.39 106. 4276350 105. 91.7 76.9
## 3 JAWA BARAT 2020 10.5 2.18 -2.52 106. 1810351 106. 91.8 78.3
## 4 BANTEN 2020 10.6 1.45 -3.39 107. 2460997 108. 92.8 73.4

## Outlier pada variabel INFLASI :
## # A tibble: 17 × 10
## PROVINSI TAHUN TPT INFLASI PDRB IHK UMP APKSD APKSMP APKSMA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 SUMATERA UTARA 2014 6.09 9.67 6.31 119. 1.9 e6 108. 90.3 83.5
## 2 JAMBI 2014 3.79 8.72 2.3 120. 1.50e6 105. 87.8 73.6
## 3 SUMATERA SELATAN 2014 4.4 8.38 4.79 117. 1.82e6 108. 88.4 72.2
## 4 BENGKULU 2014 2.54 10.8 5.48 125. 1.35e6 111. 88.2 79.5
## 5 LAMPUNG 2014 4.94 8.36 5.9 118. 1.40e6 108. 86.8 68.5
## 6 BANGKA BELITUNG 2014 3.90 8.85 4.67 118. 1.64e6 105. 82.5 75.5
## 7 JAWA TENGAH 2014 5.56 8.22 5.27 119. 9.1 e5 105. 89.4 73.6
## 8 JAWA TIMUR 2014 4.11 7.77 5.44 118. 1 e6 105. 92.0 72.2
## 9 BANTEN 2014 9.47 10.2 5.51 123. 1.54e6 104. 89.6 72.9
## 10 BALI 2014 1.64 8.03 9.02 116. 1.54e6 107. 96.0 85.3
## 11 NUSA TENGGARA TIM… 2014 2.62 7.76 6.33 120. 1.15e6 107. 88.7 71.9
## 12 KALIMANTAN BARAT 2014 3.28 9.38 5.03 122. 1.38e6 111. 80.2 65.7
## 13 KALIMANTAN UTARA 2014 6.47 11.9 7.43 117. 1.88e6 106. 93.8 79.8
## 14 SULAWESI UTARA 2014 7.40 9.67 6.31 119. 1.9 e6 109. 87.7 83.5
## 15 SULAWESI TENGAH 2014 3.3 8.85 5.07 117. 1.25e6 105. 88.5 83.4
## 16 SULAWESI BARAT 2014 1.84 7.88 7.18 117. 1.4 e6 108. 80.4 76.3
## 17 PAPUA 2014 3.46 7.98 5.94 120. 2.04e6 90.7 71.0 61.5

## Outlier pada variabel PDRB :
## # A tibble: 40 × 10
## PROVINSI TAHUN TPT INFLASI PDRB IHK UMP APKSD APKSMP APKSMA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 SUMATERA UTARA 2020 7.37 -0.18 -0.99 106. 3310723 109. 91.7 86.8
## 2 SUMATERA BARAT 2020 6.88 2.11 -1.6 105. 2484041 109. 92.3 90.0
## 3 RIAU 2015 7.83 2.65 -4.14 123. 1878000 109. 94.1 76.2
## 4 RIAU 2019 5.76 2.36 -1.7 140. 2662026 107. 94.0 84.2
## 5 RIAU 2020 6.32 0.55 -3.2 105. 2888564 107. 94.9 84.6
## 6 RIAU 2021 4.42 2.29 11.6 107. 2888563 106. 95.2 84.1
## 7 RIAU 2022 4.37 6.81 13.0 114. 2938564 106. 94.4 84.8
## 8 RIAU 2023 4.24 2.5 -0.67 117. 3011040 106. 92.9 85.1
## 9 JAMBI 2015 4.34 1.37 -7.02 122. 1710000 111. 91.8 76.1
## 10 JAMBI 2020 5.13 3.09 -4.24 106. 2630162 111. 88.9 83.7
## # ℹ 30 more rows

## Outlier pada variabel IHK :
## # A tibble: 0 × 10
## # ℹ 10 variables: PROVINSI <chr>, TAHUN <dbl>, TPT <dbl>, INFLASI <dbl>,
## # PDRB <dbl>, IHK <dbl>, UMP <dbl>, APKSD <dbl>, APKSMP <dbl>, APKSMA <dbl>

## Outlier pada variabel UMP :
## # A tibble: 6 × 10
## PROVINSI TAHUN TPT INFLASI PDRB IHK UMP APKSD APKSMP APKSMA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 KEPULAUAN RIAU 2023 7.20 2.76 5.2 114. 4651057 106. 92.6 90.6
## 2 DKI JAKARTA 2020 11.0 1.59 -2.39 106. 4276350 105. 91.7 76.9
## 3 DKI JAKARTA 2021 8.5 1.53 3.56 108. 4416186 103. 91.6 77.1
## 4 DKI JAKARTA 2022 7.18 4.21 5.25 112. 4453935 103. 89.9 76.9
## 5 DKI JAKARTA 2023 7.05 2.28 4.96 114. 5532624 103. 95.8 77.4
## 6 BANTEN 2023 7.74 3.06 4.81 117. 4378058 107. 95.7 75.0

## Outlier pada variabel APKSD :
## # A tibble: 10 × 10
## PROVINSI TAHUN TPT INFLASI PDRB IHK UMP APKSD APKSMP APKSMA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 PAPUA 2014 3.46 7.98 5.94 120. 2040000 90.7 71.0 61.5
## 2 PAPUA 2015 3.99 2.79 5.93 124. 2193000 95.2 73.6 67.0
## 3 PAPUA 2016 3.35 4.13 7.66 129. 2435000 94.7 72.1 66.8
## 4 PAPUA 2017 3.62 2.41 7.46 132. 2663646 92.9 82.2 67.9
## 5 PAPUA 2018 3 6.7 4.61 141. 3000000 94.5 87.8 65.1
## 6 PAPUA 2019 3.51 5.6 2.24 141. 3240900 91.9 78.1 76.3
## 7 PAPUA 2020 4.48 4.79 2.36 104. 3516700 91.3 81.2 76.6
## 8 PAPUA 2021 3.33 1.79 0.32 106. 3516700 93.1 81.7 75.0
## 9 PAPUA 2022 2.83 5.68 8.97 110. 3561931 94.3 83.5 77.1
## 10 PAPUA 2023 3.08 4.78 5.74 111. 3178227 91.1 81.9 73.9

## Outlier pada variabel APKSMP :
## # A tibble: 7 × 10
## PROVINSI TAHUN TPT INFLASI PDRB IHK UMP APKSD APKSMP APKSMA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 KALIMANTAN UTARA 2018 5.11 5 6.24 134. 2559903 102. 103. 89.2
## 2 GORONTALO 2014 3.31 6.14 7.27 115. 1325000 112. 78.6 77.0
## 3 GORONTALO 2019 3.76 2.87 6.6 134. 2384020 111. 79.0 88.6
## 4 PAPUA 2014 3.46 7.98 5.94 120. 2040000 90.7 71.0 61.5
## 5 PAPUA 2015 3.99 2.79 5.93 124. 2193000 95.2 73.6 67.0
## 6 PAPUA 2016 3.35 4.13 7.66 129. 2435000 94.7 72.1 66.8
## 7 PAPUA 2019 3.51 5.6 2.24 141. 3240900 91.9 78.1 76.3

## Outlier pada variabel APKSMA :
## # A tibble: 5 × 10
## PROVINSI TAHUN TPT INFLASI PDRB IHK UMP APKSD APKSMP APKSMA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 KALIMANTAN BARAT 2014 3.28 9.38 5.03 122. 1380000 111. 80.2 65.7
## 2 PAPUA 2014 3.46 7.98 5.94 120. 2040000 90.7 71.0 61.5
## 3 PAPUA 2015 3.99 2.79 5.93 124. 2193000 95.2 73.6 67.0
## 4 PAPUA 2016 3.35 4.13 7.66 129. 2435000 94.7 72.1 66.8
## 5 PAPUA 2018 3 6.7 4.61 141. 3000000 94.5 87.8 65.1

# Fungsi untuk membuat boxplot seluruh variabel numerik sekaligus
create_overall_boxplot <- function(panel, numeric_columns) {
# Buat data frame hanya dengan kolom numerik
numeric_data <- panel[numeric_columns]
# Boxplot semua variabel dalam satu grafik
boxplot(numeric_data,
main = "Hasil Outlier Keseluruhan Variabel",
ylab = "Nilai",
col = rainbow(length(numeric_columns)),
border = "aquamarine4",
las = 2, # Rotasi label variabel
names = numeric_columns) # Label variabel pada sumbu x
# Tambahkan garis batas IQR untuk setiap variabel
for (i in seq_along(numeric_columns)) {
Q1 <- quantile(numeric_data[[i]], 0.25, na.rm = TRUE)
Q3 <- quantile(numeric_data[[i]], 0.75, na.rm = TRUE)
IQR_value <- Q3 - Q1
lower_bound <- Q1 - 1.5 * IQR_value
upper_bound <- Q3 + 1.5 * IQR_value
# Tambahkan garis batas untuk variabel ke-i
abline(h = lower_bound, col = "red", lty = 2)
abline(h = upper_bound, col = "red", lty = 2)
}
}
# Daftar kolom numerik
numeric_columns <- c("TPT", "INFLASI", "PDRB", "IHK", "UMP", "APKSD", "APKSMP", "APKSMA")
#Panggil fungsi untuk membuat boxplot keseluruhan
create_overall_boxplot(panel, numeric_columns)

Penanganan Outlier dengan IQR
# Fungsi untuk deteksi outlier dan menggantinya menggunakan batas atas/bawah
handle_outliers_with_iqr <- function(panel, column_name) {
if (!is.numeric(panel[[column_name]])) {
stop(paste("Kolom", column_name, "bukan kolom numerik"))
}
Q1 <- quantile(panel[[column_name]], 0.25, na.rm = TRUE) # Kuartil pertama
Q3 <- quantile(panel[[column_name]], 0.75, na.rm = TRUE) # Kuartil ketiga
IQR_value <- Q3 - Q1 # Rentang antar-kuartil
lower_bound <- Q1 - 1.5 * IQR_value
upper_bound <- Q3 + 1.5 * IQR_value
# Ganti outlier dengan batas bawah atau atas
panel[[column_name]] <- ifelse(panel[[column_name]] < lower_bound,
lower_bound,
ifelse(panel[[column_name]] > upper_bound,
upper_bound,
panel[[column_name]]))
return(panel)
}
# Perbarui data untuk setiap variabel numerik
for (column in numeric_columns) {
if (column %in% names(panel)) {
cat("Menangani outlier pada variabel", column, ":\n")
panel <- handle_outliers_with_iqr(panel, column)
} else {
warning(paste("Kolom", column, "tidak ditemukan di data panel"))
}
}
## Menangani outlier pada variabel TPT :
## Menangani outlier pada variabel INFLASI :
## Menangani outlier pada variabel PDRB :
## Menangani outlier pada variabel IHK :
## Menangani outlier pada variabel UMP :
## Menangani outlier pada variabel APKSD :
## Menangani outlier pada variabel APKSMP :
## Menangani outlier pada variabel APKSMA :
# Fungsi untuk membuat boxplot setelah penanganan outlier
create_boxplot_after_handling <- function(panel, column_name) {
if (!column_name %in% names(panel)) {
stop(paste("Kolom", column_name, "tidak ditemukan di data"))
}
Q1 <- quantile(panel[[column_name]], 0.25, na.rm = TRUE)
Q3 <- quantile(panel[[column_name]], 0.75, na.rm = TRUE)
IQR_value <- Q3 - Q1
lower_bound <- Q1 - 1.5 * IQR_value
upper_bound <- Q3 + 1.5 * IQR_value
# Plot boxplot
boxplot(panel[[column_name]], main = paste("Hasil Penanganan Outlier", column_name),
ylab = column_name, col = "lightgreen", border = "darkgreen")
# Tambahkan garis batas outlier
abline(h = c(lower_bound, upper_bound), col = "coral3", lty = 2)
}
# Tampilkan boxplot setelah penanganan outlier untuk setiap variabel
for (column in numeric_columns) {
if (column %in% names(panel)) {
create_boxplot_after_handling(panel, column)
} else {
warning(paste("Kolom", column, "tidak ditemukan di data"))
}
}








# Fungsi untuk membuat boxplot semua variabel numerik setelah penanganan outlier
create_overall_boxplot_after_handling <- function(panel, numeric_columns) {
# Pastikan hanya kolom numerik yang diproses
valid_columns <- numeric_columns[numeric_columns %in% names(panel)]
numeric_data <- panel[valid_columns]
# Buat boxplot untuk seluruh variabel
boxplot(numeric_data,
main = "Hasil Penanganan Outlier",
ylab = "Nilai",
col = rainbow(length(valid_columns)),
border = "darkgreen",
las = 2, # Rotasi label variabel
names = valid_columns) # Label variabel pada sumbu x
# Tambahkan garis batas IQR untuk setiap variabel
for (i in seq_along(valid_columns)) {
Q1 <- quantile(numeric_data[[i]], 0.25, na.rm = TRUE)
Q3 <- quantile(numeric_data[[i]], 0.75, na.rm = TRUE)
IQR_value <- Q3 - Q1
lower_bound <- Q1 - 1.5 * IQR_value
upper_bound <- Q3 + 1.5 * IQR_value
# Tambahkan garis batas untuk variabel ke-i
abline(h = lower_bound, col = "coral3", lty = 2)
abline(h = upper_bound, col = "coral3", lty = 2)
}
}
# Panggil fungsi untuk membuat boxplot setelah penanganan outlier
create_overall_boxplot_after_handling(panel, numeric_columns)

Korelasi antara X dengan Y
#Korelasi antara X dengan Y
cor(panel[,-c(1:2)]) #minus(-) karena si provinsi dan tahun tidak di ikutkan
## TPT INFLASI PDRB IHK UMP APKSD
## TPT 1.00000000 -0.09486254 -0.15497655 -0.10623736 0.15633604 0.01911870
## INFLASI -0.09486254 1.00000000 0.30343135 -0.01148069 -0.24665397 -0.15117898
## PDRB -0.15497655 0.30343135 1.00000000 0.35440523 -0.17977345 -0.01488209
## IHK -0.10623736 -0.01148069 0.35440523 1.00000000 -0.25113194 0.27524054
## UMP 0.15633604 -0.24665397 -0.17977345 -0.25113194 1.00000000 -0.30288313
## APKSD 0.01911870 -0.15117898 -0.01488209 0.27524054 -0.30288313 1.00000000
## APKSMP 0.29699096 -0.12524981 -0.13303014 -0.09018405 0.02044622 -0.19523661
## APKSMA -0.06376262 -0.27059536 -0.21458670 -0.16111291 0.23850660 0.05447226
## APKSMP APKSMA
## TPT 0.29699096 -0.06376262
## INFLASI -0.12524981 -0.27059536
## PDRB -0.13303014 -0.21458670
## IHK -0.09018405 -0.16111291
## UMP 0.02044622 0.23850660
## APKSD -0.19523661 0.05447226
## APKSMP 1.00000000 0.31428728
## APKSMA 0.31428728 1.00000000
#Mengindikasi membentuk format panel (pdata.frame)
paneldata<-pdata.frame(panel, index=c("PROVINSI", "TAHUN"))
#Model
model<-TPT~INFLASI+PDRB+IHK+UMP+APKSD+APKSMP+APKSMA
Estimasi model regresi data panel
Pooled Ordinary Least Square (PLS)
##Estimasi Model Pooled
pooled = plm(model, paneldata, model = "pooling")
summary(pooled)
## Pooling Model
##
## Call:
## plm(formula = model, data = paneldata, model = "pooling")
##
## Balanced Panel: n = 34, T = 10, N = 340
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -3.93226 -1.17969 -0.19496 0.95360 5.79177
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## (Intercept) -1.3823e+01 4.1368e+00 -3.3415 0.0009283 ***
## INFLASI -6.6784e-03 5.2323e-02 -0.1276 0.8985124
## PDRB -7.4168e-02 4.8434e-02 -1.5313 0.1266413
## IHK -1.3623e-02 9.2111e-03 -1.4789 0.1401056
## UMP 6.7716e-07 1.5773e-07 4.2930 2.316e-05 ***
## APKSD 1.0728e-01 2.9259e-02 3.6664 0.0002863 ***
## APKSMP 1.6034e-01 2.1363e-02 7.5055 5.675e-13 ***
## APKSMA -7.8091e-02 1.4777e-02 -5.2846 2.287e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 1166.2
## Residual Sum of Squares: 928.29
## R-Squared: 0.204
## Adj. R-Squared: 0.18721
## F-statistic: 12.1548 on 7 and 332 DF, p-value: 7.7904e-14
#Cek Uji Kolinieritas
check_collinearity(pooled)
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI Increased SE Tolerance Tolerance 95% CI
## INFLASI 1.29 [1.16, 1.51] 1.14 0.78 [0.66, 0.86]
## PDRB 1.31 [1.18, 1.53] 1.14 0.76 [0.65, 0.85]
## IHK 1.32 [1.19, 1.54] 1.15 0.76 [0.65, 0.84]
## UMP 1.34 [1.20, 1.57] 1.16 0.75 [0.64, 0.83]
## APKSD 1.35 [1.21, 1.58] 1.16 0.74 [0.63, 0.83]
## APKSMP 1.22 [1.11, 1.43] 1.10 0.82 [0.70, 0.90]
## APKSMA 1.29 [1.17, 1.51] 1.14 0.77 [0.66, 0.86]
#Residual
residpooled<-pooled$residuals
#Asumsi Normalitasnya
jb.norm.test(residpooled)
##
## Jarque-Bera test for normality
##
## data: residpooled
## JB = 17.059, p-value = 0.0035
#Autokorelasi
check_autocorrelation(pooled)
## Warning: Autocorrelated residuals detected (p < .001).
#Heteroskedaksitas
check_heteroscedasticity(pooled)
## Warning: Heteroscedasticity (non-constant error variance) detected (p = 0.011).
pwartest(model,data=paneldata)
##
## Wooldridge's test for serial correlation in FE panels
##
## data: plm.model
## F = 10.319, df1 = 1, df2 = 304, p-value = 0.001458
## alternative hypothesis: serial correlation
Fixed Effect Model (FEM)
#Fixed Effect Model
fixed<-plm(model, paneldata, model="within",effect="individual")
summary(fixed)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = model, data = paneldata, effect = "individual",
## model = "within")
##
## Balanced Panel: n = 34, T = 10, N = 340
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -2.185300 -0.402690 -0.041468 0.386877 2.316058
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## INFLASI -2.6658e-02 2.6518e-02 -1.0053 0.3155688
## PDRB -9.9388e-02 2.4172e-02 -4.1117 5.079e-05 ***
## IHK -2.8129e-02 4.5556e-03 -6.1746 2.159e-09 ***
## UMP -4.0167e-07 1.2396e-07 -3.2402 0.0013291 **
## APKSD 9.7978e-02 2.8248e-02 3.4685 0.0006003 ***
## APKSMP 7.4870e-02 2.3523e-02 3.1828 0.0016120 **
## APKSMA -1.5312e-02 1.3221e-02 -1.1582 0.2477138
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 230.72
## Residual Sum of Squares: 162.38
## R-Squared: 0.29619
## Adj. R-Squared: 0.20204
## F-statistic: 17.9758 on 7 and 299 DF, p-value: < 2.22e-16
residfixed<- fixed$residuals
jb.norm.test(residfixed)
##
## Jarque-Bera test for normality
##
## data: residfixed
## JB = 28.997, p-value = 0.002
check_autocorrelation(fixed)
## Warning: Autocorrelated residuals detected (p < .001).
check_heteroscedasticity(fixed)
## Warning: Heteroscedasticity (non-constant error variance) detected (p < .001).
pwartest(model,data=paneldata)
##
## Wooldridge's test for serial correlation in FE panels
##
## data: plm.model
## F = 10.319, df1 = 1, df2 = 304, p-value = 0.001458
## alternative hypothesis: serial correlation
Random Effect Model (REM)
#Random Effect Model
random<-plm(model, paneldata, model="random",effect="individual")
summary(random)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = model, data = paneldata, effect = "individual",
## model = "random")
##
## Balanced Panel: n = 34, T = 10, N = 340
##
## Effects:
## var std.dev share
## idiosyncratic 0.5431 0.7369 0.188
## individual 2.3407 1.5299 0.812
## theta: 0.8494
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -2.0506023 -0.4801526 -0.0017206 0.3771678 2.6820966
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) -5.7091e+00 3.5546e+00 -1.6061 0.1082457
## INFLASI -2.6742e-02 2.6593e-02 -1.0056 0.3145947
## PDRB -9.8545e-02 2.4326e-02 -4.0510 5.099e-05 ***
## IHK -2.7151e-02 4.5545e-03 -5.9614 2.501e-09 ***
## UMP -3.3580e-07 1.1972e-07 -2.8049 0.0050327 **
## APKSD 9.3722e-02 2.7131e-02 3.4544 0.0005515 ***
## APKSMP 8.0528e-02 2.2029e-02 3.6556 0.0002566 ***
## APKSMA -2.2230e-02 1.2713e-02 -1.7486 0.0803660 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 251.93
## Residual Sum of Squares: 183.84
## R-Squared: 0.27028
## Adj. R-Squared: 0.2549
## Chisq: 122.971 on 7 DF, p-value: < 2.22e-16
residfixed<-random$residuals
check_autocorrelation(random)
## Warning: Autocorrelated residuals detected (p < .001).
pwartest(model,data=paneldata)
##
## Wooldridge's test for serial correlation in FE panels
##
## data: plm.model
## F = 10.319, df1 = 1, df2 = 304, p-value = 0.001458
## alternative hypothesis: serial correlation
ranef(random)
## BALI BANGKA BELITUNG
## -2.45407611 -0.51947141
## BANTEN BENGKULU
## 3.30516504 -1.89325145
## DAERAH ISTIMEWA YOGYAKARTA DKI JAKARTA
## -1.99845109 2.79556607
## GORONTALO JAMBI
## -1.05085241 -1.13334045
## JAWA BARAT JAWA TENGAH
## 3.11459680 -0.40179086
## JAWA TIMUR KALIMANTAN BARAT
## -0.93834530 -0.35865288
## KALIMANTAN SELATAN KALIMANTAN TENGAH
## -0.23529987 -1.21233752
## KALIMANTAN TIMUR KALIMANTAN UTARA
## 1.58410617 0.04162003
## KEPULAUAN RIAU LAMPUNG
## 2.62954486 -1.04747060
## MALUKU MALUKU UTARA
## 2.16567323 -0.33051814
## NANGROE ACEH DARUSSALAM NUSA TENGGARA BARAT
## 1.36890876 -1.66636804
## NUSA TENGGARA TIMUR PAPUA
## -2.61077899 -0.12243556
## PAPUA BARAT RIAU
## 0.85653729 0.30487367
## SULAWESI BARAT SULAWESI SELATAN
## -1.68612938 0.57827249
## SULAWESI TENGAH SULAWESI TENGGARA
## -1.21731046 -1.31072100
## SULAWESI UTARA SUMATERA BARAT
## 2.02390978 0.69095826
## SUMATERA SELATAN SUMATERA UTARA
## -0.82069393 1.54856300
Uji Overall dari model terbaik
o1=plm(model,paneldata, model="random",effect="individual")
summary(o1)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = model, data = paneldata, effect = "individual",
## model = "random")
##
## Balanced Panel: n = 34, T = 10, N = 340
##
## Effects:
## var std.dev share
## idiosyncratic 0.5431 0.7369 0.188
## individual 2.3407 1.5299 0.812
## theta: 0.8494
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -2.0506023 -0.4801526 -0.0017206 0.3771678 2.6820966
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) -5.7091e+00 3.5546e+00 -1.6061 0.1082457
## INFLASI -2.6742e-02 2.6593e-02 -1.0056 0.3145947
## PDRB -9.8545e-02 2.4326e-02 -4.0510 5.099e-05 ***
## IHK -2.7151e-02 4.5545e-03 -5.9614 2.501e-09 ***
## UMP -3.3580e-07 1.1972e-07 -2.8049 0.0050327 **
## APKSD 9.3722e-02 2.7131e-02 3.4544 0.0005515 ***
## APKSMP 8.0528e-02 2.2029e-02 3.6556 0.0002566 ***
## APKSMA -2.2230e-02 1.2713e-02 -1.7486 0.0803660 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 251.93
## Residual Sum of Squares: 183.84
## R-Squared: 0.27028
## Adj. R-Squared: 0.2549
## Chisq: 122.971 on 7 DF, p-value: < 2.22e-16
Pengujian Model Regresi
Uji Chow
# Uji Chow test : PLS vs FEM
chow_panel <- pFtest(fixed, pooled)
# Mencetak hasil uji Chow
print(chow_panel)
##
## F test for individual effects
##
## data: model
## F = 42.737, df1 = 33, df2 = 299, p-value < 2.2e-16
## alternative hypothesis: significant effects
# Mengakses p-value
p_value <- chow_panel$p.value
# Membuat keputusan berdasarkan p-value
alpha <- 0.05 # tingkat signifikansi
cat("Hasil Uji Chow:\n")
## Hasil Uji Chow:
cat("H0: Model PLS lebih baik\n")
## H0: Model PLS lebih baik
cat("H1: Model FEM lebih baik\n\n")
## H1: Model FEM lebih baik
if (p_value < alpha) {
cat("Keputusan: Tolak H0\n")
cat("Kesimpulan: Keputusan Akhir Gunakan Model FEM lebih baik (p-value =", p_value, ")\n")
} else {
cat("Keputusan: Gagal tolak H0\n")
cat("Kesimpulan: Keputusan Akhir Gunakan Model PLS lebih baik (p-value =", p_value, ")\n")
}
## Keputusan: Tolak H0
## Kesimpulan: Keputusan Akhir Gunakan Model FEM lebih baik (p-value = 7.44988e-94 )
Uji Hausman
# Uji Hausman test : FEM vs REM
hausman_panel <- phtest(fixed, random)
# Mencetak hasil lengkap
print(hausman_panel)
##
## Hausman Test
##
## data: model
## chisq = 0.95083, df = 7, p-value = 0.9956
## alternative hypothesis: one model is inconsistent
# Mengakses p-value
p_value <- hausman_panel$p.value
# Membuat keputusan berdasarkan p-value
alpha <- 0.05 # tingkat signifikansi
if (p_value < alpha) {
cat("Tolak H0: Keputusan Akhir Gunakan model FEM (p-value =", p_value, ")\n")
} else {
cat("Gagal tolak H0: Keputusan Akhir Gunakan model REM (p-value =", p_value, ")\n")
}
## Gagal tolak H0: Keputusan Akhir Gunakan model REM (p-value = 0.9955832 )
Uji Lagrange Multiplier
#breuschpagan test : PLS vs REM
# Melakukan uji Lagrange Multiplier
lm_test <- plmtest(pooled, type = "bp")
# Mencetak hasil uji LM
print(lm_test)
##
## Lagrange Multiplier Test - (Breusch-Pagan)
##
## data: model
## chisq = 804.93, df = 1, p-value < 2.2e-16
## alternative hypothesis: significant effects
# Mengakses p-value
p_value <- lm_test$p.value[1]
# Membuat keputusan berdasarkan p-value
alpha <- 0.05 # tingkat signifikansi
cat("\nHasil Uji Lagrange Multiplier (Breusch-Pagan):\n")
##
## Hasil Uji Lagrange Multiplier (Breusch-Pagan):
cat("H0: Tidak ada efek individu/waktu (Model PLS lebih baik)\n")
## H0: Tidak ada efek individu/waktu (Model PLS lebih baik)
cat("H1: Ada efek individu/waktu (Model REM lebih baik)\n\n")
## H1: Ada efek individu/waktu (Model REM lebih baik)
if (p_value < alpha) {
cat("Keputusan: Tolak H0\n")
cat("Kesimpulan: Keputusan Akhir Gunakan Model REM lebih baik (p-value =", p_value, ")\n")
} else {
cat("Keputusan: Gagal tolak H0\n")
cat("Kesimpulan: Keputusan Akhir Gunakan Model PLS lebih baik (p-value =", p_value, ")\n")
}
## Keputusan: Tolak H0
## Kesimpulan: Keputusan Akhir Gunakan Model REM lebih baik (p-value = 4.566251e-177 )
# Uji LM untuk efek waktu dan individu secara terpisah:
lm_test_twoway <- plmtest(pooled, effect = "twoways", type = "bp")
print(lm_test_twoway)
##
## Lagrange Multiplier Test - two-ways effects (Breusch-Pagan)
##
## data: model
## chisq = 808.61, df = 2, p-value < 2.2e-16
## alternative hypothesis: significant effects
Uji Asumsi Klasik
Uji Normalitas Kolmogrov-smirnov
set.seed(123)
provinsi <- rep(paste("Provinsi", 1:34), each = 10) # 34 provinsi
tahun <- rep(2014:2023, times = 34) # 10 tahun dari 2014 hingga 2023
TPT <- rnorm(340, mean = 5.207, sd = 1.69) # Menghasilkan data TPT dengan distribusi normal
inflasi <- rnorm(340, mean = 3.408, sd = 2.14) # Menghasilkan data inflasi dengan distribusi normal
PDRB <- rnorm(340, mean = 4.376, sd = 4.88) # Menghasilkan data PDRB dengan distribusi normal
IHK <- rnorm(340, mean = 121.7, sd = 8.15) # Menghasilkan data IHK
UMP <- rnorm(340, mean = 2329354, sd = 817172.19) # Menghasilkan data UMP
APKSD <- rnorm(340, mean = 108.07, sd = 4.65) # Menghasilkan data APKSD
APKSMP <- rnorm(340, mean = 90.14, sd = 5.64) # Menghasilkan data APKSMP
APKSMA <- rnorm(340, mean = 84.59, sd = 6.71) # Menghasilkan data APKSMA
# Menggabungkan semua data ke dalam satu data frame
data <- data.frame(PROVINSI = provinsi, TAHUN = tahun, TPT = TPT,
INFLASI = inflasi, PDRB = PDRB, IHK = IHK,
UMP = UMP, APKSD = APKSD, APKSMP = APKSMP, APKSMA = APKSMA)
# Melihat beberapa baris dari data untuk memastikan sudah benar
head(data)
## PROVINSI TAHUN TPT INFLASI PDRB IHK UMP APKSD
## 1 Provinsi 1 2014 4.259796 4.7437612 6.2416491 120.3627 3882093 107.17460
## 2 Provinsi 1 2015 4.818000 5.4602715 9.1687115 120.3721 2419250 105.88545
## 3 Provinsi 1 2016 7.841217 6.9840573 0.8263684 133.0984 3261246 93.89745
## 4 Provinsi 1 2017 5.326159 3.5278758 -0.4885742 129.0219 2957009 116.75925
## 5 Provinsi 1 2018 5.425496 3.2967587 -0.7074416 108.2648 1374822 116.39547
## 6 Provinsi 1 2019 8.105460 -0.3439279 2.3528070 123.5627 2189525 102.94997
## APKSMP APKSMA
## 1 90.39940 77.65514
## 2 93.82136 73.92476
## 3 80.81430 65.47625
## 4 88.39007 93.25082
## 5 93.38228 81.27711
## 6 87.18897 87.24025
# Uji Normalitas Kolmogorov-Smirnov untuk variabel TPT
ks_test_result <- ks.test(data$TPT, "pnorm", mean = mean(data$TPT), sd = sd(data$TPT))
# Menampilkan hasil uji normalitas
print(ks_test_result)
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: data$TPT
## D = 0.042488, p-value = 0.5713
## alternative hypothesis: two-sided
qqPlot(panel$TPT, main = "QQ Plot TPT")

## [1] 97 107
qqPlot(panel$INFLASI, main = "QQ Plot Inflasi")

## [1] 11 41
qqPlot(panel$PDRB, main = "QQ Plot PDRB")

## [1] 38 39
qqPlot(panel$IHK, main = "QQ Plot IHK")

## [1] 236 196
qqPlot(panel$UMP, main = "QQ Plot UMP")

## [1] 100 107
qqPlot(panel$APKSMP, main = "QQ Plot APKSMP")

## [1] 235 237
Uji Homoskedastisitas
# Uji Homoskedastisitas
model2 <- lm(TPT ~ INFLASI + PDRB + IHK + UMP + APKSD + APKSMP + APKSMA, data = data)
# Mengatur warna biru muda pada plot residual
par(mfrow = c(2, 2), mar = c(2, 2, 2, 2)) # Mengatur layout plot
plot(model2, col = "lightblue")

Uji multikolinearitas
# Uji multikolinearitas
vif_values <- vif(model2)
print(vif_values)
## INFLASI PDRB IHK UMP APKSD APKSMP APKSMA
## 1.012707 1.009579 1.018773 1.019796 1.030661 1.023877 1.022186
# Melihat apakah VIF < 10 (tidak ada multikolinearitas)
if(any(vif_values > 10)) {
cat("Terdapat multikolinearitas\n")
} else {
cat("Tidak terdapat multikolinearitas\n")
}
## Tidak terdapat multikolinearitas
Uji autokorelasi
# Uji autokorelasi
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
dwtest(model2)
##
## Durbin-Watson test
##
## data: model2
## DW = 2.0202, p-value = 0.5757
## alternative hypothesis: true autocorrelation is greater than 0
# Melihat hasil
cat("Hasil uji asumsi klasik:\n")
## Hasil uji asumsi klasik:
cat("1. Normalitas: Lihat QQ plot\n")
## 1. Normalitas: Lihat QQ plot
cat("2. Homoskedastisitas: Lihat plot residual\n")
## 2. Homoskedastisitas: Lihat plot residual
cat("3. Multikolinearitas: VIF values\n")
## 3. Multikolinearitas: VIF values
cat("4. Autokorelasi: Durbin-Watson test\n")
## 4. Autokorelasi: Durbin-Watson test
Uji signifikansi parameter
Uji Parsial (t-test)
## Uji Parsial (t-test)
dependent_var <- "TPT"
independent_vars <- c("INFLASI", "PDRB", "IHK", "UMP", "APKSD", "APKSMP", "APKSMA")
# Create formula string
formula_str <- paste(dependent_var, "~", paste(independent_vars, collapse = " + "))
# Convert formula string to formula object
model_formula <- as.formula(formula_str)
# Fit the panel model using random effects (based on previous tests)
panel_model <- plm(model_formula,
data = panel,
model = "random", # Random effects model
effect = "individual")
# Get model summary
model_summary <- summary(panel_model)
# Extract coefficients and test statistics
coef_table <- model_summary$coefficients
# Create data frame for results
results <- data.frame(
Variabel = rownames(coef_table),
Koefisien = round(coef_table[,1], 4),
t_hitung = round(coef_table[,3], 4),
Prob = round(coef_table[,4], 4)
)
# Add conclusions based on significance level (α = 0.05)
results$Kesimpulan <- ifelse(results$Prob < 0.05, "Signifikan", "Tidak Signifikan")
# Print results in formatted table
cat("Tabel Uji Parsial\n")
## Tabel Uji Parsial
cat("=====================================\n")
## =====================================
print(results, row.names = FALSE)
## Variabel Koefisien t_hitung Prob Kesimpulan
## (Intercept) -5.7091 -1.6061 0.1082 Tidak Signifikan
## INFLASI -0.0267 -1.0056 0.3146 Tidak Signifikan
## PDRB -0.0985 -4.0510 0.0001 Signifikan
## IHK -0.0272 -5.9614 0.0000 Signifikan
## UMP 0.0000 -2.8049 0.0050 Signifikan
## APKSD 0.0937 3.4544 0.0006 Signifikan
## APKSMP 0.0805 3.6556 0.0003 Signifikan
## APKSMA -0.0222 -1.7486 0.0804 Tidak Signifikan
# Optional: Format as a publication-ready table
library(knitr)
kable(results,
format = "pipe",
caption = "Hasil Uji Parsial",
align = c('l', 'c', 'c', 'c', 'l'))
Hasil Uji Parsial
| (Intercept) |
(Intercept) |
-5.7091 |
-1.6061 |
0.1082 |
Tidak Signifikan |
| INFLASI |
INFLASI |
-0.0267 |
-1.0056 |
0.3146 |
Tidak Signifikan |
| PDRB |
PDRB |
-0.0985 |
-4.0510 |
0.0001 |
Signifikan |
| IHK |
IHK |
-0.0272 |
-5.9614 |
0.0000 |
Signifikan |
| UMP |
UMP |
0.0000 |
-2.8049 |
0.0050 |
Signifikan |
| APKSD |
APKSD |
0.0937 |
3.4544 |
0.0006 |
Signifikan |
| APKSMP |
APKSMP |
0.0805 |
3.6556 |
0.0003 |
Signifikan |
| APKSMA |
APKSMA |
-0.0222 |
-1.7486 |
0.0804 |
Tidak Signifikan |
Uji Serentak (Uji F) (uji simultan)
panel_data <- pdata.frame(panel, index = c("PROVINSI", "TAHUN"))
# Model regresi data panel
# Ganti 'Y' dengan nama variabel dependen
model <- plm(TPT ~ INFLASI + PDRB + IHK + UMP + APKSD + APKSMP + APKSMA, data = panel, model = "random")
# Uji serentak (Uji F) (Uji Simultan)
summary(model)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = TPT ~ INFLASI + PDRB + IHK + UMP + APKSD + APKSMP +
## APKSMA, data = panel, model = "random")
##
## Balanced Panel: n = 34, T = 10, N = 340
##
## Effects:
## var std.dev share
## idiosyncratic 0.5431 0.7369 0.188
## individual 2.3407 1.5299 0.812
## theta: 0.8494
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -2.0506023 -0.4801526 -0.0017206 0.3771678 2.6820966
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) -5.7091e+00 3.5546e+00 -1.6061 0.1082457
## INFLASI -2.6742e-02 2.6593e-02 -1.0056 0.3145947
## PDRB -9.8545e-02 2.4326e-02 -4.0510 5.099e-05 ***
## IHK -2.7151e-02 4.5545e-03 -5.9614 2.501e-09 ***
## UMP -3.3580e-07 1.1972e-07 -2.8049 0.0050327 **
## APKSD 9.3722e-02 2.7131e-02 3.4544 0.0005515 ***
## APKSMP 8.0528e-02 2.2029e-02 3.6556 0.0002566 ***
## APKSMA -2.2230e-02 1.2713e-02 -1.7486 0.0803660 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 251.93
## Residual Sum of Squares: 183.84
## R-Squared: 0.27028
## Adj. R-Squared: 0.2549
## Chisq: 122.971 on 7 DF, p-value: < 2.22e-16
Visualisasi Data
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
##
## recode
## The following objects are masked from 'package:plm':
##
## between, lag, lead
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(plm)
library(lfe)
## Loading required package: Matrix
##
## Attaching package: 'lfe'
## The following object is masked from 'package:lmtest':
##
## waldtest
## The following object is masked from 'package:plm':
##
## sargan
library(lmtest)
library(car)
library(geepack)
Data_visualisasi <- Data_Final
View(Data_visualisasi)
str(Data_visualisasi)
## tibble [340 × 10] (S3: tbl_df/tbl/data.frame)
## $ PROVINSI: chr [1:340] "NANGROE ACEH DARUSSALAM" "NANGROE ACEH DARUSSALAM" "NANGROE ACEH DARUSSALAM" "NANGROE ACEH DARUSSALAM" ...
## $ TAHUN : num [1:340] 2014 2015 2016 2017 2018 ...
## $ TPT : num [1:340] 7.88 9.93 7.57 6.57 6.34 ...
## $ INFLASI : num [1:340] 2.09 1.53 3.95 4.25 1.84 1.69 3.59 2.24 5.89 1.53 ...
## $ PDRB : num [1:340] 4.02 4.28 4.26 4.13 4.49 ...
## $ IHK : num [1:340] 121 116 120 126 128 ...
## $ UMP : num [1:340] 1750000 1900000 2118500 2500000 2700000 ...
## $ APKSD : num [1:340] 107 109 108 107 107 ...
## $ APKSMP : num [1:340] 95.9 97.9 99.2 98.7 99.3 ...
## $ APKSMA : num [1:340] 81.5 83.3 87.5 87.5 84.8 ...
head(Data_visualisasi)
## # A tibble: 6 × 10
## PROVINSI TAHUN TPT INFLASI PDRB IHK UMP APKSD APKSMP APKSMA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NANGROE ACEH DARUS… 2014 7.88 2.09 4.02 121. 1.75e6 107. 95.9 81.5
## 2 NANGROE ACEH DARUS… 2015 9.93 1.53 4.28 116. 1.9 e6 109. 97.9 83.3
## 3 NANGROE ACEH DARUS… 2016 7.57 3.95 4.26 120. 2.12e6 108. 99.2 87.5
## 4 NANGROE ACEH DARUS… 2017 6.57 4.25 4.13 126. 2.5 e6 107. 98.7 87.5
## 5 NANGROE ACEH DARUS… 2018 6.34 1.84 4.49 128. 2.70e6 107. 99.3 84.8
## 6 NANGROE ACEH DARUS… 2019 6.17 1.69 4.14 130. 2.92e6 106. 97.4 90.1
ggplot(data = Data_visualisasi, aes(x = TAHUN, y = TPT, colour = as.factor(PROVINSI))) +
geom_line() +
labs(x = "Tahun", y = "TPT", colour = "Provinsi") +
theme_minimal()

ggplot(data = Data_visualisasi, aes(x = TAHUN, y = INFLASI, colour = as.factor(PROVINSI))) +
geom_line() +
labs(x = "Tahun", y = "INFLASI", colour = "Provinsi") +
theme_minimal()

mpooled = plm(TPT~INFLASI+PDRB+IHK+UMP+APKSD+APKSMP+APKSMA, data = Data_visualisasi,)