-4

我有以下时间序列数据。它有 60 个数据点,如下所示。请在下面查看此数据的简单图。我正在使用 R 来绘制它。我认为如果我在图中的点上画一条移动平均曲线,那么我们可以更好地理解数据中的模式。我不知道如何在 R 中做到这一点。有人可以帮我做到这一点。此外,我不确定这是否是识别模式的好方法。如果有更好的方法,也请建议我。谢谢你。

x <- c(18,21,18,14,8,14,10,14,14,12,12,14,10,10,12,6,10,8,
       14,10,10,6,6,4,6,2,8,6,2,6,4,4,2,8,6,6,8,12,8,8,6,6,2,2,4,
       4,4,8,14,8,6,6,2,6,6,4,4,8,6,6)

图形

4

2 回答 2

6

要回答您的问题,您可以在其中moving averages的帮助下完成它。rollmeanzoo

From Joshua's comment:您还可以查看TTR依赖于xts依赖的包zoo。此外,包中还有其他移动平均线TTR:检查?MA

require(TTR)
# assuming your vector is loaded in dat
# sliding window / moving average of size 5
dat.k5 <- rollmean(dat, k=5)
于 2013-01-23T15:34:33.953 回答
5

一种合理的可能性:

d <- data.frame(x=scan("tmp.dat"))
qplot(x=seq(nrow(d)),x,data=d)+geom_smooth(method="loess")

编辑:从评论移到答案,基于https://meta.stackexchange.com/questions/164783/why-was-a-seemingly-relevant-non-offensive-comment-removed

关于“这是识别模式的好方法”(这对于 StackOverflow 来说有点离题,但无论如何);我认为滚动方法是完全值得尊敬的,尽管确实存在更复杂的方法(例如此处显示的局部加权回归 [loess/lowess])。然而,在我看来,这里并没有太多复杂的模式需要检测:数据似乎最初随着时间的推移而下降,然后趋于平稳。滚动方式和更复杂的方法可能看起来更漂亮,但我认为它们不会在这个数据集中识别出任何更深层次的模式......

如果您想一次对多个数据集执行此类操作(如您的评论中所示),您可能会喜欢ggplot自动生成同一图的多线或多面版本的功能。

于 2013-01-23T15:40:46.903 回答