如何在R上平滑时间序列?

时间:2015-03-08 08:51:20

标签: r ggplot2

我的数据集包含对Facebook帖子及其互动的多次每日观察。我正在使用一年的移动时间间隔(YTD)。

出于本研究的目的,我将这种交互分开,正如您在此数据样本中所看到的那样。数据已经很长了,我相信它远非整洁,但它有助于ggplot完成这项工作。

from_name        created_time                              id       variable value        day
1440 Toyota Perú (Grupo Oficial) 2014-03-10 11:01:25 123538507674613_782719435089847    likes_count   140 2014-03-10
5491 Toyota Perú (Grupo Oficial) 2014-03-10 11:01:25 123538507674613_782719435089847 comments_count    10 2014-03-10
9542 Toyota Perú (Grupo Oficial) 2014-03-10 11:01:25 123538507674613_782719435089847   shares_count    17 2014-03-10
1439 Toyota Perú (Grupo Oficial) 2014-03-10 15:49:25 123538507674613_782845248410599    likes_count    61 2014-03-10
5490 Toyota Perú (Grupo Oficial) 2014-03-10 15:49:25 123538507674613_782845248410599 comments_count     1 2014-03-10
9541 Toyota Perú (Grupo Oficial) 2014-03-10 15:49:25 123538507674613_782845248410599   shares_count     0 2014-03-10

我的ggplot代码是:

ggplot(YTD, aes(day, value, color = variable)) + geom_line() +  
facet_wrap(~ from_name) + theme(legend.position = "bottom")

我明白了:

enter image description here

从图中可以看出,每天都存在很多差异,这使得图形看起来非常混乱。我还尝试使用我正在研究的var的scale_y_log10来记录值,但图表很糟糕......

如何绘制平滑线以便在所有方差噪声之外显示趋势?

1 个答案:

答案 0 :(得分:1)

您可以使用库stat_smooth中的methods。在你的情况下,它看起来像

p <- ggplot(YTD, aes(day, value, color = variable)) + geom_line() + 
facet_wrap(~ from_name) + theme(legend.position = "bottom")

# Apply a locally weighted regression
p + stat_smooth(method = "loess", formula = y ~ x, size = 1)

另一种选择是如果想要简单的话,可以使用矩形或三角平滑技术直接平滑数据。