2017-05-02 3 views
0

tout le monde. Je viens de commencer à apprendre des séries chronologiques.résultat étrange lors de l'utilisation r ets() fonction pour analyser les données CPI

J'ai les données mensuelles suivantes sur l'IPC (2010.01 - 2015.12) en provenance de Chine.

Je voudrais faire quelques prévisions avec ces données en utilisant la fonction ets() de R.

vector1 <- c(100.6, 101.2, 99.3, 100.2, 99.9, 99.4, 100.4, 100.6, 100.6, 100.7, 101.1, 100.5, 101.0, 101.2, 99.8, 100.1, 100.1, 100.3, 100.5, 100.3, 100.5, 100.1, 99.8, 100.3, 101.5, 99.9, 100.2, 99.9, 99.7, 99.4, 100.1, 100.6, 100.3, 99.9, 100.1, 100.8, 101.0, 101.1, 99.1, 100.2, 99.4, 100.0, 100.1, 100.5, 100.8, 100.1, 99.9, 100.3, 101.0, 100.5, 99.5, 99.7, 100.1, 99.9, 100.1, 100.2, 100.5, 100.0, 99.8, 100.3, 100.3, 101.2, 99.5, 99.8, 99.8, 100.0, 100.3, 100.5, 100.1, 99.7, 100.0, 100.5) 

J'ai essayé de suivre la procédure à partir du lien suivant: https://stats.stackexchange.com/questions/146098/ets-function-how-to-avoid-forecast-not-in-line-with-historical-data

Le code est aussi suit:

train_ts<- ts(vector1, frequency=12) 
fit2<-ets(train_ts, model="ZZZ", damped=TRUE, alpha=NULL, beta=NULL, gamma=NULL, 
     phi=NULL, additive.only=FALSE, lambda=TRUE, 
     lower=c(0.000,0.000,0.000,0.8),upper=c(0.9999,0.9999,0.9999,0.98), 
     opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3, 
     bounds=c("both","usual","admissible"), ic=c("aicc","aic","bic"), 
     restrict=TRUE) 
ets <- forecast(fit2,h=5,method ='ets') 

plot(forecast(fit2)) 
lines(fit2$states[,1],col='red') 

Cependant, j'ai le graphique suivant qui semble bizarre. Et j'obtiens alpha = 0, beta = 0 et gamma = 0 ... ce qui semble vouloir dire que je n'ai aucune tendance et aucune saisonnalité?

enter image description here

Désolé que j'ai beaucoup de questions ..

  1. Est-ce que regarder les prévisions à droite? Je pense que quelque chose ne va pas ici, mais je n'arrive pas à comprendre quel est le problème.

  2. Qu'est-ce que "fit2 $ states [, 1]" signifie? que représente la ligne rouge?

Merci beaucoup pour tous vos genre aide ..

J'ai ensuite essayé d'utiliser une partie du vecteur de données [01:43]. ce que j'ai ... enter image description here

Répondre

1

D'abord, les paramètres de lissage proches de zéro ne signifient pas que vous n'avez aucun niveau, tendance ou saisonnalité. Ils signifient que le niveau, la tendance ou la saisonnalité ne changent pas au fil du temps. Voir https://www.otexts.org/fpp/7.

Deuxièmement, vous ne spécifiez pas la version du paquet prévisions que vous utilisez, ou même que vous utilisez le package Prévisions. Essayons donc votre code en utilisant la version actuelle du package:

library(forecast) 
vector1 <- c(100.6, 101.2, 99.3, 100.2, 99.9, 99.4, 100.4, 100.6, 
    100.6, 100.7, 101.1, 100.5, 101.0, 101.2, 99.8, 100.1, 100.1, 100.3, 
    100.5, 100.3, 100.5, 100.1, 99.8, 100.3, 101.5, 99.9, 100.2, 99.9, 
    99.7, 99.4, 100.1, 100.6, 100.3, 99.9, 100.1, 100.8, 101.0, 101.1, 
    99.1, 100.2, 99.4, 100.0, 100.1, 100.5, 100.8, 100.1, 99.9, 100.3, 
    101.0, 100.5, 99.5, 99.7, 100.1, 99.9, 100.1, 100.2, 100.5, 100.0, 
    99.8, 100.3, 100.3, 101.2, 99.5, 99.8, 99.8, 100.0, 100.3, 100.5, 
    100.1, 99.7, 100.0, 100.5) 
train_ts <- ts(vector1, frequency=12) 
fit2 <- ets(train_ts, damped=TRUE) 
ets <- forecast(fit2, h=5) 
plot(forecast(fit2)) 
lines(fit2$states[,1],col='red') 

enter image description here

Cela semble ok pour moi, et pas la même chose que ce que vous avez publié.

La première colonne de la matrice states contient le niveau de la série. Dans ce cas, le niveau passe au milieu des données, comme vous pouvez vous y attendre.

+0

Merci beaucoup pour votre aide! J'utilisais la dernière version de la version 8.0. –