tsDyn icon indicating copy to clipboard operation
tsDyn copied to clipboard

TVECM does not work with two threshold values

Open Justinxi opened this issue 3 years ago • 6 comments

Hi, Matthieu

Recently I am trying to use TVECM in my paper. When I write "nthresh=2" in Rstudio, an error happens and it is listed below.

library(tsDyn) #> Registered S3 method overwritten by 'quantmod' #> method from #> as.zoo.data.frame zoo packageVersion("tsDyn") #> [1]11.0.2 price<-read_excel("E:/spot and futures price.xlsx") tvec<-TVECM(price,nthresh=2,lag=2,ngridBeta=300,ngridTh=300,plot=TRUE,trim=0.05,common="All") #> error in allgammas[seq(from=wh.thresh + ninter, to=length(allgammas) - :only 0's may be mixed with negative subscripts

However, R runs smoothly if nthresh is set to 1. Could you please fix the bug?

Best Xi

Justinxi avatar May 26 '22 01:05 Justinxi

Sorry, your code is not reproducible. See How to make a great R reproducible example

Here is a minimal reproducible code using reprex(), where the code works fine:

library(tsDyn)
#> Registered S3 method overwritten by 'quantmod':
#>   method            from
#>   as.zoo.data.frame zoo
out <- TVECM(zeroyld,nthresh=2,lag=2,ngridBeta=300,ngridTh=300,plot=TRUE,trim=0.05,common="All")
#> 1233 (1.4%) points of the grid lead to regimes with percentage of observations < trim and were not computed

#> Best threshold from first search -1.312 
#> Best cointegrating value 1.045747 
#> There were  3  thresholds values which minimize the SSR in the conditional step, the first one was taken
#> Second best (conditionnal on the first one) -1.312 -0.529     SSR 150.3263 
#> There were  12  thresholds values which minimize the SSR in the iterative step, the first one was taken
#> Second step best thresholds -1.414 -0.529             SSR 149.0925

Created on 2022-05-27 by the reprex package (v2.0.1)

MatthieuStigler avatar May 27 '22 07:05 MatthieuStigler

library(tsDyn)
#> Registered S3 method overwritten by 'quantmod':
#>   method            from
#>   as.zoo.data.frame zoo
packageVersion("tsDyn")
#> [1] '11.0.2'
price <- structure(list(`futures price` = c(6.4, 6.23, 6.17, 
    6.49, 6.3, 6.05, 5.89, 5.75, 5.74, 5.91, 5.5, 5.47, 4.98, 
    4.83, 5.32, 4.53, 4.23, 4.01, 4.08, 3.89, 3.7, 3.33, 4.23, 
    4.21, 4.3, 4.07, 4.09, 4.44, 4.37, 4.47, 5.11, 5.13, 5.07, 
    4.99, 4.57, 4.86, 5.18, 5.07, 4.47, 4.2, 4.37, 4.8, 4.57, 
    4.53, 4.14, 4.19, 4.24, 4.18, 3.88, 3.66, 3.45, 3.63, 3.71, 
    3.48, 3.47, 3.93, 4.38, 4.11, 4.44, 4.57, 4.9, 4.76, 4.9, 
    4.87, 4.99, 5.13, 5.14, 4.73, 4.25, 4.29, 4.71, 4.7, 3.05, 
    2.72, 3.04, 3.13, 2.85, 3.05, 2.98, 2.92, 3.06, 3.27, 3.08, 
    3.04, 3.73, 3.86, 3.69, 3.33, 3.22, 3.47, 3.65, 3.49, 3.51, 
    3.36, 3.51, 3.45, 3.6, 3.77, 3.91, 3.87, 3.91, 3.95, 4.07, 
    4, 4.16, 4.38, 4.74, 4.55, 4.67, 4.4, 4.35, 4.09, 4.27, 4.42, 
    4.2, 4.23, 4.28, 4.54, 4.28, 4.23, 4.16, 4.08, 4.03, 4.04, 
    4.12, 4.12, 4.18, 4.2, 4.25, 4.29, 4.32, 4.32, 4.27, 4.33, 
    4.38, 4.41, 4.5, 4.51, 4.44, 4.31, 4.29, 4.35, 4.32, 4.34, 
    4.51, 4.42, 4.53, 4.58, 4.55, 4.49, 4.4, 4.95, 5.32, 5.3, 
    5.12, 5.61, 5.39, 5.46, 5.66, 5.35, 5.35, 5.41, 5.37, 5.46, 
    5.39, 5.02, 5.15, 5.11, 4.97, 4.87, 4.77, 4.62, 4.82, 4.96, 
    5.18, 5.13, 4.59, 4.71, 4.67, 5.01, 4.83, 5.09, 4.81, 4.62, 
    4.56, 4.8, 4.8, 4.49, 4.61, 4.65, 4.59, 4.5, 4.35, 4.42, 
    4.41, 4.43, 4.4, 4.49, 4.43, 4.36, 4.5, 4.48, 4.64, 4.79, 
    4.9, 5.02, 4.9, 4.8, 4.67, 4.91, 4.69, 4.58, 4.51, 4.53, 
    4.63, 4.83, 5.07, 5.07, 4.93, 5.04, 5.03, 5.26, 5.37, 5.52, 
    5.71, 5.52, 5.84, 5.82, 6.07, 6.44, 6.42, 6.4, 6.24, 6.38, 
    6.58, 6.8, 6.74, 6.98, 7.13, 7, 6.21, 6.5, 7.06, 6.61, 6.81, 
    6.77, 6.8, 6.9, 6.89, 6.82, 6.43, 6.29, 5.87, 5.75, 6.01, 
    6.18, 5.86, 5.85, 5.17, 4.34, 4.64, 5.06, 4.87, 4.7, 4.99, 
    4.87, 5.13, 5.33, 5.25, 5.55, 5.56, 5.69, 5.73, 5.08, 5.22, 
    5.43, 5.2, 5.23, 5.24, 5.15, 5.25, 5.31, 5.3, 4.78, 4.8, 
    4.7, 4.84, 5.16, 5.12, 5.09, 5.17, 5.05, 5.14, 5.43, 5.54, 
    5.44, 5.49, 5.55, 5.66, 5.63, 5.7, 5.54, 5.65, 5.79, 5.74, 
    5.7, 5.76, 5.81, 6.03, 6.01, 5.67, 5.56, 5.75, 5.68, 5.74, 
    5.88, 5.94, 6.15, 6, 6.06, 6.17, 6.05, 6.13, 6.19, 6.03, 
    6.21, 6.27, 6.23, 6.2, 5.94, 5.97, 6.13, 6.11, 6.23, 6.38, 
    6.34, 6.43, 6.34, 6.35, 6.32, 6.29, 6.43, 6.38, 6.39, 6.38, 
    6.11, 6.26, 6.27, 6.12, 6.1, 6.04, 5.91, 5.79, 5.97, 6.01, 
    5.98, 5.65, 5.8, 5.91, 5.75, 5.84, 5.69, 5.73, 6.12, 6.04, 
    6.06, 6.08, 6.21, 6.13, 6.14, 6.18, 6.34, 6.41, 6.29, 6.16, 
    6.42, 6.35, 6.58, 6.49, 6.63, 6.76, 6.72, 6.8, 6.79, 6.62, 
    6.9, 7.02, 6.96, 7, 7.05, 7.12, 7.09, 7.04, 7.07, 6.85, 6.84, 
    6.66, 6.66, 6.74, 6.74, 6.66, 6.89, 6.93, 6.84, 6.74, 6.74, 
    7.32, 7.15, 7.16, 7.24, 7.19, 6.78, 6.82, 6.87, 6.85, 6.96, 
    7.07, 7.09, 7.14, 7.07, 7.01, 6.96, 6.93, 7.12, 7.41, 7.65, 
    7.66, 7.48, 7.35, 7.33, 7.71, 7.47, 7.06, 7.1, 6.95, 6.73, 
    6.75, 6.8, 6.68, 6.82, 6.41, 6.46, 6.49, 6.73, 6.67, 7.04, 
    7.04, 7.05, 6.99, 6.97, 6.78, 6.9, 6.94, 7.17, 7.13, 7.03, 
    6.96, 6.81, 6.81, 6.88, 6.85, 7.14, 7.09, 7.27, 7.3, 7.17, 
    7.36, 7.4, 7.56, 7.44, 7.54, 7.63, 7.6, 7.59, 7.6, 7.37, 
    7.35, 7.3, 7.3, 7.22, 7.18, 7.32, 7.24, 7.44, 7.4, 7.44, 
    7.56, 7.5, 7.61, 7.51, 7.41, 7.45, 7.41, 7.46, 7.48, 7.58, 
    7.52, 7.33, 7.44, 7.44), `spot price` = c(6.47, 6.18, 6.18, 
    6.46, 6.27, 6.05, 5.89, 5.73, 5.55, 5.88, 5.46, 5.4, 4.94, 
    4.8, 5.25, 4.55, 4.25, 4.01, 4.06, 3.88, 3.7, 3.37, 4.16, 
    4.49, 4.35, 4.06, 4.1, 4.42, 4.37, 4.49, 5.11, 5.15, 5.07, 
    5.02, 4.58, 4.86, 5.2, 5.07, 4.45, 4.2, 4.36, 4.79, 4.57, 
    4.53, 4.12, 4.17, 4.22, 4.18, 3.88, 3.65, 3.46, 3.65, 3.71, 
    3.49, 3.44, 3.9, 4.4, 4.1, 4.43, 4.56, 4.89, 4.82, 4.87, 
    4.85, 4.95, 5.11, 5.13, 4.73, 4.29, 4.26, 4.67, 4.72, 3.02, 
    2.68, 2.99, 3.02, 2.83, 3.02, 2.95, 2.92, 3.06, 3.25, 3.08, 
    3.04, 2.95, 3.65, 3.68, 3.52, 3.23, 3.23, 3.47, 3.55, 3.49, 
    3.2, 3.3, 3.41, 3.5, 3.65, 3.96, 3.8, 3.9, 3.9, 4.12, 4.14, 
    3.97, 4.55, 4.4, 4.65, 4.63, 4.3, 4.33, 4.19, 4.04, 4.31, 
    4.31, 4.06, 4.23, 4.55, 4.4, 4.16, 4.2, 4.06, 3.95, 3.99, 
    4.11, 4.1, 4.06, 4.1, 4.26, 4.3, 4.28, 4.24, 4.33, 4.36, 
    4.3, 4.4, 4.39, 4.43, 4.48, 4.4, 4.28, 4.33, 4.31, 4.28, 
    4.43, 4.49, 4.44, 4.57, 4.54, 4.49, 4.38, 4.75, 5.05, 5.38, 
    5.13, 5.3, 5.37, 5.42, 5.44, 5.4, 5.3, 5.37, 5.47, 5.33, 
    5.38, 5.15, 5.05, 5.12, 5.05, 4.88, 4.7, 4.58, 4.56, 5.07, 
    5.27, 5.14, 4.78, 4.64, 4.58, 4.61, 4.81, 4.78, 4.87, 4.63, 
    4.64, 4.7, 4.73, 4.78, 4.47, 4.57, 4.63, 4.46, 4.33, 4.44, 
    4.44, 4.48, 4.38, 4.41, 4.41, 4.36, 4.36, 4.47, 4.49, 4.7, 
    4.65, 4.8, 4.77, 4.84, 4.69, 4.7, 4.65, 4.69, 4.56, 4.45, 
    4.52, 4.73, 5.01, 5.04, 5.05, 4.93, 5.02, 4.97, 5.34, 5.47, 
    5.55, 5.6, 5.48, 5.93, 5.97, 6.01, 6.45, 6.34, 6.3, 6.21, 
    6.31, 6.7, 6.74, 6.92, 6.85, 7.1, 6.85, 6.47, 6.83, 6.97, 
    6.65, 6.89, 6.71, 6.72, 6.93, 6.81, 6.51, 6.19, 6.15, 6, 
    6, 6.1, 6.08, 5.8, 5.35, 5.1, 4.17, 4.9, 4.6, 4.75, 4.72, 
    5.03, 5, 5.26, 5.3, 5.23, 5.46, 5.62, 5.77, 5.52, 5.21, 5.39, 
    5.28, 5.03, 5.25, 5.09, 5.1, 5.28, 5.34, 4.75, 4.72, 4.6, 
    4.59, 5.23, 5.08, 4.98, 5.05, 5.1, 4.94, 5.19, 5.5, 5.41, 
    5.45, 5.4, 5.63, 5.68, 5.55, 5.6, 5.56, 5.64, 5.84, 5.77, 
    5.7, 5.82, 5.8, 5.97, 5.91, 5.5, 5.6, 5.72, 5.64, 5.7, 5.88, 
    6.07, 6, 6.02, 6.1, 6.1, 5.99, 6.05, 6.1, 6.11, 6.29, 6.27, 
    6.17, 6.2, 5.93, 5.95, 6.07, 6.22, 6.18, 6.34, 6.28, 6.43, 
    6.34, 6.3, 6.26, 6.38, 6.4, 6.25, 6.35, 6.25, 6.04, 6.25, 
    6.23, 6.07, 6.06, 5.95, 5.81, 5.83, 5.94, 5.98, 5.9, 5.72, 
    5.8, 5.85, 5.68, 5.74, 5.67, 6.06, 6.03, 5.88, 6.01, 6.16, 
    6.23, 6.03, 6.15, 6.16, 6.35, 6.33, 6.26, 6.38, 6.35, 6.3, 
    6.56, 6.61, 6.6, 6.7, 6.68, 6.78, 6.7, 6.64, 6.91, 6.93, 
    6.88, 7.02, 7.05, 7.09, 7.02, 6.95, 7, 6.77, 6.66, 6.58, 
    6.6, 6.65, 6.64, 6.6, 6.93, 6.7, 6.71, 6.59, 6.77, 7.1, 7.05, 
    7.06, 7.25, 7.02, 6.81, 6.76, 6.82, 6.76, 6.92, 6.96, 7.06, 
    7.06, 6.87, 6.92, 6.86, 6.88, 7.29, 7.35, 7.66, 7.62, 7.37, 
    7.26, 7.2, 7.66, 7.29, 6.93, 6.9, 6.82, 6.96, 6.7, 6.66, 
    6.67, 6.61, 6.26, 6.36, 6.45, 6.7, 6.7, 6.94, 7.02, 6.77, 
    7, 6.9, 6.81, 6.79, 7.14, 7.08, 7.12, 6.96, 6.82, 6.77, 6.82, 
    6.83, 6.88, 7.07, 7.06, 7.27, 7.33, 7.16, 7.52, 7.5, 7.5, 
    7.43, 7.5, 7.62, 7.48, 7.54, 7.51, 7.38, 7.3, 7.25, 7.28, 
    7.2, 7.22, 7.23, 7.26, 7.4, 7.38, 7.48, 7.58, 7.52, 7.54, 
    7.48, 7.45, 7.41, 7.43, 7.45, 7.52, 7.5, 7.36, 7.36, 7.42)), 
    class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
        -500L))
tvec <- TVECM(price, nthresh = 2, lag = 2, ngridBeta = 300, ngridTh = 300, plot = TRUE, trim = 0.15)
#> Error in allgammas[seq(from = wh.thresh + ninter, to = length(allgammas) -  : only 0's may be mixed with negative subscripts

Created on 2022-05-31 by the reprex package (v2.0.1)

Justinxi avatar May 31 '22 03:05 Justinxi

@Justinxi , your example is unfortunately still not self-reproducible. :-( I thought the link How to make a great R reproducible example provided clear guidelines about reproducibility?

But well, can you please attach (in csv format) the smallest part of your dataset such that the error above happens?

MatthieuStigler avatar May 31 '22 07:05 MatthieuStigler

I have revised my previous self-reproducible example. Please check.

Justinxi avatar Jun 01 '22 08:06 Justinxi

good job! Now we have a reproducible example, and I confirm this is a bug. I will need to look into this

MatthieuStigler avatar Jun 01 '22 08:06 MatthieuStigler

Could you please let me know if you fix it?

Justinxi avatar Jun 02 '22 02:06 Justinxi