### Selected R commands and output used in Chapter 1 > require(fNonlinear) > set.seed(1) > x <- rnorm(300) > bdsTest(x) Title: BDS Test Test Results: PARAMETER: Max Embedding Dimension: 3 eps[1]: 0.482; eps[2]: 0.964 eps[3]: 1.446; eps[4]: 1.927 STATISTIC: eps[1] m=2: -1.1256; eps[1] m=3: -1.4948 eps[2] m=2: -0.7145; eps[2] m=3: -1.1214 eps[3] m=2: -0.6313; eps[3] m=3: -0.8081 eps[4] m=2: -0.7923; eps[4] m=3: -1.2099 P VALUE: eps[1] m=2: 0.2604; eps[1] m=3: 0.135 eps[2] m=2: 0.4749; eps[2] m=3: 0.2621 eps[3] m=2: 0.5278; eps[3] m=3: 0.419 eps[4] m=2: 0.4282; eps[4] m=3: 0.2263 > require("quantmod") > getSymbols("IBM",from="2010-01-02",to="2015-09-30") > head(IBM) IBM.Open IBM.High IBM.Low IBM.Close IBM.Volume IBM.Adjusted 2010-01-04 131.18 132.97 130.85 132.45 6155300 117.6580 2010-01-05 131.68 131.85 130.10 130.85 6841400 116.2367 > rtn <- diff(log(as.numeric(IBM[,6]))) > ts.plot(rtn) # not shown > Box.test(rtn,type="Ljung",lag=10) Box-Ljung test data: rtn X-squared = 15.685, df = 10, p-value = 0.109 # No serial correlations > bdsTest(rtn) Title: BDS Test Test Results: PARAMETER: Max Embedding Dimension: 3 eps[1]: 0.006; eps[2]: 0.012 eps[3]: 0.018; eps[4]: 0.024 STATISTIC: eps[1] m=2: 4.4058; eps[1] m=3: 5.3905 eps[2] m=2: 4.2309; eps[2] m=3: 5.429 eps[3] m=2: 3.9341; eps[3] m=3: 5.4255 eps[4] m=2: 3.7848; eps[4] m=3: 5.3304 P VALUE: eps[1] m=2: 1.054e-05; eps[1] m=3: 7.026e-08 eps[2] m=2: 2.327e-05; eps[2] m=3: 5.666e-08 eps[3] m=2: 8.349e-05; eps[3] m=3: 5.78e-08 eps[4] m=2: 0.0001538; eps[4] m=3: 9.802e-08 #### > set.seed(15) > xt <- rnorm(300) > Box.test(xt,lag=10,type='Ljung') Box-Ljung test data: xt X-squared = 11.095, df = 10, p-value = 0.3502 # No serial correlations > Box.test(xt^2,lag=10,type='Ljung') Box-Ljung test data: xt^2 X-squared = 8.4539, df = 10, p-value = 0.5846 # Q-star test > require(quantmod) > getSymbols("MSFT",from="2009-01-02",to="2015-10-15",src=''google'') > msft <- diff(log(as.numeric(MSFT$MSFT.Close))) #log returns > Box.test(msft,lag=10,type='Ljung') Box-Ljung test data: msft X-squared = 17.122, df = 10, p-value = 0.0717 # No serial correlations > Box.test(msft^2,lag=10,type='Ljung') Box-Ljung test data: msft^2 X-squared = 70.54, df = 10, p-value = 3.487e-11 ## Nonlinearity ### Engle's test with m = 10. > nT <- length(msft) > y <- msft[11:nT]^2 > X <- NULL > for (i in 1:10){ + X <- cbind(X,msft[(11-i):(nT-i)]^2) + } > m2 <- lm(y~X) ## Linear regression > anova(m2) Analysis of Variance Table Response: y Df Sum Sq Mean Sq F value Pr(>F) X 10 0.00003036 3.0358e-06 4.65 1.447e-06 *** Residuals 1687 0.00110138 6.5286e-07 > qstar = 4.64*10 > pv = 1 -pchisq(qstar,10) > print(c(qstar,pv)) [1] 4.65e+01 1.162495e-06 ### ARCH effect exists #### > require(quantmod) > getSymbols("MSFT",from="2009-01-02",to="2015-10-15",src=''google'') > msft <- diff(log(as.numeric(MSFT$MSFT.Close))) # log returns > log(length(msft)) [1] 7.443078 > PRnd(msft,m=8) ND-stat & p-value 0.1828238 0.8549363 > PRnd(abs(msft),m=8) ND-stat & p-value 2.302991 0.02127936 #### > require(TSA) > da=read.table(``q-unrate.txt'',header=T) > rate <- da$rate > Keenan.test(unrate) $test.stat [1] 7.428776 $p.value [1] 0.006858382 $order [1] 5 > Tsay.test(unrate) $test.stat [1] 2.626 $p.value [1] 0.00108 $order [1] 5 #### > require(TSA) > data(lynx) > y <- log10(lynx) > Keenan.test(y) $test.stat [1] 11.66997 $p.value [1] 0.0009550016 $order [1] 11 > Tsay.test(y) $test.stat [1] 1.316 $p.value [1] 0.2256 $order [1] 11 > require(NTS) > F.test(y,thres=1.645) $test.stat [1] 1.971 $p.value [1] 0.02858 $order [1] 11 ###### > da <- read.table(``q-unrate.txt'',header=T) > unrate <- da$rate > require(NTS) > require(TSA) > thr.test(unrate,p=5,d=5) SETAR model is entertained Threshold nonlinearity test for (p,d): 5 5 F-ratio and p-value: 2.849921 0.01081263 > tlrt(unrate,p=5,d=5) $percentiles [1] 24.9 75.1 $test.statistic 33.028 $p.value 0.0003066953