2017-04-13 54 views
0

我有一個真實的數據和預測的數據,我想計算整體MAPE和MSE。數據是時間序列,每列代表不同星期的數據。如下所示,我預測每個項目52周的每個值。什麼是最好的總體計算R的錯誤。計算平均MAPE和MSE的有效方法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") 

回答

0

你是如何得到預測值的?用於獲得預測值的模型可能基於最小化預測誤差的某些函數(通常爲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