View source: R/all_vmsin_fns.R
rvmsin | R Documentation |
The bivariate von Mises sine model
rvmsin( n, kappa1 = 1, kappa2 = 1, kappa3 = 0, mu1 = 0, mu2 = 0, method = "naive" ) dvmsin(x, kappa1 = 1, kappa2 = 1, kappa3 = 0, mu1 = 0, mu2 = 0, log = FALSE)
n |
number of observations. Ignored if at least one of the other parameters have length k > 1, in which case, all the parameters are recycled to length k to produce k random variates. |
kappa1, kappa2, kappa3 |
vectors of concentration parameters; |
mu1, mu2 |
vectors of mean parameters. |
method |
Rejection sampling method to be used. Available choices are |
x |
bivariate vector or a two-column matrix with each row being a bivariate vector of angles (in radians) where the densities are to be evaluated. |
log |
logical. Should the log density be returned instead? |
The bivariate von Mises sine model density at the point x = (x_1, x_2) is given by
f(x) = C_s (κ_1, κ_2, κ_3) \exp(κ_1 \cos(T_1) + κ_2 \cos(T_2) + κ_3 \sin(T_1) \sin(T_2))
where
T_1 = x_1 - μ_1; T_2 = x_2 - μ_2
and C_s (κ_1, κ_2, κ_3) denotes the normalizing constant for the sine model.
Two different rejection sampling methods are implemented for random generation. If method = "vmprop"
, then first the y-marginal
is drawn from the associated marginal density, and then x is generated from the conditional distributio of x given y. The marginal generation of
y is implemented in a rejection sampling scheme with proposal being either von Mises (if the target marginal density is unimodal), or a mixture of
von Mises (if bimodal), with optimally chosen concentration. This the method suggested in Mardia et al. (2007). On the other hand, when
method = "naive"
(default) a (naive) bivariate rejection sampling scheme with (bivariate) uniform propsoal is used.
Note that although method = "vmprop"
may provide better efficiency when the density is highly concentrated, it does have
an (often substantial) overhead due to the optimziation step required to find a reasonable proposal concentration parameter.
This can compensate the efficiency gains of this method, especially when n
is not large.
dvmsin
gives the density and rvmsin
generates random deviates.
kappa1 <- c(1, 2, 3) kappa2 <- c(1, 6, 5) kappa3 <- c(0, 1, 2) mu1 <- c(1, 2, 5) mu2 <- c(0, 1, 3) x <- diag(2, 2) n <- 10 # when x is a bivariate vector and parameters are all scalars, # dvmsin returns single density dvmsin(x[1, ], kappa1[1], kappa2[1], kappa3[1], mu1[1], mu2[1]) # when x is a two column matrix and parameters are all scalars, # dmvsin returns a vector of densities calculated at the rows of # x with the same parameters dvmsin(x, kappa1[1], kappa2[1], kappa3[1], mu1[1], mu2[1]) # if x is a bivariate vector and at least one of the parameters is # a vector, all parameters are recycled to the same length, and # dvmsin returns a vector of with ith element being the density # evaluated at x with parameter values kappa1[i], kappa2[i], # kappa3[i], mu1[i] and mu2[i] dvmsin(x[1, ], kappa1, kappa2, kappa3, mu1, mu2) # if x is a two column matrix and at least one of the parameters is # a vector, rows of x and the parameters are recycled to the same # length, and dvmsin returns a vector of with ith element being the # density evaluated at ith row of x with parameter values kappa1[i], # kappa2[i], # kappa3[i], mu1[i] and mu2[i] dvmsin(x[1, ], kappa1, kappa2, kappa3, mu1, mu2) # when parameters are all scalars, number of observations generated # by rvmsin is n rvmsin(n, kappa1[1], kappa2[1], kappa3[1], mu1[1], mu2[1]) # when at least one of the parameters is a vector, all parameters are # recycled to the same length, n is ignored, and the number of # observations generated by rvmsin is the same as the length of the # recycled vectors rvmsin(n, kappa1, kappa2, kappa3, mu1, mu2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.