2016-07-22 38 views
1

我真正的新R.我想計算一些MA [N]在R. 預測這裏是我的代碼,把結果:: MA()作爲基質和計算RMSE

# 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::SMA,TTR::EMA並未給出總結計算出的錯誤度量。或者我錯過了一個庫函數?

+0

1.你可以運行'輸出(工廠)'並將結果添加到您的問題? 2.隨着包裹帶來'ma'? 3.你顯示了'factory.ts'還是'fit_EMA'? – Qaswed

回答

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