Steve Law, Senior Geologist at Seequent, discusses performing kriging neighbourhood analysis (KNA) with Leapfrog Edge.
With Leapfrog Edge, KNA can be run on multiple parent blocks within a domain, improving the confidence of the global parameters you have chosen. It is important that a check and measure step is completed during the resource estimation process to ensure the block model is not oversmoothed and is suitable for its intended purpose. In this webinar, we will look at tips in Leapfrog Edge to perform KNA to select the appropriate block size and help optimise the search neighbourhood in a fully dynamic workflow.
Join Steve Law, Senior Geologist at Seequent, who will discuss quantifying kriging parameters such as:
• Parent Block Size
• Number of Samples
• Search Ellipsoid Ranges
Senior Project Geologist – Seequent
[00:00:08.326]<v ->Welcome to today’s webinar</v>
[00:00:09.866]on Kriging Neighborhood Analysis with Leapfrog Edge.
[00:00:13.659]My name is Steve Law, I’m a senior project geologist
[00:00:19.017]Today’s webinar we’re going to cover
[00:00:21.074]when and why should we run KNA?
[00:00:24.248]What is KNA?
[00:00:25.917]We’ll have a look at the Edge setup
[00:00:27.766]and workflow for running a Kriging Neighborhood Analysis
[00:00:31.514]and then we’ll review the results.
[00:00:35.649]Kriging Neighborhood Analysis, also known
[00:00:38.122]as Quantitative Kriging Neighborhood Analysis
[00:00:40.589]should be considered after we have defined the best
[00:00:42.766]domains we can from our geological modeling
[00:00:45.877]and after defining a robust variogram.
[00:00:49.502]The outcomes from KNA rely heavily on the variogram.
[00:00:53.626]So if it is a poor quality, you will get poor results.
[00:00:57.268]It is used to help with the selection
[00:00:58.827]of estimation parameters, also referred
[00:01:00.953]to as the Kriging Plan.
[00:01:03.673]The kriging neighborhood chosen should be based
[00:01:05.500]on practical considerations and can be different
[00:01:08.539]for different geological and estimation domains.
[00:01:11.999]We can assess various different search parameters
[00:01:15.561]and also have a look at block size.
[00:01:17.452]So block size can include the geometry
[00:01:19.627]of the mineralization.
[00:01:21.133]So if there is an ask to be in a particular direction,
[00:01:23.927]highlight it by the variogram,
[00:01:26.821]we need to allow for this in our block sizing.
[00:01:31.383]The potential for mining method can also be incorporated
[00:01:34.154]into block size.
[00:01:35.742]For example, the Z direction often relates
[00:01:38.531]to the bench height in open pit scenarios.
[00:01:43.675]Minimum maximum number of samples relate to the data density
[00:01:46.901]and to the purpose of the resource estimate at the time.
[00:01:51.120]We also think about how the search ranges relate
[00:01:53.790]to the limit of reliability and effectiveness
[00:01:56.211]of the variogram one.
[00:01:58.424]We can test changes to the variogram as well using KNA,
[00:02:02.134]for example, increasing the nugget
[00:02:04.857]or decreasing the ranges and seeing what the effects are.
[00:02:09.607]The purpose of Kriging Neighborhood Analysis
[00:02:11.544]is to minimize conditional bias.
[00:02:14.613]There is some debate in the literature on the impact
[00:02:16.883]of reducing conditional bias in resource estimates.
[00:02:21.162]KNA may be more applicable for early stage estimates
[00:02:25.020]with sparse data, where our main concern is to predict
[00:02:28.145]future global recoverable resources
[00:02:31.111]and minimize the global error.
[00:02:33.737]If we are in the grade control situation,
[00:02:36.650]we’ll generally want to better predict local grades.
[00:02:39.962]We can still use KNA, but may need to be aware
[00:02:42.795]of the degree of smoothing of the estimate.
[00:02:46.179]I think of KNA as a sensitivity analysis
[00:02:49.370]whereby I gain a better understanding of how the different
[00:02:52.176]search parameters may impact my estimate
[00:02:54.819]for this particular deposit or style of mineralization.
[00:03:00.218]So what is KNA?
[00:03:02.448]There are a range of measures that are calculated
[00:03:04.491]as part of the kriging process.
[00:03:06.837]These can include kriging variants,
[00:03:09.293]which provides an indication of the quality of the estimate.
[00:03:13.214]Example, lower variance values equal better quality.
[00:03:16.802]It is calculated for each block
[00:03:18.737]and is a relative measure of error based
[00:03:20.648]on the sample configuration around the blocks,
[00:03:23.687]as well as the size of the block.
[00:03:26.607]Two of the main measures used in KNA
[00:03:29.056]are kriging efficiency and slope of regression
[00:03:32.520]which are both measures of local conditional bias.
[00:03:35.646]That is where the expected true grade is not necessarily
[00:03:38.895]equal to the estimated grade
[00:03:40.884]and the smoothing of the estimate.
[00:03:44.853]This is where the results of the estimate
[00:03:46.792]tend towards the mean of the data.
[00:03:50.299]Kriging efficiency reflects the effectiveness
[00:03:52.898]of the kriging estimate, to estimate the local block grade.
[00:03:57.154]Key drivers for the kriging efficiency are the variogram,
[00:04:00.857]the number of samples, the data configuration
[00:04:03.449]around the block and the data spacing.
[00:04:07.708]Slope of regression is a linear comparison
[00:04:10.081]of the block estimate to the informing samples.
[00:04:14.721]That is, how well does the estimated grade
[00:04:16.592]match the sample grades.
[00:04:19.704]Both kriging efficiency and slope of regression
[00:04:22.147]have optimal values closest to one.
[00:04:25.417]Kriging variance is integral to the calculation
[00:04:28.513]of both kriging efficiency and slope of regression.
[00:04:32.271]So there is a direct relationship, e.g. poorly
[00:04:35.201]estimated blocks will have a high kriging variance
[00:04:38.185]and a low kriging efficiency.
[00:04:42.352]We’re now going to have a look
[00:04:43.500]at the workflow within Leapfrog Edge.
[00:04:46.745]Within Edge, the KNA analysis is completed
[00:04:49.609]on the whole domain.
[00:04:51.765]KNA is the process of running a series of estimates
[00:04:55.196]where all parameters and the variogram are fixed,
[00:04:57.719]except for the parameter being tested.
[00:05:01.240]The kriging efficiency and slope of regression measures
[00:05:04.564]are assessed statistically and visually
[00:05:07.011]to select the optimal estimation prevalence
[00:05:09.723]with the objective of minimizing the conditional bias.
[00:05:14.353]Some of you may not be aware of what Edge can do, so I’ll
[00:05:17.316]just give a very brief overview of the setup.
[00:05:21.179]So Edge relies on two folders within the project tree
[00:05:24.580]offering from Geo, the Estimation folder
[00:05:27.674]and the Block Model folder.
[00:05:30.275]Within the Estimation folder, we set up on a domain
[00:05:33.680]by domain basis, the estimation parameters.
[00:05:37.806]So for this example, I’m using the same domain
[00:05:41.347]throughout and we are looking at zinc
[00:05:44.137]as the variable of interest.
[00:05:47.188]The variogram is defined within the Spatial Models folder
[00:05:51.637]and this variogram is used throughout constantly.
[00:05:56.191]So, underneath within each panel, we set up estimators.
[00:06:01.748]So what I’ve done is set up a kriging estimator.
[00:06:04.565]So the initial one looks like this.
[00:06:08.606]So we’ve set up ordinary kriging,
[00:06:11.263]we’ve defined some sort of discretization
[00:06:14.367]and it references the variogram that we wish to use.
[00:06:19.531]The variogram parameter direction and search ranges
[00:06:22.791]are selected here and then we have our other search
[00:06:26.646]parameters are set up on this panel.
[00:06:30.777]Key for KNA is in the outputs.
[00:06:33.728]We need to make sure we’ve ticked the variables
[00:06:36.352]of interests that we may want to store.
[00:06:38.549]So in this case, kriging variance, kriging efficiency,
[00:06:41.961]slope of regression, and if I wanted to store
[00:06:44.468]other things such as sum of negative weights,
[00:06:47.086]I would just tick this box.
[00:06:50.279]Once the parameters are set up,
[00:06:52.053]once we can copy that, and then we simply just change
[00:06:56.197]it to what parameters that we need to look at.
[00:07:01.675]So I’ve set up, for example here, a whole series
[00:07:05.155]of different disinsectization.
[00:07:08.759]I’ve set up one for maximum samples,
[00:07:12.401]and I’ve set one up for looking at different searches
[00:07:15.898]as a percentage of the variogram range.
[00:07:19.219]Now I’ve set these up as individual folders
[00:07:22.438]but because we’re working with the same domain
[00:07:24.833]all of these estimators could have been set
[00:07:26.644]up within one and just have a whole big list
[00:07:29.300]but I’ve just started this to keep things tidy.
[00:07:34.130]The results are looked at by a block model.
[00:07:38.922]And again, you can have a whole series of block models
[00:07:41.500]stored within Leapfrog Edge and I’ve got three
[00:07:45.881]different block models because I’m going to have a look
[00:07:47.970]at block size and then I’ve got separate block
[00:07:50.472]models to report the discretization maximum number
[00:07:54.144]of samples and search.
[00:07:56.220]Again, you could have a single block model
[00:07:58.108]with all of these things stored,
[00:08:00.349]but it just makes it a little bit less cumbersome.
[00:08:05.513]Each one of the block models has simply got a single
[00:08:08.527]evaluated one grade variable and just the evaluated
[00:08:15.134]estimators that I had selected previously
[00:08:19.226]and I’m always just looking at domain one for Zinc.
[00:08:25.553]So the first thing I wanted to look at was block size.
[00:08:29.369]So my initial model is a five by five or five block model
[00:08:33.621]with parent blocks, five by five by five
[00:08:35.764]and I’ve got some blocks, two by two by three,
[00:08:38.324]this is 3.5 meters of blocks
[00:08:41.168]and we’ve just evaluated single grade variable.
[00:08:47.270]To change that I just copied it so we can copy
[00:08:50.772]the whole block model and then just change
[00:08:53.301]the parent block size.
[00:08:57.139]Then that one to 10 by 10 by 10.
[00:08:59.424]I’ve maintained the same kind of sub-blocking size.
[00:09:07.026]We can then review the results
[00:09:09.231]because I asked it to store kriging efficiency, et cetera.
[00:09:14.540]I will be able to look at the statistics of these
[00:09:21.476]via our table of statistics.
[00:09:23.652]These can then be exported
[00:09:25.734]and taken into an Excel spreadsheet.
[00:09:28.414]At the moment we can’t, don’t have a direct reporting
[00:09:30.881]facility for KNA within Leapfrog Edge,
[00:09:33.906]so we do need to take the results out into Excel.
[00:09:38.324]So once we’ve exported the statistics
[00:09:41.058]for each of the block models,
[00:09:42.960]we can view the results in Excel.
[00:09:48.715]So here I’ve got the results
[00:09:49.922]for slope of regression, kriging efficiency
[00:09:52.778]and I also had a look at sum of negative weights
[00:09:55.437]which I’d like to be as close to zero as possible
[00:09:58.590]and have a look.
[00:10:00.218]Now, there’s not a huge difference between each
[00:10:02.204]of these models, but in the end
[00:10:04.676]I decided to use 10 by 10 by 10.
[00:10:07.604]That could have just as easily have used the 20 by 20 by 20.
[00:10:11.592]This is a qualitative decision
[00:10:13.671]and you find that going forward all of the decisions
[00:10:16.275]are relative to the qualitative.
[00:10:19.584]So I’ve changed them to 10 by 10 by 10.
[00:10:22.141]I then copied the 10 by 10 by 10, three times
[00:10:25.171]and I’ve evaluated the corresponding maximum number
[00:10:29.709]of sample parameters, discretization parameters
[00:10:32.654]and search parameters.
[00:10:35.573]They were then run and if we have a look
[00:10:37.988]at the maximum number of samples,
[00:10:42.004]these are plotted against the slope of regression
[00:10:45.453]and the kriging efficiency.
[00:10:47.907]So we can see in both cases, as we increase
[00:10:50.370]the maximum number of samples, we get to a point
[00:10:53.568]where the graph starts to plateau.
[00:10:57.433]So somewhere around this area here is suggesting
[00:11:01.029]that this is where we are getting best result
[00:11:04.060]for our less decreasing conditional bias
[00:11:07.301]and after that point, it doesn’t change too much.
[00:11:09.927]So I’m going to pick a point
[00:11:11.400]somewhere between 16 and 20 samples
[00:11:14.364]and for the exercise I’ve chosen
[00:11:16.931]18 maximum number of samples.
[00:11:20.487]I then built up a series of different disinsectization
[00:11:25.559]using that 10 by 10 by meter block and 18 maximum
[00:11:28.522]number of samples.
[00:11:30.201]That’s simply by changing it, the estimator
[00:11:34.379]dislocation just in here.
[00:11:38.808]For discretization, I plotted the results
[00:11:41.433]against kriging variance.
[00:11:43.860]So we can see that, as we get up to around five or six,
[00:11:48.454]6.6 discretization again, the kriging variance
[00:11:51.866]doesn’t change too much after that, bearing in mind
[00:11:55.733]that the higher the values we have, the longer
[00:11:57.590]it could take to run without necessarily
[00:12:01.120]too much extra gain.
[00:12:03.336]So I’m going to pick somewhere of either five or six
[00:12:06.544]discretizations, so for going forward, if you used
[00:12:09.821]five by five by five.
[00:12:14.407]The final test that we did for today
[00:12:17.260]was looking at the search range of the variogram.
[00:12:22.358]The way I’ve set set that one up,
[00:12:23.905]is underneath the ellipsoid.
[00:12:28.544]We set the, when we select our variogram model
[00:12:32.517]it selects the maximum range of the variogram
[00:12:35.484]and then I’ve just adjusted that down.
[00:12:37.686]So that this one’s 50%
[00:12:39.621]of that and then I’ve got a 75 and a 90.
[00:12:44.757]So all I’ve done is typed in slightly different ranges
[00:12:49.043]for the same orientation variogram
[00:12:51.437]and in all cases, it’s referencing the consistent
[00:12:55.424]variogram that we’ve been using.
[00:12:58.390]Again, that is being run through in this block model
[00:13:02.604]here and the results
[00:13:07.125]are like this, so we can see that for the 90 and 75th
[00:13:13.454]percentage, the results are the same.
[00:13:17.142]There’s no change in the kriging efficiency
[00:13:20.317]or the slope of progression or the sum of negative weights,
[00:13:24.202]but the 50 is a little bit lower.
[00:13:26.647]So we could go either way,
[00:13:29.360]and that again, is a decision that you can make at the time.
[00:13:34.083]So we have run through four different parameter tests
[00:13:38.674]and come up with something that we might try
[00:13:41.167]for our final block model.
[00:13:42.993]We can also visually look at our results.
[00:13:46.184]So for each block model, for instance the maximum samples,
[00:13:50.571]we can have a look at a swath plot.
[00:13:52.782]Swath plots and Leapfrog Edge are embedded
[00:13:55.649]within the block model itself, so you would create
[00:13:58.117]a new swath plot and once it is made,
[00:14:02.179]it’s stored down in here.
[00:14:03.618]So we can open that one up.
[00:14:07.559]And here I’ve plotted all of my different runs
[00:14:10.341]with different maximum number of samples.
[00:14:13.086]And I can see it in the X, Y and Z orientations.
[00:14:20.501]The red line is the original composites.
[00:14:23.638]So comparing that as well.
[00:14:25.812]So we can see that there’s, they’re all very similar
[00:14:27.816]to each other, but there is a slight difference
[00:14:29.673]between the, where we have number samples as 40.
[00:14:33.640]And so in this case for the maximum number
[00:14:36.844]of samples was 40, so the value there was 12.2
[00:14:40.242]and for that lower number it was 12.57.
[00:14:44.529]So there’s a slight difference between and we can decide
[00:14:47.158]which one we might go, so maybe in this case,
[00:14:50.320]we could pick a midpoint.
[00:14:53.338]So we have swath plots and then we also have looking
[00:14:56.775]at the results in 3D view.
[00:15:01.988]When we display a block model in Leapfrog Edge,
[00:15:04.605]it’s bringing across the whole model
[00:15:06.671]and then in the dropdown here we have all the grade
[00:15:09.612]variables and we have the slope of regression
[00:15:13.344]and the kriging efficiency.
[00:15:14.677]Anything that we ticked in the Outputs folder
[00:15:17.775]and the estimator set up, will show in here.
[00:15:21.082]So we can flick between various ones
[00:15:24.328]and just see whether there’s any slight differences.
[00:15:31.503]So you see there are subtle changes
[00:15:33.878]as we work our way through.
[00:15:35.968]If we wanted to get an idea of more local block
[00:15:39.436]look at what’s happening, we can click on any individual
[00:15:42.136]block and we have a function called “Interrogate estimator”.
[00:15:49.962]It will show us all the samples that have been included
[00:15:53.686]in the estimate so it finds all the samples
[00:15:56.184]within the search ellipse, but the ones we’ve included
[00:15:59.412]as a result of our kriging plan,
[00:16:01.495]and in this case it’s found four samples
[00:16:04.738]which shows distance apart and the weights,
[00:16:09.196]the kriging weights.
[00:16:11.146]And we can view these in the 3D scene
[00:16:13.174]so I can filter my block model.
[00:16:16.001]Going back to the scene it will show me
[00:16:18.604]the ellipsoid of interest.
[00:16:21.218]And if I turn that off and zoom in, and we can see
[00:16:28.775]I’d just done slice that.
[00:16:33.023]And then we can see that in this case
[00:16:34.462]those four samples were all coming from the same drill hole.
[00:16:39.061]So if we wanted to modify that, we could go directly
[00:16:42.431]back to that estimator and maybe put a drill hole
[00:16:46.395]limit where we can say maximum number of samples is two
[00:16:49.679]and then I look for two drill holes and get an idea
[00:16:52.282]on how that would impact.
[00:16:54.220]That’s local block by block stage.
[00:16:57.144]Once we’ve applied any changes,
[00:16:58.842]if I do put this drill hole limit here, it’s applying
[00:17:01.958]it to all blocks across the whole domain.
[00:17:07.620]Once you’ve set it up for one domain
[00:17:09.105]it’s very easy to set it up for additional domains.
[00:17:14.302]So the, I’m back in the Estimation folder.
[00:17:18.684]If I wanted to check the discretization parameters
[00:17:22.614]for domain two, I could simply copy that entire folder.
[00:17:29.564]I changed this to domain two
[00:17:31.957]just coming from my geological model
[00:17:34.169]and then all the estimators that I’ve already
[00:17:36.260]set up, will already be there.
[00:17:39.473]So all these will be here for domain two
[00:17:42.877]and I can keep going.
[00:17:46.752]And evaluate those into the block model
[00:17:49.075]and compare the results.
[00:17:51.504]So just to finish off, the workflow
[00:17:54.219]is setting up multiple estimators
[00:17:58.369]with the parameters of interest
[00:17:59.989]within the Estimation folder,
[00:18:02.189]evaluating these into either a single
[00:18:05.226]or a series of different block models,
[00:18:08.808]taking the statistics out and putting them into an Excel
[00:18:12.641]spreadsheet and then making good decisions.
[00:18:22.928]This workflow is available online.
[00:18:25.849]So if you go to my.seequent.com
[00:18:28.555]we have an online learning area where all our training
[00:18:31.407]resources are, and that includes the data set
[00:18:33.670]and also an example of this spreadsheet template
[00:18:36.466]that I was using today and also our face-to-face trainings
[00:18:41.310]and remote trainings can be booked from there.
[00:18:45.164]And if you need to contact your local team
[00:18:47.615]for specific project assistance.
[00:18:52.159]Any other general support queries
[00:18:54.369]best go through to [email protected]