我有51点的销售数据。我想预测10个未来的价值。这是一个销售数据,因此是季节性的,但数据点很少用于预测季节性。当我使用时间序列时,它可能会尝试拟合并给出“103”作为所有下一个预测的结果。我认为使用ARMA会有所帮助,但在适应ARMA并使用forecast()后,我仍然得到相同的输出。我不熟悉趋势和预测,也不知道除了回归之外是否有不同的方法可以预测未来的价值。请帮助。
数据:
Product 23 22 21 31 29 13 15 20 15 26 11 24 14 18 15 21 25 23 27 30 19 18 20 13 23 40 14 15 20 14 9 22 14 24 26 22 23 16 24 19 14 10 17 12 11 15 9 24 17 22 28
我使用的代码:
library("tseries")
arma<-arma(Product)
final<-forecast(arma,10)
答案 0 :(得分:0)
将ARIMA模型拟合到您的数据中,得到ARIMA(0,0,0)
,这意味着拟合值取决于先前的0次观察和0次拟合误差。这再次意味着ARIMA模型可以做出的最佳预测器(基于该数据)是常数。对于每次观察,无论先前的观察结果如何,它都会预测相同的值。
library(forecast)
df <- c(23, 22, 21, 31, 29, 13, 15, 20, 15, 26, 11, 24, 14, 18, 15, 21,
25, 23 , 27, 30, 19, 18 , 20 , 13 , 23 , 40 ,14 , 15 , 20 ,14 , 9 , 22 ,
14 , 24 ,26 ,22 , 23 , 16 , 24 , 19 ,14 , 10 ,17 , 12, 11, 15 , 9 , 24 , 1,
7, 22, 28)
# auto.arima() selects the ARIMA(r, s, q) model with the highest AIC-score:
(auto.arima(df))
# Series: ts
# ARIMA(0,0,0) with non-zero mean
#Coefficients:
# intercept 19.0000
# s.e. 0.9642
# sigma^2 estimated as 49.29: log likelihood=-174.62
# AIC=353.25 AICc=353.49 BIC=357.15
forecast.Arima(object = auto.arima(df), h = 10)
# Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
# 53 19 10.00226 27.99774 5.239138 32.76086
# 54 19 10.00226 27.99774 5.239138 32.76086
# 55 19 10.00226 27.99774 5.239138 32.76086
# 56 19 10.00226 27.99774 5.239138 32.76086
# 57 19 10.00226 27.99774 5.239138 32.76086
# 58 19 10.00226 27.99774 5.239138 32.76086
# 59 19 10.00226 27.99774 5.239138 32.76086
# 60 19 10.00226 27.99774 5.239138 32.76086
# 61 19 10.00226 27.99774 5.239138 32.76086
# 62 19 10.00226 27.99774 5.239138 32.76086
答案 1 :(得分:0)
您的问题缺少一些细节,例如您想要适合的ARMA模型的顺序以及您使用的代码。考虑到103比您给我们的任何值大,我怀疑您的代码中存在错误。
这是ARMA(1,1)的一个实现应该有效:
data<-strsplit("23 22 21 31 29 13 15 20 15 26 11 24 14 18 15 21 25 23 27 30 19 18 20 13 23 40 14 15 20 14 9 22 14 24 26 22 23 16 24 19 14 10 17 12 11 15 9 24 17 22 28",split=" ")
data<-as.numeric(data[[1]])
mod<-arima(data,order=c(1,0,1))
pred<-predict(mod,n.ahead=10)
pred
plot(c(data,pred$pred),type="l")
编辑:肯是对的,顺便说一句,ARMA模型似乎对您的数据没什么用处,预测主要是由拦截术语给出的。