biwavelet包:如何为“wtc”函数设置“lag1”值

时间:2016-07-11 16:27:40

标签: r wavelet biwavelet

我正在使用{ center: '[page] of [topage]' }包来进行小波一致性分析。我在设置lag1值(应该是包含每个时间序列的AR(1)系数的向量)时遇到问题。以下给出了可重复的示例。非常感谢。

biwavelet

当我这样做时,会发生如下错误:

t1 <- cbind(1:100, rnorm(100))
t2 <- cbind(1:100, rnorm(100))
lag.t1=acf(t1,plot=F)$acf[2]
lag.t2=acf(t2,plot=F)$acf[2]
wtc.t1t2 <- wtc(t1, t2, max.scale = 32,lag1=c(lag.t1,lag.t2))

2 个答案:

答案 0 :(得分:1)

wtc似乎有一个错误。它将lag1传递给wt函数以分别计算每个系列的小波变换,但是没有对lag1进行子集化,这是警告来自的地方 - 基本上是错误的延迟在第二个系列中使用,因为代码需要lag1的长度为1的向量。

奇怪的是,代码在内部计算每个系列的AR(1)系数,但是如果你想测试重要性,这些只会在代码中使用。这些永远不会传递;如果维护者只是在wtc顶层传递这些系数,如果用户没有提供它们,那么它将为每个系列节省两次AR模型的计算,如果用户没有提供lag1向量的子集供应他们。

我建议您联系维护人员以提及问题。

与此同时,最初不要打扰计算lag1;内部wt.sig,由wtc调用 - &gt; wt,如果lag1NULL,则会通过arima()估算AR(1)系数,这与wtc计算其重要性的方式相同测试该功能。如果您忽略lag1并让它在内部为您计算coefs,代码将执行您想要的操作。

答案 1 :(得分:0)

在调用wtc函数之前,您不必估计AR(1)系数,因为这是在内部完成的。但是,如果您坚持计算系数并将其提供给wtc,GitHub上提供的最新版本的biwavelet(0.20.9)可以解决警告问题并实施Gavin提高效率的建议(即,如果系统已经由用户提供,则不计算系数)。多谢你们两个指出这个问题......