我正在尝试进行时间序列分析,并且是该领域的新手。我每天计算 2006-2009 年的一个事件,我想为它拟合一个时间序列模型。这是我取得的进展:
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
plot.ts(timeSeriesObj)
我得到的结果是:
为了验证数据中是否存在季节性和趋势,我按照本文中提到的步骤进行操作:
ets(x)
fit <- tbats(x)
seasonal <- !is.null(fit$seasonal)
seasonal
在 Rob J Hyndman 的博客中:
library(fma)
fit1 <- ets(x)
fit2 <- ets(x,model="ANN")
deviance <- 2*c(logLik(fit1) - logLik(fit2))
df <- attributes(logLik(fit1))$df - attributes(logLik(fit2))$df
#P value
1-pchisq(deviance,df)
这两种情况都表明没有季节性。
当我绘制该系列的 ACF 和 PACF 时,我得到的是:
我的问题是:
这是处理每日时间序列数据的方式吗?这个页面建议我应该同时查看每周和每年的模式,但我不清楚这种方法。
有了 ACF 和 PACF 图后,我不知道该怎么做。
我可以简单地使用 auto.arima 功能吗?
适合 <- arima(myts, order=c(p, d, q)
*****更新 Auto.Arima 结果******
当我根据 Rob Hyndman在此处的评论将数据的频率更改为 7 时,auto.arima 会选择一个季节性 ARIMA 模型并输出:
Series: timeSeriesObj
ARIMA(1,1,2)(1,0,1)[7]
Coefficients:
ar1 ma1 ma2 sar1 sma1
0.89 -1.7877 0.7892 0.9870 -0.9278
s.e. NaN NaN NaN 0.0061 0.0162
sigma^2 estimated as 21.72: log likelihood=-4319.23
AIC=8650.46 AICc=8650.52 BIC=8682.18
******更新的季节性检查******
当我以频率 7 测试季节性时,它输出 True,但季节性 365.25 时,它输出 false。这足以得出缺乏年度季节性的结论吗?
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=7)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
返回:
True
尽管
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
返回:
False