latin hypercube sampling

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

latin hypercube sampling

Alj27
Hi all,

I am attempting to use latin hypercube sampling to sample different
variable functions in a series of simultaneous differential equations.
There is very little code online about lhs or clhs, so from different
other help threads I have seen, it seems I need to create a
probability density function for each variable function, and then use
latin hypercube sampling on this pdf.

So far, I have created a data frame consisting of the "y" output of
density(functionX) for each of the different functions I wish to
sample. [examples of functions include T1(t), WL1(T1,t),
BE1(WL1,T1,t)] The dataframe consists of 512 rows/vectors for each
function.



I tried running
res <- clhs(df, size = 500, iter = 2000, progress = FALSE, simple = TRUE)


and it returned a single series of 500 samples, rather than a series
of 500 samples per function.

I ultimately need a sample of each variable function that I can run
through my model, putting each individual variable function as a
constant instead, and then performing PRCC. Is there anyone who can
advise on how to do this, or failing that, where I should look for
sample code?

Thank you for any help you are able to give,
Aimee.

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: latin hypercube sampling

carnellr
Aimee Kopolow <alj27 <at> georgetown.edu> writes:

>
> Hi all,
>
> I am attempting to use latin hypercube sampling to sample different
> variable functions in a series of simultaneous differential equations.
> There is very little code online about lhs or clhs, so from different
> other help threads I have seen, it seems I need to create a
> probability density function for each variable function, and then use
> latin hypercube sampling on this pdf.
>
> So far, I have created a data frame consisting of the "y" output of
> density(functionX) for each of the different functions I wish to
> sample. [examples of functions include T1(t), WL1(T1,t),
> BE1(WL1,T1,t)] The dataframe consists of 512 rows/vectors for each
> function.
>
> I tried running
> res <- clhs(df, size = 500, iter = 2000, progress = FALSE, simple = TRUE)
>
> and it returned a single series of 500 samples, rather than a series
> of 500 samples per function.
>
> I ultimately need a sample of each variable function that I can run
> through my model, putting each individual variable function as a
> constant instead, and then performing PRCC. Is there anyone who can
> advise on how to do this, or failing that, where I should look for
> sample code?
>
> Thank you for any help you are able to give,
> Aimee.
>
>

Aimee,

I'm the package maintainer for the lhs package.  Unfortunately, I'm not familiar
with the functions you mentioned (reproducible code would help us answer your
post).  I will try to show something parallel to what you described.

require(lhs)

# functions you described
T1 <- function(t) t*t
WL1 <- function(T1, t) T1*t
BE1 <- function(WL1, T1, t) WL1*T1*t

# t is distributed according to some pdf (e.g. normal)
require(lhs)
# draw a lhs with 512 rows and 3 columns (one for each function)
y <- randomLHS(512, 3)
# transform the three columns to a normal distribution (these could be any
# distribution)
t <- apply(y, 2, function(columny) qnorm(columny, 2, 1))
# transform t using the functions provided
result <- cbind(
  T1(t[,1]),
  WL1(T1(t[,2]), t[,2]),
  BE1(WL1(T1(t[,3]), t[,3]), T1(t[,3]), t[,3])
)
# check the results
# these should be approximately uniform
windows()
par(mfrow=c(2,2))
apply(y, 2, hist, breaks=50)
# these should be approximately normal
windows()
par(mfrow=c(2,2))
apply(t, 2, hist, breaks=50)
# these should be the results of the functions
windows()
par(mfrow=c(2,2))
apply(result, 2, hist, breaks=50)

Please feel free to contact me as the package maintainer if you need additional
help with lhs.

Rob

______________________________________________
[hidden email] 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.