Çalışmada enflasyon ve döviz kuru verileri kullanılacaktır. Veriler Dünya Bankası’ndan elde edildiğinden dolayı ilk olarak WDI’yı çalıştırıyoruz

library(WDI)

Veriler WDI’den çekildiğ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 )
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 setimiz kodlarla gösterildiğinden dolayı isimlendirmemiz gerekmektedir. Verileri İsimlendirmek 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.

NOT: Bunun için iki yöntem kullanılabilir. 1. yöntem: select() fonksitonuna veri setinde yer almasını istediğimiz verilerin isimlerini yazabiliriz. 2.yöntem ise 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) 

Daha sonra verileri zaman serisine dönüşdürmemiz gerekmektedir. Bunun için aşağıdaki işlemi uygulaya biliriz.

Sırasıyla ilk 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)

daha sonra “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="red", ylab="inflation")

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

plot(df$interestrate,col="yellow", 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 iflation 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=2,lwd=2,col="red",ylab="inflation and interest rate")
lines(df$interestrate,lty=5,lwd=2,col="yellow")
legend("topright",c("inflation","interest rate"),lty = c(2,5),lwd = c(2,2),col=c("red","yellow"))

REGRESYON ANALİZİ

Bu analizi yapmak için ilk olarak aşağıda yer alan paketler çalıştırılmalıdır.

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
library(dynlm)
## Zorunlu paket yükleniyor: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric

Enflasyonu kendisine göre regresyonu yapılacaktır. Buna aynı zamanda otoregresyon da denilmektedir. AR(1)

L: leg

data: veri setinin ismini son olarak df yazdığımız için data=df yazdık ardından veri setimiz 1978 yılından başlıyor 2000 yılına kadar tahmin yapmak istersek bitiş yılını end=2000 yazdık

model1<-dynlm(inflation~L(inflation),data=df,end = 2000)

Aynı regresyona faiz oranı da eklenirse yani çoklu regresyon yaparsak aşağıdaki işlemi uygulayabiliriz.

model2<-dynlm(inflation~L(inflation)+L(interestrate),data=df,end = 2000)

Yukarıda uygulanan model1 ve model 2 ’ni text olarak regresyon analizini göstermek için aşağıdaki işlemi uygulayabiliriz.

stargazer(model1,model2,type="text")
## 
## ===============================================================
##                                 Dependent variable:            
##                     -------------------------------------------
##                                      inflation                 
##                              (1)                   (2)         
## ---------------------------------------------------------------
## L(inflation)               0.583***              0.512**       
##                            (0.183)               (0.203)       
##                                                                
## L(interestrate)                                   0.145        
##                                                  (0.176)       
##                                                                
## Constant                   26.031**              22.950*       
##                            (12.144)              (12.805)      
##                                                                
## ---------------------------------------------------------------
## Observations                  22                    22         
## R2                          0.337                 0.360        
## Adjusted R2                 0.304                 0.293        
## Residual Std. Error    17.856 (df = 20)      18.003 (df = 19)  
## F Statistic         10.179*** (df = 1; 20) 5.345** (df = 2; 19)
## ===============================================================
## Note:                               *p<0.1; **p<0.05; ***p<0.01
model3<-dynlm(inflation~L(inflation)+L(interestrate)+L(interestrate,2),data=df,end=2000)
stargazer(model1,model2,model3,type="text")
## 
## ====================================================================================
##                                           Dependent variable:                       
##                     ----------------------------------------------------------------
##                                                inflation                            
##                              (1)                   (2)                  (3)         
## ------------------------------------------------------------------------------------
## L(inflation)               0.583***              0.512**              0.495**       
##                            (0.183)               (0.203)              (0.212)       
##                                                                                     
## L(interestrate)                                   0.145                -0.204       
##                                                  (0.176)              (0.471)       
##                                                                                     
## L(interestrate, 2)                                                     0.400        
##                                                                       (0.431)       
##                                                                                     
## Constant                   26.031**              22.950*               22.284       
##                            (12.144)              (12.805)             (13.508)      
##                                                                                     
## ------------------------------------------------------------------------------------
## Observations                  22                    22                   21         
## R2                          0.337                 0.360                0.399        
## Adjusted R2                 0.304                 0.293                0.293        
## Residual Std. Error    17.856 (df = 20)      18.003 (df = 19)     18.440 (df = 17)  
## F Statistic         10.179*** (df = 1; 20) 5.345** (df = 2; 19) 3.766** (df = 3; 17)
## ====================================================================================
## Note:                                                    *p<0.1; **p<0.05; ***p<0.01

Analiz sonuçlarını incelediğimiz zaman faiz oranının pek etkisi olmadığını göre biliriz. R kare değerlerine bakarsak arttırdığını fakat çok fazla arttırmadığını yani çok fazla açıklayıcılık katmadığını görebiliriz. Bu yüzden yukarıdaki uygulanan işlemlere model3’de eklenmiştir. Bunun için yukarı çıkarak model 3 eklendi aynı zamanda tekrardan analiz sonuçlarına model 3’ü ekledikten sonra tekrar bakarsak yine bir açıklayıcılık katmadığını göre biliriz. Yani faiz oranlarının enflasyon oranı üzerinde bir anlamı oladğını göre biliriz.

Tahmin yaparsak predict() fonksiyonu kullanabiliriz. Her model için ayrı ayrı tahmin yaparsak bunları predict1, predict2, ve predict3 olarak isimlendire biliriz.

predict1<- predict(model1)
predict2<- predict(model2)
predict3<- predict(model3)

zaman serisi oluşturduk

time<- c(2000:2021)
inflation<- df[23:44,3]

Daha sonra tahminlere ait grafikleri göstermek içi matplot() fonksiyonu kullanılmıştır.Yatay eksende zaman gösterildiği için time yazdık, ardından dikey eksende yer alacak olan isimler yazıldıkran sonra ardından çizgi türünü göstemek için type’a line yani “l” yazılmıştır. Ardından çizgi genişliği ise lty ile gösterilmiştir.

Ardından yine grafik üzerinde yer alan isimler yazılmıştır.

matplot(time,cbind(predict1,predict2,predict3,inflation),type = "l",lty = 1:4)
## Warning in cbind(predict1, predict2, predict3, inflation): number of rows of
## result is not a multiple of vector length (arg 3)
legend("topleft",c("tahmin 1","tahmin 2","tahmin 3","inflation"),lty = 1:4)

Sonuç olarak gerçeğe en uzak olan tahmin 3 olduğu görülmektedir.

En düşük hataya sahip olan modeli bulmak için yani tahmin ile gerçek değer arasındaki hatayı bulmak için aşağıdaki işlemi uygulayabiliriz. Bunun için sırasıyla aşağıdaki işlemler uygulandıktan sonra en az hataya sahip olan modeli bulmuş oluruz.

İlk olarak model1’ e ait gerçek değerden tahmini çıkararak hata payını buluruz

Error1<- inflation-predict1

Ardından bulunan hata payının karesini alırız

Error1square<-Error1^2

Daha sonra elde edilen hata payının karesine ait değerlerin ortalamasını almak için mean() fonksiyonu kullanılmıştır.

Not: Yapılan işlemler 3 model için de aşağıda uygulanmıştır.

MSE1<-mean(Error1square)
RMSE1<- sqrt(MSE1)
  1. olarak model2’ye e ait gerçek değerden tahmini çıkararak hata payını buluruz
Error2<- inflation-predict2
Error2square<-Error2^2
MSE2<-mean(Error2square)
RMSE2<- sqrt(MSE2)
  1. olarak model3’e ait gerçek değerden tahmini çıkararak hata payını buluruz
Error3<- inflation-predict3
## Warning in inflation - predict3: uzun olan nesne uzunluğu kısa olan nesne
## uzunluğunun bir katı değil
Error3square<-Error3^2
MSE3<-mean(Error3square)
RMSE3<- sqrt(MSE3)

Daha sonra tüm modellerin RMSE değerlerini görmek için aşağıdaki işlemler yapılarak değerlendirilmiştir.

RMSE1
## [1] 49.66532
RMSE2
## [1] 50.53147
RMSE3
## [1] 51.11946

Sonuç olarak 3 model içinden en fazla hata payı bulunan model, model 3 olduğu saptanmıştır.