我是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)
工作正常。以下是R {控制台中fit_EMA
的样子。但是我不喜欢这种格式,因为我无法找到一种方法来取得那些适合进一步使用的点。例如,如何提取行或列?
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::ma
或TTR::SMA
,TTR::EMA
未在摘要中提供计算错误度量。或者我错过了图书馆的功能?
答案 0 :(得分:1)
forecast::ma()
的结果始终是"ts"
个对象。虽然当您将fit_EMA
打印到屏幕时,frequence = 12
显示为矩阵(因为str(fit_EMA)
因此您有12列),但它本质上是一个向量。您可以使用mat <- matrix(fit_EMA, ncol = 12, byrow = TRUE)
进行检查。你可以做到
mat[1, ]
获得矩阵。然后MSE <- mean((fit_EMA - factory.ts) ^ 2, na.rm = TRUE)
# [1] 0.55876
RMSE <- sqrt(MSE)
# [1] 0.7475025
给出第一年(1947年)的拟合值。
获取RMSE非常简单,不需要函数/库例程。做:
(function () {
Office.initialize = function (reason) {
//If you need to initialize something you can do so here.
};
})();
var i = 42;
//Notice function needs to be in global namespace
function undo() {
console.log(i);
i++;
}