如何将多个forecast::Accurance()结果的输出合并到表中进行比较和打印

如何将多个forecast::Accurance()结果的输出合并到表中进行比较和打印,r,ggplot2,tidyverse,forecasting,R,Ggplot2,Tidyverse,Forecasting,我对4对时间序列调用了forecast::accurity(),每个时间序列的输出都是一个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.0004233

我对4对时间序列调用了
forecast::accurity()
,每个时间序列的输出都是一个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
,但我也对base 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)
库(预测)

x

我用不同的颜色和符号绘制了训练和测试数据的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")

作为。Z.林问你,你的代码是不可复制的。无法定义对象x和y。
我使用您的部分数据重新创建数据集

我用不同的颜色和符号绘制了训练和测试数据的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")

作为。Z.林问你,你的代码是不可复制的。无法定义对象x和y。
我使用您的部分数据重新创建数据集

可复制数据代码中的
x
y
是什么?我已经修复了可复制数据中的错误。X是一个训练集;Y是一个测试集。可复制数据代码中的
x
&
Y
是什么?我已经修复了可复制数据中的错误。X是一个训练集;Y是一个测试集。起初,我在实现这一点时遇到了困难,但后来我意识到,前几行不仅用于创建可复制数据,而且对于将矩阵转换为数据帧、指定行名称等非常重要。给出了答案。但您如何修改此图,以便为每个“acc”使用不同的颜色展示一个传奇?我觉得这是必要的。起初我在实现这一点上遇到了困难,但后来我意识到,前几行不仅是为了创建可复制的数据,而且对于将矩阵转换为数据帧、指定行名称等都是必要的。给出了答案。但您如何修改此图,以便为每个“acc”使用不同的颜色展示一个传奇?我觉得这是必要的。