2013-05-09 85 views
2

我目前使用R中的bfast包來分解時間序列。我很好奇,如果可以在斷點前後提取趨勢段的斜率(直到結束或其他斷點)?在斷點前後找到斜坡

以下示例摘自參考手冊。

harvest

的代碼生成,這是在這裏。

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

的問題是,結果輸出對象是不是自動的,換句話說,我可以找到斷點之間的價值觀,並嘗試制定從這些趨勢值的斜率,但這個過程是非常耗時,因爲我必須手動查找開始/結束斷點值並提取其中的每個值。所以理想情況下,我想找到一個更簡單的方法來確定趨勢的斜率(藍線),以便在多個時間序列的所有可用斷點之前和之後。

任何幫助表示讚賞,謝謝。

回答

1

要從情節提取坡度值,以便可以將它們存儲爲以後使用的對象。

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

如果您在繪圖函數上使用str(),那會非常有趣。

> 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) 

會給你'每個識別的趨勢段的斜率和顯着性值'。

有趣的是,它會在您指定的工作:TYPE =「潮流」

+0

謝謝你的努力。將ANOVA設置爲TRUE會給出圖上的斜率,但我實際上想提取斜率值,以便我可以將它們存儲爲對象。非常感謝,我通過使用它可以找到它。 – rj2700 2013-05-16 10:55:17

1

這個問題是很老,但我發現一個更快的方式做到這一點,不調用圖()或STR()函數和計算時間,他們涉及

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

我希望它幫助你!