[R] generate random numbers subject to constraints

(Ted Harding) Ted.Harding at manchester.ac.uk
Wed Mar 26 23:06:54 CET 2008


On 26-Mar-08 21:26:59, Ala' Jaouni wrote:
> X1,X2,X3,X4 should have independent distributions. They should be
> between 0 and 1 and all add up to 1. Is this still possible with
> Robert's method?
> 
> Thanks

I don't think so. A whileago you wrote
"The numbers should be uniformly distributed" (but in the
context of an example where you had 5 variable; now you
are back to 4 variables). Let's take the 4-case first.

The two linear constraints confine the point (X1,X2,X3,X4)
to a triangular region within the 4-dimensional unit cube.
Say it has vertices A, B, C.
You could then start by generating points uniformly distributed
over a specific triangle in 2 dimentions, say the one with
vertices at A0=(0,0), B0=(0,1), C0=(1,0). This is easy.

Then you need to find a linear transformation which will
map this triangle (A0,B0,C0) onto the triangle (A,B,C).
Then the points you have sampled in (A0,B0,C0) will map
into points which are uniformly distributed over the
triangle (A,B,C).

More generally, you will be seeking to generate points
uniformly distributed over a simplex.

For example, the case (your earlier post) of 5 points
with 2 linear constraints requires a tetrahedron with
vertices (A,B,C,D) in 5 dimensions whose coordinates you
will have to find. Then take an "easy" tetrahedron with
vertices (A0,B0,C0,D0) and sample uniformly within this.
Then find a linear mapping from (A0,B0,C0,D0) to (A,B,C,D)
and apply this to the sampled points.

This raises a general question: Does anyone know of
an R function to sample uniformly in the interior
of a general (k-r)-dimensional simplex embedded in
k dimensions, with (k+1) given vertices?

Best wishes to all,
Ted.


> On Wed, Mar 26, 2008 at 12:52 PM, Ted Harding
> <Ted.Harding at manchester.ac.uk> wrote:
>> On 26-Mar-08 20:13:50, Robert A LaBudde wrote:
>>  > At 01:13 PM 3/26/2008, Ala' Jaouni wrote:
>>  >>I am trying to generate a set of random numbers that fulfill
>>  >>the following constraints:
>>  >>
>>  >>X1 + X2 + X3 + X4 = 1
>>  >>
>>  >>aX1 + bX2 + cX3 + dX4 = n
>>  >>
>>  >>where a, b, c, d, and n are known.
>>  >>
>>  >>Any function to do this?
>>  >
>>  > 1. Generate random variates for X1, X2, based upon whatever
>>  > unspecified distribution you wish.
>>  >
>>  > 2. Solve the two equations for X3 and X4.
>>
>>  The trouble is that the original problem is not well
>>  specified. Your suggestion, Robert, gives a solution
>>  to one version of the problem -- enabling Ala' Jaouni
>>  to say "I have generated 4 random numbers X1,X2,X3,X4
>>  such that X1 and X2 have specified distributions,
>>  and X1,X2,X3,X4 satisfy the two equations ... ".
>>
>>  However, suppose the real problem was: let X2,X2,X3,X4
>>  have independent distributions F1,F2,F3,F4. Now sample
>>  X1,X2,X3,X4 conditional on the two equations (i.e. from
>>  the coditional density). That is a different problem.
>>
>>  As a slightly simpler example, suppose we have just X1,X2,X3
>>  and they are independently uniform on (0,1). Now sample
>>  from the conditional distribution, conditional on
>>  X1 + X2 + X3 = 1.
>>
>>  The result is a random point uniformly distributed on the
>>  planar triangle whose vertices are at (1,0,0),(0,1,0),(0,0,1).
>>
>>  Then none of X1,X2,X3 is uniformly distributed (in fact
>>  the marginal density of each is 2*(1-x)).
>>
>>  However, your solution would work from either point of
>>  view if the distributions were Normal.
>>
>>  If X1,X2,X3,X4 were neither Normally nor uniformly
>>  distributed, then finding or simulating the conditional
>>  distribution would in general be difficult.
>>
>>  Ala' Jaouni needs to tell us whether what he precisely
>>  wants is as you stated the problem, Robert, or whether
>>  he wants a conditional distribution for given distributions
>>  if X1,X2,X3,X4, or whether he wants something else.
>>
>>  Best wishes to all,
>>  Ted.
>>
>>  --------------------------------------------------------------------
>>  E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
>>  Fax-to-email: +44 (0)870 094 0861
>>  Date: 26-Mar-08                                       Time: 19:52:16
>>  ------------------------------ XFMail ------------------------------
>>
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 26-Mar-08                                       Time: 22:06:38
------------------------------ XFMail ------------------------------



More information about the R-help mailing list