Fine Curve fitting for INPUT time-series.
curvefits(INPUT, brks, options = list(), ...)
A list object with the elements of 't', 'y', 'w', 'Tn' (optional)
and 'ylu', returned by
A list object with the elements of 'fit' and 'dt', returned by
see section: options for fitting for details.
other parameters to
List of phenofit fitting object.
c('AG', 'Beck', 'Elmore', 'Zhang')``): Fine curve fitting methods, can be one or more of c('AG', 'Beck', 'Elmore', 'Zhang',
'Gu', 'Klos')‘. Note that ’Gu' and 'Klos' are very slow.
iters (default 2): max iterations of fine fitting.
wTSM): Character or function, weights updating function
of fine fitting function.
wmin (default 0.1): min weights in the weights updating procedure.
use.rough (default FALSE): Whether to use rough fitting smoothed
time-series as input? If
false, smoothed VI by rough fitting will be used
for Phenological metrics extraction; If
true, original input
y will be
used (rough fitting is used to divide growing seasons and update weights.
use.y0 (default TRUE): boolean. whether to use original
y0 as the input
plot_input, note that not for curve fitting.
y0 is the original
value before the process of
nextend (default 2): Extend curve fitting window, until
nextend good or
marginal points are found in the previous and subsequent growing season.
maxExtendMonth (default 1): Search good or marginal good values in
previous and subsequent
minExtendMonth (default 0.5): Extend period defined by
maxExtendMonth, should be no shorter than
minExtendMonth. When all
points of the input time-series are good value, then the extending period
will be too short. In that situation, we can't make sure the connection
between different growing seasons is smoothing.
minPercValid: (default 0, not use). If the percentage of good- and
marginal- quality points is less than
minPercValid, curve fiting result is
minT: (not use). If
Tn not provided in
not be used.
minT use night temperature Tn to define backgroud value
Tn < minT treated as ungrowing season).
data("CA_NS6") d = CA_NS6 nptperyear <- 23 INPUT <- check_input(d$t, d$y, d$w, QC_flag = d$QC_flag, nptperyear = nptperyear, south = FALSE, maxgap = nptperyear/4, alpha = 0.02, wmin = 0.2) # plot_input(INPUT) # Rough fitting and growing season dividing wFUN <- "wTSM" brks2 <- season_mov(INPUT, options = list( rFUN = "smooth_wWHIT", wFUN = wFUN, r_min = 0.05, ypeak_min = 0.05, lambda = 10, verbose = FALSE )) # plot_season(INPUT, brks2, d) # Fine fitting fits <- curvefits( INPUT, brks2, options = list( methods = c("AG", "Beck", "Elmore", "Zhang"), #,"klos", "Gu" wFUN = wFUN, nextend = 2, maxExtendMonth = 2, minExtendMonth = 1, minPercValid = 0.2 ) ) r_param = get_param(fits) r_pheno = get_pheno(fits) r_gof = get_GOF(fits) d_fit = get_fitting(fits) g <- plot_curvefits(d_fit, brks2) grid::grid.newpage(); grid::grid.draw(g)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.