如何在R中测量时间序列的平滑度?


25

有没有一种好的方法可以测量R中时间序列的平滑度?例如,

-1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0

比...光滑得多

-1, 0.8, -0.6, 0.4, -0.2, 0, 0.2, -0.4, 0.6, -0.8, 1.0

尽管它们具有相同的均值和标准差。如果有一个函数可以在一个时间序列上给我一个平稳的分数,那就太酷了。


4
平滑度在随机过程理论中具有明确定义的含义。(“变异函数是对表面粗糙度的基于统计的定量描述”:goldensoftware.com/variogramTutorial.pdf,第16页。)平滑度与变异函数外推到零距离有关。(连续差分的SD和滞后一自相关是快速而肮脏的版本)。基本信息包含在泰勒级数为0的系数中。例如,一个非零常数确实很粗糙;0处的高阶零表示一个非常平滑的序列。
ub

我也听说过仓促的指数。
泰勒

真可笑,我自己一直在想这件事。感谢您的发布!
克里斯·比利

@whuber:那是答案,不是评论。
naught101

@ naught101我谦虚地希望与众不同:我的评论是一个相关情况,它仅指用于对空间数据进行建模的理论过程,而不是指如何实际估算该平滑度。我有一个估算的技巧,我在多个维度上都很熟悉,但在一个维度上却不是,这很特别(由于时间箭头的方向),因此我犹豫地说,将多维程序应用于时间序列完全是常规甚至是好的方法。
whuber

Answers:


22

差异的标准偏差将为您提供大致的平滑度估算:

x <- c(-1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0)
y <- c(-1, 0.8, -0.6, 0.4, -0.2, 0, 0.2, -0.4, 0.6, -0.8, 1.0)
sd(diff(x))
sd(diff(y))

更新:正如Cyan所指出的,这为您提供了一个与比例有关的度量。类似的与比例无关的度量将使用变异系数而不是标准偏差:

sd(diff(x))/abs(mean(diff(x)))
sd(diff(y))/abs(mean(diff(y)))

在这两种情况下,较小的值都对应于更平滑的级数。


1
该分数不是尺度不变的,这取决于应用程序可能有意义,也可能没有意义。(而且我自己的建议尺度不变的,因此也应注意这一点。)此外,值得指出的是,对于上述得分,较小的值表示更平滑的时间序列。
青色2012年

1
谢谢@Cyan。我现在还添加了一个与比例无关的版本。
罗伯·海德曼

2
您是否真的打算将diff这些分母包括在内?这些值将按代数方式减小,(x[n]-x[1])/(n-1)这是趋势的(粗略)度量,并且在许多情况下,应极其接近于零,从而导致不稳定且意义不大的统计信息。我对此感到困惑,但也许我忽略了一些明显的事情……
笨蛋

1
我曾经diff避免平稳的假设。如果使用分母定义,abs(mean(x))则缩放仅在x静止时起作用。采取差异意味着它也将适用于不同的平稳过程。当然,差异可能无法保持x稳定,然后仍然存在问题。由于这个原因,缩放时间序列非常棘手。但是我同意你的观点。我认为要想做得更好,就需要复杂得多的东西,例如使用非参数平滑器。
罗伯·海德曼

1
我本来以为恒定的趋势应该非常光滑,所以答案应该是0
罗布·海德门

13

滞后一自相关将用作得分,并且也具有相当简单明了的统计解释。

cor(x[-length(x)],x[-1])

分数解释:

  • 接近1的分数表示平稳变化的系列
  • 分数接近0表示数据点与下一个数据点之间没有整体线性关系(即plot(x [-length(x)],x [-1])不会给出具有任何明显线性的散点图)
  • 接近-1的分数表明该序列呈特定锯齿状:如果一个点在均值之上,则下一个点可能在均值之下约相同的数量,反之亦然。

0

您可以仅根据时间步号检查相关性。这等同于对时间序列进行简单线性回归的R²。但是请注意,这是两个截然不同的时间序列,因此我不知道比较效果如何。


4
那将是随时间变化的线性度,而不是平滑度。
Rob Hyndman'3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.