Как объединить результаты нескольких результатов прогноза :: precision () в таблицу для сравнения и построения графиков - PullRequest
0 голосов
/ 24 декабря 2018

Я назвал forecast::accuracy() для 4 пар временных рядов, и каждый из них представляет собой матрицу точности измерений 2x8.

> acc1
                        ME      RMSE       MAE      MPE     MAPE      MASE        
ACF1 Theil's U
Training set -3.918303e-05 0.5315159 0.3574662 86.62683 164.6431 0.6785569 
-0.00042333        NA
Test set      6.959079e-02 0.6452657 0.4388499 61.94763 105.3055 0.8330428  
0.45847534 0.9572293

По сути, я хочу ggplot результаты только столбец RMSE , для обе строки , для каждая серия .Этот график, вероятно, должен включать отдельный цвет для каждой серии и 2 точечных символа, соответствующих строкам поезда / теста.Но для этого мне нужно поместить эту информацию в аккуратный фрейм данных .

Какой ряд шагов необходимо выполнить, чтобы перейти от этих 4 матриц к аккуратному кадру данных?Я уже загрузил tidyverse, но я тоже открыт для базы R

Воспроизводимые данные:

library(forecast)

x <- NULL
x$obs <- runif(3652)
x <- as.data.frame(df)
y <- NULL
y$obs <- runif(365)
y <- as.data.frame(df)

x1 <- ts(x$obs, start=c(2007, 10), end=c(2017, 9), frequency = 365)
y1 <- ts(y$obs, start=c(2016, 9), end=c(2017, 9), frequency = 365)
x2 <- ts(x$obs, start=c(2007, 10), end=c(2017, 9), frequency = 365)
y2 <- ts(y$obs, start=c(2016, 9), end=c(2017, 9), frequency = 365)
x3 <- ts(x$obs, start=c(2007, 10), end=c(2017, 9), frequency = 365)
y3 <- ts(y$obs, start=c(2016, 9), end=c(2017, 9), frequency = 365)
x4 <- ts(x$obs, start=c(2007, 10), end=c(2017, 9), frequency = 365)
y4 <- ts(y$obs, start=c(2016, 9), end=c(2017, 9), frequency = 365)

acc1 <- accuracy(x1,y1)
acc2 <- accuracy(x2,y2)
acc3 <- accuracy(x3,y3)
acc4 <- accuracy(x4,y4)

1 Ответ

0 голосов
/ 25 декабря 2018

<Базовое решение R>

Я составил RMSE данных обучения и испытаний, используя разные цвета и разные символы.

acc1 = data.frame(matrix(data = 
c(-3.918303e-05, 0.5315159, 0.3574662, 86.62683, 164.6431, 0.6785569, -0.00042333, NA,
  6.959079e-02, 0.6452657, 0.4388499, 61.94763, 105.3055, 0.8330428, 0.45847534, 0.9572293), nrow = 2, byrow = TRUE) )
rownames(acc1) = c("Training set", "Test set")      
colnames(acc1) = c("ME", "RMSE", "MAE", "MPE", "MAPE", "MASE", "ACF1", "Theil's U")      

acc2 = acc1 + 1
acc3 = acc1 + 2
acc4 = acc1 + 3

lsAcc = list(acc1, acc2, acc3, acc4)
dfAcc = do.call(what = rbind, args = lsAcc)
dfAcc$rowPair = ceiling(1:8 * 0.5)

plot(0, cex=0, xlim=c(0,5), ylim=c(0,4))
points(x = dfAcc$rowPair[grepl(pattern = "Training", rownames(dfAcc))], 
       y = dfAcc$RMSE[   grepl(pattern = "Training", rownames(dfAcc))],
       pch = 2, col="blue")
points(x = dfAcc$rowPair[grepl(pattern = "Test", rownames(dfAcc))], 
       y = dfAcc$RMSE[   grepl(pattern = "Test", rownames(dfAcc))],
       pch = 3, col="red")

enter image description here

As.Z.Lin спросил вас, ваш код не воспроизводится.Вам не хватает, чтобы определить объекты х и у.Я воссоздаю набор данных, используя ваши частичные данные.

...