Точность() и «Ошибка в xx — ff[1:n] : нечисловой аргумент двоичного оператора»

#r #time-series

Вопрос:

При построении базовой прогностической модели с использованием набора данных dowjones из библиотеки(fma) я столкнулся с «> Ошибка в xx — ff[1:n] : нечисловой аргумент двоичного оператора».

 library(forecast)
library(fma)

dj60 <- window(dowjones, end = 60)

dj60.rwf.drift <- rwf(dj60, h = 18, drift = TRUE)

dj60.od <- window(dowjones, start = 61)

accuracy(dj60.od, dj60.rwf.drift)

 

ВОЗВРАТ:

Ошибка в xx — ff[1:n] : нечисловой аргумент двоичного оператора

Предыдущая цепочка команд работает для другого набора данных (visnights из библиотеки fpp2):

 library(forecast)
library(fpp2)

vn_Melbourne_train1 <- window(visnights[, "QLDMetro"], end = c(2014, 4))

snaive_vn_Melbourne_train1 <- snaive(vn_Melbourne_train1, h = 4)

vn_Melbourne_test1 <- window(visnights[, "QLDMetro"], start = c(2015, 1), end = c(2015, 4))

accuracy(snaive_vn_Melbourne_train1, vn_Melbourne_test1)
 

Я str() отредактировал все объекты и нахожу их сопоставимыми.

Почему эта ошибка возникает для одного набора данных, а не для другого?

Комментарии:

1. Нам действительно нужно было бы увидеть примеры данных, чтобы дать какие-либо рекомендации по этому поводу. Можете ли вы опубликовать подмножества данных, которые все еще иллюстрируют проблему? Используйте dput() каждую переменную, как только она будет уменьшена до разумного размера; тогда любому будет легко воспроизвести то, что вы сделали.

2. @user2554330 приносим извинения. Я не понимал, что наборы данных не являются частью r. Я обновил вопрос, включив в него соответствующие библиотеки.

3. Я могу воспроизвести вашу ошибку. Если я запущу debug(forecast:::testaccuracy) , я смогу сделать один шаг к ошибке. Когда это происходит, x временные ряды в примере работают, но сложный forecast объект в примере eaxmple этого не делает. Я совсем не знаком с этими функциями, поэтому не знаю, является ли это ошибкой в одном из используемых вами пакетов или ошибкой в том, как вы его используете.

4. Понятия не имею, имеет ли это смысл, но замена аргументов заставляет работать первый: accuracy(dj60.rwf.drift, dj60.od)

5. ?точность указывает «точность(объект, x, тест = NULL, d = NULL, D = NULL, f = NULL, …)», где x-вектор. Считаются ли ts()векторами?

Ответ №1:

Прочитайте файл справки help(accuracy) . Первый аргумент-объект прогноза, второй аргумент-фактические значения в тестовом периоде.

accuracy(dj60.rwf.drift, dj60.od) должно сработать