R’da panel veri analizi

R’da panel veri analizini Google’da aradığınızda çıkan Türkçe sonuçlar çoğunlukla panel veriyi anlatıyor. İngilizce kaynaklarda (kitap, dergi, forum, paketler) son derece fazla paylaşılan R’da panel veri analizi için bir de Türkçe kaynak gerektiği fikrinden yola çıkıp bu yazıyı hazırladım. Ekonometrik çalışmalarını R’da yapmak isteyenlere en ufak bir katkım olduysa ne mutlu bana.

İhtiyacımız olanlar:

  1. R (bizzat kendisi)
  2. RStudio (veri aktarımını kolaylaştırmak için)
  3. plm, lmtest ve sandwich paketleri

Devamı aşağıda

Yapılacaklar

R ve RStudio kurulumları bittikten sonra RStudio’da aşağıdaki komutları çalıştırın.

install.packages(“plm”)

install.packages(“sandwich”)

install.packages(“lmtest”)

library(plm)

library(sandwich)

library(lmtest)

Hangi paketi neden kuruyoruz?

Panel veri setinizi analiz etmek için “plm” kurmanız gerekli.

Ekonometrik testlerin sonuçlarına göre de tahmin vasıtası (estimator) çeşitlerini arttırmak için de “sandwich” paketine ihtiyacımız var.

Varyans oynaklığı testini kolaylaştırmak için de “lmtest” paketini kullanacağız.

Hangi veri üstünde analiz yapacağız?

Eğer elinizde panel olarak hazırlanmış bir veriseti varsa onun üstünde çalışabilirsiniz. Sadece idman yapmak için R’da mevcut bir seti üstünden de analizkeri yapabilirsiniz. Anlatımı kolaylaştırmak için ben plm ile gelen “Gasoline” verisini (4 değişken, 18 birim, 19 yıl, 342 gözlem) vektör içinde kullanacağım.

data(“Gasoline”)

dene<-plm(lgaspcar~lincomep+lrpmg+lcarpcap,data=Gasoline)

En temel haliyle panel veri setinin analizidir yukarıdaki  “dene” vektörü ve çalıştırdığınızda tahmin çarpanlarını gösterir R. plm() aynen lm() fonksiyonu gibi çalışır yani siz bağımlı değişken (y) ile bağımsız değişkenleri (x) tanımlamanız (y~x1+x2+x3+…+xn) gereklidir. Eğer modele ilişkin test sonuçlarını görmek istiyorsanız vektörü summary() fonksiyonu ile çalıştırmanız gerekli.

summary(dene) 

Peki panel regresyonunuzu etkilerin (havuzlandırılmış, rassal veya sabit), etki türlerinin (zaman, birim, ikiyönlü, yerleşik), endekslerin ve gerekirse tahmin vasıtalarının tanımladığı şekilde genişletmek istersek vektörü aşağıdaki haliyle yazmak gerekir.

dene<-plm(lgaspcar~lincomep+lrpmg+lcarpcap,data=Gasoline, index = c(“country”, “year”), model = “”, effect=””, random.method = “”)

model= kriteri pooling (klasik OLS), within (sabit), random (rassal), between, fd (ilk farklar), ht (Hausman-Taylor tahmin vasıtası) seçeneklerinden biriyle

  • pooling: havuzlandırılmış etkiler, klasik OLS
  • within: sabit etkiler
  • random: rassal etkiler
  • fd: ilk farklar
  • ht: Hausman-Taylor tahmin vasıtası
  • between: orta tahmincisi

effect= kriteri individual, time, twoways, nested seçeneklerinden biriyle

  • individual: birim etkisi
  • time: zaman etkisi
  • twoways: iki yönlü etki
  • nested: yerleşik etki

random.method= kriteri sadece model etkisi olarak “random” seçildiğinde kullanılabilir ve aşağıdaki tahmincilerinin seçilmesini sağlar.

  • swar (tahminci seçilmezse plm tarafından varsayılan olarak kullanılır)
  • amemiya
  • walhus
  • nerlove

Panel regresyonunuzdaki model etkileri için gerekli testleri yine plm paketinin altındaki komutlarla ölçebilirsiniz.

Panel veri testlerini nasıl yürüteceğiz?

Havuzlandırılmış ile Rassal etkiler arasında karar vermek için Lagrange Multiplier testini yapacağız.Rassal ile Sabit etkiler arasında karar verebilmek için de Hausman (1978) testi yapacağız. Bunun için modelinizi sırasıyla (pooled, random, within) ile kaydedin.

dene.pe<-plm(lgaspcar~lincomep+lrpmg+lcarpcap,data=Gasoline, index = c(“country”, “year”), model = “pooling”)

dene.re<-plm(lgaspcar~lincomep+lrpmg+lcarpcap,data=Gasoline, index = c(“country”, “year”), model = “random”)

dene.fe<-plm(lgaspcar~lincomep+lrpmg+lcarpcap,data=Gasoline, index = c(“country”, “year”), model = “within”)

Sonrasında ise her bir modeli teker teker plmtest() fonksiyonu ile deneyin ve p-değerlerine göre kullanabileceğiniz etki türünü görmüş olacaksınız.

plmtest(dene.pe)

plmtest(dene.re)

plmtest(dene.fe)

Peki modelin içerisindeki birim, zaman veya iki yönlü etkileri nasıl ölçebiliriz? Onu da yine plmtest() fonksiyonu yardımıyla gerçekleştireceğiz. 

plmtest(dene, effect = “”, type=“”)

effect= kriteri individual, time, twoways, seçeneklerinden biriyle

  • individual: birim etkisi
  • time: zaman etkisi
  • twoways: iki yönlü etki

type= kriteri honda, bp, kw, ghm test seçeneklerinden biriyle 

  • honda: Honda (1985) (seçenek belirtilmezse varsayılan olarak kullanılır.)
  • bp: Breusch/Pagan (1980)
  • kw: King/Wu (1997)
  • ghm: Gourieroux/Holly/Monfort (1982);

Birkaç farklı fonksiyon ile de modelin içindeki sorunları test edeceğiz. Test sonuçlarının p-değerine göre de sorunların varlığına göre tahmin vasıtaları kullanacağız.

Breusch-Godfrey/Wooldridge seriler arası korelasyon testi ile başlayalım. (Breusch, 1978; Godfrey, 1978; Wooldridge, 2013)⁠ 

pbgtest(dene)

p-testi < 0.05 => Seriler arası korelasyon vardır.

p-testi > 0.05 => Seriler arası korelasyon yoktur.

Yatay kesit bağımlığı Pesaran (2004) ve Breusch-Pagan LM korelasyon testlerini uygulayacağız.

pcdtest(dene, test=”cd”)

pcdtest(dene, test=”lm”)

p-testi < 0.05 => Yatay kesit bağımlığı vardır.

p-testi > 0.05 =>Yatay kesit bağımlığı yoktur.

Varyans oynaklığı (Heteroskedasticity) sorununun varlığının test edilmesi için “lmtest” paketinden destek alacağız. Bunun için önce modeli lm() fonksiyonu ile vektör olarak kaydedeceğiz.

dene.lm<-lm(lgaspcar~lincomep+lrpmg+lcarpcap,data=Gasoline)

dene.lm vektörünü de lmtest paketinin içerisinde mevcut bulunan bptest() fonksiyonu ile test edeceğiz.

bptest(dene.lm, studentize = F)

p-testi < 0.05 => Varyans oynaklığı vardır.

p-testi > 0.05 =>Varyans oynaklığı yoktur.

Sıra geldi “sandwich”ten atıştırmaya

Yaptığınız testlerin çeşitliliğine göre kullanmanız gereken tahmin vasıtaları mevcut, plm paketinin de destek aldığı “sandwich” üzerinden çalışacağız.

Modelinizde çıkan sorunların çeşitliliğine göre varyans düzeltmeleri yapmanız gerekiyor. Bunun için de vcov ile başlayan fonksiyonlar üzerinden çalışacağız.

  • vcovSCC() Yatay kesit ve seriler arası korelasyon olduğu durumlarda Driscoll&Kraay tahmin vasıtası için
  • vcovHC(): Varyans oynaklığını çözmede White tahmin vasıtası için
  • vcovHAC(): Varyans oynaklığı ve otokorelasyon uyumlu (Heteroskedasticity and autocorrelation consistent [HAC]) tahmin vasıtası için 
  • vcovNW(): Seriler arası korelasyon sorununu çözmede Newey-West tahmin vasıtası kullanmak için 
  • vcovPL(): Newey-West ve Driscoll&Kraay tahmin vasıtalarını aynı anda kullanmak için 

vcov fonksiyonu ile varyans testi yapabileceğiniz gibi plm tarafından desteklenen fonksiyonları summary() içinde kullanarak modelin tahmin vasıtası ile sağlamlaştırılmış testlerini de yapabilirsiniz.

summary(dene.fe, vcov = vcovSCC)

summary(dene.re, vcov = vcovNW)

summary(dene.pe, vcov = vcovHC)

Ekonometri bilginizin derinliğine göre plm ve diğer paketleri daha detaylı kullanmanız hatta geliştirmeniz dahi mümkün. Derdini anlatacak kadar ekonometri bilen bendenize  de bir şeyler anlatırsanız mutlu olurum.

Kaynakça

Achim Zeileis, Torsten Hothorn (2002). Diagnostic Checking in Regression
Relationships. R News 2(3), 7-10. URL https://CRAN.R-project.org/doc/Rnews/

Achim Zeileis (2004). Econometric Computing with HC and HAC Covariance Matrix
Estimators. Journal of Statistical Software 11(10), 1-17. URL http://www.jstatsoft.org/v11/i10/.

Achim Zeileis (2006). Object-Oriented Computation of Sandwich Estimators. Journal of Statistical Software 16(9), 1-16. URL http://www.jstatsoft.org/v16/i09/.

Croissant Y and Millo G (2008). “Panel Data Econometrics in R: The plm Package.”
_Journal of Statistical Software_, *27*(2), pp. 1-43. doi: 10.18637/jss.v027.i02 (URL:
http://doi.org/10.18637/jss.v027.i02).

Millo G (2017). “Robust Standard Error Estimators for Panel Models: A Unifying
Approach.” _Journal of Statistical Software_, *82*(3), pp. 1-27. doi:
10.18637/jss.v082.i03 (URL: http://doi.org/10.18637/jss.v082.i03).

R Core Team. (2017). R: A language and environment for statistical computing. R
Foundation for Statistical Computing, Vienna, Austria. URL
https://www.R-project.org/.

RStudio Team. (2016). RStudio: Integrated Development for R. RStudio, Inc., Boston, MA
URL http://www.rstudio.com/.

Torres-Reyna, Oscar. (2010) https://www.princeton.edu/~otorres/Panel101R.pdf

Leave a Reply

Your email address will not be published. Required fields are marked *