[R] generate random numbers subject to constraints

(Ted Harding) Ted.Harding at manchester.ac.uk
Thu Mar 27 00:10:59 CET 2008


OOPS! A mistake below. I should have written:

  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-r+1) given vertices?


On 26-Mar-08 22:06:54, Ted Harding wrote:
> 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 ------------------------------
> 
> ______________________________________________
> 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: 23:04:56
------------------------------ XFMail ------------------------------



More information about the R-help mailing list