2017-04-19 65 views
0

有沒有辦法在R中導出摘要過程的輸出(類似於SAS中的ods輸出)?在R中導出模型摘要中的輸出

我有這樣的時間序列:

summary(ets(ts(c(100, 110, 120, 200, 300, 100, 200, 100, 120, 300), start = c(2009, 1), frequency = 12))) 

當你運行這個你獲得各種像MAPE和RMSE大量信息。我希望有選擇地將這些指標中的一些指標分配給變量,以用於更進一步的其他過程。

MAPE.ets <- [some bit of code that takes the MAPE from the output and pops it right here] 

R有沒有辦法做到這一點?

編輯:我意識到一些答案後,stte ets的行爲與ets不同,我需要一個解決方案來爲stlf ets工作。

summary(stlf(ts(c(100, 110, 120, 200, 300, 100, 200, 100, 120, 300), start = c(2009, 1), frequency = 4))) 
+0

謝謝索托斯,我從來沒有聽說過的掃帚包,但看起來很有趣。 – pyll

回答

1

只需將摘要分配給新對象。這產生在其中提到的度量可被訪問的矩陣:

summ <- summary(ets(ts(c(100, 110, 120, 200, 300, 100, 200, 100, 120, 300), start = c(2009, 1), frequency = 12))) 

summ[,"MAPE"] 
[1] 44.51514 

編輯:

在預測包的預期方式似乎是使用accuracy方法(summary方法的ets -class實際上稱爲accuracy);這將兩個etsstlf工作:

res2 <- stlf(ts(c(100, 110, 120, 200, 300, 100, 200, 100, 120, 300), start = c(2009, 1), frequency = 4)) 
acc <- accuracy(res2) 
acc[,"MAPE"] 
+0

這適用於ets,但編輯了問題以反映我在結束時的疏忽。道歉。有沒有辦法推廣這個,因爲它似乎不想爲stlf()工作? – pyll

+0

好的,請看我的編輯。 –

1

該摘要爲您提供了一個向量。如果你想要colname和rownames,你可以像這樣得到MAPE。

out <-summary(ets(ts(c(100, 110, 120, 200, 300, 100, 200, 100, 120, 300), 
       start = c(2009, 1), frequency = 12))) 
out[,5,drop=FALSE] 

      MAPE 
Training set 44.51514 

我只希望數,除去drop=FALSE

out[5] 
[1] 44.51514 

編輯使用stfl,最好是使用accuracy功能,而不是summary。要獲得MAPE,您可以執行:

res <- stlf(ts(c(100, 110, 120, 200, 300, 100, 200, 100, 120, 300), 
      start = c(2009, 1), frequency = 4)) 
accuracy(res)[5] 
[1] 44.5994 
+0

這適用於ets,但編輯了問題以反映我在結束時的疏忽。道歉。有沒有辦法推廣這個,因爲它似乎不想爲stlf()工作? – pyll

+0

@pyll看我的編輯。 –

+0

哈哈,我們真的在這裏做冗餘工作;) –