ARDL dan Panel regression

Pertemuan 7

Metodologi penelitian

So far

  • Kita sudah membahas data cross-section (bermacam-macam individu, 1 waktu) dan data time series (waktunya banyak tapi hanya track 1 individu).

  • Hari ini, terakhir untuk teknik regresi:

    • Time series dengan lebih dari 1 variabel: ARDL
    • Regresi 2 index: individu dan waktu, yaitu regresi panel data.
    • Tentang UTS dan what’s next.

Packages & plot

library(tidyverse) # untuk pivot longer
library(kableExtra) # untuk bikin tabel di slide
library(readxl)
library(writexl)
library(ARDL)
library(plm)

ARDL

  • ARIMA mengandalkan dirinya sendiri untuk melakukan forecasting.

    • Variabelnya wajib stasioner.

    • Kadang, variabel lain berpengaruh.

  • Auto-Regressive Distributed Lag (ARDL) adalah teknik yang dapat digunakan untuk variabel yang tidak stasioner.

    • Tapi perlu ada variabel lain untuk kointegrasi.

Data ARDL

Year dfx dintx dintm dfm
2003 10.896412 0.0500818 4.6196749 10.2886476
2004 17.994859 8.1004623 22.2809224 4.5621342
2005 13.059927 21.3223886 0.1154420 27.5454781
2006 4.775585 16.6351330 15.5633093 11.0021932
2007 13.760250 6.9471833 29.8450919 46.7816336
2008 39.250887 22.3266729 24.2666596 -0.9850059
2009 -5.752603 -13.9194517 -4.3477099 -32.3349982
2010 21.346530 17.6138311 24.0407582 57.0574829
2011 26.441703 23.1888490 32.9344025 39.7050239
2012 12.655575 -1.4123671 0.8063468 -24.6361762
2013 2.061233 3.8540891 6.3265299 -14.3296342
2014 8.000635 4.8610764 2.0021351 10.7923660
2015 -5.933598 -10.4340099 -15.6392075 -15.9141368
2016 9.268460 -2.6999715 4.9617711 24.5924641
2017 15.933077 2.3822400 9.6017083 -5.0539172
2018 8.303599 11.4652328 7.2771690 38.3701686
2019 5.036703 -5.6808978 -3.0303300 -20.1233512
2020 8.118241 0.1562093 -0.8437596 -8.3524315

Data

  • Data di atas adalah data ekspor dan impor barang yang terkait dengan industri makanan dan minuman.

    • first difference dari log.

    • ekspor produk final (dfx), ekspor bahan baku (dintx), impor produk final (dfm) dan impor bahan baku (dintm).

  • Data ini merupakan salah satu data yang digunakan dalam penelitian Amanta & Gupta (2021).

    • melihat GVC di industri pangan: seberapa besar impor bahan baku berdampak ke ekspor barang jadi.

Plot

auto ARDL

reg1<-auto_ardl(dfx~dintm+dfm,data=dat,max_order = 5)
reg1
$best_model

Time series regression with "ts" data:
Start = 6, End = 18

Call:
dynlm::dynlm(formula = full_formula, data = data, start = start, 
    end = end)

Coefficients:
(Intercept)    L(dfx, 1)    L(dfx, 2)        dintm  L(dintm, 1)  L(dintm, 2)  
   18.15225     -1.12334     -0.09227      1.40227      1.10408      0.21935  
L(dintm, 3)  L(dintm, 4)  L(dintm, 5)          dfm    L(dfm, 1)    L(dfm, 2)  
   -0.17569     -0.27523     -0.02996     -0.39218     -0.35428     -0.26001  
  L(dfm, 3)    L(dfm, 4)  
   -0.29253           NA  


$best_order
[1] 2 5 4

$top_orders
   dfx dintm dfm       AIC
1    2     5   4      -Inf
2    2     5   3      -Inf
3    3     4   4      -Inf
4    3     5   4      -Inf
5    3     4   5      -Inf
6    4     4   4      -Inf
7    4     3   4      -Inf
8    4     4   3      -Inf
9    5     5   5      -Inf
10   1     5   1  67.35304
11   1     5   2  67.41105
12   1     5   0  68.15778
13   1     4   0  94.27907
14   2     4   4  96.05126
15   2     4   3  96.10150
16   3     4   3  97.09513
17   2     3   3 103.92932
18   2     3   2 104.08403
19   1     3   0 104.34781
20   3     3   3 105.92228

Auto ARDL

  • urutan lag-nya sesuai urutan di formula.

  • auto ARDL melakukan iterasi beberapa kali untuk spesifikasi berbeda-beda, seperti ARIMA.

  • Namun dapat kita lihat, jika seriesnya terlalu pendek, iterasinya kurang.

    • AIC baru muncul di spesifikasi dengan lag lebih sedikit.
  • Kita gunakan lag 1,5,1

ARDL

reg1<-ardl(dfx~dintm+dfm,data=dat,order = c(1,5,1))
summary(reg1)

Time series regression with "ts" data:
Start = 6, End = 18

Call:
dynlm::dynlm(formula = full_formula, data = data, start = start, 
    end = end)

Residuals:
       6        7        8        9       10       11       12       13 
 1.01171  1.92348  0.09148  0.03605 -0.26695 -2.80836 -0.43339 -0.67969 
      14       15       16       17       18 
 2.34811 -1.30404 -1.33239 -0.18529  1.59928 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 11.80452    1.85996   6.347  0.00791 **
L(dfx, 1)   -0.70474    0.19279  -3.656  0.03536 * 
dintm        0.95659    0.14091   6.789  0.00653 **
L(dintm, 1)  0.53084    0.25741   2.062  0.13121   
L(dintm, 2) -0.06674    0.11616  -0.575  0.60583   
L(dintm, 3) -0.22959    0.07768  -2.955  0.05976 . 
L(dintm, 4)  0.05078    0.09313   0.545  0.62349   
L(dintm, 5) -0.02473    0.08458  -0.292  0.78908   
dfm         -0.17023    0.06618  -2.572  0.08233 . 
L(dfm, 1)   -0.06507    0.07656  -0.850  0.45782   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.882 on 3 degrees of freedom
Multiple R-squared:  0.9867,    Adjusted R-squared:  0.947 
F-statistic: 24.82 on 9 and 3 DF,  p-value: 0.01151

Hasilnya

  • dapat kita lihat bahwa di industri makanan, pertumbuhan impor bahan baku secara signifikan meningkatkan pertumbuhan ekspor barang jadi.

    • 1% kenaikan pertumbuhan impor bahan baku sejalan dengan 0,96% kenaikan pertumbuhan ekspor barang jadi.
  • AR-based regression membutuhkan series yang panjang.

    • Idealnya dilakukan dengan high-frequency data (bulanan, harian, kuartalan)

Data Panel

  • Hari ini kita belajar gabungan cross-section & time series: data panel.

    • Punya informasi dari variasi individu dan variasi waktu.

    • Punya masalah keduanya: heteroskedastis dan autokorelasi.

  • Secara umum, manfaatnya lebih besar daripada masalahnya.

Struktur data panel

  • Secara umum, ada 2 struktur data panel yang mungkin akan anda sering dapatkan.

  • wide: jika bentuk datanya melebar ke samping, antara waktunya atau variabel individunya yang ke samping.

  • long: jika nama individu dan tahunnya sama-sama jadi variabel sendiri, dan datanya jadi panjang ke bawah.

  • Umumnya, data wide lebih enak dilihat jika variabelnya cuma 1, tapi data long lebih mudah digunakan.

Wide dan long

Mengubah wide jadi long

  • Di R (maupun aplikasi lainnya), biasanya kita lebih sering menggunakan long.

    • lebih mudah jika \(i\) dan \(t\)-nya ada nama kolomnya.

    • Kita biasanya akan punya lebih dari 1 variabel.

  • Di package “tidyverse”, ada command yang namanya pivot_longer() yang dapat kita gunakan untuk mengubah data wide jadi data long.

  • Untuk regresi panel data maupun membuat grafik, kita akan selalu menggunakan format data long.

    • Data hari ini didownload dari World Bank

    • Semuanya berbentuk wide, jadi saya long-in dulu. Sumber data lain biasanya sudah otomatis long.

Mengubah wide jadi long

library("tidyverse") # untuk command pivot_longer()
library("readxl") # untuk command read_excel()
library("writexl") # untuk command write_xlsx()
dat<-read_excel("wide.xlsx")
dat2<-pivot_longer(data=dat,cols=!country, names_to="year",values_to="PDBperkapita")
# tanda seru (!) di depan country maksudnya mau bilang "kecuali country, semua dibuat long"
write_xlsx(dat2,"long.xlsx")

Data

  • “latihan7.xlsx” adalah file excel yang berisi PDB per kapita, ekspor, dan impor dalam Dolar AS.

    • ada 5 negara dan range tahun 1967-2021.

    • dengan kata lain, \(i=\)negara dan \(t=\)tahun.

  • Datanya bersumber dari World Bank, tapi sudah dibuat jadi long.

Data

dat<-read_excel("latihan7.xlsx")
dat$year<-as.Date(dat$year,"%Y") # mengubah year dari chr ke tss

Intermezzo: chr vs ts

read_excel("latihan7.xlsx")
# A tibble: 275 × 8
   country year       import      export PDBperkapita    LM    LX    LP
   <chr>   <chr>       <dbl>       <dbl>        <dbl> <dbl> <dbl> <dbl>
 1 China   1967  2169144528. 2388496222.         96.6  9.34  9.38  1.98
 2 China   1968  2067592818. 2339751401.         91.5  9.32  9.37  1.96
 3 China   1969  1917296287. 2429116906.        100.   9.28  9.39  2.00
 4 China   1970  2278820375. 2307254854.        113.   9.36  9.36  2.05
 5 China   1971  2128523844. 2782516858.        119.   9.33  9.44  2.07
 6 China   1972  2850652532. 3692485858.        132.   9.45  9.57  2.12
 7 China   1973  5207600281. 5876143561.        157.   9.72  9.77  2.20
 8 China   1974  7791148277. 7107893127.        160.   9.89  9.85  2.20
 9 China   1975  7925583396. 7688998817.        178.   9.90  9.89  2.25
10 China   1976  6660142165. 6943442876.        165.   9.82  9.84  2.22
# … with 265 more rows
# ℹ Use `print(n = ...)` to see more rows
dat<-read_excel("latihan7.xlsx")
dat$year<-as.Date(dat$year,"%Y") # mengubah year dari chr ke tss
dat
# A tibble: 275 × 8
   country year            import      export PDBperkapita    LM    LX    LP
   <chr>   <date>           <dbl>       <dbl>        <dbl> <dbl> <dbl> <dbl>
 1 China   1967-10-25 2169144528. 2388496222.         96.6  9.34  9.38  1.98
 2 China   1968-10-25 2067592818. 2339751401.         91.5  9.32  9.37  1.96
 3 China   1969-10-25 1917296287. 2429116906.        100.   9.28  9.39  2.00
 4 China   1970-10-25 2278820375. 2307254854.        113.   9.36  9.36  2.05
 5 China   1971-10-25 2128523844. 2782516858.        119.   9.33  9.44  2.07
 6 China   1972-10-25 2850652532. 3692485858.        132.   9.45  9.57  2.12
 7 China   1973-10-25 5207600281. 5876143561.        157.   9.72  9.77  2.20
 8 China   1974-10-25 7791148277. 7107893127.        160.   9.89  9.85  2.20
 9 China   1975-10-25 7925583396. 7688998817.        178.   9.90  9.89  2.25
10 China   1976-10-25 6660142165. 6943442876.        165.   9.82  9.84  2.22
# … with 265 more rows
# ℹ Use `print(n = ...)` to see more rows

Plot the data: PDB per capita

Plot the data: exports

Plot the data: imports

Regresi panel

  • Sebelum melakukan regresi panel, pastikan bentuk datanya long.

  • Kita dapat melakukan regresi biasa menggunakan lm().

    • disebut juga pooled OLS / pooling.

    • kita anggap setiap negara tidak ada perbedaan, setiap tahun tidak ada perbedaan.

    • keunggulan panel di sini hanya memberikan kita data yang lebih banyak.

Regresi panel

  • Namun keuntungan panel adalah kita dapat melakukan regresi untuk masing-masing \(i\).

  • Regresi ini disebut Fixed effect regression:

\[ Y_{it}=\alpha_i + \beta_1 X_{1,it} + \mu_{it} \]

di mana \(\alpha_i\) adalah time-invariant intercept untuk masing-masing \(i\).

  • Mengurangi bias karena tiap negara pastinya beda-beda.

Regresi Panel: pooled OLS

reg2<-lm(LP~LX+LM,data=dat)
summary(reg2)

Call:
lm(formula = LP ~ LX + LM, data = dat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.62866 -0.30020 -0.05561  0.30624  0.61548 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -2.6581     0.2763  -9.621  < 2e-16 ***
LX            1.6596     0.2970   5.588 5.57e-08 ***
LM           -1.1280     0.3055  -3.693 0.000268 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.3387 on 272 degrees of freedom
Multiple R-squared:  0.6745,    Adjusted R-squared:  0.6721 
F-statistic: 281.8 on 2 and 272 DF,  p-value: < 2.2e-16

Residuals pooled

dat$u<-resid(reg2)
plot(dat$LP,dat$u)

Regresi Panel: fixed effect

reg3<-plm(LP~LX+LM,data=dat,index=c("country","year"))
summary(reg3)
Oneway (individual) effect Within Model

Call:
plm(formula = LP ~ LX + LM, data = dat, index = c("country", 
    "year"))

Balanced Panel: n = 5, T = 55, N = 275

Residuals:
      Min.    1st Qu.     Median    3rd Qu.       Max. 
-0.2927413 -0.0698830 -0.0083758  0.0690985  0.2647296 

Coefficients:
   Estimate Std. Error t-value  Pr(>|t|)    
LX  0.22639    0.11310  2.0016 0.0463390 *  
LM  0.40069    0.11619  3.4485 0.0006544 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Total Sum of Squares:    73.938
Residual Sum of Squares: 3.008
R-Squared:      0.95932
Adj. R-Squared: 0.95841
F-statistic: 3159.79 on 2 and 268 DF, p-value: < 2.22e-16

Residuals fixed effect

dat$u2<-residuals(reg3)
plot(dat$u2)

Panel data

  • Jika memang tiap negara sama, maka hasil dari fixed effect = pooling.

    • jika beda, kita akan memilih fixed effect karena bias antar-individu diatasi dengan \(\alpha_i\)
  • dari contoh sebelumnya, kita bisa lihat bahwa betanya beda.

    • dari residuals, tiap negara punya residual masing-masing.
  • Tapi jelas dari residuals bahwa masih ada hal yang perlu kita kontrol.

Metode penelitian

  • Berbagai metode kualitatif:

    • regresi multivariat: nominal, log-log, dan dummy.

    • ARIMA dan ARDL.

    • Regresi panel: Pooled dan fixed effect.

  • Teknik-teknik cukup oke untuk ditunjukkan ke orang lain.

  • Anda harus paham kekurangan metode-metode ini.

Langkah-langkah penelitian

  • Tujuan penelitian: melihat hubungan \(X\) dan \(Y\)

  • Grafik \(X\) dan \(Y\): scatterplot atau line.

  • Regresi

  • plot error terhadap \(X\) dan \(Y\)

  • Diskusi hasil dan keterbatasan

Post-UTS

  • Kita akan membahas praktis penulis (less teori, more praktik)

  • Sangat penting untuk membuat framework penulisan.

  • Sumber data sekunder yang sering dipakai dan bagaimana mendownloadnya.

  • Visualisasi dengan ggplot.

  • Membuat daftar pustaka.

Tentang UTS

  • UTS akan berlangsung selama 2 jam.

  • Close everything kecuali:

    • kalkulator (bukan handphone/smartphone).

    • 1 lembar A4 bolak balik, bebas diisi apa saja.

  • Tidak akan disuruh regresi, tapi mungkin akan disuruh menerjemahkan tabel regresi.