【问题标题】:Efficient way to calculate average MAPE and MSE in R在 R 中计算平均 MAPE 和 MSE 的有效方法
【发布时间】:2017-09-10 03:52:21
【问题描述】:

我有一个真实数据和预测数据,我想计算整体 MAPE 和 MSE。数据是时间序列,每列代表不同周的数据。我预测每个项目在 52 周内的价值,如下所示。在 R 中计算总体误差的最佳方法是什么。

real = matrix( 
    c("item1", "item2", "item3", "item4", .5, .7, 0.40, 0.6, 0.3, 0.29, 0.7, 0.09, 0.42, 0.032, 0.3, 0.37), 
     nrow=4, 
     ncol=4) 
colnames(real) <- c("item", "week1", "week2", "week3")


predicted = matrix( 
  c("item1", "item2", "item3", "item4", .55, .67, 0.40, 0.69, 0.13, 0.9, 0.47, 0.19, 0.22, 0.033, 0.4, 0.37), 
  nrow=4, 
  ncol=4) 
colnames(predicted) <- c("item", "week1", "week2", "week3")

【问题讨论】:

    标签: r machine-learning statistics


    【解决方案1】:

    首先如何获得预测值?您用于获取预测值的模型可能基于最小化某些预测误差函数(通常是 MSE)。因此,如果您计算预测值,则 MSE 和 MAPE 上的残差和一些指标已在拟合模型的某处计算。您可能可以直接检索它们。

    如果预测值碰巧被扔到你的腿上,而你与拟合模型无关,那么你计算 MSE 和 MAPE 如下:

    每个项目每周只有一条记录。因此,对于每个项目,您每周只能计算一个 预测误差。根据您的应用,您可以选择计算每件商品或每周的 MSE 和 MAPE。

    这是您的数据的样子:

    real <- matrix( 
      c(.5, .7, 0.40, 0.6, 0.3, 0.29, 0.7, 0.09, 0.42, 0.032, 0.3, 0.37), 
      nrow = 4, ncol = 3)
    colnames(real) <- c("week1", "week2", "week3")
    
    predicted <- matrix( 
      c(.55, .67, 0.40, 0.69, 0.13, 0.9, 0.47, 0.19, 0.22, 0.033, 0.4, 0.37), 
      nrow = 4, ncol = 3) 
    colnames(predicted) <- c("week1", "week2", "week3")
    

    计算每个条目的(百分比/平方)误差:

    pred_error    <- real - predicted 
    pct_error     <- pred_error/real
    squared_error <- pred_error^2
    

    计算 MSE、MAPE:

    # For per-item prediction errors
    apply(squared_error,  MARGIN = 1, mean)    # MSE
    apply(abs(pct_error), MARGIN = 1, mean)    # MAPE
    
    # For per-week prediction errors
    apply(squared_error,  MARGIN = 0, mean)    # MSE
    apply(abs(pct_error), MARGIN = 0, mean)    # MAPE
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 2021-12-26
      • 2019-07-10
      • 2017-03-25
      • 1970-01-01
      • 2012-07-01
      相关资源
      最近更新 更多