Granger Causality Test


##載入套件

library(lmtest)
library(dplyr)
library(ggplot2)
library(openxlsx)
library(vars)
library(tseries)
library(jtools)
library(forecast)
library(urca)


##建立時間序列

year <- read.xlsx("E:/summer program/new data/byyear1.xlsx", sheet = '內插')

biomass.timeseries <- ts(year$aboveground距平, start = 1995)
leaf.timeseries <- ts(year$leaf距平, start = 1995)
cover.timeseries <- ts(year$cover距平, start = 1995)
relative.timeseries <- ts(year$relative距平, start = 1995)
pmmann.timeseries <- ts(year$PMMANN0, start = 1995)
wnp.timeseries <- ts(year$WNP0, start = 1995)
cpenso.timeseries <- ts(year$CPENSO0, start = 1995)
tempann.timeseries <- ts(year$TX年距平0, start = 1995)
salt.timeseries <- ts(year$Salt距平0, start = 1995)
tempde.timeseries <- ts(year$TXde0, start = 1995)


##檢測平穩性

ADF法

adf.test(na.omit(cover.timeseries))
adf.test(na.omit(leaf.timeseries))
adf.test(na.omit(relative.timeseries))
adf.test(na.omit(biomass.timeseries))

adf.test(na.omit(pmmann.timeseries))
adf.test(na.omit(cpenso.timeseries))
adf.test(na.omit(wnp.timeseries))
adf.test(na.omit(tempann.timeseries))
adf.test(na.omit(salt.timeseries))
adf.test(na.omit(tempde.timeseries))
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(cover.timeseries)
## Dickey-Fuller = -2.114, Lag order = 2, p-value = 0.5289
## alternative hypothesis: stationary
## 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(leaf.timeseries)
## Dickey-Fuller = -2.2157, Lag order = 2, p-value = 0.4902
## alternative hypothesis: stationary
## 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(relative.timeseries)
## Dickey-Fuller = -2.2034, Lag order = 2, p-value = 0.4949
## alternative hypothesis: stationary
## 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(biomass.timeseries)
## Dickey-Fuller = -1.6929, Lag order = 2, p-value = 0.6894
## alternative hypothesis: stationary
## 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(pmmann.timeseries)
## Dickey-Fuller = -2.2014, Lag order = 2, p-value = 0.4957
## alternative hypothesis: stationary
## 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(cpenso.timeseries)
## Dickey-Fuller = -2.3858, Lag order = 2, p-value = 0.4254
## alternative hypothesis: stationary
## 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(wnp.timeseries)
## Dickey-Fuller = -2.2173, Lag order = 2, p-value = 0.4896
## alternative hypothesis: stationary
## 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(tempann.timeseries)
## Dickey-Fuller = -2.3302, Lag order = 2, p-value = 0.4466
## alternative hypothesis: stationary
## 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(salt.timeseries)
## Dickey-Fuller = -2.2974, Lag order = 2, p-value = 0.4591
## alternative hypothesis: stationary
## 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  na.omit(tempde.timeseries)
## Dickey-Fuller = 0.19384, Lag order = 2, p-value = 0.99
## alternative hypothesis: stationary


KPSS法

kpss.test(na.omit(cover.timeseries))
kpss.test(na.omit(leaf.timeseries))
kpss.test(na.omit(relative.timeseries))
kpss.test(na.omit(biomass.timeseries))

kpss.test(na.omit(pmmann.timeseries))
kpss.test(na.omit(cpenso.timeseries))
kpss.test(na.omit(wnp.timeseries))
kpss.test(na.omit(tempann.timeseries))
kpss.test(na.omit(salt.timeseries))
kpss.test(na.omit(tempde.timeseries))
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(cover.timeseries)
## KPSS Level = 0.34382, Truncation lag parameter = 2, p-value = 0.1
## 
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(leaf.timeseries)
## KPSS Level = 0.1183, Truncation lag parameter = 2, p-value = 0.1
## 
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(relative.timeseries)
## KPSS Level = 0.42795, Truncation lag parameter = 2, p-value = 0.06511
## 
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(biomass.timeseries)
## KPSS Level = 0.22544, Truncation lag parameter = 2, p-value = 0.1
## 
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(pmmann.timeseries)
## KPSS Level = 0.43649, Truncation lag parameter = 2, p-value = 0.06143
## 
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(cpenso.timeseries)
## KPSS Level = 0.13865, Truncation lag parameter = 2, p-value = 0.1
## 
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(wnp.timeseries)
## KPSS Level = 0.20561, Truncation lag parameter = 2, p-value = 0.1
## 
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(tempann.timeseries)
## KPSS Level = 0.4036, Truncation lag parameter = 2, p-value = 0.0756
## 
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(salt.timeseries)
## KPSS Level = 0.11672, Truncation lag parameter = 2, p-value = 0.1
## 
## 
##  KPSS Test for Level Stationarity
## 
## data:  na.omit(tempde.timeseries)
## KPSS Level = 0.93415, Truncation lag parameter = 2, p-value = 0.01


##檢測差分

ADF法

ndiffs(cover.timeseries, test="adf")
ndiffs(leaf.timeseries, test="adf")
ndiffs(relative.timeseries, test="adf")
ndiffs(biomass.timeseries, test="adf")
ndiffs(pmmann.timeseries, test="adf")
ndiffs(cpenso.timeseries, test="adf")
ndiffs(wnp.timeseries, test="adf")
ndiffs(tempann.timeseries, test="adf")
ndiffs(salt.timeseries, test="adf")
ndiffs(tempde.timeseries, test="adf")
## [1] 2
## [1] 1
## [1] 2
## [1] 2
## [1] 1
## [1] 0
## [1] 0
## [1] 1
## [1] 1
## [1] 1


KPSS法

ndiffs(cover.timeseries, test="kpss")
ndiffs(leaf.timeseries, test="kpss")
ndiffs(relative.timeseries, test="kpss")
ndiffs(biomass.timeseries, test="kpss")
ndiffs(pmmann.timeseries, test="kpss")
ndiffs(cpenso.timeseries, test="kpss")
ndiffs(wnp.timeseries, test="kpss")
ndiffs(tempann.timeseries, test="kpss")
ndiffs(salt.timeseries, test="kpss")
ndiffs(tempde.timeseries, test="kpss")
## [1] 0
## [1] 0
## [1] 1
## [1] 0
## [1] 1
## [1] 0
## [1] 0
## [1] 1
## [1] 0
## [1] 1

relative, WNP, tempann做一次差分;adf的二次差分太難解釋

##差分比較

relativediff <- diff(relative.timeseries)

par(mfrow=c(2,2))
plot.ts(relative.timeseries,main="原始relative")
plot.ts(relativediff,main="一階差分relative")
acf(relative.timeseries, na = na.omit, ,main="原始relative"); acf(relativediff, na = na.omit, main="一階差分relative")


wnpdiff <- diff(wnp.timeseries)

par(mfrow=c(2,2))
plot.ts(wnp.timeseries,main="原始WNP")
plot.ts(wnpdiff,main="一階差分WNP")
acf(wnp.timeseries, na = na.omit, ,main="原始WNP"); acf(wnpdiff, na = na.omit, main="一階差分WNP")


tempanndiff <- diff(tempann.timeseries)

par(mfrow=c(2,2))
plot.ts(tempann.timeseries,main="原始relative")
plot.ts(tempanndiff,main="一階差分relative")
acf(tempann.timeseries, na = na.omit, ,main="原始tempann"); acf(tempanndiff, na = na.omit, main="一階差分rtempann")



##建立校準時間序列

因為差分的原理為第一項與第二項之差為新序列之第一項,因此計算a與b之格蘭傑因果時,其結果會與現實差了一個時間單位。然而當此差距會包含0時,將導致一盲區無法被計算(沒有自回歸),因此需要建立一個向後推移一單位之時間序列。

relative1.timeseries <- ts(year$relative距平1, start = 1995)
wnp1.timeseries <- ts(year$WNP1, start = 1995)
tempann1.timeseries <- ts(year$TX年距平1, start = 1995)
salt1.timeseries <- ts(year$Salt距平1, start = 1995)



##建立校準差分序列

relative1diff <- diff(relative1.timeseries)
wnp1diff <- diff(wnp1.timeseries)
tempann1diff <- diff(tempann1.timeseries)



##leaf與PMM的滯後選擇 & Granger Causality Test

leaf與PMMANN

bio_pmm <- cbind(pmmann.timeseries, leaf.timeseries)
VARselect(y=na.omit(bio_pmm), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      1      1      1      1 
## 
## $criteria
##                 1          2          3
## AIC(n) -0.8696123 -0.7108249 -0.4985656
## HQ(n)  -0.8286889 -0.6426192 -0.4030776
## SC(n)  -0.5728217 -0.2161740  0.1939458
## FPE(n)  0.4217534  0.5061884  0.6622183

AIC, BIC(SC) best at 1.

grangertest(leaf.timeseries ~ pmmann.timeseries, order = 1, data = bio_pmm)
grangertest(pmmann.timeseries ~ leaf.timeseries, order = 1, data = bio_pmm)
## Granger causality test
## 
## Model 1: leaf.timeseries ~ Lags(leaf.timeseries, 1:1) + Lags(pmmann.timeseries, 1:1)
## Model 2: leaf.timeseries ~ Lags(leaf.timeseries, 1:1)
##   Res.Df Df     F Pr(>F)
## 1     17                
## 2     18 -1 0.024 0.8787
## Granger causality test
## 
## Model 1: pmmann.timeseries ~ Lags(pmmann.timeseries, 1:1) + Lags(leaf.timeseries, 1:1)
## Model 2: pmmann.timeseries ~ Lags(pmmann.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 0.0617 0.8068

No significant result.

##leaf與Salinity的滯後選擇 & Granger Causality Test

leaf與Salt

bio_salt <- cbind(salt.timeseries, leaf.timeseries)
VARselect(y=na.omit(bio_salt), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      2      2      1      2 
## 
## $criteria
##                  1           2          3
## AIC(n) -3.26079275 -3.36913215 -3.0077782
## HQ(n)  -3.21986933 -3.30092645 -2.9122903
## SC(n)  -2.96400216 -2.87448118 -2.3152669
## FPE(n)  0.03859954  0.03546697  0.0538597

AIC, BIC(SC) best at 1.

grangertest(leaf.timeseries ~ salt.timeseries, order = 1, data = bio_salt)
grangertest(salt.timeseries ~ leaf.timeseries, order = 1, data = bio_salt)
grangertest(leaf.timeseries ~ salt.timeseries, order = 2, data = bio_salt)
grangertest(salt.timeseries ~ leaf.timeseries, order = 2, data = bio_salt)
## Granger causality test
## 
## Model 1: leaf.timeseries ~ Lags(leaf.timeseries, 1:1) + Lags(salt.timeseries, 1:1)
## Model 2: leaf.timeseries ~ Lags(leaf.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 0.5556 0.4662
## Granger causality test
## 
## Model 1: salt.timeseries ~ Lags(salt.timeseries, 1:1) + Lags(leaf.timeseries, 1:1)
## Model 2: salt.timeseries ~ Lags(salt.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 0.4789 0.4983
## Granger causality test
## 
## Model 1: leaf.timeseries ~ Lags(leaf.timeseries, 1:2) + Lags(salt.timeseries, 1:2)
## Model 2: leaf.timeseries ~ Lags(leaf.timeseries, 1:2)
##   Res.Df Df     F Pr(>F)
## 1     14                
## 2     16 -2 0.111 0.8958
## Granger causality test
## 
## Model 1: salt.timeseries ~ Lags(salt.timeseries, 1:2) + Lags(leaf.timeseries, 1:2)
## Model 2: salt.timeseries ~ Lags(salt.timeseries, 1:2)
##   Res.Df Df      F Pr(>F)
## 1     14                 
## 2     16 -2 1.1873  0.334

No significant result.

##cover與Salinity的滯後選擇 & Granger Causality Test

cover與Salt

bio_salt <- cbind(salt.timeseries, cover.timeseries)
VARselect(y=na.omit(bio_salt), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      1      1      1      1 
## 
## $criteria
##               1         2         3
## AIC(n) 2.179150  2.466752  2.470761
## HQ(n)  2.220074  2.534957  2.566249
## SC(n)  2.475941  2.961403  3.163273
## FPE(n) 8.894457 12.142725 12.899221

AIC, BIC(SC) best at 1.

grangertest(cover.timeseries ~ salt.timeseries, order = 1, data = bio_salt)
grangertest(salt.timeseries ~ cover.timeseries, order = 1, data = bio_salt)
## Granger causality test
## 
## Model 1: cover.timeseries ~ Lags(cover.timeseries, 1:1) + Lags(salt.timeseries, 1:1)
## Model 2: cover.timeseries ~ Lags(cover.timeseries, 1:1)
##   Res.Df Df      F   Pr(>F)   
## 1     17                      
## 2     18 -1 13.046 0.002152 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Granger causality test
## 
## Model 1: salt.timeseries ~ Lags(salt.timeseries, 1:1) + Lags(cover.timeseries, 1:1)
## Model 2: salt.timeseries ~ Lags(salt.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 0.1237 0.7294

Salinity 領先 cover 1年.

##Temp與PMM的滯後選擇 & Granger Causality Test

Tempann差分與PMM

tempdiff_pmm <- cbind(pmmann.timeseries, tempanndiff)
VARselect(y=na.omit(tempdiff_pmm), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      1      1      1      1 
## 
## $criteria
##                  1         2         3
## AIC(n) -0.11526586 0.1379399 0.1491686
## HQ(n)  -0.05049783 0.2458866 0.3002940
## SC(n)   0.18316912 0.6353315 0.8455169
## FPE(n)  0.89464321 1.1694980 1.2240067

AIC, BIC(SC) best at 1.

grangertest(tempanndiff ~ pmmann.timeseries, order = 1, data = tempdiff_pmm)
grangertest(pmmann.timeseries ~ tempanndiff, order = 1, data = tempdiff_pmm)
## Granger causality test
## 
## Model 1: tempanndiff ~ Lags(tempanndiff, 1:1) + Lags(pmmann.timeseries, 1:1)
## Model 2: tempanndiff ~ Lags(tempanndiff, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     20                 
## 2     21 -1 0.1325 0.7197
## Granger causality test
## 
## Model 1: pmmann.timeseries ~ Lags(pmmann.timeseries, 1:1) + Lags(tempanndiff, 1:1)
## Model 2: pmmann.timeseries ~ Lags(pmmann.timeseries, 1:1)
##   Res.Df Df     F Pr(>F)
## 1     20                
## 2     21 -1 0.635 0.4349

No significant result.

Tempann1差分與PMM

tempdiff1_pmm <- cbind(pmmann.timeseries, tempann1diff)
VARselect(y=na.omit(tempdiff1_pmm), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      1      1      1      1 
## 
## $criteria
##                  1         2         3
## AIC(n) -0.09414944 0.0784403 0.1174841
## HQ(n)  -0.02938141 0.1863870 0.2686095
## SC(n)   0.20428555 0.5758319 0.8138323
## FPE(n)  0.91373575 1.1019430 1.1858325

AIC best at 2, BIC(SC) best at 1.

grangertest(tempann1diff ~ pmmann.timeseries, order = 1, data = tempdiff1_pmm)
grangertest(pmmann.timeseries ~ tempann1diff, order = 1, data = tempdiff1_pmm)
## Granger causality test
## 
## Model 1: tempann1diff ~ Lags(tempann1diff, 1:1) + Lags(pmmann.timeseries, 1:1)
## Model 2: tempann1diff ~ Lags(tempann1diff, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     20                 
## 2     21 -1 0.0172 0.8969
## Granger causality test
## 
## Model 1: pmmann.timeseries ~ Lags(pmmann.timeseries, 1:1) + Lags(tempann1diff, 1:1)
## Model 2: pmmann.timeseries ~ Lags(pmmann.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     20                 
## 2     21 -1 0.4775 0.4975

No significant result.

##Temp與CPENSO的滯後選擇 & Granger Causality Test

Tempann差分與CPENSO

tempdiff_cpenso <- cbind(cpenso.timeseries, tempanndiff)
VARselect(y=na.omit(tempdiff_cpenso), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      1      1      1      1 
## 
## $criteria
##                 1          2          3
## AIC(n) -1.3075352 -1.0839928 -0.8184296
## HQ(n)  -1.2492220 -0.9868041 -0.6823654
## SC(n)  -1.0088155 -0.5861267 -0.1214170
## FPE(n)  0.2717226  0.3456455  0.4692336

AIC, BIC(SC) best at 1.

grangertest(tempanndiff ~ cpenso.timeseries, order = 1, data = tempdiff_cpenso)
grangertest(cpenso.timeseries ~ tempanndiff, order = 1, data = tempdiff_cpenso)
## Granger causality test
## 
## Model 1: tempanndiff ~ Lags(tempanndiff, 1:1) + Lags(cpenso.timeseries, 1:1)
## Model 2: tempanndiff ~ Lags(tempanndiff, 1:1)
##   Res.Df Df     F Pr(>F)
## 1     19                
## 2     20 -1 1.043 0.3199
## Granger causality test
## 
## Model 1: cpenso.timeseries ~ Lags(cpenso.timeseries, 1:1) + Lags(tempanndiff, 1:1)
## Model 2: cpenso.timeseries ~ Lags(cpenso.timeseries, 1:1)
##   Res.Df Df      F  Pr(>F)  
## 1     19                    
## 2     20 -1 4.2086 0.05426 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Tempann 與 CPENSO 同時

Tempann1差分與CPENSO

tempdiff1_cpenso <- cbind(cpenso.timeseries, tempann1diff)
VARselect(y=na.omit(tempdiff1_cpenso), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      1      1      1      1 
## 
## $criteria
##                 1          2          3
## AIC(n) -1.2432004 -1.0989387 -0.8340392
## HQ(n)  -1.1784324 -0.9909920 -0.6829138
## SC(n)  -0.9447654 -0.6015471 -0.1376909
## FPE(n)  0.2895970  0.3394923  0.4579121

AIC, BIC(SC) best at 1.

grangertest(tempann1diff ~ cpenso.timeseries, order = 1, data = tempdiff1_cpenso)
grangertest(cpenso.timeseries ~ tempann1diff, order = 1, data = tempdiff1_cpenso)
## Granger causality test
## 
## Model 1: tempann1diff ~ Lags(tempann1diff, 1:1) + Lags(cpenso.timeseries, 1:1)
## Model 2: tempann1diff ~ Lags(tempann1diff, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     20                 
## 2     21 -1 0.0407 0.8421
## Granger causality test
## 
## Model 1: cpenso.timeseries ~ Lags(cpenso.timeseries, 1:1) + Lags(tempann1diff, 1:1)
## Model 2: cpenso.timeseries ~ Lags(cpenso.timeseries, 1:1)
##   Res.Df Df     F Pr(>F)
## 1     20                
## 2     21 -1 2.168 0.1565

No significant result.

##Temp與WNP的滯後選擇 & Granger Causality Test

Tempann差分與WNP差分

tempdiff_wnpdiff <- cbind(wnpdiff, tempanndiff)
VARselect(y=na.omit(tempdiff_wnpdiff), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      2      1      1      2 
## 
## $criteria
##                 1           2           3
## AIC(n) -3.9598531 -3.99088886 -3.80671875
## HQ(n)  -3.8950851 -3.88294215 -3.65559334
## SC(n)  -3.6614182 -3.49349723 -3.11037045
## FPE(n)  0.0191411  0.01883094  0.02342954

AIC best at 2, BIC(SC) best at 1.

grangertest(wnpdiff ~ tempanndiff, order = 1, data = tempdiff_wnpdiff)
grangertest(tempanndiff ~ wnpdiff, order = 1, data = tempdiff_wnpdiff)
grangertest(wnpdiff ~ tempanndiff, order = 2, data = tempdiff_wnpdiff)
grangertest(tempanndiff ~ wnpdiff, order = 2, data = tempdiff_wnpdiff)
## Granger causality test
## 
## Model 1: wnpdiff ~ Lags(wnpdiff, 1:1) + Lags(tempanndiff, 1:1)
## Model 2: wnpdiff ~ Lags(wnpdiff, 1:1)
##   Res.Df Df      F  Pr(>F)  
## 1     20                    
## 2     21 -1 4.8575 0.03941 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Granger causality test
## 
## Model 1: tempanndiff ~ Lags(tempanndiff, 1:1) + Lags(wnpdiff, 1:1)
## Model 2: tempanndiff ~ Lags(tempanndiff, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     20                 
## 2     21 -1 0.0095 0.9235
## Granger causality test
## 
## Model 1: wnpdiff ~ Lags(wnpdiff, 1:2) + Lags(tempanndiff, 1:2)
## Model 2: wnpdiff ~ Lags(wnpdiff, 1:2)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     19 -2 1.0354 0.3764
## Granger causality test
## 
## Model 1: tempanndiff ~ Lags(tempanndiff, 1:2) + Lags(wnpdiff, 1:2)
## Model 2: tempanndiff ~ Lags(tempanndiff, 1:2)
##   Res.Df Df      F  Pr(>F)  
## 1     17                    
## 2     19 -2 3.4939 0.05357 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

WNP 領先 Temp 2年;Temp 領先 WNP 1年

##Salt與PMM的滯後選擇 & Granger Causality Test

Salt與PMM

salt_pmm <- cbind(pmmann.timeseries, salt.timeseries)
VARselect(y=na.omit(salt_pmm), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      1      1      1      1 
## 
## $criteria
##                1        2        3
## AIC(n) 0.9040178 1.219647 1.516012
## HQ(n)  0.9449412 1.287852 1.611500
## SC(n)  1.2008084 1.714298 2.208524
## FPE(n) 2.4850571 3.489035 4.965022

AIC, BIC(SC) best at 1.

grangertest(salt.timeseries ~ pmmann.timeseries, order = 1, data = salt_pmm)
grangertest(pmmann.timeseries ~ salt.timeseries, order = 1, data = salt_pmm)
## Granger causality test
## 
## Model 1: salt.timeseries ~ Lags(salt.timeseries, 1:1) + Lags(pmmann.timeseries, 1:1)
## Model 2: salt.timeseries ~ Lags(salt.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 0.7659 0.3937
## Granger causality test
## 
## Model 1: pmmann.timeseries ~ Lags(pmmann.timeseries, 1:1) + Lags(salt.timeseries, 1:1)
## Model 2: pmmann.timeseries ~ Lags(pmmann.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 0.0585 0.8118

No significant result.

##Salt與CPENSO的滯後選擇 & Granger Causality Test

Salt與CPENSO

salt_cpenso <- cbind(cpenso.timeseries, salt.timeseries)
VARselect(y=na.omit(salt_cpenso), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      1      1      1      1 
## 
## $criteria
##                  1           2         3
## AIC(n) -0.06432534 -0.02888074 0.3042032
## HQ(n)  -0.02340192  0.03932496 0.3996912
## SC(n)   0.23246524  0.46577024 0.9967146
## FPE(n)  0.94360509  1.00109847 1.4778802

AIC, BIC(SC) best at 1.

grangertest(salt.timeseries ~ cpenso.timeseries, order = 1, data = salt_cpenso)
grangertest(cpenso.timeseries ~ salt.timeseries, order = 1, data = salt_cpenso)
## Granger causality test
## 
## Model 1: salt.timeseries ~ Lags(salt.timeseries, 1:1) + Lags(cpenso.timeseries, 1:1)
## Model 2: salt.timeseries ~ Lags(salt.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 0.0592 0.8107
## Granger causality test
## 
## Model 1: cpenso.timeseries ~ Lags(cpenso.timeseries, 1:1) + Lags(salt.timeseries, 1:1)
## Model 2: cpenso.timeseries ~ Lags(cpenso.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 2.4229  0.138

No significant result.

##Salt與WNP的滯後選擇 & Granger Causality Test

Salt與WNP差分

salt_wnpdiff <- cbind(wnpdiff, salt.timeseries)
VARselect(y=na.omit(salt_wnpdiff), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      2      1      1      1 
## 
## $criteria
##                  1          2          3
## AIC(n) -2.58238320 -2.5956690 -2.2309684
## HQ(n)  -2.54145978 -2.5274633 -2.1354804
## SC(n)  -2.28559261 -2.1010180 -1.5384570
## FPE(n)  0.07606969  0.0768661  0.1171192

AIC best at 2, BIC(SC) best at 1.

grangertest(wnpdiff ~ salt.timeseries, order = 1, data = salt_wnpdiff)
grangertest(salt.timeseries ~ wnpdiff, order = 1, data = salt_wnpdiff)
grangertest(wnpdiff ~ salt.timeseries, order = 2, data = salt_wnpdiff)
grangertest(salt.timeseries ~ wnpdiff, order = 2, data = salt_wnpdiff)
## Granger causality test
## 
## Model 1: wnpdiff ~ Lags(wnpdiff, 1:1) + Lags(salt.timeseries, 1:1)
## Model 2: wnpdiff ~ Lags(wnpdiff, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 0.6116 0.4449
## Granger causality test
## 
## Model 1: salt.timeseries ~ Lags(salt.timeseries, 1:1) + Lags(wnpdiff, 1:1)
## Model 2: salt.timeseries ~ Lags(salt.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 1.6202 0.2202
## Granger causality test
## 
## Model 1: wnpdiff ~ Lags(wnpdiff, 1:2) + Lags(salt.timeseries, 1:2)
## Model 2: wnpdiff ~ Lags(wnpdiff, 1:2)
##   Res.Df Df      F Pr(>F)
## 1     14                 
## 2     16 -2 1.9857 0.1741
## Granger causality test
## 
## Model 1: salt.timeseries ~ Lags(salt.timeseries, 1:2) + Lags(wnpdiff, 1:2)
## Model 2: salt.timeseries ~ Lags(salt.timeseries, 1:2)
##   Res.Df Df      F Pr(>F)
## 1     14                 
## 2     16 -2 1.3883 0.2818

No significant result.

Salt與WNP1差分

salt_wnp1diff <- cbind(wnp1diff, salt.timeseries)
VARselect(y=na.omit(salt_wnp1diff), lag.max = 3, type = c("const"))
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      3      3      1      3 
## 
## $criteria
##                  1           2           3
## AIC(n) -2.74276980 -2.64446024 -2.85507955
## HQ(n)  -2.70184638 -2.57625454 -2.75959157
## SC(n)  -2.44597921 -2.14980927 -2.16256819
## FPE(n)  0.06479726  0.07320573  0.06274515

AIC, BIC(SC) best at 1.

grangertest(wnp1diff ~ salt.timeseries, order = 1, data = salt_wnp1diff)
grangertest(salt.timeseries ~ wnp1diff, order = 1, data = salt_wnp1diff)
## Granger causality test
## 
## Model 1: wnp1diff ~ Lags(wnp1diff, 1:1) + Lags(salt.timeseries, 1:1)
## Model 2: wnp1diff ~ Lags(wnp1diff, 1:1)
##   Res.Df Df     F Pr(>F)  
## 1     17                  
## 2     18 -1 3.265 0.0885 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Granger causality test
## 
## Model 1: salt.timeseries ~ Lags(salt.timeseries, 1:1) + Lags(wnp1diff, 1:1)
## Model 2: salt.timeseries ~ Lags(salt.timeseries, 1:1)
##   Res.Df Df      F Pr(>F)
## 1     17                 
## 2     18 -1 3.0062  0.101

Salt 領先 WNP 一年