[SOLVED] Conditional simulations with nugget-only model

If you have problems using RGeostats package or if you simply need some help on an unlisted subject.

[SOLVED] Conditional simulations with nugget-only model

Postby jos_law » Tue Jan 26, 2021 3:37 pm

We are attempting to simulate realisations of a randomly distributed variable (σbs which is the backscaterring strength based on biological data collected during acoustic surveys of fish), but we think we have a problem [?]. We need a set of realisations to estimate fish density by combining these with a corresponding variable of acoustic scattering (where fish density~acoustic data/σbs). We could just take a random draw from the distribution of σbs, but we’d like to include the option of generating a nugget only surface (when it appears) to produce consistent code (e.g. when looping across years).

However, when using a nugget-only variogram model within the simtub() function, all the simulated realisations are identical. I.e. although the values WITHIN an individual simulation realisation (e.g. “sim@items$Simu.V1.S1”) vary, as expected from a realisation of a random field, each subsequent realisation (when nbsimu > 1) contains identical data for each cell in the simulation grid (i.e. “Simu.V1.S1” == “Simu.V1.S2”). This appears to be the case whether or not the seed is initialized. Forcing a tiny degree of spatial structure in the variogram model (using a spherical model where the sill is at the same y-value as the nugget-only model, but drops to the origin at very small x-values) resolves this issue, producing simulations which differ from each other, but this is obviously an inappropriate solution when we don’t have the data to support the model. Our current solution is to run the simulations using “nbsimu = 1” and the nugget-only variogram model within a loop which sets the seed to a different random number on each repetition (which produces a different simulation each time) but this also seems somewhat suboptimal.

It would be great if you could offer any explanation as to why the use of a nugget-only variogram model appears not to work properly with simtub(), or clarify if there is something non-obvious about the seed initialization process or how the sequential simulations are generated when nbsimu >1 which we might have misunderstood which would produce the observed results.

Thanks in advance for any help.
jos_law
 
Posts: 1
Joined: Tue Jan 26, 2021 3:22 pm

Re: Conditional simulations with nugget-only model

Postby Didier Renard » Sat Jan 30, 2021 8:24 pm

Hello
I just checked your case ... creating several simulation outputs with a model reduced to a pure nugget effect. And I double-checked that you are RIGHT. Although a special attention is drawn to use different seeds (generated internally starting from the seed given by the user as argument), the seed is by mistake reset to the same value in the case of this simplified model. This but has been fixed and this will be corrected in the next version.
In the mean time, let me add that the solution is to enter a loop for performing one simulation outcome at a time. Obviously you still need to vary the seed at each iteration of the loop. This is where I add an information that may be of interest: If you set the seed to 0 (zero), the seed of the simtub function (either the one that you provide or the one defaulted by the function) will not be used. As a consequence, each iteration will be performed with a different seed.
Thank you for your help.
Didier Renard
 
Posts: 337
Joined: Thu Sep 20, 2012 4:22 pm

Re: Conditional simulations with nugget-only model

Postby Didier Renard » Sun Jan 31, 2021 11:32 am

As a complement to my answer (and following a remark of one fellow)...
For simulating a random function on a grid, it is not necessary to invoke a sophisticated simulation procedure (such as Turning Bands) when the spatial structure of the GRF is reduced to a nugget effect.
As a matter of fact, you could replace:

grid = simtub(,grid,model=model.create(vartype="Nugget Effect")

by:
grid = db.add(grid,sim.nug = rnorm(grid$nech))

Hope this will help.
Didier Renard
 
Posts: 337
Joined: Thu Sep 20, 2012 4:22 pm


Return to Other Troubleshooting

Who is online

Users browsing this forum: No registered users and 1 guest

cron