r - R - SARIMA 拟合函数返回 NULL
问题描述
作为课堂的一部分,我必须研究和预测亚特兰大机场的交通状况。整个模型得到验证。唯一的问题是我必须将拟合值绘制为实际值才能分析残差。但是,我的 SARIMA 模型在使用拟合函数时返回一个对象 NULL..
可以使用Github 存储库上传数据集
你能告诉我问题出在哪里吗?
####################################################
##================================================##
## Traffic at Atlanta Airport 2003-2019 ##
##================================================##
####################################################
# The purpose of this project is to forecast Atlanta Airport future traffic
# following the Box-Jenkins Methodology
## Import Data
#-------------
Atl.Traff <- read.csv2("AtlantaTraffic_2003-2019.csv")
## Convert the raw data into a time series
#-----------------------------------------
Atl.Traff.ts <- ts(Atl.Traff[,3], start=c(2003,1), frequency=12)
## Loading all the needed packages
#---------------------------------
library(tseries)
library(TSA)
library(zoo)
library(forecast)
#-----------------------------------
## Step 0 : Stationarization of data
#===================================
## Plot raw data time series
#---------------------------
plot.ts(Atl.Traff.ts, main="")
abline(reg=lm(Atl.Traff.ts~time(Atl.Traff.ts)), col="red")
# There is a positive trend
plot(decompose(Atl.Traff.ts))
monthplot(Atl.Traff.ts)
# There is seasonality
acf(ts(Atl.Traff.ts,frequency=1))
pacf(ts(Atl.Traff.ts, frequency=1))
#The time series isn't stationary : positive trend, seasonality and
#the series is not decaying fast to 0
adf.test(diff(Atl.Traff.ts), alternative = "stationary")
## Log transformation : reduce increasing variance
#-------------------------------------------------
l.Atl.Traff.ts <- log(Atl.Traff.ts)
plot(cbind(Atl.Traff.ts,l.Atl.Traff.ts), main='Traffic and log tansformation')
par(mfrow=c(1,2))
acf(ts(l.Atl.Traff.ts,frequency=1)) #The series doesn't decay fast to 0
pacf(ts(l.Atl.Traff.ts, frequency=1))
par(mfrow=c(1,1))
#We haven't reached stationarity but at least, it reduces the increasing variance effect
## Remove the trend : 1st order difference
#-----------------------------------------
dl.Atl.Traff.ts <- diff(l.Atl.Traff.ts,1)
plot(dl.Atl.Traff.ts)
par(mfrow=c(1,2))
acf(ts(dl.Atl.Traff.ts, frequency=1), main="ACF : 1st order difference")
pacf(ts(dl.Atl.Traff.ts, frequency=1), main="PACF : 1st order difference")
par(mfrow=c(1,1))
## Remove the seasonality : difference of order 12
#-------------------------------------------------
dl.Atl.Traff.ts_12 <- diff(dl.Atl.Traff.ts,12)
plot(dl.Atl.Traff.ts_12) #We observe some extreme values
par(mfrow=c(1,2))
acf(ts(dl.Atl.Traff.ts_12,frequency=1), main="ACF : difference of order 12")
pacf(ts(dl.Atl.Traff.ts_12, frequency=1), main="PACF : difference of order 12")
par(mfrow=c(1,1))
#--------------------------------------------------
## Step 1 : Determining ARMA order parameters (p,q)
#==================================================
# fit a multiplicative SARIMA on l.Atl.Traff.ts
# d=D=1: transformations performed on l.Atl.Traff.ts
# q, Q: MA part (ACF)
# q = 1
# Q = 1
# p,P: AR part (PACF)
# p=2
# P=1
#----------------------------------
## Step 2 : Coefficients estimation
#==================================
## Build a model SARIMA(2,1,1)(1,1,1) s=12
#-----------------------------------------
model <- arima(l.Atl.Traff.ts, c(2,1,1), seasonal=list(order=c(1,1,1), period=12), method='ML')
model
#aic = -820.63
## Plot of the fitted value
#--------------------------
fit <- fitted(model)
plot.ts(cbind(l.Atl.Traff.ts,fit),plot.type='single',col=c('black','red'))
先感谢您。
解决方案
好的,我刚刚找到了我的问题的答案。TSA 和预测库相互冲突。使用拟合函数时,应卸载 TSA 包。
推荐阅读
- javascript - 本机 Javascript 多个事件到多个元素
- android - 重命名领域数据库文件
- javascript - 将 Json 响应转换为逗号分隔(千) - Angular 5 - ES6
- android - 如何使用 powermock 模拟具有 RxJava 的私有方法?
- javascript - 我可以在 href 中使用锚点来滚动到具有类名但没有 id 的位置吗?
- c++ - 如何显示 QByteArray 的十六进制值而不将它们转换为 ASCII 字符
- jenkins - Groovy 与管道 DSL 中的方法
- json - 正确地将 JSON 转换为字符串
- groovy - 如何使用 groovy 生成 JSON 嵌套键
- javascript - Material-UI/REACT - 如何让我的 DatePicker 在组件而不是函数下工作