R Under development (unstable) (2024-01-31 r85845 ucrt) -- "Unsuffered Consequences" Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(fracdiff) > > doExtras <- interactive() # for now > > .proctime00 <- proc.time() > > set.seed(107) > options(digits = 5) > > ## 1) > > x1 <- fracdiff.sim(5000, ar = .2, ma = -.4, d = .3, n.start=0, allow.0 = TRUE) > (fd1 <- fracdiff(x1$series, nar = 1, nma = 1, dtol = 1e-10)) Call: fracdiff(x = x1$series, nar = 1, nma = 1, dtol = 1e-10) Coefficients: d ar ma 0.26721 0.27824 -0.36951 sigma[eps] = 0.99138 a list with components: [1] "log.likelihood" "n" "msg" "d" [5] "ar" "ma" "covariance.dpq" "fnormMin" [9] "sigma" "stderror.dpq" "correlation.dpq" "h" [13] "d.tol" "M" "hessian.dpq" "length.w" [17] "residuals" "fitted" "call" > vcov(fd1) d ar1 ma1 d 0.00059661 -0.00080522 -0.00018971 ar1 -0.00080522 0.00161219 0.00066399 ma1 -0.00018971 0.00066399 0.00054849 > logLik(fd1) 'log Lik.' -7051.5 (df=4) > > fdCOVcomp <- + c("h", "covariance.dpq", "stderror.dpq", "correlation.dpq", "hessian.dpq") > fd1. <- fracdiff.var(x1$series, fd1, h = fd1$h / 2) > dns <- dimnames(fd1.$covariance.dpq) > > ## dput(sapply(fd1.[fdCOVcomp], signif, digits = 4)) # edited: > fd1.L <- list( + h = 3.7155e-05, + covariance.dpq = matrix(c(0.0005966, -0.0008052, -0.0001897, + -0.0008052, 0.001612, 0.000664, + -0.0001897, 0.000664, 0.0005485), + 3L, 3L, dimnames = dns), + stderror.dpq = c(0.02443, 0.04015, 0.02342), + correlation.dpq = matrix(c(1, -0.821, -0.3316, + -0.821, 1, 0.7061, + -0.3316, 0.7061, 1), 3), + hessian.dpq = matrix(c(-8252, -5875, 4258, + -5875, -5420, 4529, + 4258, 4529, -5834), + 3L, 3L, dimnames = dns)) > stopifnot(all.equal(fd1.[fdCOVcomp], fd1.L, tolerance = 2e-4)) > > fd1u <- fracdiff.var(x1$series, fd1, h = fd1$h * 8) > ## dput(sapply(fd1u[fdCOVcomp], signif, digits = 4)) : > fd1uL <- list( + h = 0.0005945, + covariance.dpq = matrix(c(0.0005966, -0.0008052, -0.0001897, + -0.0008052, 0.001612, 0.000664, + -0.0001897, 0.000664, 0.0005485), + 3L, 3L, dimnames = dns), + stderror.dpq = c(0.02443, 0.04015, 0.02342), + correlation.dpq = matrix(c(1, -0.821, -0.3316, + -0.821, 1, 0.7061, + -0.3316, 0.7061, 1), 3), + hessian.dpq = matrix(c(-8252, -5875, 4258, + -5875, -5420, 4529, + 4258, 4529, -5834), + 3L, 3L, dimnames = dns)) > stopifnot( all.equal(fd1u[fdCOVcomp], fd1uL, tolerance = 2e-4) ) > > ## 2) > > x2 <- fracdiff.sim( 2048, ar = .8, ma = -.4, d = .3, n.start=0, allow.0 = TRUE) > ## -> NA's and problems > fd2 <- fracdiff(x2$series, nar = length(x2$ar), nma = length(x2$ma)) > sfd2 <- summary(fd2) > ss2 <- lapply(sfd2[setdiff(names(sfd2), c("residuals", "fitted"))], + function(.) if(is.numeric(.)) signif(., digits = 7) else .) > ss2$coefficients <- ss2$coefficients[, -4] # drop p values > ss2S <- list( + log.likelihood = -2924.262, n = 2048, + msg = c(fracdf = "ok", fdcov = "ok"), + covariance.dpq = matrix(c(0.0004182859, -0.0007078449, -6.753008e-05, + -0.0007078449, 0.001712827, 0.0002692938, + -6.753008e-05, 0.0002692938, 0.0002572701), 3L, + dimnames = dns), + fnormMin = 45.62935, sigma = 1.008768, + correlation.dpq = matrix(c(1, -0.8362667, -0.2058572, + -0.8362667, 1, 0.405672, + -0.2058572, 0.405672, 1), 3, dimnames = dns), + h = 3.082264e-05, d.tol = 0.0001220703, M = 100, + hessian.dpq = matrix(c(-8557.83, -3810.55, 1742.32, + -3810.55, -2395.564, 1507.303, + 1742.32, 1507.303, -5007.377), 3, dimnames = dns), + length.w = 10254, + call = quote( + fracdiff(x = x2$series, nar = length(x2$ar), nma = length(x2$ma))), + coefficients = matrix(c(0.3374173, 0.7709664, -0.3810478, + 0.02045204, 0.04138631, 0.01603964, + 16.49798, 18.62854, -23.75663), + 3, 3, dimnames = dimnames(ss2$coefficients)), + df = 4, aic = 5856.524, symbolic.cor = FALSE) > ## > if(doExtras) + print(all.equal(ss2S, ss2, tol = 0)) # 0.0001273 (32b Win); TRUE (64b F30, gcc) > stopifnot(all.equal(ss2S, ss2, tol = 4e-4)) > > fd2. <- fracdiff.var(x2$series, fd2, h = fd2$h / 2) > sfd2. <- sapply(fd2.[fdCOVcomp], signif, digits = 4) > sfd2S <- ## dput(sapply(fd2.[fdCOVcomp], signif, digits = 5)) + list(h = 1.5411e-05, + covariance.dpq = matrix(c( 5.4726e-05,-9.261e-05, -8.8353e-06, + -9.261e-05, 0.0006717, 0.00016997, + -8.8353e-06, 0.00016997, 0.00024779), 3, dimnames=dns), + stderror.dpq = c(0.0073977, 0.025917, 0.015741), + correlation.dpq = matrix(c(1, -0.48303, -0.075871, + -0.48303, 1, 0.41661, + -0.075871, 0.41661, 1), 3), + hessian.dpq = matrix(c(-24440, -3810.6, 1742.3, + -3810.6, -2395.6, 1507.3, + 1742.3, 1507.3,-5007.4), 3, dimnames=dns)) > ## > if(doExtras) + print(all.equal(sfd2S, sfd2., tol = 1e-6, countEQ=TRUE)) # 8.7655e-5 > stopifnot(all.equal(sfd2S, sfd2., tol = 2e-4, countEQ=TRUE)) > > fd2u <- fracdiff.var(x2$series, fd2, h = fd2$h * 8)#-> warning, unable .. corr... Warning message: In fracdiff.var(x2$series, fd2, h = fd2$h * 8) : unable to compute correlation matrix > sd2u <- sapply(fd2u[fdCOVcomp], signif, digits = 4) > sd2uS <- list( ## dput(sapply(sd2u[fdCOVcomp], signif, digits = 5)) + h = 0.0002466, + covariance.dpq = matrix(c(-0.0003545, 6e-04, 5.724e-05, + 6e-04, -0.0005003, 5.816e-05, + 5.724e-05, 5.816e-05, 0.0002371), 3, dimnames=dns), + stderror.dpq = c(0, 0, 0.0154), + correlation.dpq = matrix(0, 3,3), + hessian.dpq = matrix(c(-3347, -3811, 1742, + -3811, -2396, 1507, + 1742, 1507,-5007), 3, dimnames=dns)) > ## > if(doExtras) + print(all.equal(sd2uS, sd2u, tol = 1e-8, countEQ=TRUE))# 0.000103 (32b Win); T.(64b F30) > stopifnot(all.equal(sd2uS, sd2u, tol = 4e-4, countEQ=TRUE)) > > > proc.time() user system elapsed 0.31 0.15 0.43