Model estimated parameters for fitting double logistic curve.

Usage,
model_params(DT, returns = NULL, id = "id", year = "yr",
  xmidS = NULL, xmidA = NULL, scalS = NULL, scalA = NULL)

Arguments

DT

data.table of NDVI time series. Also optionally starting estimates. See Details.

returns

either 'models' or 'columns'. 'models' will return a data.table of model outcomes by id and year. 'columns' will append model estimate parameters to the input DT.

id

id column. default is 'id'. See details.

year

year column name. default is 'yr'.

xmidS

starting estimates. see Details. - "spring inflection point"

xmidA

starting estimates. see Details. - "fall inflection point"

scalS

starting estimates. see Details. - "scale parameter for spring green-up portion of the NDVI curve"

scalA

starting estimates. see Details. - "scale parameter for fall dry-down portion of the NDVI curve"

Value

data.table of model estimated parameters for double logistic model. If any rows are NULL, nls could not fit a model given starting parameters to the data provided.

Details

Arguments xmidS, xmidA, scalS, scalA allow users to provide either group level or global starting estimates to be used for all models.

Either: a character indicating the column name which stores a group level starting parameter (possibly created by model_start OR a numeric value used as a global value for all models. See nls for more details on starting parameters.

Default value for the year column is 'yr'. If you only have one year of data, set to NULL.

The id argument is used to split between sampling units. This may be a point id, polygon id, pixel id, etc. depending on your analysis. This should match the id provided to filtering functions.

Formula and arguments xmidS, xmidA, scalS, scalA following this from Bischoff et al. (2012).

$$fitted = \frac{1}{1 + \exp{\frac{xmidS - t}{scalS}}} - \frac{1}{1 + \exp{\frac{xmidA - t}{scalA}}}$$

See also

Other model: model_ndvi, model_start

Examples

# Load data.table
library(data.table)

# Read in example data
ndvi <- fread(system.file("extdata", "ndvi.csv", package = "irg"))

# Filter and scale NDVI time series
filter_ndvi(ndvi)
#>       id   yr DayOfYear  NDVI SummaryQA filtered winter rolled    top
#>    1:  1 2002         3 -1367         3     4099   4099   4099 7443.4
#>    2:  2 2002        14  -304         3     5382   5382   5382 7462.9
#>    3:  3 2002         1   374         2     3702   3702   3702 6709.8
#>    4:  4 2002        15   635         3     5180   5180   5180 7288.1
#>    5:  5 2002         9   685         2     4621   4621   4621 7645.1
#>   ---                                                                
#> 1261:  1 2012       353   151         2     4099   4099   4099 7443.4
#> 1262:  2 2012       356   330         2     5382   5382   5382 7462.9
#> 1263:  3 2012       356   560         2     3702   3702   3702 6709.8
#> 1264:  4 2012       356  1720         2     5180   5180   5180 7288.1
#> 1265:  5 2012       356  2689         2     4621   4621   4621 7645.1
scale_doy(ndvi)
#>       id   yr DayOfYear  NDVI SummaryQA filtered winter rolled    top
#>    1:  1 2002         3 -1367         3     4099   4099   4099 7443.4
#>    2:  2 2002        14  -304         3     5382   5382   5382 7462.9
#>    3:  3 2002         1   374         2     3702   3702   3702 6709.8
#>    4:  4 2002        15   635         3     5180   5180   5180 7288.1
#>    5:  5 2002         9   685         2     4621   4621   4621 7645.1
#>   ---                                                                
#> 1261:  1 2012       353   151         2     4099   4099   4099 7443.4
#> 1262:  2 2012       356   330         2     5382   5382   5382 7462.9
#> 1263:  3 2012       356   560         2     3702   3702   3702 6709.8
#> 1264:  4 2012       356  1720         2     5180   5180   5180 7288.1
#> 1265:  5 2012       356  2689         2     4621   4621   4621 7645.1
#>                 t
#>    1: 0.005479452
#>    2: 0.035616438
#>    3: 0.000000000
#>    4: 0.038356164
#>    5: 0.021917808
#>   ---            
#> 1261: 0.964383562
#> 1262: 0.972602740
#> 1263: 0.972602740
#> 1264: 0.972602740
#> 1265: 0.972602740
scale_ndvi(ndvi)
#>       id   yr DayOfYear  NDVI SummaryQA filtered winter rolled    top
#>    1:  1 2002         3 -1367         3     4099   4099   4099 7443.4
#>    2:  2 2002        14  -304         3     5382   5382   5382 7462.9
#>    3:  3 2002         1   374         2     3702   3702   3702 6709.8
#>    4:  4 2002        15   635         3     5180   5180   5180 7288.1
#>    5:  5 2002         9   685         2     4621   4621   4621 7645.1
#>   ---                                                                
#> 1261:  1 2012       353   151         2     4099   4099   4099 7443.4
#> 1262:  2 2012       356   330         2     5382   5382   5382 7462.9
#> 1263:  3 2012       356   560         2     3702   3702   3702 6709.8
#> 1264:  4 2012       356  1720         2     5180   5180   5180 7288.1
#> 1265:  5 2012       356  2689         2     4621   4621   4621 7645.1
#>                 t scaled
#>    1: 0.005479452      0
#>    2: 0.035616438      0
#>    3: 0.000000000      0
#>    4: 0.038356164      0
#>    5: 0.021917808      0
#>   ---                   
#> 1261: 0.964383562      0
#> 1262: 0.972602740      0
#> 1263: 0.972602740      0
#> 1264: 0.972602740      0
#> 1265: 0.972602740      0

# Guess starting parameters for xmidS and xmidA
model_start(ndvi)
#>       id   yr DayOfYear NDVI SummaryQA filtered winter rolled    top         t
#>    1:  2 2003        NA   NA        NA       NA   5382     NA 7462.9        NA
#>    2:  2 2009        NA   NA        NA       NA   5382     NA 7462.9        NA
#>    3:  2 2011        NA   NA        NA       NA   5382     NA 7462.9        NA
#>    4:  2 2011        NA   NA        NA       NA   5382     NA 7462.9        NA
#>    5:  4 2002        61  375         2       NA   5180     NA 7288.1 0.1643836
#>   ---                                                                         
#> 1261:  5 2011       247 7634         0     7634   4621   7727 7645.1 0.6739726
#> 1262:  4 2005       251 7554         0     7554   5180   7554 7288.1 0.6849315
#> 1263:  4 2009       253 7289         0     7289   5180   7289 7288.1 0.6904110
#> 1264:  2 2008       256 7581         0     7581   5382   7581 7462.9 0.6986301
#> 1265:  5 2012       262 7773         1     7773   4621   7905 7645.1 0.7150685
#>       scaled xmidS_start xmidA_start
#>    1:     NA   0.4767123   0.7150685
#>    2:     NA   0.4575342          NA
#>    3:     NA   0.4986301   0.7780822
#>    4:     NA   0.4986301   0.7780822
#>    5:     NA   0.4328767   0.8164384
#>   ---                               
#> 1261:      1   0.4000000   0.7890411
#> 1262:      1   0.4657534   0.7534247
#> 1263:      1   0.4547945   0.7479452
#> 1264:      1   0.4712329   0.8164384
#> 1265:      1   0.3342466          NA

# Double logistic model parameters
#   given global starting parameters for scalS, scalA
#   and output of model_start for xmidS, xmidA
mods <- model_params(
  ndvi,
  returns = 'models',
  xmidS = 'xmidS_start',
  xmidA = 'xmidA_start',
  scalS = 0.05,
  scalA = 0.01
)