⚠️There's a newer version (2.0.0) of this package. Take me there.

nlstimedist

nlstimedist fits a biologically meaningful distribution function to time-sequence data (phenology), estimates parameters to draw the cumulative distribution function and probability density function and calculates standard statistical moments and percentiles.

Installation

You can install:

  • the latest released version from CRAN with
install.packages("nlstimedist")
  • the latest development version from GitHub with
devtools::install_github("nathaneastwood/nlstimedist")

Usage

Preparing the data

Data should be in tidy format. nlstimedist provides three example tidy datasets: lobelia, pupae and tilia.

head(tilia)
#>   Day Trees
#> 1  94     0
#> 2  95     0
#> 3  96     1
#> 4 103     1
#> 5 104     0
#> 6 105     3

We first need to calculate the cumulative number of trees as well as the proportions. We do this using the tdData function.

tdTilia <- tdData(tilia, x = "Day", y = "Trees")
tdTilia
#> # A tibble: 26 × 4
#>      Day Trees  cumN    propMax
#>    <int> <dbl> <dbl>      <dbl>
#> 1     96     1     1 0.01538462
#> 2    103     1     2 0.03076923
#> 3    105     3     5 0.07692308
#> 4    107     1     6 0.09230769
#> 5    110     4    10 0.15384615
#> 6    111     7    17 0.26153846
#> 7    112     3    20 0.30769231
#> 8    114     1    21 0.32307692
#> 9    115     3    24 0.36923077
#> 10   116     6    30 0.46153846
#> # ... with 16 more rows

Fitting the model

We fit the model to the proportion of the cumulative number of trees (propMax) in the tdTilia data using the timedist function.

model <- timedist(data = tdTilia, x = "Day", y = "propMax", r = 0.1, c = 0.5, t = 120)
model
#> Nonlinear regression model
#>   model: propMax ~ 1 - (1 - (r/(1 + exp(-c * (Day - t)))))^Day
#>    data: data
#>         r         c         t 
#>   0.02721   0.17126 124.84320 
#>  residual sum-of-squares: 0.01806
#> 
#> Number of iterations to convergence: 10 
#> Achieved convergence tolerance: 1.49e-08

Extracting the moments

We can extract the mean, variance, standard deviation, skew, kurtosis and entropy of the model as follows.

model$m$getMoments()
#>       mean variance       sd     skew kurtosis entropy
#> 1 118.0325 180.7509 13.44436 4.324762 46.82073 5.36145

Extracting the RSS

Similarly we can extract the RSS of the model

model$m$rss()
#> [1] 0.9930469

Plotting the PDF and CDF

The pdf and cdf of the model have their own plotting functions.

tdPdfPlot(model)

tdCdfPlot(model)

Citation

Franco, M. (2012). The time-course of biological phenomenon - illustrated with the London Marathon. Unpublished manuscript. Plymouth University.

Copy Link

Version

Down Chevron

Install

install.packages('nlstimedist')

Monthly Downloads

66

Version

1.1.4

License

GPL-2

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

May 15th, 2019

Functions in nlstimedist (1.1.4)