我有需要分析的高频商品价格数据。我的目标是不假设任何季节性成分,而只是确定趋势。这是我遇到 R 问题的地方。我知道有两个主要函数可以分析这个时间序列:decompose() 和 STL()。问题是它们都采用频率参数大于或等于 2 的 ts 对象类型。有什么方法可以假设每单位时间的频率为 1 并且仍然使用 R 分析这个时间序列?恐怕如果我假设每单位时间的频率大于 1,并且使用频率参数计算季节性,那么我的预测将取决于该假设。

names(crude.data)=c('Date','Time','Price')
names(crude.data)
freq = 2
win.graph()
plot(crude.data$Time,crude.data$Price, type="l")
crude.data$Price = ts(crude.data$Price,frequency=freq)

我希望频率为每单位时间 1,但随后分解 () 和 STL() 不起作用!
dim(crude.data$Price)
decom = decompose(crude.data$Price)
win.graph()
plot(decom$random[2:200],type="line")
acf(decom$random[freq:length(decom$random-freq)])

谢谢你。

最佳答案

stl()decompose() 都是用于 季节性 分解,所以你必须有一个季节性成分。如果您只想估计趋势,那么任何非参数平滑方法都可以完成这项工作。例如:

fit <- loess(crude.data$Price ~ crude.data$Time)
plot(cbind(observed=crude.data$Price,trend=fit$fitted,random=fit$residuals),main="")

关于r - 避免 R 中 STL() 或分解()的季节性假设,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2535740/

10-11 21:02