2017-01-10 2 views
0

gars Hy, après un processus de prévision des séries chronologiques, j'ai obtenu une trame de données (df) qui est comme ça (les chiffres sont des exemples):précision forecasr - MAPE et valeurs nulles

fcast_mean | actual_values 
12,5  | 12,3 
1,1  | 0 
24,3  | 22,7 
29,6  | 30,4 
...  | ... 

Je sais que MAPE est infini si valeur_actuelle est zéro et c'est ma situation! Ma question est la suivante: Est-il mathématiquement incorrect de mettre 0 à la place de Inf dans la rangée (dans ce cas la 2ème rangée) où abs(actual_values - fcast$mean)/abs(actual_values) est égal à Inf? Quelles sont les conséquences de ce changement pour le calcul de MAPE? Cela ne devient plus un indicateur fiable de l'exactitude des prévisions?

Ma partie du code R pour la MAPE est:

x <- abs(df$actual_values-df$fcast_mean)/abs(df$actual_values) 
x[is.infinite(x)] <- 0 
MAPE <- (1/nrow(df$actual_values))*(sum(x))*100 

Répondre

0

Vous ne pouvez pas simplement changer Inf-0 et attendre les résultats de sens. Un MAPE infini est l'un des problèmes qui peuvent survenir avec MAPE. Utilisez d'autres mesures de précision lorsque ce problème se pose. MASE est une alternative (erreur moyenne à l'échelle absolue), décrite par here.

Étant donné que vous utilisez R, la fonction accuracy du package forecast peut être utile.