[R] Latin Hypercube Sampling with a condition

Duarte Viana viana.sptd at gmail.com
Thu Jun 2 20:11:15 CEST 2011


Thanks again Rob for your help.

In terms of parameter comparison there won't be a problem. However, if
one wants to assume a particular distribution (and not the one given
by the imposed condition), for example an uniform distribution to
obtain all the possible combinations (all the multidimensional space
uniformly filled), then a limitation exists. Perhaps it is not
possible to fulfill the three criteria - sum to one, maintain the
uniform distribution and maintain the latin hypercube property. Well,
I will try to do it the way you proposed.

Cheers,

Duarte






On Thu, Jun 2, 2011 at 7:06 PM, Rob Carnell <carnellr at battelle.org> wrote:
> Duarte Viana <viana.sptd <at> gmail.com> writes:
>
>>
>> Thanks Rob and Ravi for the replies.
>>
>> Let me try to explain my problem. I am trying to make a kind of
>> sensitivity analysis where I have 5 parameters (the margins of the
>> Latin hypercube), 3 of them are proportions that should sum to one. My
>> idea is to obtain uniform combinations of the 3 proportion-parameters
>> with the other two parameters. The uniformity should be maintained in
>> order to guarantee that each parameter (out of 5) have its own range
>> of values equally represented (for model output analyses).
>>
>> Theoretically the 3 proportion-parameters might be regarded as one in
>> which the configuration of the proportions that sum to one vary. I
>> think I can visualize it like a set of permutations, more or less like
>> in the example below:
>>
>> 0.1 - 0.1 - 0.8
>> 0.1 - 0.2 - 0.7
>> 0.1 - 0.3 - 0.6
>> .
>> .
>> .
>> 0.1 - 0.1 - 0.8
>> 0.2 - 0.1 - 0.7
>> 0.3 - 0.1 - 0.6
>> .
>> .
>> .
>> 0.8 - 0.1 - 0.1
>> 0.7 - 0.2 - 0.1
>> 0.6 - 0.3 - 0.1
>> .
>> .
>> .
>> and so on, until all possible combinations are represented (and doing
>> it with more values) and then combined with the other two parameters
>> as to form a Latin hypercube.
>>
>> The solutions given in the thread sent by Ravi work fine for random
>> generation of the 3 proportion-parameters, but it is hard to make a
>> Latin hypercube out of that with two more parameters.
>>
>> Cheers,
>>
>> Duarte
>>
>>
>
> Duarte,
>
> The commmon practice in your situation is draw the K parameters together as a
> uniform Latin hypercube on 0-1 and then transform the margins of the hypercube
> to the desired distributions.
>
> Easy Example
> Parameter 1: normal(1, 2)
> Parameter 2: normal(3, 4)
> Parameter 3: uniform(5, 10)
>
> require(lhs)
> N <- 1000
> x <- randomLHS(N, 3)
> y <- x
> y[,1] <- qnorm(x[,1], 1, 2)
> y[,2] <- qnorm(x[,2], 3, 4)
> y[,3] <- qunif(x[,3], 5, 10)
>
> par(mfrow=c(2,2))
> apply(x, 2, hist)
>
> par(mfrow=c(2,2))
> apply(y, 2, hist)
>
> The transformed distributions maintain their "Latin" properties, but are in
> the form of new distributions.
>
> In your case, you'd like the first three columns to be transformed into a
> correlated set that sums to one.  Still follow the pattern...
>
> x <- randomLHS(N, 5)
> y <- x
> y[,1] <- x[,1]/rowSums(x[,1:3])
> y[,2] <- x[,2]/rowSums(x[,1:3])
> y[,3] <- x[,3]/rowSums(x[,1:3])
> y[,4] <- x[,4]
> y[,5] <- x[,5]
>
> par(mfrow=c(2,3))
> apply(x, 2, hist)
>
> par(mfrow=c(2,3))
> apply(y, 2, hist)
>
> all.equal(rowSums(y[,1:3]), rep(1, nrow(y)))
>
> The uniform properties are gone as you can see here...
>
> par(mfrow=c(1,1))
> pairs(x)
> paris(y, col="red")
>
> But, the "Latin" properties of the first three margins are maintained as in
> this smaller example...
>
> N <- 10
> x <- randomLHS(N, 5)
> y <- x
> y[,1] <- x[,1]/rowSums(x[,1:3])
> y[,2] <- x[,2]/rowSums(x[,1:3])
> y[,3] <- x[,3]/rowSums(x[,1:3])
> y[,4] <- x[,4]
> y[,5] <- x[,5]
>
> pairs(x)
> pairs(y, col="red")
>
> You could also look into a dirichlet type transform as I posted here
> http://tolstoy.newcastle.edu.au/R/e5/help/08/11/8420.html
>
> Rob
>
> ______________________________________________
> 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.
>



More information about the R-help mailing list