Об использовании пакета biwavelet в R
Может кто-нибудь предложить, почему следующий пример кода не работает:
require(biwavelet)
t <- seq(1/24, 365, 1/24)
A <- 2
fs <- 1/24
y <- A + sin(2*pi*fs*t)
d = cbind(t,y)
wt.t1 <- wt(d)
plot(wt.t1)
Это генерирует ошибку, заявляющую:
Error in image.default(x$t, yvals, t(zvals), zlim = zlims, ylim = rev(range(yvals)), :
invalid z limits
Как бы я исправить эту проблему?
Дополнительно:
В ответ на ответ Гэвина Симпсона: если я сохраню данные, чтобы включить только одну частоту, но изменил вектор времени, код работает нормально.
require(biwavelet)
A <- 2
fs <- 1/24
y <- A + sin(2*pi*fs*t)
d <- cbind(seq(1,8760), y)
wt.t1 <- wt(d)
plot(wt.t1)
2 ответа
Я подозреваю, что это связано с тем, что у вас есть только одна частота, и функция не настроена для этого. Я могу получить сюжет, добавив белый шум y
:
require(biwavelet)
t <- seq(1/24, 365, 1/24)
A <- 2
fs <- 1/24
y <- A + sin(2*pi*fs*t)
d <- cbind(t, y + rnorm(length(y))) ## add some white noise to y
wt.t1 <- wt(d)
plot(wt.t1)
Вы можете связаться с сопровождающими, чтобы сообщить о проблеме. Я получил заговор, чтобы сделать что-то, когда я отладил это и полностью изменил zlim
чтобы diff(zlim)
был положительным, так что может быть, что автор plot()
Метод делал предположение, которое не выполняется во всех случаях.
Вы обнаружили ошибку в функции wt.R (ошибочные скобки). Эта ошибка была исправлена в версии 0.12 пакета biwavelet, поэтому теперь обе версии вашего кода должны работать.
Спасибо за обнаружение ошибки. Пожалуйста, не стесняйтесь по электронной почте сопровождающему пакета (т.е. мне) об ошибках в будущем.