[R] How to generate a random field with truncated marginal distributions?

Ben Bolker bbolker at gmail.com
Mon Nov 12 18:15:15 CET 2012


Zhenglei Gao <zhenglei.gao <at> bayer.com> writes:

>  I have asked the same question on stackoverflow but did not get a
> satisfying answer.
 
> I am trying to simulate a lognormal spatial random field but I need
> the simulated value in a certain range. So I need some easy to use
> functions to generate a truncated Gaussian field to start with. To
> be specific, I need a function like GaussRF from the RandomFields
> package or grf from the geoR package to generate a random field, but
> I need the generated field to have a truncated marginal
> distributions and a correlation structure with a prescribed
> range. Is there an R package or functions which can do this? If
> there is no availabe read-to-use functions or packages,is it
> possible that I write my own very easily?

  As I suggested on Stack Overflow, I don't think this is a simple
question: you can pick values according to a normal distribution and
then squash them into a truncated normal distribution: something like

olddata <- GaussRF(...)
library(truncnorm)
newdata <- qtruncnorm(pnorm(olddata))

  However, this may very well modify the range; I don't know.
If I were you, I would try it and see if you can live with the 
results.  If not, ask on http://stats.stackexchange.com




More information about the R-help mailing list