为什么在R编程中运行Accuracy函数时出错?

为什么在R编程中运行Accuracy函数时出错?,r,arima,R,Arima,我试图用r编程中的精度函数来寻找预测模型的精度。但我在R Studio中得到以下错误。我必须改变预测变量的模式吗?我认为类是ts,模式是numeric 我不明白为什么,任何帮助都将不胜感激。下面是完整的代码 dput结果: dput(Enrollment_Data) structure(list(COUNT = c(17L, 1L, 5L, 8L, 45L, 21L, 18L, 43L, 82L, 116L, 192L, 289L, 242L, 254L, 335L, 138L, 71L, 9

我试图用r编程中的精度函数来寻找预测模型的精度。但我在R Studio中得到以下错误。我必须改变预测变量的模式吗?我认为类是ts,模式是numeric

我不明白为什么,任何帮助都将不胜感激。下面是完整的代码

dput结果:

dput(Enrollment_Data)
structure(list(COUNT = c(17L, 1L, 5L, 8L, 45L, 21L, 18L, 43L, 
82L, 116L, 192L, 289L, 242L, 254L, 335L, 138L, 71L, 98L, 91L, 
138L, 175L, 232L, 155L, 376L, 197L, 271L, 421L), Enrolment_date = structure(c(25L, 
20L, 5L, 10L, 8L, 16L, 1L, 18L, 14L, 12L, 3L, 26L, 23L, 21L, 
6L, 11L, 9L, 17L, 2L, 19L, 15L, 13L, 4L, 27L, 24L, 22L, 7L), .Label = c("APR2018", 
"APR2019", "AUG2018", "AUG2019", "DEC2017", "DEC2018", "DEC2019", 
"FEB2018", "FEB2019", "JAN2018", "JAN2019", "JUL2018", "JUL2019", 
"JUN2018", "JUN2019", "MAR2018", "MAR2019", "MAY2018", "MAY2019", 
"NOV2017", "NOV2018", "NOV2019", "OCT2018", "OCT2019", "SEP2017", 
"SEP2018", "SEP2019"), class = "factor")), class = "data.frame", row.names = c(NA, 
-27L))
数据:

错误:

> accuracy(forecast1)
Error in accuracy.default(forecast1) : 
  First argument should be a forecast object or a time series.
完整代码:

Enrollment_Data <- read.csv('RateT0.csv')

head(Enrollment_Data)

#load packages
library(tseries)
library(ggplot2)
library(forecast)


attach(Enrollment_Data)
#Data Exploration

plot(COUNT)
#Forecasting Returns

adf.test(COUNT, alternative="stationary")

d.COUNT <- diff(COUNT, differences = 3)
summary(COUNT)
summary(d.COUNT)

plot(d.COUNT)

adf.test(d.COUNT, alternative="stationary")

acf(d.COUNT)
pacf(d.COUNT)

#Step 2: Model Estimation

forecast::auto.arima(d.COUNT)

#Step 4: Diagnosis
arima.final <-arima(d.COUNT, c(3,0,0))

tsdiag(arima.final)

'Choose the one that has least AIC and significant co-efficients'

#arima.final <-arima(COUNT, c(3,3,1))

forecast1 <- predict(arima.final,n.ahead = 12)
forecast1

summary(forecast1)
accuracy(forecast1)
plot(d.COUNT)


Enrollment\u Data这个错误非常清楚地说明了这一点:
Accurance
的第一个参数必须是class
forecast
ts
的对象

如果您运行
class(forecast1)
您将得到
list
,这就是为什么您会收到错误消息

现在,有很多方法可以更正代码。考虑到代码的结构,我建议您使用以下代码

改变这个

forecast1 <- predict(arima.final,n.ahead = 12)

forecast1这个问题问得不恰当。您没有提供数据或最小的示例来直接测试代码。下次提供一个可复制的示例。看看这个:我把它改成了forecast,现在forecast和forecast函数生成的预测值完全不同了,我不明白为什么,。。这个想法呢?我在我的例子中得到了完全相同的值,但我没有你的数据。为了进一步帮助您,您需要提供一个可复制的示例。如果您不介意共享您的数据,您可以将
dput(注册\u数据)
的结果添加到您的问题中。是的,我添加了,但即使没有添加,也没有任何区别。将数据添加到问题中。即使使用您的数据,我也会得到完全相同的值。看看这个:
p
forecast1 <- predict(arima.final,n.ahead = 12)
forecast1 <- forecast(arima.final, h = 12)