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

3

我的数据集包括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

从图表中可以看出,每天的变化很大,使得图表看起来非常杂乱。我还尝试使用scale_y_log10对我正在研究的方差进行对数化处理,但结果非常糟糕...

我该如何绘制平滑曲线,以便展示所有变化噪声之外的趋势?

1个回答

1
你可以使用来自库methodsstat_smooth。在你的情况下,它看起来会像这样。
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)

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

1
有没有其他不涉及使用线性回归模型的方法进行这项工作? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接