Learn R Programming

StratPal (version 0.4.0)

ornstein_uhlenbeck: simulate ornstein-uhlenbeck (OU) process

Description

Simulates an Ornstein-Uhlenbeck process using the Euler-Maruyama method. The process is simulated on a scale of 0.25 * min(diff(t)) and then interpolated to the values of t. Note that different parametrizations of OU processes are used in the literature. Here we use the parametrization common in mathematics. This translates to the parametrization used in evolutionary biology (specifically, the one in Hansen (1997)) as follows:

  • sigma is identical

  • mu used in the StratPal package corresponds to theta sensu Hansen (1997)

  • theta as used in the StratPal package corresponds to alpha sensu Hansen (1997)

Usage

ornstein_uhlenbeck(t, mu = 0, theta = 1, sigma = 1, y0 = 0)

Value

A list with two elements: t and y. t is a duplicate of the input t, y are the values of the OU process at these times. Output list is of S3 class timelist (inherits from list) and can thus be plotted directly using plot, see ?admtools::plot.timelist

Arguments

t

times at which the process is simulated. Can be heterodistant

mu

number, long term mean

theta

number, mean reversion speed

sigma

positive number, strength of randomness

y0

number, initial value (value of process at the first entry of t)

References

  • Hansen, Thomas F. 1997. “Stabilizing Selection and the Comparative Analysis of Adaptation.” Evolution 51 (5): 1341–51. tools:::Rd_expr_doi("10.1111/j.1558-5646.1997.tb01457.x").

See Also

  • ornstein_uhlenbeck_sl() for simulation on specimen level - for use in conjunction with paleoTS package

  • random_walk() and stasis() to simulate other modes of evolution

Examples

Run this code

library("admtools") # required for plotting of results
t = seq(0, 3, by = 0.01)
l = ornstein_uhlenbeck(t, y0 = 3) # start away from optimum (mu)
plot(l, type = "l")
l2 = ornstein_uhlenbeck(t, y0 = 0) # start in optimum
lines(l2$t, l2$y, col = "red")

Run the code above in your browser using DataLab