Comments (2)
Yes, this is a good idea.
When a, b are vectors they have to be ordered vectors themselves.
That requirement is not mathematically necessary, failing it just makes the constraint partially redundant.
Regardless, it is rather difficult to construct a smooth constraining function for vector bounds. Consider this:
data {
real<lower=0, upper=0.99> x;
}
transformed data {
ordered[2] a = [0,1-x]';
ordered[2] b = [x,1]';
}
parameters {
ordered<lower=a,upper=b>[2] y;
}
For x=0
it's just ordered<lower=0,upper=1>[2] y
but for x > 0.5 the vector behaves like two independent parameters
parameters { // x=0.9
real<lower=0, upper=0.1> y1;
real<lower=0.9, upper=1> y2;
So I think the lower and upper bounds should always be scalars.
That example ordered_ub_lp
is reverse-ordered. Ordered would be
vector ordered_ub_lp (vector y, real ub) {
int N = rows(y);
vector[N] x;
x[N] = ub - exp(y[N]);
target += exp(y[N]);
for (i in 1:N-1) {
x[N-i] = x[N-i-1] - exp(y[N-i]);
target += exp(y[N-i]);
}
return x;
}
And I think ordered_lb_ub_lp
should offset the unconstrained parameter so that zero-initialized value corresponds to an evenly spaced vector in the constrained space. (This makes it identical to cumulative sum of simplex constraint)
for (i in 2:N) {
x[i] = x[i - 1] + (ub - x[i - 1]) * inv_logit(y[i] - log(N+1-i));
target += log(ub - x[i - 1]) + log_inv_logit(y[i] - log(N+1-i)) + log1m_inv_logit(y[i] - log(N+1-i));
}
from math.
I think this would be no problem at the language level
from math.
Related Issues (20)
- Vectorized logical functions HOT 3
- Floating point precision loss under arm64 (FP_CONTRACT) HOT 2
- Expose integrate_1d variadic signatures HOT 1
- Aliasing issue in OpenCL `assignment_impl` HOT 5
- Add functions to write hessian vector products into an array HOT 1
- Add variadic version of `scalar_seq_view` HOT 3
- Inverse Wishart Cholesky rng bug HOT 8
- Update Normal quantile function with new approximations HOT 3
- Adding 7-Parameter Drift Diffusion Model (DDM) CDF and CCDF with partial derivatives to Stan Math HOT 1
- Allow cmake users to use FetchContent_Declare HOT 3
- Allow OpenCL simplex to use softmax? HOT 2
- Improve the numerical stability of binomial_logit_lpmf / bernoulli_logit_lpmf HOT 1
- matrix power function HOT 5
- Odd interaction between `ode_adams` and threading HOT 4
- Slicing and blocking functions fail on SoA matrices
- `newton_solver` halts sampling HOT 14
- Support faster Cholesky Decomposition of Toeplitz matrices HOT 2
- Compilation failure with Clang 17 and `check_symmetric`
- pow applied to mixed variables HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from math.