[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