【问题标题】:Put result of forecast::ma() as a matrix and compute RMSE将 predict::ma() 的结果作为矩阵并计算 RMSE
【发布时间】:2016-11-26 01:39:44
【问题描述】:

我对 R 真的很陌生。我正在尝试在 R 中计算一些 MA[n] 预测。 这是我的代码,

# simple reproducible example
set.seed(0); factory <- round(rnorm(84), 1)
library(forecast)
factory.ts <- ts(factory, start = 1947, frequency = 12)
fit_EMA <- ma(factory.ts, order=5)

它工作正常。下面是fit_EMA 在 R 控制台中的样子。但我不喜欢这种格式,因为我找不到将这些拟合点用于进一步使用的方法。例如,如何提取行或列?

       Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
1947    NA    NA  0.80  0.24  0.12 -0.20 -0.46 -0.06  0.40  0.42  0.26  0.20
1948 -0.34 -0.58 -0.36 -0.32 -0.18 -0.36 -0.32 -0.30 -0.10 -0.02  0.20  0.34
1949  0.48  0.32 -0.10 -0.08 -0.22 -0.54 -0.48 -0.34 -0.20  0.08  0.38  0.38
1950  0.74  0.54  0.66  0.58  0.56  0.16 -0.02 -0.60 -1.04 -0.70 -0.38 -0.18
1951  0.10  0.34  0.58  0.26  0.28  0.28  0.48 -0.04 -0.32 -0.56 -0.54 -0.66
1952 -0.80 -0.38 -0.28 -0.32 -0.60 -0.34 -0.28 -0.10 -0.14  0.20  0.00 -0.06
1953  0.06  0.28  0.24  0.34  0.18 -0.24 -0.62 -0.38 -0.20 -0.06    NA    NA

另外,如何计算 RMSE 或其他误差方法? forecast::maTTR::SMATTR::EMA 没有给出总结性的计算误差度量。还是我错过了一个库函数?

【问题讨论】:

  • 1.您可以运行dput(factory) 并将结果添加到您的问题中吗? 2. 带包带ma? 3.你显示factory.ts还是fit_EMA

标签: r time-series


【解决方案1】:

forecast::ma() 的结果始终是 "ts" 对象。虽然您的fit_EMA 在您将其打印到屏幕时显示为矩阵(因为frequence = 12 所以您有12 列),但它本质上是一个向量。您可以使用str(fit_EMA) 对其进行检查。你可以这样做

mat <- matrix(fit_EMA, ncol = 12, byrow = TRUE)

得到一个矩阵。然后mat[1, ] 给出第一年(1947 年)的拟合值。

获取 RMSE 非常简单,不需要函数/库例程。做:

MSE <- mean((fit_EMA - factory.ts) ^ 2, na.rm = TRUE)
# [1] 0.55876
RMSE <- sqrt(MSE)
# [1] 0.7475025

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 2018-12-04
    • 2019-02-18
    • 1970-01-01
    相关资源
    最近更新 更多