splaplace | R Documentation |
This is a collection of tools for learning with spherical Laplace (SL) distribution on a (p-1)-dimensional sphere in \mathbf{R}^p including sampling, density evaluation, and maximum likelihood estimation of the parameters. The SL distribution is characterized by the following density function,
f_{SL}(x; μ, σ) = \frac{1}{C(σ)} \exp ≤ft( -\frac{d(x,μ)}{σ} \right)
for location and scale parameters μ and σ respectively.
dsplaplace(data, mu, sigma, log = FALSE) rsplaplace(n, mu, sigma) mle.splaplace(data, method = c("DE", "Optimize", "Newton"), ...)
data |
data vectors in form of either an (n\times p) matrix or a length-n list. See |
mu |
a length-p unit-norm vector of location. |
sigma |
a scale parameter that is positive. |
log |
a logical; |
n |
the number of samples to be generated. |
method |
an algorithm name for concentration parameter estimation. It should be one of |
... |
extra parameters for computations, including
|
dsplaplace
gives a vector of evaluated densities given samples. rsplaplace
generates
unit-norm vectors in \mathbf{R}^p wrapped in a list. mle.splaplace
computes MLEs and returns a list
containing estimates of location (mu
) and scale (sigma
) parameters.
# ------------------------------------------------------------------- # Example with Spherical Laplace Distribution # # Given a fixed set of parameters, generate samples and acquire MLEs. # Especially, we will see the evolution of estimation accuracy. # ------------------------------------------------------------------- ## DEFAULT PARAMETERS true.mu = c(1,0,0,0,0) true.sig = 1 ## GENERATE A RANDOM SAMPLE OF SIZE N=1000 big.data = rsplaplace(1000, true.mu, true.sig) ## ITERATE FROM 50 TO 1000 by 10 idseq = seq(from=50, to=1000, by=10) nseq = length(idseq) hist.mu = rep(0, nseq) hist.sig = rep(0, nseq) for (i in 1:nseq){ small.data = big.data[1:idseq[i]] # data subsetting small.MLE = mle.splaplace(small.data) # compute MLE hist.mu[i] = acos(sum(small.MLE$mu*true.mu)) # difference in mu hist.sig[i] = small.MLE$sigma } ## VISUALIZE opar <- par(no.readonly=TRUE) par(mfrow=c(1,2)) plot(idseq, hist.mu, "b", pch=19, cex=0.5, main="difference in location", xlab="sample size") plot(idseq, hist.sig, "b", pch=19, cex=0.5, main="scale parameter", xlab="sample size") abline(h=true.sig, lwd=2, col="red") par(opar)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.