我希望计算多变量时间序列数据集的小波变换。我打算使用wavethresh包,特别是modwt()
函数。此函数的帮助文件指定对象为“单变量或多变量时间序列。也接受数字向量,矩阵和数据帧。”
目前我的数据集采用xts zoo格式,时间间隔为15分钟,我希望将其转换为ts,但是我遇到了很大困难。
我尝试了以下内容:
modwtCoeff <- modwt(as.ts(wideRawXTS,
+ start = head(index(wideRawXTS), 1),
+ end = tail(index(wideRawXTS), 1),
+ frequency = 1),
+ filter = "la8",
+ n.levels = "10",
+ boundary = "periodic",
+ fast = TRUE)
> class(wideRawXTS)
[1] "xts" "zoo"
其中head(index(wideRawXTS,1),1)
返回"2017-01-20 16:30:00 GMT"
而tail(index(wideRawXTS,1),1)
返回"2017-02-03 16:00:00 GMT"
由于上面的行,我收到以下错误:
Error in ts(coredata(x), frequency = frequency(x), ...) :
formal argument "frequency" matched by multiple actual arguments
错误在于xts to ts转换,因为我删除了modwt包装函数,但仍然得到相同的错误。在进一步谷歌搜索后,我遇到了这篇文章https://www.r-bloggers.com/preventing-argument-use-in-r/,但我并没有完全理解它。我的猜测是我可能需要将转换分解为单独的步骤,以避免在as.ts函数中使用某些参数时出错。
有人可以给我一些关于我在转换中出错的方向吗?为了提供可重现的示例,这里是wideRawXTS对象的输出的link。
答案 0 :(得分:2)
计算频率的一般功能是:
frequency = number_of_events / time_interval
由于您的数据在14天的时间间隔内有1343行,因此频率取决于您的时间单位。
时间单位:日
在这种情况下,频率为:
1343/14 = 95.93 => 96
这意味着,你每天做96次测量。
时间单位:小时
在这种情况下,频率为:
1343/(14*24) = 3.99 => 4
这意味着,你每小时进行4次测量。
时间单位:15分钟
在这种情况下,频率为:
1343/(14*24*4) = 0.999 => 1
这意味着,你每15分钟做一次测量。