install.package(‘forecast’) library(readx) library(forecast) data <- read_xlsx(‘a.xlsx’) ts <- ts(data$sales,frequency=12,start = c(2012,8))

$$ \[\begin{equation} \begin{split} &自回归模型:序列中的每一个值都可以由它之前的p个值的线性组合来表示,具体表示为 \\ &AR(p):Y_t = c + \beta_1Y_{t-1}+ \beta_2Y_{t-2}+ ...+ \beta_pY_{t-p} +\varepsilon_t \\ &移动平均模型:时序中的每个值都可以用之前的q个残差的线性组合来表示,具体表示为:\\ &MA(q):Y_t = c + \varepsilon_{t} + \theta_1\varepsilon_{t-1}+ \theta_2\varepsilon_{t-2}+...+ \theta_q\varepsilon_{t-q}\\ &ARMA(p,q):Y_t = \beta_0 + \beta_1Y_{t-1}+ \beta_2Y_{t-2}+ ...+ \beta_1Y_{t-p} +\varepsilon_t -\theta_1\varepsilon_{t-1}+ \theta_1\varepsilon_{t-1}+...+ \theta_1\varepsilon_{t-q} \\ &\\ \end{split} \end{equation}\] $$

nhtemp
Time Series:
Start = 1912 
End = 1971 
Frequency = 1 
 [1] 49.9 52.3 49.4 51.1 49.4 47.9 49.8 50.9 49.3 51.9 50.8 49.6 49.3 50.6 48.4 50.7 50.9 50.6
[19] 51.5 52.8 51.8 51.1 49.8 50.2 50.4 51.6 51.8 50.9 48.8 51.7 51.0 50.6 51.7 51.5 52.1 51.3
[37] 51.0 54.0 51.4 52.7 53.1 54.6 52.0 52.0 50.9 52.6 50.2 52.6 51.6 51.9 50.5 50.9 51.7 51.4
[55] 51.7 50.8 51.9 51.8 51.9 53.0

平稳性检验(单位根) 和 差分变换

$$ \[\begin{equation} \begin{split} &平稳就是指序列的统计性质并不会随着时间的推移而改变,例如Y_t的均值和方差都是恒定的。\\ &另外,对任意滞后阶数k,此序列的自相关性不发生改变。\\ &时间序列的平稳性一般可以通过图形来直接判断,观察是否有明显的趋势向和不规则波动项\\ &也可使用单位根(ADF)统计检验来验证平稳性,原假设为该序列存在单位根,如果经过原假设不能被拒绝的话,那么我们就可以认为该序列为非平稳时间序列。\\ &R中的ADF检验可使用tseries包中的adf.test()函数来实现: \end{split} \end{equation}\] $$

adf.test(nhtemp)

    Augmented Dickey-Fuller Test

data:  nhtemp
Dickey-Fuller = -3.2773, Lag order = 3, p-value = 0.08376
alternative hypothesis: stationary
# 备择假设为'stationary',即平稳时序,零假设也就自然为非平稳时序
# 已知P值为0.08>0.05,无法在95%的置信度下拒绝原假设,所以该序列不满足平稳性假设
ndiffs(nhtemp)
[1] 1
dnhtemp <- diff(nhtemp,1)
adf.test(dnhtemp)
p-value smaller than printed p-value

    Augmented Dickey-Fuller Test

data:  dnhtemp
Dickey-Fuller = -4.6366, Lag order = 3, p-value = 0.01
alternative hypothesis: stationary
# 根据P值可拒绝原假设,一次差分后实现了平稳性
par(mfrow=c(1,2))
plot(nhtemp)
plot(diff(nhtemp,1))

模型定阶

par(mfrow=c(1,2))
acf(dnhtemp)
Pacf(dnhtemp)

此准则为指导观察ACF与PACF图,可以发现,dnhtemp数据集在滞后项为一阶时有非常明显的自相关,而当滞后阶数逐渐增加时,偏相关基本呈现逐渐减小的趋势(至少没有超过置信区间),所以可以考虑arima(0,1,1)模型。
| 模型 | ACF | PACF |
|A RIMA(p,d,0)|逐渐减小到0 |在P阶后减小到0 |
|A RIMA(0,d,q)|q阶后减小到0|逐渐减小到0 |
|A RIMA(p,d,q)|逐渐减小到0 |逐渐减小到0 |
#forecast包中的auto.arima()函数可以帮助我们自行选取最优参数值,
# 这比观察ACF图自行确定要便捷的多。
model_fit <- auto.arima(nhtemp, seasonal = FALSE)
model_fit
Series: nhtemp 
ARIMA(0,1,1) 

Coefficients:
          ma1
      -0.7983
s.e.   0.0956

sigma^2 estimated as 1.313:  log likelihood=-91.76
AIC=187.52   AICc=187.73   BIC=191.67

#模型验证 模型的残差应该满足独立正态分布

model_fit <- arima(nhtemp,order=c(0,1,1))
#accuracy(model_fit)
summary(model_fit)

Call:
arima(x = nhtemp, order = c(0, 1, 1))

Coefficients:
          ma1
      -0.7983
s.e.   0.0956

sigma^2 estimated as 1.291:  log likelihood = -91.76,  aic = 187.52

Training set error measures:
                    ME     RMSE       MAE       MPE     MAPE      MASE         ACF1
Training set 0.1285716 1.126722 0.8952077 0.2080785 1.749865 0.7513123 -0.008258617

残差正态性

qqnorm(model_fit$residuals)
qqline(model_fit$residuals)

残差间相关性

acf(model_fit$residuals)

pacf(model_fit$residuals)


Box.test(model_fit$residuals,type='Ljung-Box')

    Box-Ljung test

data:  model_fit$residuals
X-squared = 0.0043004, df = 1, p-value = 0.9477
# P值为0.95,说明模型的残差没有通过显著性检验(即可以认为残差的自相关系数为零),ARIMA模型能较好地拟合本数据

#模型预测

# 以下值分别为预测值及80%,95%的置信区间值
forecast(model_fit,5)
plot(forecast(model_fit,5))

LS0tCnRpdGxlOiAiUl/pnZ7lraPoioLmgKdBUklNQeaooeWeiyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKaW5zdGFsbC5wYWNrYWdlKCdmb3JlY2FzdCcpCmxpYnJhcnkocmVhZHgpCmxpYnJhcnkoZm9yZWNhc3QpCmRhdGEgPC0gcmVhZF94bHN4KCdhLnhsc3gnKQp0cyA8LSB0cyhkYXRhJHNhbGVzLGZyZXF1ZW5jeT0xMixzdGFydCA9IGMoMjAxMiw4KSkKCiQkClxiZWdpbntlcXVhdGlvbn0gClxiZWdpbntzcGxpdH0KJuiHquWbnuW9kuaooeWei++8muW6j+WIl+S4reeahOavj+S4gOS4quWAvOmDveWPr+S7peeUseWug+S5i+WJjeeahHDkuKrlgLznmoTnur/mgKfnu4TlkIjmnaXooajnpLrvvIzlhbfkvZPooajnpLrkuLogXFwKJkFSKHApOllfdCA9IGMgKyBcYmV0YV8xWV97dC0xfSsgXGJldGFfMllfe3QtMn0rIC4uLisgXGJldGFfcFlfe3QtcH0gK1x2YXJlcHNpbG9uX3QgXFwKCibnp7vliqjlubPlnYfmqKHlnovvvJrml7bluo/kuK3nmoTmr4/kuKrlgLzpg73lj6/ku6XnlKjkuYvliY3nmoRx5Liq5q6L5beu55qE57q/5oCn57uE5ZCI5p2l6KGo56S677yM5YW35L2T6KGo56S65Li677yaXFwKJk1BKHEpOllfdCA9IGMgKyBcdmFyZXBzaWxvbl97dH0gKyBcdGhldGFfMVx2YXJlcHNpbG9uX3t0LTF9KyBcdGhldGFfMlx2YXJlcHNpbG9uX3t0LTJ9Ky4uLisgXHRoZXRhX3FcdmFyZXBzaWxvbl97dC1xfVxcCgoKJkFSTUEocCxxKTpZX3QgPSBcYmV0YV8wICsgXGJldGFfMVlfe3QtMX0rIFxiZXRhXzJZX3t0LTJ9KyAuLi4rIFxiZXRhXzFZX3t0LXB9ICtcdmFyZXBzaWxvbl90IC1cdGhldGFfMVx2YXJlcHNpbG9uX3t0LTF9KyBcdGhldGFfMVx2YXJlcHNpbG9uX3t0LTF9Ky4uLisgXHRoZXRhXzFcdmFyZXBzaWxvbl97dC1xfSBcXAomXFwKXGVuZHtzcGxpdH0gClxlbmR7ZXF1YXRpb259IAokJAoKYGBge3J9CmxpYnJhcnkoZm9yZWNhc3QpCmxpYnJhcnkodHNlcmllcykKbmh0ZW1wCmBgYAoKCiMg5bmz56iz5oCn5qOA6aqMKOWNleS9jeaguSkg5ZKMIOW3ruWIhuWPmOaNogokJApcYmVnaW57ZXF1YXRpb259IApcYmVnaW57c3BsaXR9CiblubPnqLPlsLHmmK/mjIfluo/liJfnmoTnu5/orqHmgKfotKjlubbkuI3kvJrpmo/nnYDml7bpl7TnmoTmjqjnp7vogIzmlLnlj5jvvIzkvovlpoJZX3TnmoTlnYflgLzlkozmlrnlt67pg73mmK/mgZLlrprnmoTjgIJcXCAKJuWPpuWklu+8jOWvueS7u+aEj+a7nuWQjumYtuaVsGvvvIzmraTluo/liJfnmoToh6rnm7jlhbPmgKfkuI3lj5HnlJ/mlLnlj5jjgIJcXAoKJuaXtumXtOW6j+WIl+eahOW5s+eos+aAp+S4gOiIrOWPr+S7pemAmui/h+WbvuW9ouadpeebtOaOpeWIpOaWre+8jOinguWvn+aYr+WQpuacieaYjuaYvueahOi2i+WKv+WQkeWSjOS4jeinhOWImeazouWKqOmhuVxcCibkuZ/lj6/kvb/nlKjljZXkvY3moLnvvIhBREbvvInnu5/orqHmo4DpqozmnaXpqozor4HlubPnqLPmgKfvvIzljp/lgYforr7kuLror6Xluo/liJflrZjlnKjljZXkvY3moLnvvIzlpoLmnpznu4/ov4fljp/lgYforr7kuI3og73ooqvmi5Lnu53nmoTor53vvIzpgqPkuYjmiJHku6zlsLHlj6/ku6XorqTkuLror6Xluo/liJfkuLrpnZ7lubPnqLPml7bpl7Tluo/liJfjgIJcXAoKJlLkuK3nmoRBREbmo4Dpqozlj6/kvb/nlKh0c2VyaWVz5YyF5Lit55qEYWRmLnRlc3QoKeWHveaVsOadpeWunueOsO+8mgpcZW5ke3NwbGl0fSAKXGVuZHtlcXVhdGlvbn0gCiQkCmBgYHtyfQphZGYudGVzdChuaHRlbXApCiMg5aSH5oup5YGH6K6+5Li6J3N0YXRpb25hcnknLOWNs+W5s+eos+aXtuW6jyzpm7blgYforr7kuZ/lsLHoh6rnhLbkuLrpnZ7lubPnqLPml7bluo8KIyDlt7Lnn6VQ5YC85Li6MC4wOD4wLjA1LOaXoOazleWcqDk1JeeahOe9ruS/oeW6puS4i+aLkue7neWOn+WBh+iuvizmiYDku6Xor6Xluo/liJfkuI3mu6HotrPlubPnqLPmgKflgYforr4KYGBgCmBgYHtyfQoj5beu5YiG5Y+Y5o2iCm5kaWZmcyhuaHRlbXApCmBgYAoKYGBge3J9CmRuaHRlbXAgPC0gZGlmZihuaHRlbXAsMSkKYWRmLnRlc3QoZG5odGVtcCkKIyDmoLnmja5Q5YC85Y+v5ouS57ud5Y6f5YGH6K6+LOS4gOasoeW3ruWIhuWQjuWunueOsOS6huW5s+eos+aApwpgYGAKCmBgYHtyfQoj5a+55q+U5beu5YiG5YmN5ZCOCnBhcihtZnJvdz1jKDEsMikpCnBsb3Qobmh0ZW1wKQpwbG90KGRpZmYobmh0ZW1wLDEpKQpgYGAKCiMg5qih5Z6L5a6a6Zi2CmBgYHtyfQpwYXIobWZyb3c9YygxLDIpKQphY2YoZG5odGVtcCkKUGFjZihkbmh0ZW1wKQpgYGAKCgrku6XmraTlh4bliJnkuLrmjIflr7zop4Llr59BQ0bkuI5QQUNG5Zu+77yM5Y+v5Lul5Y+R546w77yMZG5odGVtcOaVsOaNrumbhuWcqOa7nuWQjumhueS4uuS4gOmYtuaXtuaciemdnuW4uOaYjuaYvueahOiHquebuOWFs++8jOiAjOW9k+a7nuWQjumYtuaVsOmAkOa4kOWinuWKoOaXtu+8jOWBj+ebuOWFs+WfuuacrOWRiOeOsOmAkOa4kOWHj+Wwj+eahOi2i+WKv++8iOiHs+Wwkeayoeaciei2hei/h+e9ruS/oeWMuumXtO+8ie+8jOaJgOS7peWPr+S7peiAg+iZkWFyaW1hKDAsMSwxKeaooeWei+OAggotIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgICDmqKHlnosgICAgIHwgICAgIEFDRiAgICB8ICAgICBQQUNGICAgICAgfAp8QVJJTUEocCxkLDApfOmAkOa4kOWHj+Wwj+WIsDAgfOWcqFDpmLblkI7lh4/lsI/liLAwIHwKfEFSSU1BKDAsZCxxKXxx6Zi25ZCO5YeP5bCP5YiwMHzpgJDmuJDlh4/lsI/liLAwICAgIHwKfEFSSU1BKHAsZCxxKXzpgJDmuJDlh4/lsI/liLAwIHzpgJDmuJDlh4/lsI/liLAwICAgIHwKLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKYGBge3J9CiNmb3JlY2FzdOWMheS4reeahGF1dG8uYXJpbWEoKeWHveaVsOWPr+S7peW4ruWKqeaIkeS7rOiHquihjOmAieWPluacgOS8mOWPguaVsOWAvO+8jAojIOi/meavlOinguWvn0FDRuWbvuiHquihjOehruWumuimgeS+v+aNt+eahOWkmuOAggptb2RlbF9maXQgPC0gYXV0by5hcmltYShuaHRlbXAsIHNlYXNvbmFsID0gRkFMU0UpCm1vZGVsX2ZpdAoKYGBgCiPmqKHlnovpqozor4EK5qih5Z6L55qE5q6L5beu5bqU6K+l5ruh6Laz54us56uL5q2j5oCB5YiG5biDCmBgYHtyfQptb2RlbF9maXQgPC0gYXJpbWEobmh0ZW1wLG9yZGVyPWMoMCwxLDEpKQojYWNjdXJhY3kobW9kZWxfZml0KQpzdW1tYXJ5KG1vZGVsX2ZpdCkKYGBgCiMjIyDmrovlt67mraPmgIHmgKcKYGBge3J9CnFxbm9ybShtb2RlbF9maXQkcmVzaWR1YWxzKQpxcWxpbmUobW9kZWxfZml0JHJlc2lkdWFscykKYGBgCiMjIyDmrovlt67pl7Tnm7jlhbPmgKcKYGBge3J9CmFjZihtb2RlbF9maXQkcmVzaWR1YWxzKQpwYWNmKG1vZGVsX2ZpdCRyZXNpZHVhbHMpCgojZ2dBY2YodXNjaGFuZ2VbLCJDb25zdW1wdGlvbiJdKQojZ2dQYWNmKHVzY2hhbmdlWywiQ29uc3VtcHRpb24iXSxtYWluPSIiKQoKQm94LnRlc3QobW9kZWxfZml0JHJlc2lkdWFscyx0eXBlPSdManVuZy1Cb3gnKQojIFDlgLzkuLowLjk1LOivtOaYjuaooeWei+eahOaui+W3ruayoeaciemAmui/h+aYvuiRl+aAp+ajgOmqjCjljbPlj6/ku6XorqTkuLrmrovlt67nmoToh6rnm7jlhbPns7vmlbDkuLrpm7YpLEFSSU1B5qih5Z6L6IO96L6D5aW95Zyw5ouf5ZCI5pys5pWw5o2uCmBgYAoj5qih5Z6L6aKE5rWLCmBgYHtyfQojIOS7peS4i+WAvOWIhuWIq+S4uumihOa1i+WAvOWPijgwJSw5NSXnmoTnva7kv6HljLrpl7TlgLwKZm9yZWNhc3QobW9kZWxfZml0LDUpCnBsb3QoZm9yZWNhc3QobW9kZWxfZml0LDUpKQpgYGAKCg==