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
Variabel Koefisien t_hitung Prob Kesimpulan
(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,)