[SOLVED] Executing vario.pgs for imported facies field

Here you can report the problems encountered when using a function relative to the variography:
- experimental variography (vario.calc, vario.grid, vmap.calc, ...)
- model fitting (model.auto)

[SOLVED] Executing vario.pgs for imported facies field

Postby Marise » Fri May 25, 2018 11:38 am

Dear Sir or Madam,

I have a question about the routine 'vario.pgs'. This routine is based on the paper 'A pairwise likelihood approach for the empirical estimation of the underlying variograms in the plurigaussian models' by N. Desassis et al.
Within the plurigaussian model, 'vario.pgs' estimates model parameters for the underlying Gaussian random fields, based a truncation map and a facies field. I am concentrating on the case of two bivariate Gaussian random fields.

I have first defined a grid:
N=50
db=db.create(flag.grid=T,nx=c(N,N),x0=c(0,0),ndim=2).

I have also defined a truncation map with its associated proportions:
rule=rule.create(c("S","T","F1","F3","F2"))
props=c(0.1096, 0.3816, 0.5088)

I have read in the facies field fac.
I then added it to the data base db:
vec_f=as.vector(fac)
db=db.add(db,vec_f)

The data based looks like this:
[i]Data Base Characteristics
=========================
Data Base Summary
-----------------
File is organized as a regular grid
Space dimension = 2
Number of fields = 4
Maximum Number of attributes = 4
Total number of samples = 2500
Grid characteristics:
Origin : 0.000 0.000
Mesh : 1.000 1.000
Number : 50 50
Angles : 0.000 0.000

Variables
---------
Field = 1 - Name = rank - Locator = rank
Field = 2 - Name = x1 - Locator = x1
Field = 3 - Name = x2 - Locator = x2
Field = 4 - Name = V1 - Locator = z1

I executed the command:
vario=vario.pgs(db,rule=rule,props=props,calcul='vg')

Because my truncation rule is made for two realizations of Gaussian random fields, I was expecting 'vario' to contain output for two models. However, 'vario' only contains meaningful output for one variable:
Variogram characteristics
=========================
Number of variable(s) = 2
Number of direction(s) = 1
Space dimension = 2

Direction 1
-----------
Number of lags = 10
Direction coefficients = ( 1.000 0.000)
Direction angles (degrees) = ( 0.000)
Tolerance on direction = 90.000000 (deg)
Calculation lag = 3.46482

For variable 1
Referenced value (variance,...) = 1.000
Rank Npairs Distance Value
0 9702.000 1.205 0.085
1 90586.000 3.797 0.364
2 156406.000 7.148 0.674
3 208942.000 10.533 0.796
4 248084.000 13.899 0.800
5 280526.000 17.323 0.783
6 301658.000 20.794 0.762
7 291970.000 24.227 0.749
8 306378.000 27.687 0.835
9 272540.000 31.169 0.950

Between variables 2 and 1
Referenced value (covariance,...) = 0.000
Rank Npairs Distance Value
0 9702.000 1.205 0.000
1 90586.000 3.797 0.000
2 156406.000 7.148 0.000
3 208942.000 10.533 0.000
4 248084.000 13.899 0.000
5 280526.000 17.323 0.000
6 301658.000 20.794 0.000
7 291970.000 24.227 0.000
8 306378.000 27.687 0.000
9 272540.000 31.169 0.000

For variable 2
Referenced value (variance,...) = 1.000
Rank Npairs Distance Value
0 9702.000 1.205 0.000
1 90586.000 3.797 0.000
2 156406.000 7.148 0.000
3 208942.000 10.533 0.000
4 248084.000 13.899 0.000
5 280526.000 17.323 0.000
6 301658.000 20.794 0.000
7 291970.000 24.227 0.000
8 306378.000 27.687 0.000
9 272540.000 31.169 0.000

How is this possible?
How should I format my input to obtain models for the underlying GRFs using 'vario.pgs'?

Many thanks indeed!

Marise Westbroek
Marise
 
Posts: 3
Joined: Thu May 10, 2018 3:37 pm

Re: Executing vario.pgs for imported facies field

Postby Didier Renard » Sun May 27, 2018 8:17 pm

Hi Maryse,

I follow your workflow ... but do not quite agree with your conclusion.
As a matter of fact, you created a data set (sitting on a regular grid, why not) which contains a single variable (named "V1" and assigned to the locator "z1"). Then you defined a truncation scheme (named "rule") which calls for two underlying gaussian random function (as you used threshold against the first GRF ("S") and against the second one ("T")).
Then you run vario.pgs and store the result in a R-object named "vario".
This object belongs to the vario-class: it corresponds to the underlying variogram of the GRF(s).

In your post, you provided a printout of this "vario" where we clearly see that this experimental variogram correpsonds to a BIVARIATE one. This is exactly what the procedure should obtain:
- if rule was only refering to a single underlying GRF, the output variogram would have been MONOVARIATE
- in your case, it is BIVARIATE.

This corresponds to the correct experimental variogram of the 2 underlying GRFs ... which is exactly what you expected.

The rest of the procedure is the more interesting one:
- you will have to fit each simple variogram separately and possible get the correlation coefficient (if you want to use correlated underlying GRFS in PGS for example).
If you perform an automatic fitting directly on 'vario", you will obtain a bivariate model ... which is not what PGS expects, even for a bivariate PluriGaussian. However, this could become an option in an extended view of the PGS procedure...

For that sake, you must extract the first simple experimental variogram from this bivariate experimental variogram, using vario.reduce, and perform a similar operation for the second variable

var1 = vario.reduce(vario,varcols=1)
var2 = vario.reduce(vario,varcols=2)

Then you fit each simple experimental variogram individually.

Hope this will help.


As a matter of fact, the PGS procedure requires two monovariate models ... even when running a plurigaussian with two underlying GRFs.
Hope this will help
Didier Renard
 
Posts: 337
Joined: Thu Sep 20, 2012 4:22 pm

Re: Executing vario.pgs for imported facies field

Postby Marise » Wed Jun 13, 2018 1:42 pm

Dear Dr. Renard,

Thank you for your reply.
I agree that my ‘vario’ has the expected structure, referring to two separate variables. I also see that I can extract the variograms for the different variables with the routine ‘vario.reduce’. However, when I extract the variogram for variable 2, the result is zero at all lag distances (as we can already see from the printout of ‘vario’). I cannot possibly make a sensible variogram fit for the second variable. Is there another mistake, which I am overlooking?

Many thanks again!
Marise
Marise
 
Posts: 3
Joined: Thu May 10, 2018 3:37 pm


Return to Variography

Who is online

Users browsing this forum: No registered users and 3 guests

cron