Note
Go to the end to download the full example code.
Fitting variogram data
The model class comes with a routine to fit the model-parameters to given variogram data. In the following we will use the self defined stable model from a previous example.
import numpy as np
import gstools as gs
class Stab(gs.CovModel):
def default_opt_arg(self):
return {"alpha": 1.5}
def cor(self, h):
return np.exp(-(h**self.alpha))
# Exemplary variogram data (e.g. estimated from field observations)
bins = [1.0, 3.0, 5.0, 7.0, 9.0, 11.0]
est_vario = [0.2, 0.5, 0.6, 0.8, 0.8, 0.9]
# fitting model
model = Stab(dim=2)
# we have to provide boundaries for the parameters
model.set_arg_bounds(alpha=[0, 3])
results, pcov = model.fit_variogram(bins, est_vario, nugget=False)
print("Results:", results)
Results: {'var': np.float64(1.024573986182379), 'len_scale': np.float64(5.081592203004596), 'nugget': 0.0, 'alpha': np.float64(0.9067040832202313)}
ax = model.plot()
ax.scatter(bins, est_vario, color="k", label="sample variogram")
ax.legend()

As you can see, we have to provide boundaries for the parameters. As a default, the following bounds are set:
additional parameters:
[-np.inf, np.inf]
variance:
[0.0, np.inf]
len_scale:
[0.0, np.inf]
nugget:
[0.0, np.inf]
Also, you can deselect parameters from fitting, so their predefined values
will be kept. In our case, we fixed a nugget
of 0.0
, which was set
by default. You can deselect any standard or
optional argument of the covariance model.
The second return value pcov
is the estimated covariance of popt
from
the used scipy routine scipy.optimize.curve_fit
.
You can use the following methods to manipulate the used bounds:
Provide default boundaries for optional arguments. |
|
Provide default boundaries for arguments. |
|
|
Set bounds for the parameters of the model. |
Check arguments to be within their given bounds. |
You can override the CovModel.default_opt_arg_bounds
to provide standard bounds for your additional parameters.
To access the bounds you can use:
Bounds for the variance. |
|
Bounds for the length scale. |
|
Bounds for the nugget. |
|
Bounds for the optional arguments. |
|
Bounds for all parameters. |
Total running time of the script: (0 minutes 0.075 seconds)