2

我有一个包含多个站点 30 年数据的每日时间序列。我正在使用biwaveletR 中的包来使用以下代码测试数据的周期性

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 中解决这个问题?

4

2 回答 2

0

我遇到了同样的问题。我不是小波或信号处理专家,很抱歉缺乏技术性。

wt如果缺少数据 ( NAs) 将无法工作。如果您尝试完全摆脱带有NAs 的行,它会抱怨您提供的数据不是以“定期采样间隔”获取的。

如果您丢失的数据非常罕见,您可以将您的数据集拆分为“块”,其中有连续的、规则间隔的数据……并在每个“块”上独立运行 wt。然而,通过将数据集分成更小的集合,wt 失去了寻找低频的能力。如果您感兴趣的频率范围足够高以在您的连续数据“块”中有几个周期,那就太好了。

另一种方法是尝试某种插值来填补空白,同样,这取决于您的数据、空白的程度等。它肯定会在您插值的附近给您带来奇怪的结果,但至少您保持您的数据“作为一个整体”,并保留搜索较低频率的能力。

于 2015-06-24T23:32:35.730 回答
0

尝试用 0 替换 NA。

data[is.na(data)] <- 0
于 2016-04-27T15:45:30.673 回答