get_g0_ada {genscore} | R Documentation |
Adaptively truncates the l2 distance to the boundary of the domain and its gradient for some domains.
Description
Adaptively truncates the l2 distance to the boundary of the domain and its gradient for some domains.
Usage
get_g0_ada(domain, percentile)
Arguments
domain |
A list returned from |
percentile |
A number between 0 and 1, the percentile. The returned l2 distance will be truncated to its |
Details
Calculates the l2 distance to the boundary of the domain, with the distance truncated above at a specified quantile. Matches the g0
function and its gradient from Liu (2019) if percentile == 1
and domain is bounded.
Currently only R, R+, simplex, uniform and polynomial-type domains of the form sum(x^2) <= d or sum(x^2) >= d or sum(abs(x)) <= d are implemented.
Value
A function that takes x
and returns a list of a vector g0
and a matrix g0d
.
Examples
n <- 15
p <- 5
K <- diag(p)
eta <- numeric(p)
domain <- make_domain("R", p=p)
x <- gen(n, "gaussian", FALSE, eta, K, domain, 100)
get_g0_ada(domain, 0.3)(x)
domain <- make_domain("R+", p=p)
x <- gen(n, "gaussian", FALSE, eta, K, domain, 100)
get_g0_ada(domain, 0.3)(x)
domain <- make_domain("uniform", p=p, lefts=c(-Inf,-3,3), rights=c(-5,1,Inf))
x <- gen(n, "gaussian", FALSE, eta, K, domain, 100)
get_g0_ada(domain, 0.6)(x)
domain <- make_domain("simplex", p=p)
x <- gen(n, "gaussian", FALSE, eta, K, domain, 100)
max(abs(get_g0_ada(domain, 0.4)(x)$g0 - get_g0_ada(domain, 0.4)(x[,-p])$g0))
max(abs(get_g0_ada(domain, 0.4)(x)$g0d - get_g0_ada(domain, 0.4)(x[,-p])$g0d))
domain <- make_domain("polynomial", p=p, ineqs=
list(list("expression"="sum(x^2)>1.3", "nonnegative"=FALSE, "abs"=FALSE)))
x <- gen(n, "gaussian", FALSE, eta, K, domain, 100)
get_g0_ada(domain, 0.5)(x)
domain <- make_domain("polynomial", p=p, ineqs=
list(list("expression"="sum(x^2)>1.3", "nonnegative"=TRUE, "abs"=FALSE)))
x <- gen(n, "gaussian", FALSE, eta, K, domain, 100)
get_g0_ada(domain, 0.7)(x)
domain <- make_domain("polynomial", p=p, ineqs=
list(list("expression"="sum(x^2)<1.3", "nonnegative"=FALSE, "abs"=FALSE)))
x <- gen(n, "gaussian", FALSE, eta, K, domain, 100)
get_g0_ada(domain, 0.6)(x)
domain <- make_domain("polynomial", p=p, ineqs=
list(list("expression"="sum(x^2)<1.3", "nonnegative"=TRUE, "abs"=FALSE)))
x <- gen(n, "gaussian", FALSE, eta, K, domain, 100)
get_g0_ada(domain, 0.25)(x)
domain <- make_domain("polynomial", p=p, ineqs=
list(list("expression"="sum(x)<1.3", "nonnegative"=FALSE, "abs"=TRUE)))
x <- gen(n, "gaussian", FALSE, eta, K, domain, 100)
get_g0_ada(domain, 0.37)(x)
domain <- make_domain("polynomial", p=p, ineqs=
list(list("expression"="sum(x)<1.3", "nonnegative"=TRUE, "abs"=TRUE)))
x <- gen(n, "gaussian", FALSE, eta, K, domain, 100)
get_g0_ada(domain, 0.45)(x)