将多变量XTS转换为R中的TS

时间:2017-05-29 22:13:04

标签: r time-series xts wavelet

我希望计算多变量时间序列数据集的小波变换。我打算使用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

1 个答案:

答案 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分钟做一次测量。