Пакет biwavelet: как установить значение "lag1" для функции "wtc"

Я использую biwavelet пакет для проведения вейвлет-когерентного анализа. У меня есть проблема в правильной установке значений lag1 (который должен быть вектором, содержащим коэффициент AR(1) каждого временного ряда). Ниже приведен воспроизводимый пример. Большое спасибо.

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))

Когда я делаю это, возникает ошибка, как это:

Warning messages:
1: In 2 * lag1 * cos(freq * 2 * pi) :
   longer object length is not a multiple of shorter object length
2: In 1 - 2 * lag1 * cos(freq * 2 * pi) + lag1^2 :
   longer object length is not a multiple of shorter object length
3: In (1 - lag1^2)/(1 - 2 * lag1 * cos(freq * 2 * pi) + lag1^2) :
   longer object length is not a multiple of shorter object length

2 ответа

Кажется, есть ошибка в wtc, Это проходит lag1 к wt функция для вычисления вейвлет-преобразования каждой серии отдельно, но делает это без поднабора lag1, откуда приходят предупреждения - в основном во второй серии используется неправильная задержка, поскольку код ожидает вектор длины 1 для lag1,

Странно то, что код внутренне вычисляет коэффициенты AR(1) для каждой серии, но они используются позже в коде только в том случае, если вы хотите проверить значимость. Они никогда не передаются; это спасло бы вычисление модели AR дважды для каждой серии, если сопровождающий только что передал эти коэффициенты из wtc верхний уровень, если пользователь не предоставил их, и подмножество lag1 вектор, если пользователь предоставляет их.

Я предлагаю вам связаться с сопровождающим, чтобы упомянуть проблему.

А пока просто не заморачивайся вычислениями lag1 первоначально; внутри wt.sigкоторый называется wtc -> wt, если lag1 является NULL, он оценивает коэффициент AR(1) через arima(), который так же, как wtc вычисляет его для проверки значимости в этой функции. Код будет делать то, что вы хотите, если вы просто игнорируете lag1 и пусть он подсчитывает для вас внутренности.

Вам не нужно оценивать коэффициент AR(1) до вызова wtc функция, как это сделано внутри. Тем не менее, если вы настаиваете на вычислении коэффициентов и предоставлении их wtcпоследняя версия biwavelet (0.20.9), доступная на GitHub, устраняет проблему с предупреждением, а также реализует предложение Гэвина по повышению эффективности (т. е. не рассчитывает коэффициенты, если они уже предоставлены пользователем). Спасибо вам обоим за указание на проблему...

Другие вопросы по тегам