我有一个时间序列类,在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?
答案 0 :(得分:0)
stl(),黄土时间序列的季节性分解会起作用吗?我使用频率= 7作为ts()中的参数,将它用于日常数据。
答案 1 :(得分:0)
首先,您可以使用zoo包中的aggregate()函数来聚合到月度,季度或年度数据。其次,有数百种方法可以降低数据的趋势。我建议做一个更彻底的搜索,但你可以使用黄土模型,diff(),移动窗口,以及无数其他信号处理方法。 decompose()和stl()函数是其中最简单的选项,它们都使用loess,它代表LOcal regrESSion。