Çalışmada enflasyon ve nominal faiz oranı verileri kullanılacaktır. Veri seti Dünya Bankası’ndan elde edildiğine göre ilk olarak WDI’yı çalıştırıyoruz

library(WDI)

Veri setimiz WDI’den elde edildiğinden dolayı aşağıdaki işlemi uygulaya biliriz. Sadece Türkiye için değerlendirme yapıldığı için ülkeyi TR olarak yazdık. Verileri isimlendirmek için “data” ismini kullandık.

“FR.INR.DPST” kodu ile gösterilen veri nominal faiz oranı,

“FP.CPI.TOTL.ZG” kodu ile gösterilen veri ise enflasyon oranını göstermektedir.

Kullanılan verilerin başlangıç tarihi 1978 yılından başladığından dolayı fonksiyonda start=1978 olarak gösterilmiştir.

data<-WDI(indicator=c("FR.INR.DPST","FP.CPI.TOTL.ZG"),country =c("TR"),start = 1978 )

Daha sonra veri setinin ilk 6 satırını görmek adına head(), fonksiyonu kullanılmıştır.

head(data)
##   country iso2c iso3c year FR.INR.DPST FP.CPI.TOTL.ZG
## 1 Turkiye    TR   TUR 1978    6.000000       61.89704
## 2 Turkiye    TR   TUR 1979    7.333333       63.54311
## 3 Turkiye    TR   TUR 1980    8.000000       94.26086
## 4 Turkiye    TR   TUR 1981   26.500000       37.61478
## 5 Turkiye    TR   TUR 1982   45.000000       29.13751
## 6 Turkiye    TR   TUR 1983   45.333333       31.39027

Ardından veri setine ait değişkenlerin son 6 satrını görmek için tail(), fonskyionu kullanılmıştır.

tail(data)
##    country iso2c iso3c year FR.INR.DPST FP.CPI.TOTL.ZG
## 40 Turkiye    TR   TUR 2017    15.28833       11.14431
## 41 Turkiye    TR   TUR 2018    23.28333       16.33246
## 42 Turkiye    TR   TUR 2019    25.40917       15.17682
## 43 Turkiye    TR   TUR 2020    13.35667       12.27896
## 44 Turkiye    TR   TUR 2021    20.70000       19.59649
## 45 Turkiye    TR   TUR 2022    27.04083       72.30884
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Veri seti kodlarla gösterilmiştir. Bunun için yeniden isimlendirmemiz gerekmektedir. Veri setine ait değişkenleri isimlendirmek için aşağıdaki işlemi uygulayabiliriz. Veri setinde nominal faiz oranına ait veriler 5. enflasyona ait veriler ise 6. sütunda olduğundan dolayı isimlendirirken interestrate=5, inflation=6 olarak yazılmıştır. Veri seti “df”olarak isimlendirilmiştir.

df<- data %>% 
  rename(interestrate=5,
         inflation=6)

Daha sonra ise veri setinde fazla olan, yani veri setinde yer almasını istemediğimiz verileri select() fonksiyonu yardımı ile çıkara biliriz.

Bunun için select() fonksiyonuna veri setinde yer almasını istemediğimiz veri isimlerinin başına “-” işareti yazarak veri setinden çıkara biliriz.

Burada ise 2. yöntem kullanılmıştır. Veri setinde yer almasını istemediğimiz veri isimlerinin başına eksi işareti yazarak veri setinden çıkardık.

df <- df %>% select(-iso2c,-iso3c,-country) 

Veri setini zaman serisine dönüştürmek için aşağıdaki işlem uygulanabilir.

İlk olarak “df” olarak isimlendirdiğimiz veri setinden nominal faiz oranını zaman serisine dönüştürmek için aşağıdaki işlemi uygulayabiliriz.

df$interestrate <- ts(df$interestrate,start=1978)

ardından “df” olarak isimlendirdiğimiz veri setinden enflasyon oranını zaman serisine dönüştürmek için aşağıdaki işlemi uygulayabiliriz.

df$inflation <- ts(df$inflation,start=1978)

Ardından veri setine ait grafiği elde etmek için plot() fonksiyonunu kullandık.

Aşağıda uygulanan işlemde “df” veri seti içinde yer alan enflasyon oranına ait grafiği gösterirsek “df$inflation” şeklinde yazmamız gerekmektedir. Ardından grafiğin renkli olmasını istersek col=“herhangi bir renk” yazılabilir. Son olarakta yatay eksenin ismi aynı kalır zaman gösterdiğinden dolayı dikey ekseninin ismini değiştirirsek ise ylab=“inflation” olarak yazılabilmektedir.

plot(df$inflation,col="green", ylab="inflation")

Veri setinde yer alan enflasyona ait açıklama nominal faiz oranı için de geçerli olup grafiği gösterilmektedir.

plot(df$interestrate,col="blue", ylab="interest rate")

Veri setine ait her iki değişkeni aynı grafik üzerinde gösterirsek aşağıdaki işlemi uygulayabiliriz.

Bunun için yine plot() fonksiyonu kullandık. Fonksiyon dahilinde yer alan

lty:line type’ın kısaltılması,(anlamı ise çizginin türünü gösterir,yani doğrunun kesik kesik olmasını gösterir,bunu 1,2,3 veya farklı sayı da yazılabilmektedir.)

lwd:line width’in kısaltmasıdır.(anlamı ise çizginin genişliğini göstermektedir. Yani çizginin kalın veya ince olmasını gösterir)

col: yine yukarıda ayrı ayrı grafikte de gösterildiği gibim grafikte yer alan doğruların rengini göstermektedir.

ylab: yatay hangi ismi istersek yazabiliriz. Yani yatay ekseni isimlendirmek için ylab kullanılmıştır.

daha sonra iki değişkeni de aynı grafik üzerinde gösterdiğimiz için ilk olarak df içinde inflation yazdık fakat df içinde interestrate’ i de göstermemiz için lines() fonksiyonu kullanılmıştır. Yine inflation için kullanılan işlemler interestrate için de kullanılmıştır. Ardından ise grafik üzerinde değişken isimlerini, renklerini ve grafikte nerede gösterildiğini göstermek aşağıdaki işlem uygulandı. Bunun için legend() fonksiyonu kullanılmış ve fonksiyon dahilinde ise değişken isimlerinin sağ üst köşede yer almasını istediğimiz için “topright” yazılmıştır. Eğer sol üst köşede yer almasını isteseydik o zaman “topleft” yazabilirdik.

Ardından yerini belirledikten sonra grafik üzerinde yer alan değişkenlere ait isimleri fonksiyon dahilinde c(“inflation”,“interest rate”) şeklinde yazdıktan sonra yine yukarıda açıklandığı üzere yine çizgi türü lty ve çizginin kalınlığını göstermek için ise lwd kullanılmıştır.

plot(df$inflation,lty=4,lwd=3,col="green",ylab="inflation and interest rate")
lines(df$interestrate,lty=6,lwd=3,col="blue")
legend("topright",c("inflation","interest rate"),lty = c(4,6),lwd = c(3,3),col=c("green","blue"))

VAR MODELİ

library(vars)
## Zorunlu paket yükleniyor: MASS
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
## Zorunlu paket yükleniyor: strucchange
## Zorunlu paket yükleniyor: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Zorunlu paket yükleniyor: sandwich
## Zorunlu paket yükleniyor: urca
## Zorunlu paket yükleniyor: lmtest
require(vars)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.4
## ✔ ggplot2   3.4.2     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.1     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ stringr::boundary() masks strucchange::boundary()
## ✖ dplyr::filter()     masks stats::filter()
## ✖ dplyr::lag()        masks stats::lag()
## ✖ MASS::select()      masks dplyr::select()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(urca)
library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(tidyverse)
library(stargazer)
## 
## Please cite as:
##  Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
##  R package version 5.2.3. https://CRAN.R-project.org/package=stargazer

İlk olarak serilerin durağan olup olmadığını test etmek amacıyla ADF birim kök testi uygulanmıştır.

df<-as_tibble(df)
library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha

Veri setine ait değişkenlerin tanımlayıcı istatistiklerini elde etmek için describe(), fonksiyonu kullanılmıştır.

describe(df)
##              vars  n    mean    sd  median trimmed   mad     min     max range
## year            1 45 2000.00 13.13 2000.00 2000.00 16.31 1978.00 2022.00 44.00
## interestrate    2 45   38.14 24.18   27.04   36.58 20.29    6.00   87.79 81.79
## inflation       3 45   40.43 29.95   37.61   38.30 41.54    6.25  105.21 98.96
##              skew kurtosis   se
## year         0.00    -1.28 1.96
## interestrate 0.54    -1.06 3.60
## inflation    0.36    -1.25 4.46

Daha sonra veri setine ait değişkenlerin durağanlık seviyelerini ölçmek için urca(), fonksiyonu kullanılmıştır.

library(urca)

ADF birim kök test sonuçlarını elde etmek için ilk olarak faiz oranının birim kök testi analizi yapılmıştır.

InterestRateADF<-ur.df(df$interestrate,type = "drift",selectlags = "AIC")

Ardından enflasyona ait birim kök test analizi yapılmıştır.

InflationADF<-ur.df(df$inflation,type = "drift",selectlags = "AIC")

Birim kök testlerini özet halinda görebilmek adına summary(), fonksiyonu kullanılmıştır.

summary(InterestRateADF)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -27.853  -4.644  -1.273   5.055  24.733 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)  4.71921    3.18194   1.483    0.146
## z.lag.1     -0.10739    0.06993  -1.536    0.133
## z.diff.lag  -0.16805    0.15355  -1.094    0.280
## 
## Residual standard error: 10.75 on 40 degrees of freedom
## Multiple R-squared:  0.09855,    Adjusted R-squared:  0.05347 
## F-statistic: 2.186 on 2 and 40 DF,  p-value: 0.1256
## 
## 
## Value of test-statistic is: -1.5356 1.2316 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.58 -2.93 -2.60
## phi1  7.06  4.86  3.94
summary(InterestRateADF)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -27.853  -4.644  -1.273   5.055  24.733 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)  4.71921    3.18194   1.483    0.146
## z.lag.1     -0.10739    0.06993  -1.536    0.133
## z.diff.lag  -0.16805    0.15355  -1.094    0.280
## 
## Residual standard error: 10.75 on 40 degrees of freedom
## Multiple R-squared:  0.09855,    Adjusted R-squared:  0.05347 
## F-statistic: 2.186 on 2 and 40 DF,  p-value: 0.1256
## 
## 
## Value of test-statistic is: -1.5356 1.2316 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.58 -2.93 -2.60
## phi1  7.06  4.86  3.94
lag<- VARselect(df, lag.max = 4)
estim<- VAR(df, p=1, type = "none")
summary(estim)
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: year, interestrate, inflation 
## Deterministic variables: none 
## Sample size: 44 
## Log Likelihood: -168.411 
## Roots of the characteristic polynomial:
## 1.001 0.8918 0.6275
## Call:
## VAR(y = df, p = 1, type = "none")
## 
## 
## Estimation results for equation year: 
## ===================================== 
## year = year.l1 + interestrate.l1 + inflation.l1 
## 
##                   Estimate Std. Error    t value Pr(>|t|)    
## year.l1          1.000e+00  6.814e-07  1.468e+06  < 2e-16 ***
## interestrate.l1 -6.989e-05  4.404e-05 -1.587e+00     0.12    
## inflation.l1     1.834e-04  3.588e-05  5.113e+00  7.8e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.004785 on 41 degrees of freedom
## Multiple R-Squared:     1,   Adjusted R-squared:     1 
## F-statistic: 2.563e+12 on 3 and 41 DF,  p-value: < 2.2e-16 
## 
## 
## Estimation results for equation interestrate: 
## ============================================= 
## interestrate = year.l1 + interestrate.l1 + inflation.l1 
## 
##                 Estimate Std. Error t value Pr(>|t|)    
## year.l1         0.002001   0.001430   1.399   0.1692    
## interestrate.l1 0.712177   0.092419   7.706 1.69e-09 ***
## inflation.l1    0.189454   0.075295   2.516   0.0159 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 10.04 on 41 degrees of freedom
## Multiple R-Squared: 0.9546,  Adjusted R-squared: 0.9513 
## F-statistic: 287.6 on 3 and 41 DF,  p-value: < 2.2e-16 
## 
## 
## Estimation results for equation inflation: 
## ========================================== 
## inflation = year.l1 + interestrate.l1 + inflation.l1 
## 
##                 Estimate Std. Error t value Pr(>|t|)    
## year.l1         0.002404   0.002320   1.036    0.306    
## interestrate.l1 0.080301   0.149908   0.536    0.595    
## inflation.l1    0.807115   0.122131   6.609  5.9e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 16.29 on 41 degrees of freedom
## Multiple R-Squared: 0.9004,  Adjusted R-squared: 0.8931 
## F-statistic: 123.5 on 3 and 41 DF,  p-value: < 2.2e-16 
## 
## 
## 
## Covariance matrix of residuals:
##                   year interestrate inflation
## year         0.0000229    3.841e-03 6.394e-03
## interestrate 0.0038410    1.009e+02 6.057e+01
## inflation    0.0063939    6.057e+01 2.654e+02
## 
## Correlation matrix of residuals:
##                 year interestrate inflation
## year         1.00000      0.07993   0.08203
## interestrate 0.07993      1.00000   0.37022
## inflation    0.08203      0.37022   1.00000
varmodeli<-var(2:length(df),)
var.a <- VAR(df,
                   lag.max = 2, 
                   ic = "AIC",
                   type = "none")