PKL-Model Regresi Data Panel

A. Library dan Setup

knitr::opts_chunk$set(width = Inf)
options(tibble.width = Inf)

library(readxl)
library(dplyr)
library(psych)
library(ggplot2)
library(tidyr)
library(viridis)
library(corrplot)
library(patchwork)
library(scales)
library(reshape2)
library(plm)
library(tseries)
library(lmtest)
library(nortest)
library(sandwich)
library(car)

B. Data

2.1. Load Dataset

# Load dataset
data_panel <- read_excel("D:/UNY/MySta/Bismillah-Tuntas/Magang_Lana/Laporan PKL/Dataset_Kependudukan.xlsx")
data_panel
## # A tibble: 70 × 7
##    Kemantren     Tahun Kelahiran Kematian Migrasi_Masuk Migrasi_Keluar
##    <chr>         <dbl>     <dbl>    <dbl>         <dbl>          <dbl>
##  1 Tegalrejo      2020       375      250          16.1           18.2
##  2 Jetis          2020       271      235          15.7           17.9
##  3 Gondokusuman   2020       411      342          19.5           20.0
##  4 Danurejan      2020       176      192          15.3           18.3
##  5 Gedong Tengen  2020       168      194          10.9           17.6
##  6 Ngampilan      2020       192      157          14.4           17.0
##  7 Wirobrajan     2020       295      214          14.4           16.9
##  8 Mantrijeron    2020       361      264          14.2           16.3
##  9 Kraton         2020       200      183          13.4           15.6
## 10 Gondomanan     2020       166      141          14.8           16.6
##    Pertumbuhan
##          <dbl>
##  1        0.57
##  2        0.91
##  3        0.75
##  4        0.26
##  5       -0.03
##  6       -0.36
##  7        0.77
##  8        0.56
##  9        0.34
## 10        0.05
## # ℹ 60 more rows

2.2. Struktur Data

# struktur data
str(data_panel)
## tibble [70 × 7] (S3: tbl_df/tbl/data.frame)
##  $ Kemantren     : chr [1:70] "Tegalrejo" "Jetis" "Gondokusuman" "Danurejan" ...
##  $ Tahun         : num [1:70] 2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 ...
##  $ Kelahiran     : num [1:70] 375 271 411 176 168 192 295 361 200 166 ...
##  $ Kematian      : num [1:70] 250 235 342 192 194 157 214 264 183 141 ...
##  $ Migrasi_Masuk : num [1:70] 16.1 15.7 19.5 15.3 10.9 ...
##  $ Migrasi_Keluar: num [1:70] 18.2 17.9 20 18.3 17.6 ...
##  $ Pertumbuhan   : num [1:70] 0.57 0.91 0.75 0.26 -0.03 -0.36 0.77 0.56 0.34 0.05 ...

2.3. Jumlah Observasi

# Cek Jumlah Observasi Tiap Kemantren dan Tahun
data_panel %>%
  count(Kemantren) %>%
  arrange(desc(n))
## # A tibble: 14 × 2
##    Kemantren         n
##    <chr>         <int>
##  1 Danurejan         5
##  2 Gedong Tengen     5
##  3 Gondokusuman      5
##  4 Gondomanan        5
##  5 Jetis             5
##  6 Kotagede          5
##  7 Kraton            5
##  8 Mantrijeron       5
##  9 Mergangsan        5
## 10 Ngampilan         5
## 11 Pakualaman        5
## 12 Tegalrejo         5
## 13 Umbulharjo        5
## 14 Wirobrajan        5
data_panel %>%
  count(Tahun)
## # A tibble: 5 × 2
##   Tahun     n
##   <dbl> <int>
## 1  2020    14
## 2  2021    14
## 3  2022    14
## 4  2023    14
## 5  2024    14

C. Data Preprocessing

3.1. Missing Value dan Duplicate

# Cek missing per kolom
colSums(is.na(data_panel))
##      Kemantren          Tahun      Kelahiran       Kematian  Migrasi_Masuk 
##              0              0              0              0              0 
## Migrasi_Keluar    Pertumbuhan 
##              0              0
# Cek duplikat
sum(duplicated(data_panel))
## [1] 0

3.2. Outlier

# Cek Outlier
outlier_table <- data_panel %>%
  group_by(Kemantren) %>%
  summarise(across(
    where(is.numeric),
    ~ sum(.x %in% boxplot.stats(.x)$out),
    .names = "{.col}_out"
  ))

outlier_table
## # A tibble: 14 × 7
##    Kemantren     Tahun_out Kelahiran_out Kematian_out Migrasi_Masuk_out
##    <chr>             <int>         <int>        <int>             <int>
##  1 Danurejan             0             1            1                 0
##  2 Gedong Tengen         0             0            1                 1
##  3 Gondokusuman          0             0            1                 2
##  4 Gondomanan            0             0            1                 2
##  5 Jetis                 0             2            1                 1
##  6 Kotagede              0             0            2                 2
##  7 Kraton                0             2            1                 1
##  8 Mantrijeron           0             0            1                 0
##  9 Mergangsan            0             2            2                 1
## 10 Ngampilan             0             0            1                 1
## 11 Pakualaman            0             0            1                 0
## 12 Tegalrejo             0             0            1                 1
## 13 Umbulharjo            0             1            0                 0
## 14 Wirobrajan            0             2            1                 0
##    Migrasi_Keluar_out Pertumbuhan_out
##                 <int>           <int>
##  1                  1               1
##  2                  0               0
##  3                  1               1
##  4                  1               0
##  5                  0               0
##  6                  1               2
##  7                  1               0
##  8                  0               0
##  9                  1               0
## 10                  0               0
## 11                  0               1
## 12                  0               0
## 13                  1               1
## 14                  0               0
# Menampilkan baris yang mengandung outlier
outlier_rows <- data_panel %>%
  group_by(Kemantren) %>%
  filter(if_any(
    where(is.numeric),
    ~ .x %in% boxplot.stats(.x)$out
  ))
outlier_rows
## # A tibble: 35 × 7
## # Groups:   Kemantren [14]
##    Kemantren    Tahun Kelahiran Kematian Migrasi_Masuk Migrasi_Keluar
##    <chr>        <dbl>     <dbl>    <dbl>         <dbl>          <dbl>
##  1 Jetis         2020       271      235          15.7           17.9
##  2 Gondokusuman  2020       411      342          19.5           20.0
##  3 Wirobrajan    2020       295      214          14.4           16.9
##  4 Kraton        2020       200      183          13.4           15.6
##  5 Mergangsan    2020       324      276          15.0           18.2
##  6 Kotagede      2020       382      237          17.2           16  
##  7 Tegalrejo     2021       304      454          18.0           22.6
##  8 Jetis         2021       187      387          17.2           18.4
##  9 Gondokusuman  2021       289      526          23.0           24.1
## 10 Danurejan     2021       106      281          16.9           20.7
##    Pertumbuhan
##          <dbl>
##  1        0.91
##  2        0.75
##  3        0.77
##  4        0.34
##  5       -0.09
##  6        0.74
##  7        0.04
##  8       -0.35
##  9        0.09
## 10       -0.03
## # ℹ 25 more rows

Pada tahun 2020 dan 2021 ditemukan sejumlah nilai ekstrem (outlier) pada variabel kelahiran dan kematian. Outlier tersebut bukan merupakan kesalahan input, melainkan merefleksikan kondisi pandemi COVID-19 yang menyebabkan lonjakan angka kematian serta perubahan dinamika kependudukan di beberapa kemantren.

D. Exploratory Data Analysis

4.1. Statistik Deskriptif

summary(data_panel)
##   Kemantren             Tahun        Kelahiran        Kematian    
##  Length:70          Min.   :2020   Min.   : 64.0   Min.   : 84.0  
##  Class :character   1st Qu.:2021   1st Qu.:155.8   1st Qu.:184.0  
##  Mode  :character   Median :2022   Median :225.0   Median :236.0  
##                     Mean   :2022   Mean   :246.3   Mean   :266.7  
##                     3rd Qu.:2023   3rd Qu.:310.0   3rd Qu.:308.0  
##                     Max.   :2024   Max.   :767.0   Max.   :758.0  
##  Migrasi_Masuk   Migrasi_Keluar   Pertumbuhan    
##  Min.   :10.31   Min.   :15.57   Min.   :-2.170  
##  1st Qu.:15.24   1st Qu.:17.39   1st Qu.:-0.675  
##  Median :17.17   Median :18.66   Median :-0.060  
##  Mean   :17.98   Mean   :20.14   Mean   :-0.096  
##  3rd Qu.:20.59   3rd Qu.:22.33   3rd Qu.: 0.545  
##  Max.   :29.42   Max.   :32.96   Max.   : 1.040
sapply(data_panel[sapply(data_panel, is.numeric)], sd)
##          Tahun      Kelahiran       Kematian  Migrasi_Masuk Migrasi_Keluar 
##      1.4244246    143.8486207    125.8161670      3.8200441      3.8644309 
##    Pertumbuhan 
##      0.7010911
sapply(data_panel[sapply(data_panel, is.numeric)], var)
##          Tahun      Kelahiran       Kematian  Migrasi_Masuk Migrasi_Keluar 
##   2.028986e+00   2.069243e+04   1.582971e+04   1.459274e+01   1.493383e+01 
##    Pertumbuhan 
##   4.915287e-01
num_vars <- names(data_panel)[sapply(data_panel, is.numeric)]

# tahun saat nilai minimum dan maksimum terjadi
get_min_max_year <- function(df, var){
  min_val <- min(df[[var]], na.rm = TRUE)
  max_val <- max(df[[var]], na.rm = TRUE)

  year_min <- df$Tahun[df[[var]] == min_val]
  year_max <- df$Tahun[df[[var]] == max_val]

  data.frame(
    Variabel = var,
    Min = min_val,
    Tahun_Min = paste(unique(year_min), collapse = ", "),
    Max = max_val,
    Tahun_Max = paste(unique(year_max), collapse = ", "),
    row.names = NULL
  )
}

result <- do.call(rbind, lapply(num_vars, function(v) get_min_max_year(data_panel, v)))
print(result)
##         Variabel     Min Tahun_Min     Max Tahun_Max
## 1          Tahun 2020.00      2020 2024.00      2024
## 2      Kelahiran   64.00      2021  767.00      2020
## 3       Kematian   84.00      2020  758.00      2021
## 4  Migrasi_Masuk   10.31      2020   29.42      2022
## 5 Migrasi_Keluar   15.57      2024   32.96      2022
## 6    Pertumbuhan   -2.17      2022    1.04      2022

4.2. Plot Distribusi Variabel

numeric_vars <- names(select(data_panel, where(is.numeric), -Kemantren))

plot_list <- lapply(numeric_vars, \(v)
  ggplot(data_panel, aes(.data[[v]])) +
    geom_histogram(bins = 15, fill = "#2b8cbe", color = "white") +
    labs(title = paste("Distribusi", v), x = v, y = "Frekuensi") +
    theme_minimal(base_size = 10) +
    theme(
      plot.title = element_text(face = "bold", hjust = 0.5, size = 10, color = "#045a8d"),
      axis.text = element_text(size = 7)
    )
)

wrap_plots(plotlist = plot_list, ncol = 2) +
  plot_annotation(
    title = "Distribusi Variabel Numerik",
    theme = theme(plot.title = element_text(hjust = 0.5, size = 12, face = "bold"))
  )

4.3. Plot Tren Per Tahun

plot_trend <- lapply(numeric_vars[-1], function(v) {
  ggplot(data_panel, aes(x = Tahun, y = .data[[v]],
                         color = Kemantren, group = Kemantren)) +
    geom_line(linewidth = 1) +
    geom_point(size = 2) +
    scale_color_viridis(discrete = TRUE, option = "C") +
    labs(title = paste("Tren", v),
         y = v, x = "Tahun") +
    theme_minimal(base_size = 11) +
    theme(
      plot.title = element_text(face = "bold", hjust = 0.5, color = "#045a8d"),
      legend.position = "right"
    )
})

wrap_plots(plotlist = plot_trend, ncol = 2, guides = "collect") &
  theme(legend.position = "bottom")

4.4. Korelasi Global

numeric_vars <- data_panel |>
  select(where(is.numeric), -Tahun)

panel.cor <- function(x, y, digits = 4, cex = 1.3) {
  r <- cor(x, y, use = "complete.obs")
  txt <- formatC(r, format = "f", digits = digits)
  par(usr = c(0,1,0,1))
  text(0.5, 0.5, txt, cex = cex)
}

pairs(
  numeric_vars,
  upper.panel = panel.cor,
  lower.panel = panel.smooth
)

4.5. Korelasi Per Kemantren

invisible(
  lapply(split(data_panel, data_panel$Kemantren), function(df) {

    df_num <- df |> select(where(is.numeric), -Tahun)

    pairs(
      df_num,
      upper.panel = panel.cor,
      lower.panel = panel.smooth,
      main = unique(df$Kemantren)
    )
  })
)

E. Analisis Regresi Data Panel

5.1. Pembentukan Data Panel

pdata <- pdata.frame(data_panel, index = c("Kemantren", "Tahun"))
cat("Panel structure: \n")
## Panel structure:
print(pdim(pdata))
## Balanced Panel: n = 14, T = 5, N = 70
print(table(data_panel$Kemantren))
## 
##     Danurejan Gedong Tengen  Gondokusuman    Gondomanan         Jetis 
##             5             5             5             5             5 
##      Kotagede        Kraton   Mantrijeron    Mergangsan     Ngampilan 
##             5             5             5             5             5 
##    Pakualaman     Tegalrejo    Umbulharjo    Wirobrajan 
##             5             5             5             5
print(table(data_panel$Tahun))
## 
## 2020 2021 2022 2023 2024 
##   14   14   14   14   14

5.2. Estimasi Model

a. Common Effect Model (CEM)/ Pooled OLS

model_cem <- plm(Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + Migrasi_Keluar, data = pdata, model = "pooling")
summary(model_cem)
## Pooling Model
## 
## Call:
## plm(formula = Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + 
##     Migrasi_Keluar, data = pdata, model = "pooling")
## 
## Balanced Panel: n = 14, T = 5, N = 70
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -0.947130 -0.224430 -0.019293  0.228881  0.773227 
## 
## Coefficients:
##                   Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)     1.32871767  0.23348664   5.6908 3.269e-07 ***
## Kelahiran       0.00183118  0.00044772   4.0900 0.0001212 ***
## Kematian       -0.00038921  0.00046815  -0.8314 0.4087947    
## Migrasi_Masuk   0.08945354  0.01685538   5.3071 1.441e-06 ***
## Migrasi_Keluar -0.16786186  0.01559556 -10.7634 4.402e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    33.915
## Residual Sum of Squares: 7.5559
## R-Squared:      0.77721
## Adj. R-Squared: 0.7635
## F-statistic: 56.6898 on 4 and 65 DF, p-value: < 2.22e-16

b. Fixed Effect Model (FEM)

model_fem <- plm(Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + Migrasi_Keluar, data = pdata, model = "within")
summary(model_fem)
## Oneway (individual) effect Within Model
## 
## Call:
## plm(formula = Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + 
##     Migrasi_Keluar, data = pdata, model = "within")
## 
## Balanced Panel: n = 14, T = 5, N = 70
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -0.710737 -0.153707  0.010609  0.159802  0.651482 
## 
## Coefficients:
##                   Estimate  Std. Error t-value  Pr(>|t|)    
## Kelahiran       0.00201161  0.00122195  1.6462   0.10575    
## Kematian       -0.00021728  0.00077379 -0.2808   0.77998    
## Migrasi_Masuk   0.04306617  0.02107689  2.0433   0.04611 *  
## Migrasi_Keluar -0.14672417  0.01819332 -8.0647 1.006e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    19.58
## Residual Sum of Squares: 5.1689
## R-Squared:      0.736
## Adj. R-Squared: 0.6497
## F-statistic: 36.2433 on 4 and 52 DF, p-value: 1.8428e-14
fixef(model_fem)
##     Danurejan Gedong Tengen  Gondokusuman    Gondomanan         Jetis 
##        1.7990        1.3872        2.0444        1.4072        1.7129 
##      Kotagede        Kraton   Mantrijeron    Mergangsan     Ngampilan 
##        1.9430        1.3404        1.4819        1.4835        1.5364 
##    Pakualaman     Tegalrejo    Umbulharjo    Wirobrajan 
##        1.7357        1.7809        1.4835        1.9199

c. Random Effect Model (REM)

model_rem <- plm(Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + Migrasi_Keluar, data = pdata, model = "random", random.method = "swar")
summary(model_rem)
## Oneway (individual) effect Random Effect Model 
##    (Swamy-Arora's transformation)
## 
## Call:
## plm(formula = Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + 
##     Migrasi_Keluar, data = pdata, model = "random", random.method = "swar")
## 
## Balanced Panel: n = 14, T = 5, N = 70
## 
## Effects:
##                  var std.dev share
## idiosyncratic 0.0994  0.3153     1
## individual    0.0000  0.0000     0
## theta: 0
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -0.947130 -0.224430 -0.019293  0.228881  0.773227 
## 
## Coefficients:
##                   Estimate  Std. Error  z-value  Pr(>|z|)    
## (Intercept)     1.32871767  0.23348664   5.6908 1.265e-08 ***
## Kelahiran       0.00183118  0.00044772   4.0900 4.314e-05 ***
## Kematian       -0.00038921  0.00046815  -0.8314    0.4058    
## Migrasi_Masuk   0.08945354  0.01685538   5.3071 1.114e-07 ***
## Migrasi_Keluar -0.16786186  0.01559556 -10.7634 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    33.915
## Residual Sum of Squares: 7.5559
## R-Squared:      0.77721
## Adj. R-Squared: 0.7635
## Chisq: 226.759 on 4 DF, p-value: < 2.22e-16

5.3. Pemilihan Model Terbaik

a. Uji Chow (cem vs fem)

pooltest_res <- pooltest(model_cem, model_fem)
pooltest_res
## 
##  F statistic
## 
## data:  Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + Migrasi_Keluar
## F = 1.8472, df1 = 13, df2 = 52, p-value = 0.05987
## alternative hypothesis: unstability

Poolability Test (Chow Test)

H0: tidak ada efek individu yang berpengaruh terhadap model dengan model mengikuti CEM

H1 : Terdapat minimal satu efek individu berpengaruh terhadap model dengan FEM

Karena p-value = 0.059, sedikit di atas 0.05, maka H0 tidak ditolak. Oleh karena itu, dapat disimpulkan tidak ada efek individu berpengaruh terhadap model sehingga model mengikuti common effect model.

B. Uji Hausman (fem vs rem)

hausman_res <- phtest(model_fem, model_rem)
hausman_res
## 
##  Hausman Test
## 
## data:  Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + Migrasi_Keluar
## chisq = 5.0137, df = 4, p-value = 0.2859
## alternative hypothesis: one model is inconsistent

Hausman p = 0.2859 > 0.05, artinya FEM dan REM konsisten. Dengan Demikian, dipilih Random Effect Model (REM)

Kesimpulan Pemilihan Model Terbaik:

Meskipun Uji Hausman menyarankan random effect model (REM) apabila dibandingkan dengan FEM, hasil estimasi model REM pada penelitian ini ternyata identik dengan hasil CEM. Kesamaan tersebut terjadi karena ragam efek individual pada model REM bernilai nol sehingga model REM secara matematis menyatu dengan model common effect. Dengan demikian, common effect model merupakan model terbaik dalam penelitian ini.

F. Uji Asumsi Klasik

6.1. Uji Normalitas

jarque.bera.test(resid(model_cem))
## 
##  Jarque Bera Test
## 
## data:  resid(model_cem)
## X-squared = 0.8184, df = 2, p-value = 0.6642

Interpretasi:

Karena p-value > 0.05, maka H₀ tidak ditolak, sehingga residual pada model REM berdistribusi normal. Dengan demikian, asumsi normalitas terpenuhi.

6.2. Uji Heteroskedastisitas

bptest(model_cem)
## 
##  studentized Breusch-Pagan test
## 
## data:  model_cem
## BP = 1.1471, df = 4, p-value = 0.8867

Interpretasi:

Karena p-value > 0.05, maka H₀ tidak ditolak, sehingga terjadi homoskedastisitas pada model. Artinya, varians error homogen.

6.3. Uji Autokorelasi

pdwtest(model_cem)
## 
##  Durbin-Watson test for serial correlation in panel models
## 
## data:  Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + Migrasi_Keluar
## DW = 2.0507, p-value = 0.5355
## alternative hypothesis: serial correlation in idiosyncratic errors

Interpretasi:

Nilai p-value > 0.05 menunjukkan bahwa tidak terdapat autokorelasi pada residual model. Dengan demikian, asumsi tidak ada autokorelasi terpenuhi.

6.4. Uji Multikolinearitas

mod <- lm(Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + Migrasi_Keluar, data=pdata)
vif(mod)
##      Kelahiran       Kematian  Migrasi_Masuk Migrasi_Keluar 
##       2.462063       2.059259       2.460874       2.155999

Interpretasi:
Berdasarkan kriteria Gujarati (VIF > 10 → terjadi multikolinearitas). Keempat variabel memiliki VIF < 10, maka asumsi tidak adanya multikolinearitas terpenuhi. Uji multikolinearitas dilakukan pada model Pooling karena VIF tidak dapat dihitung pada FEM/REM

G. Uji Signifikansi Parameter

7.1. Uji Serentak (F-Test)

summary(model_cem)
## Pooling Model
## 
## Call:
## plm(formula = Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + 
##     Migrasi_Keluar, data = pdata, model = "pooling")
## 
## Balanced Panel: n = 14, T = 5, N = 70
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -0.947130 -0.224430 -0.019293  0.228881  0.773227 
## 
## Coefficients:
##                   Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)     1.32871767  0.23348664   5.6908 3.269e-07 ***
## Kelahiran       0.00183118  0.00044772   4.0900 0.0001212 ***
## Kematian       -0.00038921  0.00046815  -0.8314 0.4087947    
## Migrasi_Masuk   0.08945354  0.01685538   5.3071 1.441e-06 ***
## Migrasi_Keluar -0.16786186  0.01559556 -10.7634 4.402e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    33.915
## Residual Sum of Squares: 7.5559
## R-Squared:      0.77721
## Adj. R-Squared: 0.7635
## F-statistic: 56.6898 on 4 and 65 DF, p-value: < 2.22e-16

pvalue < 0.05, maka secara simultan variabel X mempengaruhi variabel Y : Pertumbuhan Penduduk.

7.2. Uji Parsial (T-Test)

coeftest(model_cem)
## 
## t test of coefficients:
## 
##                   Estimate  Std. Error  t value  Pr(>|t|)    
## (Intercept)     1.32871767  0.23348664   5.6908 3.269e-07 ***
## Kelahiran       0.00183118  0.00044772   4.0900 0.0001212 ***
## Kematian       -0.00038921  0.00046815  -0.8314 0.4087947    
## Migrasi_Masuk   0.08945354  0.01685538   5.3071 1.441e-06 ***
## Migrasi_Keluar -0.16786186  0.01559556 -10.7634 4.402e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

7.3. Koefisien Determinasi

summary(model_cem)
## Pooling Model
## 
## Call:
## plm(formula = Pertumbuhan ~ Kelahiran + Kematian + Migrasi_Masuk + 
##     Migrasi_Keluar, data = pdata, model = "pooling")
## 
## Balanced Panel: n = 14, T = 5, N = 70
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -0.947130 -0.224430 -0.019293  0.228881  0.773227 
## 
## Coefficients:
##                   Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)     1.32871767  0.23348664   5.6908 3.269e-07 ***
## Kelahiran       0.00183118  0.00044772   4.0900 0.0001212 ***
## Kematian       -0.00038921  0.00046815  -0.8314 0.4087947    
## Migrasi_Masuk   0.08945354  0.01685538   5.3071 1.441e-06 ***
## Migrasi_Keluar -0.16786186  0.01559556 -10.7634 4.402e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    33.915
## Residual Sum of Squares: 7.5559
## R-Squared:      0.77721
## Adj. R-Squared: 0.7635
## F-statistic: 56.6898 on 4 and 65 DF, p-value: < 2.22e-16