我有一堆300多个Landat NDVI图像。我在R中使用BFAST包来识别断点。从这张图片可以看出,休息时间往往非常明显:
请注意1988年后NDVI大幅下降,然后逐渐增加。 BFAST忽略了明显的突破,而是在1994年左右在逐渐增加的中间设置一个断点。
我使用以下R代码来运行BFAST:
bfast(ndvi.ts,h = .3,season =“harmon”,max.iter = 1,breaks = 1)
(调整h参数似乎不会改善这种情况)。
每个人都有几个问题:
答案 0 :(得分:1)
我已经进行了相同的分析,最终使用了ecp包http://cran.r-project.org/web/packages/ecp/vignettes/ecp.pdf
在我的工作流程中,我为多个站点提取每个图像日期的索引,并将它们放在数据框中。然后从那里我有一个循环,计算变化点并创建一个时间序列的ggplot与指示的变化点。我不会在这里显示整个循环,但是用于识别变更点的相关代码类似于:
library("ecp")
df <- "your data frame"
df2 <- df[ ,1]#assuming your data values are in first column
ecp.mat <- matrix(df2, ncol = 1)
ecp.out <- e.divisive(ecp.mat, R = 499, sig.lvl = sig, alpha = 1 )
ecp.est <- ecp.out$estimates[c(-1, -length(ecp.out$estimates))]#drop first and last records
上面的最后一个对象包含变更点的位置,然后我将其绘制出来。希望有所帮助。