Trying to define breakpoints in Landsat imagery - why is BFAST missing obvious breaks?

I have a stack of 300+ NDVI landscape images. I am using the BFAST package in R to define breakpoints. The breaks are often extremely obvious, as you can see from this image:
enter image description here

Note that there was a huge drop in NDVI in 1988, followed by a gradual increase. BFAST ignores the obvious break and instead puts a breakpoint around 1994 in the middle of the fade.

I used the following R code to run BFAST:

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

(Tweaking the h parameter doesn't seem to improve the situation.)

A few questions for everyone:

  • Is there a parameter other than h that I can tweak to improve the results?
  • If not, is there a way to massaging the data to get better results?
  • If not, is there another breakpoint analysis package in R that can give better results?
+3


source to share


1 answer


I struggled with the same parsing and ended up using the ecp package http://cran.r-project.org/web/packages/ecp/vignettes/ecp.pdf

In my workflow, I retrieve my index for image dates for multiple sites and put them in a dataframe. Then from there I have a loop that calculates the changepoint and creates a ggplot of the time series with the specified changepoints. I won't show the entire loop here, but the code for identifying change points looks something like this:



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

      

The last object above contains the location of your replacement points and then I draw that. Hope it helps.

+1


source







All Articles