Пакет 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, устраняет проблему с предупреждением, а также реализует предложение Гэвина по повышению эффективности (т. е. не рассчитывает коэффициенты, если они уже предоставлены пользователем). Спасибо вам обоим за указание на проблему...