FW: [R] Random seed problem in MCMC coupling of chains
Gorjanc Gregor
Gregor.Gorjanc at bfro.uni-lj.si
Wed Jun 8 21:58:32 CEST 2005
And a last post from Paul Gilbert. Thanks to all! This disscusion was
really beneficial for me!
-----Original Message-----
From: Paul Gilbert [mailto:pgilbert at bank-banque-canada.ca]
Sent: sre 2005-06-08 21:01
To: Gorjanc Gregor
Subject: Re: [R] Random seed problem in MCMC coupling of chains
Gorjanc Gregor wrote:
> Thanks to Paul and Gabor for additional tips/examples. Actually, I find
> Pauls suggestion with setRNG also nice and is exactly what I wanted.
> Paul, if I understand this correctly, your suggestion with setRNG does not
> alter "RNG flow", it just takes care that chains really have equal seeds.
> I remember that I have read somewhere that destroying "RNG flow over and
> over to get real randomness" is not a good idea. Can someone confirm this?
In general it is a bad idea to make up your own scheme for setting or
resetting the RNG. People put a lot of work into studying the properties
of a RNG. When you mess with it then it is unclear what the result will
be. It certainly won't be tested unless you test it yourself. If your
intention is to do research on RNGs then you may want to do that, but if
your intention is to do other research and just use the RNG, then don't
mess with it by resetting it with your own scheme.
One additional thing you may want to do is record the initial setting of
the RNG information so that you can reproduce the experiment if you want
to (see modification below). The idea in setRNG is to not interfere with
the flow, only add a few utilities to help record and reset everything
when that is what is required.
In your example it is important that you generate the same number of
random numbers in each pass through the chain. If that is not the case
then even with the setRNG utilities there is a subtle change that you
are introducing.
HTH,
Paul
>
> niter <- 3
> nchain <- 2
startingRNG <- setRNG()
> for (i in 1:niter) { # iterations
> tmpSeed <- setRNG()
> for (j in 1:nchain) { # chains
> setRNG(tmpSeed)
> a <- runif(1)
> cat("iter:", i, "chain:", j, "runif:", a, "\n")
> }
> }
>
> iter: 1 chain: 1 runif: 0.8160078
> iter: 1 chain: 2 runif: 0.8160078
> iter: 2 chain: 1 runif: 0.4909793
> iter: 2 chain: 2 runif: 0.4909793
> iter: 3 chain: 1 runif: 0.4425924
> iter: 3 chain: 2 runif: 0.4425924
>
> [... removed other stuff ...]
>
> Lep pozdrav / With regards,
> Gregor Gorjanc
>
> ----------------------------------------------------------------------
> University of Ljubljana
> Biotechnical Faculty URI: http://www.bfro.uni-lj.si/MR/ggorjan
> Zootechnical Department mail: gregor.gorjanc <at> bfro.uni-lj.si
> Groblje 3 tel: +386 (0)1 72 17 861
> SI-1230 Domzale fax: +386 (0)1 72 17 888
> Slovenia, Europe
> ----------------------------------------------------------------------
> "One must learn by doing the thing; for though you think you know it,
> you have no certainty until you try." Sophocles ~ 450 B.C.
> ----------------------------------------------------------------------
>
>
>
>
>
>
More information about the R-help
mailing list