| Version: | 0.1.0 | 
| Date: | 2018-06-18 | 
| Title: | Circular Drift-Diffusion Model | 
| Author: | Yi-Shin Lin [aut, cre], Andrew Heathcote [aut], Peter Kvam [aut] | 
| Maintainer: | Yi-Shin Lin <yishin.lin@utas.edu.au> | 
| Depends: | R (≥ 3.0.2) | 
| Description: | Circular drift-diffusion model for continuous reports. | 
| License: | GPL-2 | 
| LazyData: | TRUE | 
| Imports: | Rcpp (≥ 0.12.3) | 
| LinkingTo: | Rcpp (≥ 0.12.3), RcppArmadillo (≥ 0.6.700.6.0) | 
| RoxygenNote: | 6.0.1 | 
| NeedsCompilation: | yes | 
| Repository: | CRAN | 
| Packaged: | 2018-06-18 00:27:08 UTC; yslin | 
| Date/Publication: | 2018-06-18 04:30:26 UTC | 
Circular Drift-diffusion Model
Description
Circular drift-diffusion model for continuous report.
Author(s)
Yi-Shin Lin <yishin.lin@utas.edu.au> 
Andrew Heathcote <andrew.heathcote@utas.edu.au> 
Peter Kvam <kvam.peter@gmail.com> 
References
Smith, P. L. (2016). Diffusion Theory of Decision Making in Continuous Report, Psychological Review, 123(4), 425–451.
Find First k Positive Zeros for the Bessel Functions
Description
Find first k positive zeros of the Bessel function J(n,x) or Y(n,x) using Halley's method.
Usage
besselzero(nu, k, kind)
Arguments
| nu | The order of the corresponding Bessel function. | 
| k | an integer for first k positive zeros. | 
| kind | 
Value
a vector
References
Examples
nu <- seq(0, 5, length.out=10)
output <- matrix(numeric(5*length(nu)), nrow=5)
  for(i in 1:length(nu)) {
    output[,i] <- besselzero(nu[i], 5, 1)
  }
output
output <- matrix(numeric(5*length(nu)), nrow=5)
for(i in 1:length(nu)) {
    output[,i] <- besselzero(nu[i], 5, 2)
}
output
The Circular Drift-diffusion Distribution
Description
Density function and random generation for the circular drift-diffusion
model with theta vector equal to pVec.  dcddm is the
equation (23) on page 433 in Smith (2016).
Usage
dcddm(x, pVec, k = 141L)
rcddm(n, pVec, p = 0.15)
Arguments
| x | a matrix storing a first column as RT and a second column of continuous responses/reports/outcomes. Each row is a trial. | 
| pVec | a parameter vector with the order [a, vx, vy, t0, s], or [thresh, mu1, mu2, ndt, sigmasq]. The order matters. | 
| k | a precision for calculating the infinite series in  | 
| n | number of observations. | 
| p | a precision for random walk step in  | 
Value
dcddm gives a log-likelihood vector. rddm generates
random deviates, returning a n x 3 matrix with the columns: RTs, choices
and then angles.
References
Smith, P. L. (2016). Diffusion Theory of Decision Making in Continuous Report, Psychological Review, 123 (4), 425–451.
Examples
## dcddm example
x <- cbind(
RT= c(1.2595272, 0.8693937, 0.8009044, 1.0018933, 2.3640007, 1.0521304),
R = c(1.9217430, 1.7844653, 0.2662521, 2.1569724, 1.7277440, 0.8607271)
)
pVec <- c(a=2.45, vx=1.5, vy=1.25, t0=.1, s=1)
dcddm(x, pVec)
## rcddm example
pVec <- c(a=2, vx=1.5, vy=1.25, t0=.25, s=1)
den  <- rcddm(1e3, pVec);
hist(den[,1], breaks = "fd", xlab="Response Time",  main="Density")
hist(den[,3], breaks = "fd", xlab="Response Angle", main="Density")
Log-Likelihood for Circular First Passage Time
Description
Calculate circular log-likelihood of the first passage time, using equation (22) on p 432.
Usage
logLik_dt(x, pVec, k = 141L)
Arguments
| x | a matrix storing a first column as RT and a second column of continuous responses/reports/outcomes. Each row is a trial. | 
| pVec | a parameter vector with the order [a, vx, vy, t0, s], a stands for response threshold, vx is the drift rate along x axis, vy is the drift rate along y axis, t0 is the non-decision time, and s is the within-trial standard deviation. | 
| k | a precision for bessel function. The larger the k is, the larger the memory space is required. Default is 141. | 
Value
a vector
References
Smith, P. L. (2016). Diffusion Theory of Decision Making in Continuous Report, Psychological Review, 123 (4), 425–451.
Examples
x <- cbind(
RT=c(1.2595272, 0.8693937, 0.8009044, 1.0018933, 2.3640007, 1.0521304),
R =c(1.9217430, 1.7844653, 0.2662521, 2.1569724, 1.7277440, 0.8607271)
)
pVec <- c(a=2.45, vx=1.5, vy=1.25, t0=.1, s=1)
den  <- logLik_dt(x, pVec=pVec);
den
Log-Likelihood for Continuous Reports
Description
Calculate log-likelihood of the continuous reports, using part part in equation (23) on p 433.
Usage
logLik_resp(x, pVec)
Arguments
| x | a matrix storing a first column as RT and a second column of continuous responses/reports/outcomes. Each row is a trial. | 
| pVec | a parameter vector with the order [a, vx, vy, t0, s], or [thresh, mu1, mu2, ndt, sigmasq], using alternative names. | 
Value
a vector
References
Smith, P. L. (2016). Diffusion Theory of Decision Making in Continuous Report, Psychological Review, 123 (4), 425–451.
Examples
x <- cbind(
RT=c(1.2595272, 0.8693937, 0.8009044, 1.0018933, 2.3640007, 1.0521304),
R =c(1.9217430, 1.7844653, 0.2662521, 2.1569724, 1.7277440, 0.8607271)
)
pVec <- c(a=2.45, vx=1.5, vy=1.25, t0=.1, s=1)
den  <- logLik_resp(x, pVec=pVec); den
Generate random deviates for the von Mises distribution
Description
Generate random deviates for the von Mises distribution.
Usage
rvm(n, mu, k)
Arguments
| n | number of observations. | 
| mu | mean direction of the distribution. | 
| k | non-negative numeric value for the concentration parameter of the distribution | 
Details
A random variable for circular normal distribution has the form:
f(theta; mu, kappa) = 1 / (2 * pi * I0(kappa)) * exp(kappa * cos(theta-mu))
theta is withins 0 and 2 * pi.
I0(kappa) in the normalizing constant is the modified Bessel
function of the first kind and order zero.
Value
a vector
Examples
n  <- 100
mu <- 0
k  <- 10
vm3_de <- rvm(n, mu, k)       ## in degree unit
vm3_pi <- vm3_de %% (2 * pi)  ## in radian unit