【问题标题】:R: using stl() on an xts objectR:在 xts 对象上使用 stl()
【发布时间】:2015-03-18 11:21:12
【问题描述】:

我对 R 比较陌生,所以请多多包涵。我正在尝试掌握基本的不规则时间序列分析。

这就是我的数据文件的样子,大约 40k 行。间距总是正好是 20 秒。

Time, Avg
04/03/2015 00:00:23,20.24
04/03/2015 00:00:43,20.38
04/03/2015 00:01:03,20.53
04/03/2015 00:01:23,20.54
04/03/2015 00:01:43,20.53

 data <- read.zoo("data.csv",sep=",",tz='',header=T,format='%d/%m/%Y %H:%M:%S')

我很乐意按分钟汇总

data <- to.minutes(as.xts(data))

以“open”列为例

head(data[,1])
                    as.xts(data).Open
2015-03-04 00:00:43             20.24
2015-03-04 00:01:43             20.53
2015-03-04 00:02:43             20.47
2015-03-04 00:03:43             20.38
2015-03-04 00:04:43             20.05
2015-03-04 00:05:43             19.84

data <- data[,1]

这就是我崩溃的地方

fit <- stl(data, t.window=15, s.window="periodic", robust=TRUE)
Error in stl(data, t.window = 15, s.window = "periodic", robust = TRUE) : 
series is not periodic or has less than two periods

我已经用谷歌搜索了错误消息,但对我来说并不是很清楚。周期=频率?对于我的数据集,我希望季节性组件是每周一次。

frequency(data) <- 52
fit <- stl(data, t.window=15, s.window="periodic", robust=TRUE)                   
Error in na.fail.default(as.ts(x)) : missing values in object

?

head(as.ts(data))
[1] 20.24    NA    NA    NA    NA    NA

呃,什么?

我做错了什么?我如何准备 xts 对象才能正确地将其传递给 stl()?

谢谢。

【问题讨论】:

标签: r time-series xts


【解决方案1】:

我提取 xts_object 的数值并为 stl 函数构建一个 ts 对象。但是,在这种情况下,xts_object 的时间戳会被完全忽略。

stl(ts(as.numeric(xts_object), frequency=52), s.window="periodic", robust=TRUE) 

【讨论】:

    猜你喜欢
    • 2012-12-02
    • 1970-01-01
    • 2020-07-20
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2016-08-11
    • 2019-06-15
    相关资源
    最近更新 更多