r - 试图识别 Landsat 图像中的断点 - 为什么 BFAST 会错过明显的断点?

标签 r gis breakpoints raster trend

我有一堆 300 多张陆地卫星 NDVI 图像。我在 R 中使用 BFAST 包来识别断点。正如您从这张图片中看到的那样,中断通常非常明显:
enter image description here

请注意 NDVI 在 1988 年左右出现大幅下降,然后逐渐增加。 BFAST 忽略了明显的断点,而是在逐渐增加的中间 1994 年左右设置了一个断点。

我使用以下 R 代码运行 BFAST:

bfast(ndvi.ts, h=.3, season="harmonic", max.iter=1, breaks=1)

(调整 h 参数似乎并不能改善这种情况)。

请教大家几个问题:

  1. 除了 h 之外,是否还有我可以调整以改进结果的参数?
  2. 如果不是,有没有办法对数据进行处理以获得更好的结果?
  3. 如果没有,R 中是否有另一个断点分析包可能会产生更好的结果?

最佳答案

我进行了相同的分析并最终使用了 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

上面的最后一个对象包含你的变化点的位置,然后我绘制它。希望对您有所帮助。

关于r - 试图识别 Landsat 图像中的断点 - 为什么 BFAST 会错过明显的断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29972479/

相关文章:

r - 不规则数据的时间序列建模

r - 过滤向量的非零元素的管道/dplyr友好方式

numpy - 二维网格中 scipy 标记区域周围的轮廓

javascript - 有没有办法检测多段线是否在/不在此处 map api 的道路边界内?

visual-studio - 跟踪点中允许使用哪些表达式?

c++ - Visual C++,断点不打断

c - (GDB) 断点和反汇编

窗口长度 > 1 : filling missing values 的 rollsumr

r - 从该数据帧中的每个记录时间戳计算一秒窗口中出现多少数据帧记录时间戳的优化

sql - 如何递归查找两个表之间的相交地理