2013-05-09 1 views
2

J'utilise actuellement le paquet bfast dans R pour décomposer une série temporelle. J'étais curieux de savoir s'il était possible d'extraire la pente du segment de tendance avant et après un point de rupture (jusqu'à une fin ou un autre point de rupture)?Trouver la pente avant et après le point d'arrêt

L'exemple ci-dessous est tiré du manuel de référence.

harvest

Le code pour générer c'était ici.

require(bfast) 
require(strucchange) 
require(sandwich) 
require(forecast) 
require(raster) 
require(sp) 
fit <- bfast(harvest, season="harmonic", max.iter=2) 
plot(fit, type="trend") 

Le problème est que les objets de sortie de résultat ne sont pas automatiques, autrement dit, je peux trouver les valeurs entre les points d'arrêt et essayer de formuler la pente à partir de ces valeurs de tendance, mais le processus est très long parce que Je dois trouver manuellement les valeurs du point de coupure début/fin et extraire toutes les valeurs intermédiaires. Donc, idéalement, je veux trouver un moyen plus facile d'identifier la pente de la tendance (ligne bleue) avant et après tous les points de rupture disponibles pour plusieurs séries chronologiques.

Toute aide est appréciée, merci.

Répondre

1

Pour extraire les valeurs de pente du terrain pour qu'on puisse les stocker sous forme d'objets pour une utilisation ultérieure.

(plot(fit, ANOVA=TRUE)$slope) 

Très intéressant si vous utilisez str() sur la fonction de la parcelle.

> str(plot(fit, ANOVA=TRUE)) 
'data.frame': 5 obs. of 2 variables: 
$ slope: num 0.00109 0.01314 -0.20077 0.14659 0.11524 
$ prob : num 9.07e-01 2.41e-05 1.01e-13 3.08e-13 1.06e-13 
> (plot(fit, ANOVA=TRUE)$slope) 
[1] 0.001088344 0.013139678 -0.200767197 0.146594801 0.115236688 
> 
1
plot(fit, ANOVA = TRUE) 

vous donnerait des valeurs de «pente et d'importance pour chaque segment de tendance identifié».

Fait intéressant, il fonctionne lorsque vous spécifiez: type = « tendance »

+0

Merci pour l'effort. Mettre ANOVA à TRUE donnera les pentes sur la parcelle, mais je voulais en fait extraire les valeurs de pente afin que je puisse les stocker en tant qu'objets. Merci beaucoup, j'ai pu le trouver en l'utilisant. – rj2700

1

Cette question est assez vieux, mais je l'ai trouvé un moyen plus rapide de le faire, sans appeler la parcelle() ou la fonction str() et le temps de calcul impliquent

niter <- length(fit$output) 
slopes<-coef(fit$output[[niter]]$bp.Vt)[,2] 

Je l'espère t'aide!

Questions connexes