Ö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", "AER", "stargazer"))
#> 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
#> Warning: package 'AER' was built under R version 4.3.2
#> Warning: package 'survival' 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 paketindeki verileri incelemek için wooldridge
CRAN klavuzuna bakabilirsiniz.
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, wooldridge
R paketindeki
wage1
datası için:
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.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.pt
fonksiyonu ile model tahmininden elde ettiğimiz
\(t\)-istatistiğine ait \(p\)-değerini çift ve tek kuyruklu hipotez
testleri için hesaplayabiliriz.okara
R
paketindeki hoCoef
fonksiyonunda model tahminini kullanarak
çift ve tek kuyruklu hipotez testleri uygulayabiliriz.car
R paketindeki linearHypothesis
fonksiyonunda model
tahminini kullanarak çift kuyruk hipotez testini uygulayabiliriz.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 yıllık olarak
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 <- lm(data = data, formula = inf ~ unem, singular.ok = FALSE)
summary(model) ## 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
# Parametre tahminleri, standart hataları, t-istatistikleri ve p-değerleri.
coef(summary(model))
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 1.0535656 1.5479571 0.6806168 0.49902205
#> unem 0.5023782 0.2655624 1.8917519 0.06389167
# pt fonksiyonu ile çift ve tek kuyruklu t-testi. Hesaplanan p-değeridir.
2*pt(q = abs(coef(summary(model))[2, 3]), df = model$df.residual, lower.tail = FALSE) ## Çift kuyruklu t-testi: H0: Beta1 = 0 vs H1: Beta1 != 0
#> [1] 0.06389167
pt(q = coef(summary(model))[2, 3], df = model$df.residual, lower.tail = TRUE) ## Sol kuyruk t-testi: H0: Beta1 = 0 vs H1: Beta1 < 0
#> [1] 0.9680542
pt(q = coef(summary(model))[2, 3], df = model$df.residual, lower.tail = FALSE) ## Sağ kuyruklu t-testi: H0: Beta1 = 0 vs H1: Beta1 > 0
#> [1] 0.03194584
# hoCoef fonksiyonu ile çift ve tek kuyruklu t-testi.
hoCoef(model, term = 2, bo = 0, alt = c("two.sided")) ## Çift kuyruklu t-testi: H0: Beta1 = 0 vs H1: Beta1 != 0
#> term Ho Value Estimate Std. Error T df p value
#> 2 0 0.5023782 0.2655624 1.891752 54 0.06389167
hoCoef(model, term = 2, bo = 0, alt = c("less")) ## Sol kuyruk t-testi: H0: Beta1 = 0 vs H1: Beta1 < 0
#> term Ho Value Estimate Std. Error T df p value
#> 2 0 0.5023782 0.2655624 1.891752 54 0.9680542
hoCoef(model, term = 2, bo = 0, alt = c("greater")) ## Sağ kuyruklu t-testi: H0: Beta1 = 0 vs H1: Beta1 > 0
#> term Ho Value Estimate Std. Error T df p value
#> 2 0 0.5023782 0.2655624 1.891752 54 0.03194584
# linearHypothesis fonksiyonu ile çift kuyruklu t-testi.
linearHypothesis(model, c("unem = 0")) ## linearHypothesis fonksiyonu F-istatistiği ve ona ait p-değerini veriyor. Tek bir kısıt için hesaplanan F-istatistiğinin, aynı tek kısıt için hesaplanan t-istatistiğinin karesine eşit olduğunu unutmayın (ayrıca her iki testin sonucu da aynıdır).
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 yıllık olarak
içeriyor. Örneğimizi basitleştirmek için biz sadece bazı değişkenleri
kullanacağız.
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
# Parametre tahminleri, standart hataları, t-istatistikleri ve p-değerleri.
coef(summary(model))
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 1.7332658 0.43196700 4.012496 1.897506e-04
#> inf 0.6058659 0.08213481 7.376481 1.117901e-09
#> def 0.5130579 0.11838406 4.333843 6.572384e-05
# pt fonksiyonu ile çift ve tek kuyruklu t-testi. Hesaplanan p-değeridir.
2*pt(q = abs(coef(summary(model))[3, 3]), df = model$df.residual, lower.tail = FALSE) ## Çift kuyruklu t-testi: H0: Beta2 = 0 vs H1: Beta2 != 0
#> [1] 6.572384e-05
pt(q = coef(summary(model))[3, 3], df = model$df.residual, lower.tail = TRUE) ## Sol kuyruk t-testi: H0: Beta2 = 0 vs H1: Beta2 < 0
#> [1] 0.9999671
pt(q = coef(summary(model))[3, 3], df = model$df.residual, lower.tail = FALSE) ## Sağ kuyruklu t-testi: H0: Beta2 = 0 vs H1: Beta2 > 0
#> [1] 3.286192e-05
# hoCoef fonksiyonu ile çift ve tek kuyruklu t-testi.
hoCoef(model, term = 3, bo = 0, alt = c("two.sided")) ## Çift kuyruklu t-testi: H0: Beta2 = 0 vs H1: Beta2 != 0
#> term Ho Value Estimate Std. Error T df p value
#> 3 0 0.5130579 0.1183841 4.333843 53 6.572384e-05
hoCoef(model, term = 3, bo = 0, alt = c("less")) ## Sol kuyruk t-testi: H0: Beta2 = 0 vs H1: Beta2 < 0
#> term Ho Value Estimate Std. Error T df p value
#> 3 0 0.5130579 0.1183841 4.333843 53 0.9999671
hoCoef(model, term = 3, bo = 0, alt = c("greater")) ## Sağ kuyruklu t-testi: H0: Beta2 = 0 vs H1: Beta2 > 0
#> term Ho Value Estimate Std. Error T df p value
#> 3 0 0.5130579 0.1183841 4.333843 53 3.286192e-05
# linearHypothesis fonksiyonu ile çift kuyruklu t-testi.
linearHypothesis(model, c("def = 0")) ## linearHypothesis fonksiyonu F-istatistiği ve ona ait p-değerini veriyor. Tek bir kısıt için hesaplanan F-istatistiğinin, aynı tek kısıt için hesaplanan t-istatistiğinin karesine eşit olduğunu unutmayın (ayrıca her iki testin sonucu da aynıdır).
pf
fonksiyonu ile model tahmininden elde ettiğimiz
\(f\)-istatistiğine ait \(p\)-değerini sadece modelin genel
anlamlılığını test eden hipotez testi için hesaplayabiliriz.car
R paketindeki linearHypothesis
fonksiyonunda model
tahminini kullanarak birçok farklı çoklu kısıt için hipotez testi
uygulayabiliriz.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 yıllık olarak
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(2) modeli.
model <- dynlm(data = data.ts, formula = inf ~ unem + L(unem, 1) + L(unem, 2), singular.ok = FALSE)
summary(model) ## Tahmin özeti.
#>
#> Time series regression with "ts" data:
#> Start = 1950, End = 2003
#>
#> Call:
#> dynlm(formula = inf ~ unem + L(unem, 1) + L(unem, 2), data = data.ts,
#> singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -3.8917 -1.7375 -0.8202 1.1082 8.1030
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.1246 1.6892 -0.074 0.9415
#> unem 0.9032 0.4021 2.246 0.0291 *
#> L(unem, 1) -0.8563 0.5257 -1.629 0.1096
#> L(unem, 2) 0.6681 0.3867 1.728 0.0902 .
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 2.812 on 50 degrees of freedom
#> Multiple R-squared: 0.1496, Adjusted R-squared: 0.09861
#> F-statistic: 2.933 on 3 and 50 DF, p-value: 0.04237
# Modelin istatistiki olarak genel anlamlılığı için F-testi ve serbestlik dereceleri.
summary(model)$fstatistic
#> value numdf dendf
#> 2.932693 3.000000 50.000000
# Hipotez Testi 1: pf fonksiyonu ile modelin istatistiki olarak genel anlamlılığının testi. Hesaplanan p-değeridir.
pf(q = summary(model)$fstatistic[1], df1 = summary(model)$fstatistic[2], df2 = summary(model)$fstatistic[3], lower.tail = FALSE)
#> value
#> 0.04236599
# Hipotez Testi 1: linearHypothesis fonksiyonu ile modelin istatistiki olarak genel anlamlılığının testi.
linearHypothesis(model, c("unem = 0", "L(unem, 1) = 0", "L(unem, 2) = 0"))
# Hipotez Testi 2: linearHypothesis fonksiyonu ile tüm gecikmeli değişken parametrelerinin birlikte istatistiki olarak anlamlı olup olmadığının testi.
linearHypothesis(model, c("L(unem, 1) = 0", "L(unem, 2) = 0")) ## p-değeri %5 anlamlılık düzeyinden büyük olduğundan boş hipotez reddedilemez ve statik model kullanılmalıdır.
wooldridge
R paketinden
fertil3
verisini yükleyelim.fertil3
verisi genel olarak Amerika’daki
doğurganlık ve vergi muafiyeti değişkenlerini, ve
ayrıca bu değişkenlere ait gecikme ve ilk farklar değerlerini yıllık
olarak 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 : Vergi muafiyeti ve doğurganlık arasındaki FDL(3) modeli.
model <- dynlm(data = data.ts, formula = gfr ~ pe + L(pe, 1) + L(pe, 2) + L(pe, 3), singular.ok = FALSE)
summary(model) ## Tahmin özeti.
#>
#> Time series regression with "ts" data:
#> Start = 1916, End = 1984
#>
#> Call:
#> dynlm(formula = gfr ~ pe + L(pe, 1) + L(pe, 2) + L(pe, 3), data = data.ts,
#> singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -29.665 -14.923 -0.897 17.835 31.903
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 91.496540 4.597898 19.900 <2e-16 ***
#> pe -0.001629 0.139785 -0.012 0.991
#> L(pe, 1) -0.038276 0.218512 -0.175 0.862
#> L(pe, 2) 0.109043 0.218534 0.499 0.620
#> L(pe, 3) -0.041411 0.137696 -0.301 0.765
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 19.66 on 64 degrees of freedom
#> Multiple R-squared: 0.01344, Adjusted R-squared: -0.04822
#> F-statistic: 0.2179 on 4 and 64 DF, p-value: 0.9275
# Modelin istatistiki olarak genel anlamlılığı için F-testi ve serbestlik dereceleri.
summary(model)$fstatistic
#> value numdf dendf
#> 0.2179175 4.0000000 64.0000000
# Hipotez Testi 1: pf fonksiyonu ile modelin istatistiki olarak genel anlamlılığının testi. Hesaplanan p-değeridir.
pf(q = summary(model)$fstatistic[1], df1 = summary(model)$fstatistic[2], df2 = summary(model)$fstatistic[3], lower.tail = FALSE)
#> value
#> 0.9275263
# Hipotez Testi 1: linearHypothesis fonksiyonu ile modelin istatistiki olarak genel anlamlılığının testi.
linearHypothesis(model, c("pe = 0", "L(pe, 1) = 0", "L(pe, 2) = 0", "L(pe, 3) = 0"))
# Hipotez Testi 2: linearHypothesis fonksiyonu ile 2. ve 3. gecikmeli değişken parametrelerinin birlikte istatistiki olarak anlamlı olup olmadığının testi.
linearHypothesis(model, c("L(pe, 2) = 0", "L(pe, 3) = 0")) ## p-değeri %5 anlamlılık düzeyinden büyük olduğundan boş hipotez reddedilemez ve bu nedenle 2. ve 3. gecikmeli değişkenler modelde kullanılmamalıdır.
# Hipotez Testi 3: linearHypothesis fonksiyonu ile tüm gecikmeli değişken parametrelerinin birlikte istatistiki olarak anlamlı olup olmadığının testi.
linearHypothesis(model, c("L(pe, 1) = 0", "L(pe, 2) = 0", "L(pe, 3) = 0")) ## p-değeri %5 anlamlılık düzeyinden büyük olduğundan boş hipotez reddedilemez ve statik model kullanılmalıdır.
wooldridge
R paketinden
prminwge
verisini yükleyelim.prminwge
verisi genel olarak Amerika ve Porto Riko’daki
istihdam, asgari ücret ve GSMH değişkenlerini, ve
ayrıca bu değişkenlere ait logatikmik ve gecikme değerlerini yıllık
olarak içeriyor. Örneğimizi basitleştirmek için biz sadece bazı
değişkenleri kullanacağız.
car
R paketindeki linearHypothesis
fonksiyonuyla test edelim.
data(prminwge) ## Datayı yüklüyoruz.
?prminwge ## Datanın metadatası.
data <- prminwge ## Yüklediğimiz datayı "data" ismi ile kaydediyoruz.
str(data) ## Datanın yapısını inceleyelim.
#> 'data.frame': 38 obs. of 25 variables:
#> $ year : int 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 ...
#> $ avgmin : num 0.198 0.209 0.225 0.311 0.313 ...
#> $ avgwage : num 0.398 0.41 0.421 0.48 0.508 ...
#> $ kaitz : num 0.155 0.164 0.18 0.229 0.211 ...
#> $ avgcov : num 0.201 0.207 0.226 0.231 0.224 ...
#> $ covt : num 0.29 0.29 0.29 0.29 0.29 ...
#> $ mfgwage : num 0.43 0.45 0.48 0.5 0.52 ...
#> $ prdef : num 0.859 0.881 0.953 0.97 1 ...
#> $ prepop : num 0.47 0.449 0.434 0.428 0.415 ...
#> $ prepopf : num 0.47 0.449 0.434 0.428 0.415 ...
#> $ prgnp : num 879 925 1016 1081 1104 ...
#> $ prunemp : num 15.4 16 14.8 14.5 15.3 ...
#> $ usgnp : num 1204 1328 1380 1435 1416 ...
#> $ t : int 1 2 3 4 5 6 7 8 9 10 ...
#> $ post74 : int 0 0 0 0 0 0 0 0 0 0 ...
#> $ lprunemp: num 2.73 2.77 2.69 2.67 2.73 ...
#> $ lprgnp : num 6.78 6.83 6.92 6.99 7.01 ...
#> $ lusgnp : num 7.09 7.19 7.23 7.27 7.26 ...
#> $ lkaitz : num -1.86 -1.81 -1.71 -1.47 -1.56 ...
#> $ lprun_1 : num NA -1.87 -1.83 -1.91 -1.93 ...
#> $ lprepop : num -0.755 -0.801 -0.835 -0.849 -0.879 ...
#> $ lprep_1 : num NA -0.755 -0.801 -0.835 -0.849 ...
#> $ mincov : num 0.1 0.106 0.121 0.15 0.138 ...
#> $ lmincov : num -2.3 -2.25 -2.11 -1.9 -1.98 ...
#> $ lavgmin : num -1.62 -1.57 -1.49 -1.17 -1.16 ...
#> - attr(*, "time.stamp")= chr "25 Jun 2011 23:03"
data ## Datanın yapısını inceleyelim.
# Amerika'daki asgari ücretin Porto Riko'daki istihdam üzerindeki etkisini araştıran statik model.
model <- lm(data = data, formula = log(prepop) ~ log(mincov) + log(usgnp), singular.ok = FALSE)
summary(model) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = log(prepop) ~ log(mincov) + log(usgnp), data = data,
#> singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.117133 -0.036998 -0.005943 0.028181 0.113938
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -1.05442 0.76541 -1.378 0.1771
#> log(mincov) -0.15444 0.06490 -2.380 0.0229 *
#> log(usgnp) -0.01219 0.08851 -0.138 0.8913
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.0557 on 35 degrees of freedom
#> Multiple R-squared: 0.6605, Adjusted R-squared: 0.6411
#> F-statistic: 34.04 on 2 and 35 DF, p-value: 6.17e-09
# linearHypothesis fonksiyonu ile Beta1 için çift kuyruklu t-testi.
linearHypothesis(model, c("log(mincov) = 0")) ## linearHypothesis fonksiyonu F-istatistiği ve ona ait p-değerini veriyor. Tek bir kısıt için hesaplanan F-istatistiğinin, aynı tek kısıt için hesaplanan t-istatistiğinin karesine eşit olduğunu unutmayın (ayrıca her iki testin sonucu da aynıdır).
# linearHypothesis fonksiyonu ile Beta2 için çift kuyruklu t-testi.
linearHypothesis(model, c("log(usgnp) = 0")) ## linearHypothesis fonksiyonu F-istatistiği ve ona ait p-değerini veriyor. Tek bir kısıt için hesaplanan F-istatistiğinin, aynı tek kısıt için hesaplanan t-istatistiğinin karesine eşit olduğunu unutmayın (ayrıca her iki testin sonucu da aynıdır).
AER
R paketinden USMoney
verisini yükleyelim.USMoney
verisi genel olarak Amerika’daki para
arzı ve GSMH değişkenlerini çeyreklik olarak içeriyor.
Örneğimizi basitleştirmek için biz sadece bazı değişkenleri
kullanacağız.
car
R paketindeki linearHypothesis
fonksiyonuyla test edelim.
data(USMoney) ## Datayı yüklüyoruz.
?USMoney ## Datanın metadatası.
data.ts <- USMoney ## Yüklediğimiz datayı "data.ts" ismi ile kaydediyoruz. Yüklediğimiz datanın ts yani zaman serisi objesi olduğunu unutmayın.
str(data.ts) ## Datanın yapısını inceleyelim.
#> Time-Series [1:136, 1:3] from 1950 to 1984: 268 277 295 306 320 ...
#> - attr(*, "dimnames")=List of 2
#> ..$ : NULL
#> ..$ : chr [1:3] "gnp" "m1" "deflator"
head(data.ts, 5) ## Datanın yapısını ts objesi olarak inceleyelim.
#> gnp m1 deflator
#> 1950 Q1 267.6 110.20 56.04
#> 1950 Q2 277.1 111.75 56.21
#> 1950 Q3 294.8 112.95 56.41
#> 1950 Q4 306.3 113.93 56.67
#> 1951 Q1 320.4 115.08 56.77
datatable(data.frame(Date = as.Date(date_decimal(as.numeric(time(data.ts)))), as.matrix(data.ts), stringsAsFactors = FALSE), filter = "none", options = list(pageLength = 5, autoWidth = TRUE)) ## Datanın yapısını data frame olarak inceleyelim.
# Amerika'daki GSMH'nin para arzı üzerindeki etkisini araştıran FDL(4) modeli.
model <- dynlm(data = data.ts, formula = log(m1) ~ log(gnp) + L(log(gnp), 1) + L(log(gnp), 2) + L(log(gnp), 3) + L(log(gnp), 4), singular.ok = FALSE)
summary(model) ## Tahmin özeti.
#>
#> Time series regression with "ts" data:
#> Start = 1951(1), End = 1983(4)
#>
#> Call:
#> dynlm(formula = log(m1) ~ log(gnp) + L(log(gnp), 1) + L(log(gnp),
#> 2) + L(log(gnp), 3) + L(log(gnp), 4), data = data.ts, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.07812 -0.03445 -0.00298 0.02039 0.11668
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 1.15088 0.03733 30.832 <2e-16 ***
#> log(gnp) 0.41937 0.37051 1.132 0.260
#> L(log(gnp), 1) -0.19702 0.62853 -0.313 0.754
#> L(log(gnp), 2) 0.39647 0.62828 0.631 0.529
#> L(log(gnp), 3) -0.21687 0.60907 -0.356 0.722
#> L(log(gnp), 4) 0.21402 0.34892 0.613 0.541
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.0437 on 126 degrees of freedom
#> Multiple R-squared: 0.9904, Adjusted R-squared: 0.9901
#> F-statistic: 2612 on 5 and 126 DF, p-value: < 2.2e-16
# Parametre isimleri daha sonra kullanılmak üzere kaydediliyor.
coef.names <- names(coef(model))
# Etki çarpanının (kısa dönem esnekliği) hesaplanması.
coef(model)[[2]]
#> [1] 0.4193652
# Uzun dönem çarpanının (uzun dönem esnekliği) hesaplanması.
coef(model)[[2]] + coef(model)[[3]] + coef(model)[[4]] + coef(model)[[5]] + coef(model)[[6]]
#> [1] 0.6159644
# Hipotez Testi 1: linearHypothesis fonksiyonu ile modelin istatistiki olarak genel anlamlılığının testi.
linearHypothesis(model, c("log(gnp) = 0", "L(log(gnp), 1) = 0", "L(log(gnp), 2) = 0", "L(log(gnp), 3) = 0", "L(log(gnp), 4) = 0"))
# linearHypothesis(model, coef.names[grep("gnp", coef.names)]) ## Yukarıdaki sonucun aynısını verir.
# Hipotez Testi 2: linearHypothesis fonksiyonu ile tüm gecikmeli değişken parametrelerinin birlikte istatistiki olarak anlamlı olup olmadığının testi.
linearHypothesis(model, c("L(log(gnp), 1) = 0", "L(log(gnp), 2) = 0", "L(log(gnp), 3) = 0", "L(log(gnp), 4) = 0")) ## p-değeri %5 anlamlılık düzeyinden büyük olduğundan boş hipotez reddedilemez ve statik model kullanılmalıdır.
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 yıllık olarak içeriyor. Örneğimizi
basitleştirmek için biz sadece bazı değişkenleri kullanacağız.
car
R paketindeki linearHypothesis
fonksiyonuyla test edelim.
data(fertil3) ## Datayı yüklüyoruz.
?fertil3 ## Datanın metadatası.
data <- fertil3 ## Yüklediğimiz datayı "data" ismi ile kaydediyoruz.
# Bazı değişkenlere ait önemli değerler.
min(data$gfr); max(data$gfr)
#> [1] 65.4
#> [1] 126.6
min(data$pe); max(data$pe); mean(data$pe)
#> [1] 0
#> [1] 243.83
#> [1] 100.4015
# Model : Doğurganlık, vergi muafiyeti, savaş ve doğurganlık hapı arasındaki statik model.
model <- lm(data = data, formula = gfr ~ pe + ww2 + pill, singular.ok = FALSE)
summary(model) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = gfr ~ pe + ww2 + pill, data = data, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -27.0187 -9.6195 0.3393 9.4746 28.0730
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 98.68176 3.20813 30.760 < 2e-16 ***
#> pe 0.08254 0.02965 2.784 0.00694 **
#> ww2 -24.23840 7.45825 -3.250 0.00180 **
#> pill -31.59403 4.08107 -7.742 6.46e-11 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 14.69 on 68 degrees of freedom
#> Multiple R-squared: 0.4734, Adjusted R-squared: 0.4502
#> F-statistic: 20.38 on 3 and 68 DF, p-value: 1.575e-09
# Hipotez Testi 1: linearHypothesis fonksiyonu ile Beta1 için çift kuyruklu t-testi.
linearHypothesis(model, c("pe = 0"))
# Hipotez Testi 2: linearHypothesis fonksiyonu ile Beta2 için çift kuyruklu t-testi.
linearHypothesis(model, c("ww2 = 0"))
# Hipotez Testi 3: linearHypothesis fonksiyonu ile Beta3 için çift kuyruklu t-testi.
linearHypothesis(model, c("pill = 0"))
# Hipotez Testi 4: linearHypothesis fonksiyonu ile modelin istatistiki olarak genel anlamlılığının testi.
linearHypothesis(model, c("pe = 0", "ww2 = 0", "pill = 0"))
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 yıllık olarak içeriyor. Örneğimizi
basitleştirmek için biz sadece bazı değişkenleri kullanacağız.
car
R paketindeki linearHypothesis
fonksiyonuyla test edelim.
confint
fonksiyonunu kullanarak hem de elle
hesaplayalım.
data(fertil3) ## Datayı yüklüyoruz.
?fertil3 ## Datanın metadatası.
data <- fertil3 ## Yüklediğimiz datayı "data" ismi ile kaydediyoruz.
data.ts <- ts(data, start = 1913) ## Data 1913 yılından itibaren başlamış.
# Model 1 : Doğurganlık, vergi muafiyeti, savaş ve doğurganlık hapı arasındaki FDL(2) modeli.
model.1 <- dynlm(data = data.ts, formula = gfr ~ pe + L(pe, 1) + L(pe, 2) + ww2 + pill, 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) + 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
# Cari ve gecikmeli pe değerleri arasındaki korelasyon.
cor(data$pe, data$pe_1, use = "complete.obs", method = c("pearson"))
#> [1] 0.96358
cor(data$pe, data$pe_2, use = "complete.obs", method = c("pearson"))
#> [1] 0.9090107
cor(data$pe_1, data$pe_2, use = "complete.obs", method = c("pearson"))
#> [1] 0.9637233
# Hipotez Testi 1 (Model 1): linearHypothesis fonksiyonu ile cari ve gecikmeli dönemdeki pe değişkenlerinin beraberce istatistiki anlamlılığının testi.
linearHypothesis(model.1, c("pe = 0", "L(pe, 1) = 0", "L(pe, 2) = 0"))
# Hipotez Testi 2 (Model 1): linearHypothesis fonksiyonu ile tüm gecikmeli değişken parametrelerinin birlikte istatistiki olarak anlamlı olup olmadığının testi.
linearHypothesis(model.1, c("L(pe, 1) = 0", "L(pe, 2) = 0")) ## p-değeri %5 anlamlılık düzeyinden büyük olduğundan boş hipotez reddedilemez ve statik model kullanılmalıdır.
# Model 1 tahmini kullanılarak uzun dönem çarpanının hesaplanması.
coef(model.1)[[2]] + coef(model.1)[[3]] + coef(model.1)[[4]]
#> [1] 0.1007191
# Model 2 : Doğurganlık, vergi muafiyeti, savaş ve doğurganlık hapı arasındaki FDL(2) modelinin (Model 1) uzun dönem çarpanını hesaplamak için dönüştürülmüş hali.
model.2 <- dynlm(data = data.ts, formula = gfr ~ pe + I(L(pe, 1) - pe) + I(L(pe, 2) - pe) + ww2 + pill, singular.ok = FALSE) ## Burada [pe(t-1) - pe(t)] bağımsız değişkeni modele koyabilmek için I() fonksiyonunu kullandığımıza dikkat edin.
summary(model.2) ## Tahmin özeti.
#>
#> Time series regression with "ts" data:
#> Start = 1915, End = 1984
#>
#> Call:
#> dynlm(formula = gfr ~ pe + I(L(pe, 1) - pe) + I(L(pe, 2) - pe) +
#> 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.10072 0.02980 3.380 0.00124 **
#> I(L(pe, 1) - pe) -0.00578 0.15566 -0.037 0.97050
#> I(L(pe, 2) - pe) 0.03383 0.12626 0.268 0.78962
#> ww2 -22.12650 10.73197 -2.062 0.04330 *
#> 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
# Hipotez Testi 3 (Model 2): hoCoef fonksiyonu ile çift ve tek kuyruklu t-testi.
hoCoef(model.2, term = 2, bo = 0, alt = c("two.sided")) ## Çift kuyruklu t-testi: H0: Theta0 = 0 vs H1: Theta0 != 0
#> term Ho Value Estimate Std. Error T df p value
#> 2 0 0.1007191 0.02980267 3.379532 64 0.001240844
linearHypothesis(model.1, c("pe + L(pe, 1) + L(pe, 2) = 0")) ## Model 1'i dönüştürmeden direkt olarak Model 1'in sonuçlarını kullanarak uzun dönem çarpanı
# Uzun dönem çarpanı için %95'lik güven aralığı (%5 anlamlılık düzeyinde) hesaplanması.
conf.level <- 0.95
alpha <- 1 - conf.level
## confint fonksiyonu ile güven aralığı hesaplanması.
confint(object = model.2, parm = "pe", level = conf.level)
#> 2.5 % 97.5 %
#> pe 0.04118141 0.1602568
## Elle güven aralığı hesaplanması.
estimate.beta <- coef(summary(model.2))[2, 1] ## Parametre tahmini
estimate.se <- coef(summary(model.2))[2, 2] ## Parametre için standart hata tahmini.
t.critic <- qt(p = (1 - alpha/2), df = model.2$df.residual, lower.tail = TRUE, log.p = FALSE) ## t-kritik değeri.
estimate.beta - (t.critic * estimate.se) ## Güven aralığı alt limiti.
#> [1] 0.04118141
estimate.beta + (t.critic * estimate.se) ## Güven aralığı üst limiti.
#> [1] 0.1602568
wooldridge
R paketinden
hseinv
verisini yükleyelim.hseinv
verisi genel olarak Amerika’daki ev
yatırımları ve fiyatlar değişkenlerini, ve ayrıca bu
değişkenlere ait gecikme ve ilk farklar değerlerini yıllık olarak
içeriyor. Örneğimizi basitleştirmek için biz sadece bazı değişkenleri
kullanacağız.
hoCoef
fonksiyonuyla test edelim.
hoCoef
fonksiyonuyla test edelim.
data(hseinv) ## Datayı yüklüyoruz.
?hseinv ## Datanın metadatası.
data <- hseinv ## Yüklediğimiz datayı "data" ismi ile kaydediyoruz.
str(data) ## Datanın yapısını inceleyelim.
#> 'data.frame': 42 obs. of 14 variables:
#> $ year : int 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 ...
#> $ inv : num 54864 64717 63150 86014 70610 ...
#> $ pop : num 144126 146631 149188 151684 154287 ...
#> $ price : num 0.819 0.865 0.846 0.877 0.882 ...
#> $ linv : num 10.9 11.1 11.1 11.4 11.2 ...
#> $ lpop : num 11.9 11.9 11.9 11.9 11.9 ...
#> $ lprice : num -0.2 -0.145 -0.168 -0.132 -0.126 ...
#> $ t : int 1 2 3 4 5 6 7 8 9 10 ...
#> $ invpc : num 0.381 0.441 0.423 0.567 0.458 ...
#> $ linvpc : num -0.966 -0.818 -0.86 -0.567 -0.782 ...
#> $ lprice_1: num NA -0.2 -0.145 -0.168 -0.132 ...
#> $ linvpc_1: num NA -0.966 -0.818 -0.86 -0.567 ...
#> $ gprice : num NA 0.05453 -0.02257 0.03589 0.00614 ...
#> $ ginvpc : num NA 0.1479 -0.0418 0.2924 -0.2144 ...
#> - attr(*, "time.stamp")= chr "25 Jun 2011 23:03"
data ## Datanın yapısını inceleyelim.
# Model 1: Ev yatırımları ve fiyatları arasındaki trendsiz statik model.
model.1 <- lm(data = data, formula = log(invpc) ~ log(price), singular.ok = FALSE)
summary(model.1) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = log(invpc) ~ log(price), data = data, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.45991 -0.08694 -0.01264 0.08651 0.34672
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.55023 0.04303 -12.788 1.03e-15 ***
#> log(price) 1.24094 0.38242 3.245 0.00238 **
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.1554 on 40 degrees of freedom
#> Multiple R-squared: 0.2084, Adjusted R-squared: 0.1886
#> F-statistic: 10.53 on 1 and 40 DF, p-value: 0.002376
# Hipotez Testi 1 (Model 1): hoCoef fonksiyonu ile çift ve tek kuyruklu t-testi.
hoCoef(model.1, term = 2, bo = 0, alt = c("two.sided")) ## Çift kuyruklu t-testi: H0: Beta1 = 0 vs H1: Beta1 != 0
#> term Ho Value Estimate Std. Error T df p value
#> 2 0 1.240943 0.3824192 3.244981 40 0.002376136
# Hipotez Testi 2 (Model 1): hoCoef fonksiyonu ile çift ve tek kuyruklu t-testi.
hoCoef(model.1, term = 2, bo = 1, alt = c("two.sided")) ## Çift kuyruklu t-testi: H0: Beta1 = 1 vs H1: Beta1 != 1
#> term Ho Value Estimate Std. Error T df p value
#> 2 1 1.240943 0.3824192 0.6300499 40 0.5322448
# Model 2: Ev yatırımları değişkeni trend üzerine regres ediliyor.
model.2 <- lm(data = data, formula = log(invpc) ~ t, singular.ok = FALSE)
summary(model.2) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = log(invpc) ~ t, data = data, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.46210 -0.07763 -0.01810 0.08809 0.27774
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.841292 0.044744 -18.802 < 2e-16 ***
#> t 0.008146 0.001813 4.493 5.85e-05 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.1424 on 40 degrees of freedom
#> Multiple R-squared: 0.3354, Adjusted R-squared: 0.3188
#> F-statistic: 20.19 on 1 and 40 DF, p-value: 5.854e-05
# Model 3: Fiyatlar değişkeni trend üzerine regres ediliyor.
model.3 <- lm(data = data, formula = log(price) ~ t, singular.ok = FALSE)
summary(model.3) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = log(price) ~ t, data = data, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.050108 -0.025920 -0.009173 0.017513 0.080490
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.1883860 0.0105121 -17.92 < 2e-16 ***
#> t 0.0044173 0.0004259 10.37 6.68e-13 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.03346 on 40 degrees of freedom
#> Multiple R-squared: 0.7289, Adjusted R-squared: 0.7222
#> F-statistic: 107.6 on 1 and 40 DF, p-value: 6.677e-13
# Model 4: Ev yatırımları ve fiyatları arasındaki trendli statik model.
model.4 <- lm(data = data, formula = log(invpc) ~ log(price) + t, singular.ok = FALSE)
summary(model.4) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = log(invpc) ~ log(price) + t, data = data, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.45092 -0.08583 -0.01734 0.08517 0.26024
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.913060 0.135613 -6.733 5e-08 ***
#> log(price) -0.380961 0.678835 -0.561 0.57787
#> t 0.009829 0.003512 2.798 0.00794 **
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.1436 on 39 degrees of freedom
#> Multiple R-squared: 0.3408, Adjusted R-squared: 0.307
#> F-statistic: 10.08 on 2 and 39 DF, p-value: 0.000296
# Hipotez Testi 3 (Model 4): hoCoef fonksiyonu ile çift ve tek kuyruklu t-testi.
hoCoef(model.4, term = 2, bo = 0, alt = c("two.sided")) ## Çift kuyruklu t-testi: H0: Beta1 = 0 vs H1: Beta1 != 0
#> term Ho Value Estimate Std. Error T df p value
#> 2 0 -0.3809613 0.6788352 -0.5611985 39 0.5778728
# Hipotez Testi 4 (Model 4): hoCoef fonksiyonu ile çift ve tek kuyruklu t-testi.
hoCoef(model.4, term = 3, bo = 0, alt = c("two.sided")) ## Çift kuyruklu t-testi: H0: Beta2 = 0 vs H1: Beta2 != 0
#> term Ho Value Estimate Std. Error T df p value
#> 3 0 0.009828726 0.00351221 2.798445 39 0.007939359
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 yıllık olarak 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.
# Model : Doğurganlık, vergi muafiyeti, savaş ve doğurganlık hapı arasındaki karesel trendli statik model.
model <- lm(data = data, formula = gfr ~ pe + ww2 + pill + t + I(t^2), singular.ok = FALSE) ## Burada t^2 bağımsız değişkeni modele koyabilmek için I() fonksiyonunu kullandığımıza dikkat edin.
summary(model) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = gfr ~ pe + ww2 + pill + t + I(t^2), data = data,
#> singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -25.9791 -6.9775 -0.2713 7.7975 19.9861
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 124.091935 4.360738 28.457 < 2e-16 ***
#> pe 0.347813 0.040260 8.639 1.91e-12 ***
#> ww2 -35.880277 5.707921 -6.286 2.95e-08 ***
#> pill -10.119723 6.336094 -1.597 0.115008
#> t -2.531426 0.389386 -6.501 1.24e-08 ***
#> I(t^2) 0.019613 0.004971 3.945 0.000196 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 10.74 on 66 degrees of freedom
#> Multiple R-squared: 0.7267, Adjusted R-squared: 0.706
#> F-statistic: 35.09 on 5 and 66 DF, p-value: < 2.2e-16
wooldridge
R paketinden
hseinv
verisini yükleyelim.hseinv
verisi genel olarak Amerika’daki ev
yatırımları ve fiyatlar değişkenlerini, ve ayrıca bu
değişkenlere ait gecikme ve ilk farklar değerlerini yıllık olarak
içeriyor. Örneğimizi basitleştirmek için biz sadece bazı değişkenleri
kullanacağız.
data(hseinv) ## Datayı yüklüyoruz.
?hseinv ## Datanın metadatası.
data <- hseinv ## Yüklediğimiz datayı "data" ismi ile kaydediyoruz.
# Model 1: Ev yatırımları ve fiyatları arasındaki trendli statik model.
model.1 <- lm(data = data, formula = log(invpc) ~ log(price) + t, singular.ok = FALSE)
summary(model.1) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = log(invpc) ~ log(price) + t, data = data, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.45092 -0.08583 -0.01734 0.08517 0.26024
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.913060 0.135613 -6.733 5e-08 ***
#> log(price) -0.380961 0.678835 -0.561 0.57787
#> t 0.009829 0.003512 2.798 0.00794 **
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.1436 on 39 degrees of freedom
#> Multiple R-squared: 0.3408, Adjusted R-squared: 0.307
#> F-statistic: 10.08 on 2 and 39 DF, p-value: 0.000296
#===
# Ek bilgi: Statik modeli dynlm() fonksiyonu ile tahmin etmek.
data.ts <- ts(data, start = 1947) ## Data 1947 yılından itibaren başlamış.
model.1 <- dynlm(data = data.ts, formula = log(invpc) ~ log(price) + trend(data.ts), singular.ok = FALSE) ## dynlm() fonksiyonu statik modeller için de kullanılabilir. dynlm() fonksiyonunun avantajı data içinde trend ya da mevsimsellik değişkenleri olmasa da otomatik olarak oluşturabilmesidir. trend() fonksiyonu kullanarak modele lineer trend eklenebilir.
summary(model.1) ## Tahmin özeti. Yukarıdaki lm() fonksiyonu ile elde edilen sonucun aynısı.
#>
#> Time series regression with "ts" data:
#> Start = 1947, End = 1988
#>
#> Call:
#> dynlm(formula = log(invpc) ~ log(price) + trend(data.ts), data = data.ts,
#> singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.45092 -0.08583 -0.01734 0.08517 0.26024
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.913060 0.135613 -6.733 5e-08 ***
#> log(price) -0.380961 0.678835 -0.561 0.57787
#> trend(data.ts) 0.009829 0.003512 2.798 0.00794 **
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.1436 on 39 degrees of freedom
#> Multiple R-squared: 0.3408, Adjusted R-squared: 0.307
#> F-statistic: 10.08 on 2 and 39 DF, p-value: 0.000296
#===
# Model 2: Ev yatırımları ve trend arasındaki model.
model.2 <- lm(data = data, formula = log(invpc) ~ t, singular.ok = FALSE)
ln.invpc.resid <- model.2$residuals ## Kalıntılar.
# Model 3: Fiyatlar ve trend arasındaki model.
model.3 <- lm(data = data, formula = log(price) ~ t, singular.ok = FALSE)
ln.price.resid <- model.3$residuals ## Kalıntılar.
model.4 <- lm(formula = ln.invpc.resid ~ ln.price.resid, singular.ok = FALSE) ## Data argumanını kullanmadıgımıza ve aynı uzunlukta iki değişken kullandığımıza dikkat edin.
summary(model.4) ## Tahmin özeti.
#>
#> Call:
#> lm(formula = ln.invpc.resid ~ ln.price.resid, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.45092 -0.08583 -0.01734 0.08517 0.26024
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 8.158e-19 2.189e-02 0.000 1.000
#> ln.price.resid -3.810e-01 6.703e-01 -0.568 0.573
#>
#> Residual standard error: 0.1418 on 40 degrees of freedom
#> Multiple R-squared: 0.008011, Adjusted R-squared: -0.01679
#> F-statistic: 0.323 on 1 and 40 DF, p-value: 0.573
# Model 1 ve Model 4 arasında karşılaştırma yapmak amacıyla stargazer fonksiyonu kullanılıyor.
stargazer(model.1, model.4, type = "text")
#>
#> =============================================================
#> Dependent variable:
#> -----------------------------------------
#> log(invpc) ln.invpc.resid
#> dynamic OLS
#> linear
#> (1) (2)
#> -------------------------------------------------------------
#> log(price) -0.381
#> (0.679)
#>
#> trend(data.ts) 0.010***
#> (0.004)
#>
#> ln.price.resid -0.381
#> (0.670)
#>
#> Constant -0.913*** 0.000
#> (0.136) (0.022)
#>
#> -------------------------------------------------------------
#> Observations 42 42
#> R2 0.341 0.008
#> Adjusted R2 0.307 -0.017
#> Residual Std. Error 0.144 (df = 39) 0.142 (df = 40)
#> F Statistic 10.080*** (df = 2; 39) 0.323 (df = 1; 40)
#> =============================================================
#> Note: *p<0.1; **p<0.05; ***p<0.01
AER
R paketinden USMoney
verisini yükleyelim.USMoney
verisi genel olarak Amerika’daki para
arzı ve GSMH değişkenlerini çeyreklik olarak içeriyor.
Örneğimizi basitleştirmek için biz sadece bazı değişkenleri
kullanacağız.
car
R paketindeki linearHypothesis
fonksiyonuyla test edelim.
data(USMoney) ## Datayı yüklüyoruz.
?USMoney ## Datanın metadatası.
data.ts <- USMoney ## Yüklediğimiz datayı "data" ismi ile kaydediyoruz. Yüklediğimiz datanın ts yani zaman serisi objesi olduğunu unutmayın.
# Amerika'daki GSMH'nin para arzı üzerindeki etkisini araştıran trendli ve mevsimsel kuklalı statik modeli.
model <- dynlm(data = data.ts, formula = log(m1) ~ log(gnp) + trend(data.ts) + season(data.ts), singular.ok = FALSE) ## dynlm() fonksiyonu statik modeller için de kullanılabilir. dynlm() fonksiyonunun avantajı data içinde trend ya da mevsimsellik değişkenleri olmasa da otomatik olarak oluşturabilmesidir. trend() fonksiyonu kullanarak modele lineer trend eklenebilir. season() fonksiyonu kullanarak modele mevsimsel kukla değişkenleri eklenebilir (ilk dönem, baz dönem olacaktır).
summary(model) ## Tahmin özeti.
#>
#> Time series regression with "ts" data:
#> Start = 1950(1), End = 1983(4)
#>
#> Call:
#> dynlm(formula = log(m1) ~ log(gnp) + trend(data.ts) + season(data.ts),
#> data = data.ts, singular.ok = FALSE)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -0.078277 -0.017159 -0.002273 0.014414 0.084624
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.8003164 0.1279285 -6.256 5.28e-09 ***
#> log(gnp) 0.9719129 0.0231977 41.897 < 2e-16 ***
#> trend(data.ts) -0.0273093 0.0017152 -15.922 < 2e-16 ***
#> season(data.ts)Q2 0.0003588 0.0065645 0.055 0.956
#> season(data.ts)Q3 -0.0019442 0.0065654 -0.296 0.768
#> season(data.ts)Q4 0.0008598 0.0065667 0.131 0.896
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.02707 on 130 degrees of freedom
#> Multiple R-squared: 0.9964, Adjusted R-squared: 0.9963
#> F-statistic: 7234 on 5 and 130 DF, p-value: < 2.2e-16
# Parametre isimleri daha sonra kullanılmak üzere kaydediliyor.
coef.names <- names(coef(model))
# Hipotez Testi 1: linearHypothesis fonksiyonu ile tüm mevsimsel kukla değişken parametrelerinin birlikte istatistiki olarak anlamlı olup olmadığının testi.
linearHypothesis(model, c("season(data.ts)Q2 = 0", "season(data.ts)Q3 = 0", "season(data.ts)Q4 = 0")) ## p-değeri %5 anlamlılık düzeyinden büyük olduğundan boş hipotez reddedilemez ve mevsimsel kukla değişkenler kullanılmamalıdır.
linearHypothesis(model, coef.names[grep("season", coef.names)]) ## Yukarıdaki sonucun aynısını verir.