The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Title: Adaptive Rejection Sampling
Version: 0.8
Date: 2024-09-05
Maintainer: Paulino Perez Rodriguez <perpdgo@colpos.mx>
Depends: R (≥ 3.1.2)
Description: Adaptive Rejection Sampling, Original version.
License: GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]
NeedsCompilation: yes
Packaged: 2024-09-05 20:26:20 UTC; pperez
Author: Paulino Perez Rodriguez [aut, cre] (Original C++ code from Arnost Komarek based on ars.f written by P. Wild and W. R. Gilks)
Repository: CRAN
Date/Publication: 2024-09-06 15:30:05 UTC

Adaptive Rejection Sampling

Description

Adaptive Rejection Sampling from log-concave density functions

Usage

ars(n=1,f,fprima,x=c(-4,1,4),ns=100,m=3,emax=64,lb=FALSE,ub=FALSE,xlb=0,xub=0,...)

Arguments

n

sample size

f

function that computes log(f(u,...)), for given u, where f(u) is proportional to the density we want to sample from

fprima

d/du log(f(u,...))

x

some starting points in wich log(f(u,...) is defined

ns

maximum number of points defining the hulls

m

number of starting points

emax

large value for which it is possible to compute an exponential

lb

boolean indicating if there is a lower bound to the domain

xlb

value of the lower bound

ub

boolean indicating if there is a upper bound to the domain

xub

value of the upper bound bound

...

arguments to be passed to f and fprima

Details

ifault codes, subroutine initial

0:

successful initialisation

1:

not enough starting points

2:

ns is less than m

3:

no abscissae to left of mode (if lb = false)

4:

no abscissae to right of mode (if ub = false)

5:

non-log-concavity detect

ifault codes, subroutine sample

0:

successful sampling

5:

non-concavity detected

6:

random number generator generated zero

7:

numerical instability

Value

a sampled value from density

Author(s)

Paulino Perez Rodriguez, original C++ code from Arnost Komarek based on ars.f written by P. Wild and W. R. Gilks

References

Gilks, W.R., P. Wild. (1992) Adaptive Rejection Sampling for Gibbs Sampling, Applied Statistics 41:337–348.

Examples


library(ars)

#Example 1: sample 20 values from the normal distribution N(2,3)
f<-function(x,mu=0,sigma=1){-1/(2*sigma^2)*(x-mu)^2}
fprima<-function(x,mu=0,sigma=1){-1/sigma^2*(x-mu)}
mysample<-ars(20,f,fprima,mu=2,sigma=3)
mysample
hist(mysample)

#Example 2: sample 20 values from a gamma(2,0.5)
f1<-function(x,shape,scale=1){(shape-1)*log(x)-x/scale}
f1prima<-function(x,shape,scale=1) {(shape-1)/x-1/scale}
mysample1<-ars(20,f1,f1prima,x=4.5,m=1,lb=TRUE,xlb=0,shape=2,scale=0.5)
mysample1
hist(mysample1)

#Example 3: sample 20 values from a beta(1.3,2.7) distribution
f2<-function(x,a,b){(a-1)*log(x)+(b-1)*log(1-x)}
f2prima<-function(x,a,b){(a-1)/x-(b-1)/(1-x)}
mysample2<-ars(20,f2,f2prima,x=c(0.3,0.6),m=2,lb=TRUE,xlb=0,ub=TRUE,xub=1,a=1.3,b=2.7)
mysample2
hist(mysample2)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.