为什么R编程中的运行精度函数会报错?

Why is the error while running Accurracy function in R programming?

我试图在 r 编程中使用精度函数寻找预测模型的精度。但我在 R Studio 中收到以下错误。我是否必须更改预测变量的模式或其他内容?我已经将 class 视为 ts,将模式视为数字。

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

输入结果:

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))

数据:

 COUNT Enrolment_date
1     17        SEP2017
2      1        NOV2017
3      5        DEC2017
4      8        JAN2018
5     45        FEB2018
6     21        MAR2018
7     18        APR2018
8     43        MAY2018
9     82        JUN2018
10   116        JUL2018
11   192        AUG2018
12   289        SEP2018
13   242        OCT2018
14   254        NOV2018
15   335        DEC2018
16   138        JAN2019
17    71        FEB2019
18    98        MAR2019
19    91        APR2019
20   138        MAY2019
21   175        JUN2019
22   232        JUL2019
23   155        AUG2019
24   376        SEP2019
25   197        OCT2019
26   271        NOV2019
27   421        DEC2019

错误:

> 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)

错误说得很清楚:accuracy 的第一个参数必须是 class forecastts.

的对象

如果你 运行 class(forecast1) 你会得到 list 这就是你收到错误信息的原因。

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

改变这个

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

进入这个:

forecast1 <- forecast(arima.final, h = 12)

不同于 predict 函数,forecast returns 是 class forecast 的对象,这将使 accuracy 按预期工作.