2

現在、R で bfast パッケージを使用して時系列を分解しています。ブレークポイントの前後 (終了点または別のブレークポイントまで) のトレンド セグメントの勾配を抽出できるかどうかに興味がありました。

以下の例は、リファレンス マニュアルから抜粋したものです。

収穫

これを生成するコードはここにありました。

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

問題は、結果出力オブジェクトが自動化されていないことです。つまり、ブレークポイント間の値を見つけて、それらのトレンド値から勾配を定式化しようとすることができますが、開始点を手動で見つける必要があるため、プロセスに非常に時間がかかります。 /end ブレークポイント値とその間のすべての値を抽出します。理想的には、複数の時系列で使用可能なすべてのブレークポイントの前後で、トレンドの傾き (青い線) を特定する簡単な方法を見つけたいと考えています。

どんな助けでも大歓迎です、ありがとう。

4

3 に答える 3

1

この質問はかなり古いものですが、plot() または str() 関数を呼び出さずに、計算時間を短縮するより高速な方法を見つけました。

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

お役に立てば幸いです。

于 2016-07-11T13:00:04.093 に答える
1
plot(fit, ANOVA = TRUE)

「識別された各トレンド セグメントの勾配と重要度の値」が得られます。

興味深いことに、次のように指定すると機能します: type="trend"

于 2013-05-10T11:30:10.333 に答える
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
> 
于 2013-05-16T10:56:59.650 に答える