Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 确定最佳预测模型_R - Fatal编程技术网

R 确定最佳预测模型

R 确定最佳预测模型,r,R,我试图预测一些时间序列数据,我使用了三种不同类型模型的DPE进行预测。现在,我已经记录了每个系列的模型性能,这些性能由一个唯一的id表示。数据格式如下: ID MAPE_Model_Residual MAPE_Validation_Residual Diff_Residual 1 8355_0_32167 83.26487 77.86192 5.40295030 2 8355_0_32168 93.44

我试图预测一些时间序列数据,我使用了三种不同类型模型的DPE进行预测。现在,我已经记录了每个系列的模型性能,这些性能由一个唯一的id表示。数据格式如下:

ID MAPE_Model_Residual MAPE_Validation_Residual Diff_Residual
1    8355_0_32167            83.26487                 77.86192    5.40295030
2    8355_0_32168            93.44941                 93.51703    0.06761914
3    8355_0_32169            93.46655                 93.52344    0.05688714
4 8355_3936_32170            88.94154                 84.96923    3.97231385
5 8355_3937_32170            74.37984                 83.19228    8.81243847
6 8355_3940_32170            74.06081                 52.38760   21.67321223

  MAPE_Model_Fitted MAPE_Validation_Fitted Diff_Fitted MAPE_Model_Arima MAPE_Validation_Arima
          81.87216               74.91174  6.96041639         83.96876              80.19690
          93.36049               93.33518  0.02530898         92.93121              90.73525
         93.37859               93.33369  0.04489972         92.91448              90.74218
         88.24597               85.42486  2.82111289         88.69834              83.08940
          74.43546               83.19509  8.75962941         73.69333              74.74214
6          73.77239               52.97098 20.80140874         75.56103              63.57248

  Diff_Arima
   3.771864
   2.195963
   2.172300
   5.608939
   1.048811
  11.988552
模型分为三类:模型精度、交叉验证精度和差异。我想确定一个对应于唯一id的模型,该id具有最高的精度和最低的差异。比如一个小例子就是

Model1                Model2           Model3

M1_2 M1_diff M2_1 M2_2 M2_diff M3_1 M3_2 M3_diff

A 55.2 60.8  5.6    66.7  69.8  3.1     58.5 60.3  1.8

B 56.8 55.4  1.4    62.8  63.9  1.1   65.7 69.8  4.1

C 52.3 54.3  2.0    53.8  55.9  1.1   56.7 57.9  1.2
我必须找出模型1、2、3中哪一个最适合A、B、C中的每一个
Mi_1和Mi_2应最高,Mi_差异应最低。像id B一样,它可能是第二种型号。我无法想出任何通用算法来实现这一点。数据非常大,几乎有1000个唯一的ID,不能手动创建。我想可能有一些简单的解决方案我没有得到。有人能帮忙吗?我使用R进行计算。

您可以计算一个将三个值组合在一起的分数函数,然后选择使分数最大化的模型(通过id)。由于您的所有值均为正值,因此作为分数函数,我将采用以下公式:

 score = product(acc_1,acc_2)/diff
以下是我将采取的行动:

首先,我以长格式重塑数据(通过(id,model)更容易处理):

最后,对于每个id,我选择使分数最大化的模型:

ddply(scored,.(id),summarise,model = model[which.max(score)])

#   id model
# 1  A    M3
# 2  B    M2
# 3  C    M3

是的,它涉及统计,但问题不是统计。它只与编码有关,请阅读我的示例。为什么选择id B作为第二个型号?虽然它的M2_diff值最低,但id A的精确度更高。不,我必须为id选择一个模型,而不是为模型选择id。对于模型2,B的差异最小,所以我选择模型2作为B,模型3也可以选择更高的精度,但差异很大。不,这个问题不涉及统计。但我认为你没有表现出任何解决问题的努力。我的意思是没有算法或代码,或者至少没有预期的结果,可以说我们处理的是一个编程问题。。。事实上,我是一个统计人员,不太擅长编码。你能给我推荐一些教程吗???@user370257网上有很多参考资料,甚至在这里的常见问题解答中也有。但是试着获得基本知识。有一定的学习曲线,但R特别适合做统计。是的,R几乎可以用于所有类型的统计计算
ddply(melted,.(id,model),summarise,
      score = prod(value[!grepl('diff',variable)])/ value[grepl('diff',variable)])


# id model     score
# 1  A    M1  599.3143
# 2  A    M2 1501.8258
# 3  A    M3 1959.7500
# 4  B    M1 2247.6571
# 5  B    M2 3648.1091
# 6  B    M3 1118.5024
# 7  C    M1 1419.9450
# 8  C    M2 2734.0182
# 9  C    M3 2735.7750
ddply(scored,.(id),summarise,model = model[which.max(score)])

#   id model
# 1  A    M3
# 2  B    M2
# 3  C    M3