Penjelasan Teori dan Praktikum Analisis Regresi Data Panel dengan R

Regresi Data Panel

Analisis Regresi Data Panel

Analisis regresi data panel merupakan salah satu jenis alat untuk melakukan pemodelan statistik yang khusus digunakan pada data panel. Analisis regresi ini merupakan bentuk pemodelan regresi di mana data yang digunakan berstruktur panel, yakni mengandung unsur data cross section dan data time series atau runtun waktu.

Kalau pada umumnya, analisis regresi biasa menggunakan metode estimasi parameter dengan Ordinary Least Square (OLS), pada regresi data panel metode ini digunakan pada kombinasi data cross section dan time series. Data panel sendiri memiliki pengertian sebuah data yang terdiri atas individu yang sama diamati selama periode waktu yang berbeda. Misalkan periode yang digunakan selama T (dengan t = 1, 2, 3, ..., T), dan jumlah individu yang diamati sebesar N (n = 1, 2, 3, ..., N), maka total unit yang diobservasi dalam penelitian atau riset berjumlah NT. Pada konteks ini, apabila jumlah periode waktu adalah sama untuk setiap individu maka dikatakan bahwa data panelnya seimbang (balanced panel). Sebaliknya, apabila periode waktu untuk setiap individu berbeda, maka data panel yang digunakan tidak seimbang (unbalanced panel).

Secara matematis, persamaan regresi data panel dituliskan sebagai berikut:

Rumus persamaan regresi data panel

Keterangan: alpha adalah sebuah konstanta; alpha-i adalah efek individu ke-i yang berbeda; Xit merupakan amatan ke-i pada periode ke-t; beta adalah estimator parameter berbentuk vektor berukuran p x 1, sedangkan eit merupakan eror atau galat regresi panel untuk amatan ke-i pada periode ke-t

Sebagai model regresi dua arah (two ways model), regresi data panel memiliki beberapa asumsi dasar yang harus terpenuhi, yaitu penduga regresi data panel bersifat Best Linear Unbiased Estimation atau yang biasa disingkat dengan BLUE. Sifat BLUE ini akan dapat dipenuhi jika estimator atau penduga parameter yang dihasilkan dari model regresi data panel memenuhi asumsi Gauss Markov, di antaranya uji asumsi non-autokorelasi (non-autocorrelation), uji homoskedastisitas, uji linieritas, dan uji non-multikolinearitas.

Namun, pada kenyataannya, asumsi baik homoskedastisitas maupun non-autokorelasi dalam model regresi data panel sulit terpenuhi. Beberapa jurnal mengemukakan, misalkan menurut Agustini dan Siti (2021), alasan sulit terpenuhi dua asumsi tersebut karena adanya kecenderungan pengaruh antar individu dan antar waktu di dalam model.

Untuk itu, memang diharapkan jumlah baik N maupun T lebih banyak akan lebih baik. Di samping untuk mengurangi efek heteroskedastisitas dari aspek cross section-nya, penambahan periode (T) pada regresi data panel akan mampu memenuhi uji asumsi non-autokorelasi dari aspek time series-nya.

Keunggulan Model Regresi Data Panel

Pada dasarnya, regresi data panel juga memiliki beberapa keunggulan dibanding model lainnya, di antaranya:

1. Derajat kebebasan (degree of freedom) model akan semakin tinggi seiring dengan penambahan jumlah amatan dan periode waktunya. Dengan demikian, diharapkan mampu meningkatkan estimator yang dihasilkan bersifat efisien;

2. Informasi yang dihasilkan dari regresi data panel akan lebih banyak karena mencakup aspek keragaman antar amatan dan waktu serta hubungan sebab-akibat antar amatan dan antar waktu;

3. Kesimpulan yang diperoleh dari regresi data panel akan memberikan solusi yang lebih baik karena mengakomodir perubahan nilai baik antar amatan maupun antar waktu.

Langkah-langkah Pemodelan Regresi Data Panel

Bila pada regresi linier biasa hanya memerlukan beberapa tahapan sederhana dalam pemodelan, pada regresi data panel, setidaknya terdapat 4 tahapan yang harus dilalui untuk memperoleh model terbaik, yaitu:

1. Menentukan model estimasi, beberapa pilihan di antaranya adalah Common Effect Model atau biasa diistilahkan Pooled Least Square Model, lalu Fixed Effect Model, serta Random Effect Model;

2. Melakukan pemilihan model terbaik dari 3 jenis model tentatif yang telah dilakukan, adapun caranya adalah dengan melakukan beberapa uji, yakni Chow test, Lagrange Multiplier, serta Hausman test;

3. Pengujian asumsi klasik Gauss Markov, yaitu normalitas, non-Multikolinearitas, homoskedastisitas, dan non-autokorelasi;

4. Melakukan interpretasi model yang terbaik, mulai dari melihat adjusted R square, uji simultan (F test), uji parsial (t test), serta persamaan regresi dari koefisien dan efeknya.

Bagaimana praktik pemodelan regresi data panel dengan memanfaatkan R? Data yang digunakan dalam praktikum kali ini adalah data Grunfeld mengenai pengaruh nilai dan kapital terhadap investasi. Data ini merupakan data yang tersimpan dalam package R yang secara otomatis dapat diimport menggunakan fungsi data(). Berikut tahapan selengkapnya:

# mengaktivasi beberapa package dalam pemodelan panel
library(plm)
library(olsrr)
library(lmtest)
# memanggil data grunfeld
data("Grunfeld")
# melihat sekilas data dan struktur data
str(Grunfeld)
## 'data.frame':    200 obs. of  5 variables:
##  $ firm   : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ year   : int  1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 ...
##  $ inv    : num  318 392 411 258 331 ...
##  $ value  : num  3078 4662 5387 2792 4313 ...
##  $ capital: num  2.8 52.6 156.9 209.2 203.4 ...
head(Grunfeld)
##   firm year   inv  value capital
## 1    1 1935 317.6 3078.5     2.8
## 2    1 1936 391.8 4661.7    52.6
## 3    1 1937 410.6 5387.1   156.9
## 4    1 1938 257.7 2792.2   209.2
## 5    1 1939 330.8 4313.2   203.4
## 6    1 1940 461.2 4643.9   207.2
# Estimasi model Pool Metode OLS
poolingku <- plm(inv~value+capital, data = Grunfeld, model = "pooling")
summary(poolingku)
## Pooling Model
## 
## Call:
## plm(formula = inv ~ value + capital, data = Grunfeld, model = "pooling")
## 
## Balanced Panel: n = 10, T = 20, N = 200
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -291.6757  -30.0137    5.3033   34.8293  369.4464 
## 
## Coefficients:
##                Estimate  Std. Error t-value  Pr(>|t|)    
## (Intercept) -42.7143694   9.5116760 -4.4907 1.207e-05 ***
## value         0.1155622   0.0058357 19.8026 < 2.2e-16 ***
## capital       0.2306785   0.0254758  9.0548 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    9359900
## Residual Sum of Squares: 1755900
## R-Squared:      0.81241
## Adj. R-Squared: 0.8105
## F-statistic: 426.576 on 2 and 197 DF, p-value: < 2.22e-16
poolingku
## 
## Model Formula: inv ~ value + capital
## 
## Coefficients:
## (Intercept)       value     capital 
##   -42.71437     0.11556     0.23068
# Estimasi model Fixed Effect
withinku <- plm(inv~value+capital, data = Grunfeld, model = "within")
summary(withinku)
## Oneway (individual) effect Within Model
## 
## Call:
## plm(formula = inv ~ value + capital, data = Grunfeld, model = "within")
## 
## Balanced Panel: n = 10, T = 20, N = 200
## 
## Residuals:
##       Min.    1st Qu.     Median    3rd Qu.       Max. 
## -184.00857  -17.64316    0.56337   19.19222  250.70974 
## 
## Coefficients:
##         Estimate Std. Error t-value  Pr(>|t|)    
## value   0.110124   0.011857  9.2879 < 2.2e-16 ***
## capital 0.310065   0.017355 17.8666 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    2244400
## Residual Sum of Squares: 523480
## R-Squared:      0.76676
## Adj. R-Squared: 0.75311
## F-statistic: 309.014 on 2 and 188 DF, p-value: < 2.22e-16
fixef(withinku)
##         1         2         3         4         5         6         7         8         9 
##  -70.2967  101.9058 -235.5718  -27.8093 -114.6168  -23.1613  -66.5535  -57.5457  -87.2223 
##        10 
##   -6.5678
# Estimasi model Random Effect
randomku <- plm(inv~value+capital, data = Grunfeld, model = "random")
ranef(randomku)
##            1            2            3            4            5            6            7 
##   -9.5242955  157.8910235 -172.8958044   29.9119801  -54.6790089   34.3461316   -7.8977584 
##            8            9           10 
##    0.6726376  -28.1393497   50.3144442
summary(randomku)
## Oneway (individual) effect Random Effect Model 
##    (Swamy-Arora's transformation)
## 
## Call:
## plm(formula = inv ~ value + capital, data = Grunfeld, model = "random")
## 
## Balanced Panel: n = 10, T = 20, N = 200
## 
## Effects:
##                   var std.dev share
## idiosyncratic 2784.46   52.77 0.282
## individual    7089.80   84.20 0.718
## theta: 0.8612
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -177.6063  -19.7350    4.6851   19.5105  252.8743 
## 
## Coefficients:
##               Estimate Std. Error z-value Pr(>|z|)    
## (Intercept) -57.834415  28.898935 -2.0013  0.04536 *  
## value         0.109781   0.010493 10.4627  < 2e-16 ***
## capital       0.308113   0.017180 17.9339  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    2381400
## Residual Sum of Squares: 548900
## R-Squared:      0.7695
## Adj. R-Squared: 0.76716
## Chisq: 657.674 on 2 DF, p-value: < 2.22e-16
# Uji Chow untuk memilih apakah modelnya CE/OLS atau FE H0 Model OLS/CE
pFtest(poolingku, withinku)
## Warning in pf(stat, df1, df2, lower.tail = FALSE): NaNs produced
## 
##  F test for individual effects
## 
## data:  inv ~ value + capital
## F = 15.363, df1 = -9, df2 = 197, p-value = NA
## alternative hypothesis: significant effects
# Uji Hausman untuk memilih apakah modelnya RE atau FE H0 Model RE
phtest(randomku, withinku)
## 
##  Hausman Test
## 
## data:  inv ~ value + capital
## chisq = 2.3304, df = 2, p-value = 0.3119
## alternative hypothesis: one model is inconsistent
# Uji LM untuk memilih apakah modelnya RE atau CE/OLS  H0 Model OLS/CE
plmtest(poolingku)
## 
##  Lagrange Multiplier Test - (Honda) for balanced panels
## 
## data:  inv ~ value + capital
## normal = 28.252, p-value < 2.2e-16
## alternative hypothesis: significant effects
# Karena model yang terbaik adalah model PLS/CE/OLS, maka dilakukan uji asumsi
shapiro.test(poolingku$residuals) # uji normalitas residual model
## 
##  Shapiro-Wilk normality test
## 
## data:  poolingku$residuals
## W = 0.8798, p-value = 1.552e-11
bgtest(poolingku, order = 1) # uji non-autokorelasi
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  poolingku
## LM test = 135.25, df = 1, p-value < 2.2e-16
bptest(poolingku) # uji homoskedastisitas
## 
##  studentized Breusch-Pagan test
## 
## data:  poolingku
## BP = 55.247, df = 2, p-value = 1.008e-12
# uji asumsi non multikol
library(car)
vifval <- vif(poolingku)
vifval
##    value  capital 
## 1.313773 1.313773 uji asumsi non-multikol terpenuhi

Dari model pooled yang terpilih, ternyata tidak memenuhi uji asumsi klasik, maka pemodelan yang bisa menjadi alternatif adalah Weight Least Square Panel, regresi data panel transformasi, atau menggunakan regresi data panel Robust dan regresi data panel lag.

Demikian sedikit sharing kali ini, semoga sedikit dapat memberi manfaat. Selamat memahami dan mempraktikkan!

Add Comments


EmoticonEmoticon