J'ai un objet de série temporelle calc_visit_ts
. Je souhaite appliquer le modèle de série temporelle le mieux adapté en fonction de la valeur MAPE pour chaque modèle. Le problème auquel je suis confronté est que le modèle multiplicatif HOLT-WINTER de valeur MAPE ne peut pas être calculé de la même manière que les autres modèles (car il me donne une valeur MAPE différente par rapport à summary(visit_model_Hw_M)
).Application de différents modèles de séries chronologiques (ARIMA, HOLT-WINTER) sur la base de MAPE
#### AUTO-ARIMA
visit_model_Arima <- auto.arima(calc_visit_ts)
# summary(visit_model_Arima)
#### HOLT-WINTER ADDITIVE
visit_model_Hw_A <- hw(calc_visit_ts,h=monthly_prediction,seasonal = "additive")
# summary(visit_model_Hw_A)
#### HOLT-WINTER MULTIPLICATIVE
visit_model_Hw_M <- hw(calc_visit_ts,h=monthly_prediction,seasonal = "multiplicative")
# summary(visit_model_Hw_M)
#### Calculating MAPE on models for best suit
model_Mape<- c(MAPE_model(visit_model_Arima)
,MAPE_model(visit_model_Hw_A))
#,MAPE_model(visit_model_Hw_M)) this is not accurate
model_Mape=na.omit(model_Mape)
token<-which(min(model_Mape)==model_Mape)
if(length(token)>0)
{
if(token==1)
{visit_model<-visit_model_Arima
}else if(token==2)
{visit_model<-visit_model_Hw_A
}else if(token==3)
{visit_model<-visit_model_Hw_M
}else
{
##EXCEPTION HANDLING
}
}
summary(visit_model)
Et voici la fonction -je utiliser pour effectuer le calcul MAPE sur les modèles -
MAPE_model <- function(visit_model) {
#CHECK FOR ZERO CONDIITION if(visit_model$x!=0)
mape = mean(abs(visit_model$residuals)/visit_model$x)
return(mape)
}
données pour les séries chronologiques -
calc_visit_ts
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2012 35 53 65 60 64 49 63 55 59 66
2013 62 54 77 67 84 62 82 65 59 67 60 67
2014 73 75 55 76 93 96 89 76 88 65 83 82
2015 76 72 75 94 91 83 72 73 80 83 81 81
2016 97 91 90 80 101 98
dput(calc_visit_ts)
structure(c(35, 53, 65, 60, 64, 49, 63, 55, 59, 66, 62, 54, 77,
67, 84, 62, 82, 65, 59, 67, 60, 67, 73, 75, 55, 76, 93, 96, 89,
76, 88, 65, 83, 82, 76, 72, 75, 94, 91, 83, 72, 73, 80, 83, 81,
81, 97, 91, 90, 80, 101, 98), .Tsp = c(2012.16666666667, 2016.41666666667,
12), class = "ts")
Pour montrer exactement ce que je moyenne -
Holt-Winter Additif Terrain
Holt-Winter multiplicatif Terrain
La question est summary(visit_model_Hw_M)
donne MAPE = 9.075097
alors que, MAPE_model(visit_model_Hw_M)
donne 0.001273087
parce que le modèle multiplicatif correspond à la courbe (points de données) en utilisant visit_model_Hw_M$residuals
n'est pas un moyen approprié de calculer le MAPE (car la fonction essaie de s'adapter à la courbe).
Existe-t-il un moyen de récupérer la valeur MAPE pour HOLT-WINTER multiplicatif à partir du résumé lui-même? OU un moyen d'estimer correctement la valeur MAPE pour le modèle multiplicatif HOLT-HIVER?
Veuillez fournir l'objet de données en utilisant 'dput' ou reconstruire la question en utilisant des données intégrées afin que vous ayez un MCVE http://stackoverflow.com/help/mcve –
Ajouté les données . Désolé était pressé. –
Merci! Pas de soucis. BTW si vous utilisez 'dput' alors cela nous permet de le copier dans nos sessions R, c'est-à-dire' dput (calc_visit_ts) '. Parfois, nous pouvons charger les données à partir du presse-papiers, mais pas quand il manque des points de données comme celui-ci. –