FitDoubleLogBeck {greenbrown} | R Documentation |
This function fits a double logistic curve to observed values using the function as described in Beck et al. (2006) (equation 3).
FitDoubleLogBeck(x, t = 1:length(x), tout = t, weighting = TRUE, hessian = FALSE, plot = FALSE, ninit = 30, ...)
x |
vector or time series to fit |
t |
time steps |
tout |
time steps of output (can be used for interpolation) |
weighting |
apply the weighting scheme to the observed values as described in Beck et al. 2006? This is useful for NDVI observations because higher values will get an higher weight in the estimation of the double logisitic function than lower values. |
hessian |
compute standard errors of parameters based on the Hessian? |
plot |
plot iterations for logistic fit? |
ninit |
number of inital parameter sets from which to start optimization |
... |
further arguments (currently not used) |
The function returns a list with fitted values, parameters, fitting formula and standard errors if hessian is TRUE
Matthias Forkel <matthias.forkel@geo.tuwien.ac.at> [aut, cre]
Beck, P.S.A., C. Atzberger, K.A. Hodga, B. Johansen, A. Skidmore (2006): Improved monitoring of vegetation dynamics at very high latitudes: A new method using MODIS NDVI. - Remote Sensing of Environment 100:321-334.
# select one year of data data(ndvi) x <- as.vector(window(ndvi, start=c(1994,1), end=c(1994, 12))) plot(x) # fit double-logistic function to one year of data fit <- FitDoubleLogBeck(x) lines(fit$predicted, col="blue") # do more inital trials, plot iterations and compute parameter uncertainties FitDoubleLogBeck(x, hessian=TRUE, plot=TRUE, ninit=100) # fit double-logistic function to one year of data, # interpolate to daily time steps and calculate phenology metrics tout <- seq(1, 12, length=365) # time steps for output (daily) fit <- FitDoubleLogBeck(x, tout=tout) PhenoDeriv(fit$predicted, plot=TRUE)