0

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

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

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

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

4

2 回答 2

1

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

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

... .然后您可以根据自己的喜好调整此公式。

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

于 2012-10-28T07:08:28.417 回答
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

注意:“值”必须是时间序列数据。如果不是,我们可以转换为时间序列数据,如 values.ts<-ts(values,frequency=)

于 2012-10-29T05:55:41.567 回答