【问题标题】:R - Trend estimation for short time seriesR - 短时间序列的趋势估计
【发布时间】:2014-09-04 12:30:03
【问题描述】:

我在 2012 年进行的气候实验中获得了非常短的时间序列数据。这些数据包括每日水溶液通量和每日 CO2 通量数据。 CO2 通量数据包括 52 天,而水溶液通量数据只有 7 天。我每天要测量几次 CO2 通量数据,但我计算的是每日平均值。

现在,我想知道这些时间序列是否存在趋势。我发现我可以使用 Kendall 趋势测试或 Theil-Sen 趋势估计器。我之前使用过 Kendall 测试来进行跨越数年的时间序列。我不知道如何使用 Theil-Sen 趋势估计器。

我将数据放入 R 中的 ts 对象中,但是当我尝试进行分解(使用函数 decompose)时,我得到时间序列跨越少于 2 个周期的错误。我想提取趋势数据,然后对其进行 Mann-Kendall 检验。

这是我目前得到的代码:

myexample <- structure(c(624.27, 682.06, 672.77, 
                     765.96, 759.52, 760.38, 742.81
), .Names = c("Day1", "Day2", "Day3", "Day4", "Day5", "Day6", 
          "Day7"))

ts.object <- ts(myexample, frequency = 365, start = 1)

decomp.ts.obj <- decompose(ts.obj, type = "mult", filter=NULL)

# Error in decompose(ts.obj, type = "mult", filter = NULL)

谁能帮助我如何用我很短的时间序列进行趋势分析?任何 google-fu 都无济于事。还有,有人能告诉我 Kendall tau 的大小是什么意思吗?它跨越从 -1 到 1 的值。tau=0.5 是强趋势还是弱趋势?

谢谢, 斯蒂芬

【问题讨论】:

  • 问题是您使用的是freq = 365,但数据不到一年。尝试更改此值。

标签: r time-series decomposition trend


【解决方案1】:

我很想做一些简单的事情,比如

d <- data.frame(val=myexample,ind=seq(myexample))
summary(lm(val~ind,d))

library(lmPerm)
summary(lmp(val~ind,d))

cor.test(~val+ind,data=d,method="kendall")

tau=0.5 是强还是弱在很大程度上取决于上下文。在这种情况下,p 值为 0.24,这至少表明该信号(仅基于等级)与适当的空信号无法区分。

【讨论】:

  • 感谢本·博尔克。我想我可能会选择 cor.test 变体。当我提出这个问题时,我想到了一些花哨的时间序列分析方法,但我认为 cor.test 在我的情况下工作得很好。
猜你喜欢
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2021-10-11
  • 2021-07-15
  • 1970-01-01
  • 2011-09-26
  • 2021-11-22
相关资源
最近更新 更多