2014-11-06 39 views
2

我有一個包含多個站的30年數據的每日時間序列。我使用R中的biwavelet封裝測試周期中的數據使用下面的代碼使用雙小波和具有NA值的數據在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?

回答

0

我遇到了同樣的問題。我不是小波或信號處理專家,所以對缺乏技術性感到抱歉。

wt如果缺少數據(NA s)將不起作用。如果您試圖完全擺脫NA的行,它會抱怨您提供的數據不是以「定期採樣的時間間隔」進行的。

如果您缺少的數據非常罕見,您可以將數據集分成「塊」,其中存在連續的,有規律間隔的數據......並獨立運行每個「塊」。但是,通過將數據集分成更小的集合,wt將失去找到低頻率的能力。如果您感興趣的頻率範圍足夠高,以至於在連續數據的「塊」中有幾個時段,那麼這很好。

另一種方法是嘗試某種內插來填補空白,再次取決於你的數據,你的差距的程度等。它肯定會給你在插入位置附近的奇怪結果,但至少可以保持數據「整體」並保留搜索較低頻率的能力。

0

以0

data[is.na(data)] <- 0 
+0

嘗試更換來港也看到https://github.com/tgouhier/biwavelet/issues/63 – 2017-03-01 13:21:54