聚合时间序列

时间:2014-03-05 20:32:14

标签: r

我有一个时间序列类,在2012-01-01到2014-02-03之间的日期范围内绘制每个每日价值(河流流量)。我想通过应用aggregate()函数来删除季节性变化,但无法找到频率参数的正确语法。

使用dput:

创建数据样本(包含2个变量)
structure(c("2014-01-01", "2014-01-02", "2014-01-03", "2014-01-04", 
"2014-01-05", "2014-01-06", "2014-01-07", "2014-01-08", "2014-01-09", 
"2014-01-10", "2014-01-11", "2014-01-12", "2014-01-13", "2014-01-14", 
"2014-01-15", "2014-01-16", "2014-01-17", "2014-01-18", "2014-01-19", 
"2014-01-20", "2014-01-21", "2014-01-22", "2014-01-23", "2014-01-24", 
"2014-01-25", "2014-01-26", "2014-01-27", "2014-01-28", "2014-01-29", 
"2014-01-30", "2014-01-31", "2014-02-01", "2014-02-02", "2014-02-03", 
"2014-02-04", "2014-02-05", "2014-02-06", "2014-02-07", "2014-02-08", 
"2014-02-09", "2014-02-10", "2014-02-11", "2014-02-12", "2014-02-13", 
"2014-02-14", "2014-02-15", "2014-02-16", "2014-02-17", "2014-02-18", 
"2014-02-19", "2014-02-20", "2014-02-21", "2014-02-22", "2014-02-23", 
"2014-02-24", "2014-02-25", "2014-02-26", "2014-02-27", "2014-02-28", 
"2014-03-01", "2014-03-02", "119000", "125000", "129000", "125000", 
"122000", "155000", "157000", "152000", "156000", "156000", "106000", 
"147000", "123000", "123000", "128000", "150000", "135000", "135000", 
"134000", "144000", "154000", "152000", "139000", "147000", "135000", 
"120000", "119000", "124000", "132000", "152000", "138000", "140000", 
"137000", "133000", "126000", "102000", " 82900", "133000", "158000", 
"116000", "145000", "151000", "125000", "130000", "116000", "137000", 
"133000", "129000", "128000", "126000", "135000", "136000", "153000", 
"172000", "4.5", "4.6", "4.6", "4.5", "4.4", "4.3", "4.4", "4.4", 
"4.4", "4.4", "4.5", "4.5", "4.5", "4.5", "4.5", "4.4", "4.3", 
"4.3", "4.4", "4.4", "4.4", "4.5", "4.5", "4.4", "4.3", "4.3", 
"4.2", "4.1", "4.0", "4.0", "4.0", "4.0", "3.8", "3.7", "3.5", 
"3.3", "3.0", "2.8", "2.6", "2.5", "2.5", "2.5", "2.5", "2.6", 
"2.7", "2.5", "2.4", "2.7", "2.9", "2.8", "2.9", "3.1", "3.2", 
"3.3", "3.4", "3.4", "3.5", "3.7", "4.0", "4.2", "4.1"), .Dim = c(61L, 
3L), .Dimnames = list(NULL, c("date", "disch", "temp")), .Tsp = c(1, 
61, 1), class = c("mts", "ts", "matrix"))

当我尝试聚合时(仅在整个时间段内的disch数据上),我选择的频率(ts对象为365)产生一个空白图。我使用的语法是:

plot(aggregate(dalles.disch.ts, FUN=mean, freq=365)

阅读有关每月数据的示例,但不是每天。由于我有2012年和2013年全年以及2014年前两个月的每日数据,我应该提供哪些FUN和freq?

2 个答案:

答案 0 :(得分:0)

stl(),黄土时间序列的季节性分解会起作用吗?我使用频率= 7作为ts()中的参数,将它用于日常数据。

答案 1 :(得分:0)

首先,您可以使用zoo包中的aggregate()函数来聚合到月度,季度或年度数据。其次,有数百种方法可以降低数据的趋势。我建议做一个更彻底的搜索,但你可以使用黄土模型,diff(),移动窗口,以及无数其他信号处理方法。 decompose()和stl()函数是其中最简单的选项,它们都使用loess,它代表LOcal regrESSion。