2014-11-06 61 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