Önemli Notlar
okara
paketindeki Load.Install
fonksiyonunu kullanarak indirin ve
yükleyin.okara
paketindeki Load.Install
fonksiyonunu kullanarak indirin
ve/veya yükleyin.# Devtools ve okara paketlerinin yüklenmesi.
if("devtools" %in% rownames(utils::installed.packages()) == FALSE) {suppressWarnings(suppressMessages(install.packages("devtools")))}
suppressWarnings(suppressMessages(library("devtools"))) ## devtools paketi, okara paketinin yüklenmesi için gereklidir.
if("okara" %in% rownames(utils::installed.packages()) == FALSE) {suppressWarnings(suppressMessages(devtools::install_github("omerkara/okara", force = FALSE)))}
suppressWarnings(suppressMessages(library("okara"))) ## okara paketi.
# Gerekli paketlerin yüklenmesi.
Load.Install(c("rstudioapi", "readxl", "plyr", "dplyr", "tidyr", "stringr", "stringi", "Hmisc", "reshape2", "scales", "lubridate", "ggplot2", "xtable", "DT", "latex2exp", "forecast", "WDI", "fpp2", "fpp3", "datasets", "quantmod", "FinYang/tsdl", "ggseas", "slider", "ecm", "wooldridge", "dynlm", "car"))
#> Warning: package 'tidyr' was built under R version 4.3.2
#> Warning: package 'ggplot2' was built under R version 4.3.2
#> Warning: package 'DT' was built under R version 4.3.2
#> Warning: package 'tsibble' was built under R version 4.3.2
#> Warning: package 'fabletools' was built under R version 4.3.2
#> Warning: package 'quantmod' was built under R version 4.3.2
#> Warning: package 'ecm' was built under R version 4.3.2
R kodu
, R çalışma klasörünü (yani working
directory) sadece bu dosya için, bu dosyanın bilgisayarınızda bulunan
lokasyonunda belirliyor.
getwd()
fonksiyonunu kullanarak mevcut çalışma
klasörünün hangi lokasyonda belirlendiğine bakabilirsiniz.# Değiştirmeyin.
main.path <- dirname(rstudioapi::getActiveDocumentContext()$path) ## Bu kod otomatik olarak kaynak dosyasının, yani üzerinde çalıştığınız dosyanın, bilgisayarınızda hangi lokasyonda olduğunu buluyor.
setwd(paste0(main.path)) ## Yeni çalışma klasörü (yani working directory) bu kaynak dosyasının lokasyonunda belirleniyor.
wooldridge
R paketinden direkt olarak veri indirip yüklemeye çalışalım.
wooldridge
R paketindeki verileri incelemek için wooldridge
CRAN klavuzuna bakabilirsiniz.wooldridge
R paketinde mevcut olan veriyi, verinin
ismini kullanarak yüklemek için 1 fonksiyon kullanacağız:
data
.
data
fonksiyonu ile istediğimiz veriyi verinin R paketi
içindeki ismini kullanarak direkt olarak R’ın içine yükleyebiliriz.?
kodunu
kullanabiliriz. Örneğin, ?wage1
:
wooldridge
R paketi içindeki wage1
verisini data(wage1)
kodunu kullanarak yüklediğimizi var
sayalım.?wage1
kodunu kullanarak bu veri hakkındaki
tüm bilgilere RStudio üzerindeki help sekmesinden
ulaşabiliriz.lm
.
lm
fonksiyonu ile formunu belirlediğimiz basit doğrusal
regresyon ya da çoklu doğrusal regresyon modellerini kolayca tahmin
edebiliriz.wooldridge
R paketinden
phillips
verisini yükleyelim.phillips
verisi genel olarak Amerika’daki
enflasyon ve işsizlik değişkenlerini, ve ayrıca bu
değişkenlere ait gecikme ve ilk farklar değerlerini içeriyor. Örneğimizi
basitleştirmek için biz sadece bazı değişkenleri kullanacağız.
data(phillips) ## Datayı yüklüyoruz.
?phillips ## Datanın metadatası.
data <- phillips ## Yüklediğimiz datayı "data" ismi ile kaydediyoruz.
str(data) ## Datanın yapısını inceleyelim.
#> 'data.frame': 56 obs. of 7 variables:
#> $ year : int 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 ...
#> $ unem : num 3.8 5.9 5.3 3.3 3 ...
#> $ inf : num 8.1 -1.2 1.3 7.9 1.9 ...
#> $ inf_1 : num NA 8.1 -1.2 1.3 7.9 ...
#> $ unem_1: num NA 3.8 5.9 5.3 3.3 ...
#> $ cinf : num NA -9.3 2.5 6.6 -6 ...
#> $ cunem : num NA 2.1 -0.6 -2 -0.3 ...
#> - attr(*, "time.stamp")= chr "25 Jun 2011 23:03"
data ## Datanın yapısını inceleyelim.
# Cari dönemde enflasyon ve işsizlik arasındaki statik model.
model.1 <- lm(data = data, formula = inf ~ unem, singular.ok = FALSE)
summary(model.1) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = inf ~ unem, data = data, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -5.2176 -1.7812 -0.6659 1.1473 8.8795
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 1.0536 1.5480 0.681 0.4990
#> unem 0.5024 0.2656 1.892 0.0639 .
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 2.972 on 54 degrees of freedom
#> Multiple R-squared: 0.06215, Adjusted R-squared: 0.04479
#> F-statistic: 3.579 on 1 and 54 DF, p-value: 0.06389
# İlk farklar enflasyon ve işsizlik arasındaki statik model.
model.2 <- lm(data = data, formula = cinf ~ cunem, singular.ok = FALSE)
summary(model.2) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = cinf ~ cunem, data = data, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -7.4790 -0.9441 0.1384 1.0889 5.4551
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.07214 0.30584 -0.236 0.81443
#> cunem -0.83281 0.28984 -2.873 0.00583 **
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 2.267 on 53 degrees of freedom
#> (1 observation deleted due to missingness)
#> Multiple R-squared: 0.1348, Adjusted R-squared: 0.1185
#> F-statistic: 8.256 on 1 and 53 DF, p-value: 0.005831
wooldridge
R paketinden
intdef
verisini yükleyelim.intdef
verisi genel olarak Amerika’daki faiz
oranı, enflasyon ve bütçe açığı değişkenlerini, ve ayrıca bu
değişkenlere ait gecikme ve ilk farklar değerlerini içeriyor.
data(intdef) ## Datayı yüklüyoruz.
?intdef ## Datanın metadatası.
data <- intdef ## Yüklediğimiz datayı "data" ismi ile kaydediyoruz.
str(data) ## Datanın yapısını inceleyelim.
#> 'data.frame': 56 obs. of 13 variables:
#> $ year : int 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 ...
#> $ i3 : num 1.04 1.1 1.22 1.55 1.77 ...
#> $ inf : num 8.1 -1.2 1.3 7.9 1.9 ...
#> $ rec : num 16.2 14.5 14.4 16.1 19 ...
#> $ out : num 11.6 14.3 15.6 14.2 19.4 ...
#> $ def : num -4.6 -0.2 1.2 -1.9 0.4 ...
#> $ i3_1 : num NA 1.04 1.1 1.22 1.55 ...
#> $ inf_1: num NA 8.1 -1.2 1.3 7.9 ...
#> $ def_1: num NA -4.6 -0.2 1.2 -1.9 ...
#> $ ci3 : num NA 0.06 0.12 0.33 0.22 ...
#> $ cinf : num NA -9.3 2.5 6.6 -6 ...
#> $ cdef : num NA 4.4 1.4 -3.1 2.3 ...
#> $ y77 : int 0 0 0 0 0 0 0 0 0 0 ...
#> - attr(*, "time.stamp")= chr "25 Jun 2011 23:03"
data ## Datanın yapısını inceleyelim.
# Cari dönemde faiz, enflasyon ve bütçe açığı arasındaki statik model.
model <- lm(data = data, formula = i3 ~ inf + def, singular.ok = FALSE)
summary(model) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = i3 ~ inf + def, data = data, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -3.9948 -1.1694 0.1959 0.9602 4.7224
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 1.73327 0.43197 4.012 0.00019 ***
#> inf 0.60587 0.08213 7.376 1.12e-09 ***
#> def 0.51306 0.11838 4.334 6.57e-05 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 1.843 on 53 degrees of freedom
#> Multiple R-squared: 0.6021, Adjusted R-squared: 0.5871
#> F-statistic: 40.09 on 2 and 53 DF, p-value: 2.483e-11
dynlm
.
dynlm
fonksiyonu ile formunu belirlediğimiz FDL
modellerini kolayca tahmin edebiliriz.dynlm
fonksiyonunun kullanımı lm
fonksiyonuna çok benzerdir. Fakat ek olarak, gecikmeli değişkenlerin
kullanımı için ekstra kodlar kullanmaya izin verir.dynlm
fonksiyonunda sadece zaman serisi verisi
kullanılabilir. Bu nedenle, elinizdeki verinin zaman serisi objesi
olması şarttır. Bu amaçla biz, elimizdeki veriyi zaman serisi objesine
çevirmek için ts
fonksiyonunu kullanacağız.wooldridge
R paketinden
phillips
verisini yükleyelim.phillips
verisi genel olarak Amerika’daki
enflasyon ve işsizlik değişkenlerini, ve ayrıca bu
değişkenlere ait gecikme ve ilk farklar değerlerini içeriyor. Örneğimizi
basitleştirmek için biz sadece bazı değişkenleri kullanacağız.
data(phillips) ## Datayı yüklüyoruz.
?phillips ## Datanın metadatası.
data <- phillips ## Yüklediğimiz datayı "data" ismi ile kaydediyoruz.
data.ts <- ts(data, start = 1948) ## Data 1948 yılından itibaren başlamış.
# Model: Enflasyon ve işsizlik arasındaki FDL(1) modeli.
model <- dynlm(data = data.ts, formula = inf ~ unem + L(unem, 1), singular.ok = FALSE)
summary(model) ## Tahmin özeti.
#>
#> Time series regression with "ts" data:
#> Start = 1949, End = 2003
#>
#> Call:
#> dynlm(formula = inf ~ unem + L(unem, 1), data = data.ts, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -5.2378 -1.8264 -0.5528 1.0439 8.8164
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 0.57584 1.64503 0.350 0.728
#> unem 0.61739 0.40423 1.527 0.133
#> L(unem, 1) -0.04754 0.39888 -0.119 0.906
#>
#> Residual standard error: 2.939 on 52 degrees of freedom
#> Multiple R-squared: 0.08413, Adjusted R-squared: 0.04891
#> F-statistic: 2.388 on 2 and 52 DF, p-value: 0.1018
# Parametre tahminleri.
coef(model)
#> (Intercept) unem L(unem, 1)
#> 0.57583708 0.61739247 -0.04753562
# Etki çarpanının hesaplanması.
coef(model)[[2]]
#> [1] 0.6173925
# Uzun dönem çarpanının hesaplanması.
coef(model)[[2]] + coef(model)[[3]]
#> [1] 0.5698569
wooldridge
R paketinden
fertil3
verisini yükleyelim.fertil3
verisi genel olarak Amerika’daki
doğurganlık, vergi muafiyeti, savaş ve doğum kontrol
hapı değişkenlerini, ve ayrıca bu değişkenlere ait gecikme ve
ilk farklar değerlerini içeriyor. Örneğimizi basitleştirmek için biz
sadece bazı değişkenleri kullanacağız.
data(fertil3) ## Datayı yüklüyoruz.
?fertil3 ## Datanın metadatası.
data <- fertil3 ## Yüklediğimiz datayı "data" ismi ile kaydediyoruz.
str(data) ## Datanın yapısını inceleyelim.
#> 'data.frame': 72 obs. of 24 variables:
#> $ gfr : num 125 127 125 123 121 ...
#> $ pe : num 0 0 0 0 19.3 ...
#> $ year : int 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 ...
#> $ t : int 1 2 3 4 5 6 7 8 9 10 ...
#> $ tsq : int 1 4 9 16 25 36 49 64 81 100 ...
#> $ pe_1 : num NA 0 0 0 0 ...
#> $ pe_2 : num NA NA 0 0 0 ...
#> $ pe_3 : num NA NA NA 0 0 ...
#> $ pe_4 : num NA NA NA NA 0 ...
#> $ pill : int 0 0 0 0 0 0 0 0 0 0 ...
#> $ ww2 : int 0 0 0 0 0 0 0 0 0 0 ...
#> $ tcu : num 1 8 27 64 125 216 343 512 729 1000 ...
#> $ cgfr : num NA 1.9 -1.6 -1.6 -2.4 ...
#> $ cpe : num NA 0 0 0 19.3 ...
#> $ cpe_1 : num NA NA 0 0 0 ...
#> $ cpe_2 : num NA NA NA 0 0 ...
#> $ cpe_3 : num NA NA NA NA 0 ...
#> $ cpe_4 : num NA NA NA NA NA ...
#> $ gfr_1 : num NA 125 127 125 123 ...
#> $ cgfr_1: num NA NA 1.9 -1.6 -1.6 ...
#> $ cgfr_2: num NA NA NA 1.9 -1.6 ...
#> $ cgfr_3: num NA NA NA NA 1.9 ...
#> $ cgfr_4: num NA NA NA NA NA ...
#> $ gfr_2 : num NA NA 125 127 125 ...
#> - attr(*, "time.stamp")= chr "25 Jun 2011 23:03"
data ## Datanın yapısını inceleyelim.
data.ts <- ts(data, start = 1913) ## Data 1913 yılından itibaren başlamış.
# Model 1: Doğurganlık ve vergi muafiyeti arasındaki FDL(2) modeli.
model.1 <- dynlm(data = data.ts, formula = gfr ~ pe + L(pe, 1) + L(pe, 2), singular.ok = FALSE)
summary(model.1) ## Tahmin özeti.
#>
#> Time series regression with "ts" data:
#> Start = 1915, End = 1984
#>
#> Call:
#> dynlm(formula = gfr ~ pe + L(pe, 1) + L(pe, 2), data = data.ts,
#> singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -30.146 -16.062 -0.127 17.562 31.842
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 93.15791 4.49965 20.703 <2e-16 ***
#> pe -0.01584 0.14026 -0.113 0.910
#> L(pe, 1) -0.02134 0.21523 -0.099 0.921
#> L(pe, 2) 0.05390 0.13811 0.390 0.698
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 19.78 on 66 degrees of freedom
#> Multiple R-squared: 0.006135, Adjusted R-squared: -0.03904
#> F-statistic: 0.1358 on 3 and 66 DF, p-value: 0.9383
# Model 1: Parametre tahminleri.
coef(model.1)
#> (Intercept) pe L(pe, 1) L(pe, 2)
#> 93.15790699 -0.01584453 -0.02133647 0.05390053
# Model 1: Etki çarpanının hesaplanması.
coef(model.1)[[2]]
#> [1] -0.01584453
# Model 1: Uzun dönem çarpanının hesaplanması.
coef(model.1)[[2]] + coef(model.1)[[3]] + coef(model.1)[[4]]
#> [1] 0.01671952
# Model 2: Doğurganlık, vergi muafiyeti, savaş ve doğurganlık hapı arasındaki FDL(2) modeli.
model.2 <- dynlm(data = data.ts, formula = gfr ~ pe + L(pe, 1) + L(pe, 2) + ww2 + pill, singular.ok = FALSE)
summary(model.2) ## Tahmin özeti.
#>
#> Time series regression with "ts" data:
#> Start = 1915, End = 1984
#>
#> Call:
#> dynlm(formula = gfr ~ pe + L(pe, 1) + L(pe, 2) + ww2 + pill,
#> data = data.ts, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -24.6461 -9.5409 -0.0312 8.3378 29.1295
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 95.87050 3.28196 29.211 < 2e-16 ***
#> pe 0.07267 0.12553 0.579 0.5647
#> L(pe, 1) -0.00578 0.15566 -0.037 0.9705
#> L(pe, 2) 0.03383 0.12626 0.268 0.7896
#> ww2 -22.12650 10.73197 -2.062 0.0433 *
#> pill -31.30499 3.98156 -7.862 5.63e-11 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 14.27 on 64 degrees of freedom
#> Multiple R-squared: 0.4986, Adjusted R-squared: 0.4594
#> F-statistic: 12.73 on 5 and 64 DF, p-value: 1.353e-08
# Model 2: Parametre tahminleri.
coef(model.2)
#> (Intercept) pe L(pe, 1) L(pe, 2) ww2
#> 95.870497467 0.072671828 -0.005779582 0.033826844 -22.126497512
#> pill
#> -31.304988800
# Model 2: Etki çarpanının hesaplanması.
coef(model.2)[[2]]
#> [1] 0.07267183
# Model 2: Uzun dönem çarpanının hesaplanması.
coef(model.2)[[2]] + coef(model.2)[[3]] + coef(model.2)[[4]]
#> [1] 0.1007191