У меня есть ежедневный временной ряд с данными за 30 лет для ряда станций. Я использую пакет biwavelet
в R для проверки периодичности данных, используя следующий код
di <- data.frame(d1$date, d1$t_min)
wt.t1 = wt(di)
par(oma = c(0, 0, 0, 1), mar = c(5, 4, 4, 5) + 0.1)
plot(wt.t1, plot.cb = TRUE, plot.phase = FALSE)
Я получил эту ошибку при запуске кодов
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (non-NA) cases
В некоторых наборах данных, которые я использую, отсутствует дневное значение в каждом году. Я совершенно новый R и программирование. Кажется, что пропущенное значение приведет к такой ошибке при использовании пакета biwavelet? Мой вопрос, есть ли способ решить эту проблему в R?
2 ответа
Я столкнулся с той же проблемой. Я не специалист по вейвлетам или обработке сигналов, так что извините за отсутствие технических деталей.
wt
не будет работать, если отсутствуют данные (NA
). Если вы попытаетесь полностью избавиться от строк с NA
, он будет жаловаться, что предоставленные вами данные не берутся с «регулярными интервалами выборки».
Если ваши отсутствующие данные очень редки, вы можете разделить свой набор данных на «фрагменты», где есть непрерывные данные с регулярными интервалами ... и запускать wt по каждому «фрагменту» независимо. Однако при разделении набора данных на более мелкие наборы wt теряет способность находить низкие частоты. Хорошо, если интересующий вас частотный диапазон достаточно высок, чтобы иметь несколько периодов в ваших «фрагментах» непрерывных данных.
Альтернативой может быть попытка какой-либо интерполяции, чтобы заполнить пробелы, опять же, это зависит от ваших данных, степени ваших пробелов и т. д. Это, безусловно, даст вам странные результаты вблизи того места, где вы интерполировали, но, по крайней мере, вы сохраните свои данные «в целом» и сохраните возможность поиска более низких частот.
Попробуйте заменить NA на 0.
data[is.na(data)] <- 0
Похожие вопросы
Новые вопросы
r
R — это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, используйте минимально воспроизводимые примеры, которые другие могут запустить с помощью копирования и вставки. Показать желаемый результат полностью. Используйте dput() для данных и укажите все небазовые пакеты с помощью library(). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. Для вопросов по статистике используйте https://stats.stackexchange.com.