平滑周期时间序列的适当方法?

时间:2012-10-28 06:21:37

标签: r time-series regression linear-regression polar-coordinates

我有一个周期性的时间序列,几年的气温,我希望能够预测它的未来价值。

我已经计算了一年中每个小时值的可用年份的平均值,这是正常的,但它显然非常嘈杂,因为我只有4年的数据。

  • 前进的方法可能是进行高斯平滑处理,但更好的选择可能是使样条适合它。
  • 我搜索并找到lm.circular,这看起来像是一个可行的候选解决方案
    • 它没有任何指定公式的方法,因此无法让它适合样条曲线。
    • 我使用1阶多项式尝试lm.circular,但出现了一个实际问题:内存不足。请注意,标准lm几乎是即时的,并且在相同的数据上使用没有明显的内存
    • 我也试过要求它适合Von Mises(type ='c-l'),它问我'init'参数,我无法从描述中理解我应该放什么进入'init'?
  • 使用普通lm并不是一个真正的选择,因为它会在期末任何一端产生可怕的结果。
  • 我想另一种可能性是使用ets / HoltWinters,时间序列频率等于一年中的小时数?

我不太确定哪种方式是最好的前进方式,但我怀疑这是一个非常常见的问题,并且可能有非常标准的方法来处理它?<​​/ p>

2 个答案:

答案 0 :(得分:1)

好的,我最终找到了一种超级简单的方法。您不需要任何花哨的包,只需使用标准lm并将余弦和正弦应用于时间线:

model <- lm( y ~ I(sin(x/periodlength*2*pi) * I(cos(x/periodlength*2*pi)), trainingdata )

....然后你可以根据自己的内容调整这个公式。

(编辑:哦,是的,它超级快,不会占用太多内存)。

答案 1 :(得分:0)

我使用ARIMA预测未来值

就像这样

fit <- auto.arima(values)//for getting order of ARIMA
//here values-> time series data

future.values<-predict(fit,n.ahead=24)//used for predicting future values
//n.ahead-> u can give the maximum number of values you want to predict

以下链接将帮助您了解更多详情

http://www.jstatsoft.org/v27/i03/paper

注意:&#34;值&#34;必须是时间序列数据。如果不是我们可以转换为时间序列数据 喜欢 values.ts&lt; -ts(values,frequency =)