2017-07-07 105 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)结合到列表/向量中。它们或者已经是来自相应模型的输出对象的一部分,或者您需要自己计算它们。如果他们已经是估算过程的一部分,那就更好了。作为估算过程的函数的一部分,如有必要,添加计算,然后将模型的结果添加到前面提到的列表/向量中。
按照您想要的标准(升序/降序和最高/最低)对列表进行排序,并将该列表作为输出结果。 此外,您可能希望添加最适合的结果,您可以通过将最高等级的结果附加到输出中来完成结果。


再次,没有具体的代码示例和问题,你面对的是很难帮助你。尝试设置一些具体的东西,如果你遇到了问题,你可以随时在这里寻求帮助。 提供虚拟数据和您使用的代码将大大提高您的问题的答案