2017-07-07 75 views
0

我正在使用各種模型(如Arima,H2O.Randomforest,glmnet,lm和其他一些模型)對R中的多元時間序列數據進行預測建模。R中的模型評分和排名

我創建了一個函數來選擇我們選擇的模型並進行預測。

Model1 <- function(){ 
    .. 
    return() 
} 
Model2 <- function(){ 
    ... 
    return() 
} 
Model3 <- function(){ 
    ... 
    return() 
} 
main <- function(n){ 
    if(n == 1) { 
    Model1() 
    } 
    else if(n == 2){ 
    Model2() 
    } 
    else if(n == 3){ 
    Model3() 
    }} 

現在我認爲這些模型,其通過尋找預測和觀察值之間準確性給出RMSEMAPE自動化。我希望根據表現提供每個分數(例如5分)。例如,如果Arima比其他模型給出較低的RMSE,則它將被評分爲高,並且第二低的RMSE模型將得分小於Arima等等。

而且每次我用不同的輸入數據運行這些模型時,它都必須給出模型的平均分數。我的意思是說,

1. for model1 it will give scores of each model, let's say *s1*. 
2. for model2 run it give scores of each model, and let's call it *s2*. 

而且我希望每次運行它與不同的輸入時,該模型的平均分數。這更像是得分和排名方法。

R中是否有任何方法或軟件包可以讓我們瞭解它是如何完成的?或任何例子?任何建議都會非常有幫助。我在Cross驗證中甚至分享了我的問題here

謝謝。

+0

只是爲了澄清:對於'j'電機'motor1,motor2,... motorj'的'm'時間序列,您有一些數據幀/矩陣與'n'觀察值?你想自動執行以下任務:1)將多個模型擬合到'motor1,motor2,... motorj'的數據中2)用RMSE/MAPE的擬合度對模型進行排序,3)用模型返回'j'列表「j」輸入電機的排名? – Numb3rs

+0

是的。我可以使用'rank()'來排列方法。但我想根據其RMSE/MAPE值給每個模型(如5分)給分,比如記分卡。 – dhinar

回答

0

據我所知,沒有一個單一的軟件包可以爲你做所有這些工作,而無需從你那邊做一些工作。您將需要尋找能夠提供您需要的方法的軟件包。

既然你沒有提供任何可重複的數據,只表達了你想作爲一個例子的一般想法,我只能給你一個廣泛的想法,期望什麼,我將如何做這種事情,以及什麼你的問題很可能會遇到:

1模型擬合

你需要有你想要怎樣的模型擬合數據是個好主意。以ARIMA爲例:它有三個命令(p,d,q)。你想用什麼順序來適合你的數據?一個簡單的ARIMA(1,0,1)模型?或者你需要更高的訂單嗎?還有,最適合的方法e。 G。通過擬合不同的訂單,然後選擇最佳(最低)AIC的訂單。 This article from quantstart是單變量系列+代碼示例的一個很好的例子,用於估算不同的訂單並選擇最合適的訂單。
看看你需要爲你的其他模型(H2O.Randomforest,glmnet,lm等)設置這個程度。在函數中設置這個過程。

2.選型

所以在第1步你安裝你的各種型號的時間序列數據,並有不同的結果。現在,您需要將適合度標準RMSE/MAPE)結合到列表/向量中。它們或者已經是來自相應模型的輸出對象的一部分,或者您需要自己計算它們。如果他們已經是估算過程的一部分,那就更好了。作爲估算過程的函數的一部分,如有必要,添加計算,然後將模型的結果添加到前面提到的列表/向量中。
按照您想要的標準(升序/降序和最高/最低)對列表進行排序,並將該列表作爲輸出結果。 此外,您可能希望添加最適合的結果,您可以通過將最高等級的結果附加到輸出中來完成結果。


再次,沒有具體的代碼示例和問題,你面對的是很難幫助你。嘗試設置一些具體的東西,如果你遇到了問題,你可以隨時在這裏尋求幫助。 提供虛擬數據和您使用的代碼將大大提高您的問題的答案