---
title: "EstimatedVariogramModel"
language: "en"
type: "Symbol"
summary: "EstimatedVariogramModel[{loc 1 -> val 1, loc 2 -> val 2, ...}] estimates the best variogram function from values vali given at locations loci. EstimatedVariogramModel[{loc 1, loc 2, ...} -> {val 1, val 2, ...}] generates the same result. EstimatedVariogramModel[...,  model] estimates the best parameters of the variogram function specified by  model. EstimatedVariogramModel[..., {model, params}] estimates the non-numeric parameters in params."
keywords: 
- variogram
- semi-variogram
- spatial dependence
- spatial prediction
- geospatial prediction
- geospatial dependence
- kriging
canonical_url: "https://reference.wolfram.com/language/ref/EstimatedVariogramModel.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Spatial Estimation"
    link: "https://reference.wolfram.com/language/guide/SpatialEstimation.en.md"
related_functions: 
  - 
    title: "VariogramModel"
    link: "https://reference.wolfram.com/language/ref/VariogramModel.en.md"
  - 
    title: "SpatialEstimate"
    link: "https://reference.wolfram.com/language/ref/SpatialEstimate.en.md"
  - 
    title: "VariogramFunction"
    link: "https://reference.wolfram.com/language/ref/VariogramFunction.en.md"
  - 
    title: "BinnedVariogramList"
    link: "https://reference.wolfram.com/language/ref/BinnedVariogramList.en.md"
  - 
    title: "SpatialEstimatorFunction"
    link: "https://reference.wolfram.com/language/ref/SpatialEstimatorFunction.en.md"
---
[EXPERIMENTAL]

# EstimatedVariogramModel

EstimatedVariogramModel[{loc1 -> val1, loc2 -> val2, …}] estimates the best variogram function from values vali given at locations loci.

EstimatedVariogramModel[{loc1, loc2, …} -> {val1, val2, …}] generates the same result. 

EstimatedVariogramModel[…, "model"] estimates the best parameters of the variogram function specified by "model". 

EstimatedVariogramModel[…, {"model", params}] estimates the non-numeric parameters in params.

## Details and Options

* Variogram model is also known as variogram and semivariogram.

* ``EstimatedVariogramModel`` fits a model to the spatial field data and returns a ``VariogramModel``.

* ``VariogramModel`` is typically used as a local model of spatial dependence when predicting values of a spatial field, as in ``SpatialEstimate``.

[image]

* The variogram $\gamma \left(p_1,p_2\right)$ for a spatial process $x(p)$ at locations $p_1$ and $p_2$ is given by $\left.\text{var}\left(x\left(p_1\right)-x\left(p_2\right)\right)\right/2$. It is a measure of how quickly the process varies spatially.

* When a process is weakly stationary, then the variogram depends only the difference of locations, i.e. $\gamma \left(p_1-p_2\right)$. And when the process is isotropic, it only depends on the distance between locations $\gamma \left(\left\| p_1-p_2\right\| \right)$.

* Typical examples of spatial field data that is stationary and isotropic together with the corresponding variogram.

[image]

* With automatic settings, this is all that is needed, but if you want to provide detailed control over the variogram model there are further aspects to understand. The two main issues are the range and level of smoothing.

* The range for the variogram indicates how far the dependence on nearby points extends. A larger range variogram will correspond to a slower varying field.

* [image]	[image]	[image]	[image]

* The range of the variogram controls the distance at which points influence the range of prediction of values in ``SpatialEstimate``.

[image]

* The smoothness of the prediction is affected by the so-called spatial noise variance of the variogram, which is the value at the origin. It corresponds to adding a white noise model, e.g. measurement errors or true discontinuities in data such as a gold nugget.

[image]

* The size of the spatial noise variance controls the level of smoothing of values in ``SpatialEstimate``. In particular, with a nonzero noise variance, the resulting surface will not interpolate the given values but instead approximate them.

[image]

* The locations ``loci`` can have the forms:

|                                      |                        |
| ------------------------------------ | ---------------------- |
| {p1, …, pd}                          | geometrical locations  |
| GeoPosition[…], GeoPositionENU[…], … | geographical locations |

* The values ``vali`` can have the forms:

|                      |                 |
| -------------------- | --------------- |
| ci                   | scalar value    |
| Quantity[ci, "unit"] | scalar quantity |

* The models need to satisfy consistency conditions to be a valid spatial variogram. It must be a non-negative function and satisfy the conditionally negative definite condition $\sum _{i=1}^n \sum _{j=1}^n w_i w_j \gamma \left(\left\| p_i-p_j\right\| \right)\leq 0$ for all weights ``wi`` such that $\sum _{i=1}^n w_i=0$ and locations ``pi``. The valid model families can be grouped into tables with similar features, and these are enumerated in ``VariogramModel``.

* The following options can be given:

|                       |           |                                         |
| --------------------- | --------- | --------------------------------------- |
| SpatialNoiseLevel     | Automatic | specify the noise variance in the model |
| SpatialTrendFunction  | Automatic | specify the global trend model          |

---

## Examples (10)

### Basic Examples (2)

Estimate a variogram model for concentrations of zinc in soil:

```wl
In[1]:=
locs = {...};
zinc = {...};

In[2]:= PointValuePlot[locs -> zinc, ColorFunction -> "Rainbow"]

Out[2]= [image]
```

Estimate exponential variogram model:

```wl
In[3]:= vf = EstimatedVariogramModel[locs -> zinc, "Exponential"]

Out[3]=
VariogramModel[{"Exponential", {5.124600612791099*^-8, 137.21222551355083}}, 
 5.124600612791099*^-8*(1 - E^(-0.0072879803257854875*#1)) & , 
 Association["SpatialNoiseLevel" -> 8.667899698313227*^-22, 
  "BinnedVariogramList" -> WeightedData[Autom ... 05069724976*^-8}}, 
     {50, 114, 155, 200, 231, 245, 302, 329, 319, 358, 327, 317, 330, 366, 363, 290, 319, 290, 281, 
      260, 214, 183, 153, 162, 115, 88, 45}}], "SpatialTrendFunction" -> 1, 
  "WeightedSumOfResiduals" -> 280.0151434460275]]
```

Extract the sill and range information:

```wl
In[4]:= {vf["Sill"], vf["Range"]}

Out[4]= {5.124600612791186`*^-8, 411.051}
```

Value at a given distance:

```wl
In[5]:= vf[120]

Out[5]= 2.9874040481651613`*^-8
```

Plot variogram function:

```wl
In[6]:= vf["Visualization"]

Out[6]= [image]
```

---

Estimate a white noise variogram model for random data:

```wl
In[1]:=
locs = RandomPoint[Disk[], n = 300];
values = RandomReal[1, n];

In[2]:= PointValuePlot[locs -> values]

Out[2]= [image]
```

Estimate white noise variogram model:

```wl
In[3]:= ev = EstimatedVariogramModel[locs -> values, "WhiteNoise"]

Out[3]=
VariogramModel[{"WhiteNoise", {0.08873053675509963}}, 
 Internal`OrderlessPiecewise[{{0.08873053675509963, #1 > 0}, {0, #1 <= 0}}] & , 
 Association["SpatialNoiseLevel" -> 0, "BinnedVariogramList" -> 
   WeightedData[Automatic, {{{Rational[3, 100], ...  120, 165, 154, 221, 247, 298, 295, 313, 
      382, 388, 445, 464, 563, 588, 603, 644, 615, 689, 652, 673, 801, 824, 786, 693, 572, 530, 
      463, 337, 199, 63}}], "SpatialTrendFunction" -> 1, "WeightedSumOfResiduals" -> 
   273.3072561559532]]

In[4]:= Plot[ev["Function"][z], {z, 0, 1}, PlotRange -> All]

Out[4]= [image]
```

### Scope (2)

Estimate variogram model for geographical data:

```wl
In[1]:= locs = GeoPosition[CompressedData["«2245»"]];

In[2]:= ozone = {...};

In[3]:= PointValuePlot[locs -> ozone, ColorFunction -> "Rainbow"]

Out[3]= [image]
```

Fit a few models with slow initial variation:

```wl
In[4]:= models = {"Cubic", "Spherical", "Gaussian", "Matern"};

In[5]:= vars = Map[EstimatedVariogramModel[locs -> ozone, #]&, models]

Out[5]=
{VariogramModel[{"Cubic", {464.2256071985192, 1.9321522396278824*^6}}, 
 464.2256071985192*Piecewise[{{(2.678658286147788*^-13*#1^2)*
       (7 + (5.175575606778233*^-7*#1)*(Rational[-35, 4] + (2.678658286147788*^-13*#1^2)*
           (Rational[7,  ... }, {1670000, 449.29258041736324}, 
      {1690000, 595.8703788832275}, {1710000, 384.04824366232504}, {1730000, 668.8552618121412}}, 
     CompressedData["«371»"]}], 
  "SpatialTrendFunction" -> 1, "WeightedSumOfResiduals" -> 4073.0100116327194]]}
```

Visualize the fit of variogram models to the binned variogram of the data:

```wl
In[6]:= Grid[Partition[MapThread[#1["Visualization", PlotLabel -> #2]&, {vars, models}], 2]]

Out[6]=
|         |         |
| ------- | ------- |
| [image] | [image] |
| [image] | [image] |
```

---

Estimate a variogram model from a binned variogram:

```wl
In[1]:=
locations = {...};
vals = {...};
```

Compute the binned variogram:

```wl
In[2]:= bv = BinnedVariogramList[locations -> vals]

Out[2]=
WeightedData[Automatic, {{{Rational[11, 4], 0.14724813117743404}, 
   {Rational[13, 4], 0.09314611768696335}, {Rational[17, 4], 0.16091408871133697}, 
   {Rational[19, 4], 0.20417116534189886}, {Rational[21, 4], 0.1712795422292423}, 
   {Rational[2 ... 78, 898, 570, 872, 764, 1802, 
   498, 161, 392, 2090, 1681, 1216, 497, 1366, 2314, 1848, 872, 1935, 944, 2605, 1717, 1606, 1706, 
   1272, 2255, 2015, 1764, 1268, 1088, 2214, 1416, 1386, 940, 800, 1066, 747, 622, 419, 282, 314, 
   183, 79, 36}}]

In[3]:= ListPlot[bv]

Out[3]= [image]
```

Estimate a variogram model:

```wl
In[4]:= var = EstimatedVariogramModel[bv, "Power"]

Out[4]=
VariogramModel[{"Power", {94.8861674804343, 1.5963340883110555}}, 
 Piecewise[{{0.0006977881701053601*#1^1.5963340883110555, 0.01053894394255308*#1 > 0}}, 0] & , 
 Association["SpatialNoiseLevel" -> 0.15723225869173624, "BinnedVariogramList" -> 
   ... 935, 944, 2605, 1717, 
      1606, 1706, 1272, 2255, 2015, 1764, 1268, 1088, 2214, 1416, 1386, 940, 800, 1066, 747, 622, 
      419, 282, 314, 183, 79, 36}}], "SpatialTrendFunction" -> Automatic, 
  "WeightedSumOfResiduals" -> 1024.1927388675188]]

In[5]:= var["Visualization"]

Out[5]= [image]

In[6]:= 
```

### Options (3)

#### SpatialNoiseLevel (1)

Specify noise level using ``SpatialNoiseLevel`` :

```wl
In[1]:=
SeedRandom["noise"];
locs = RandomPoint[Disk[], 200];
values = Exp[-Total /@ locs] + RandomReal[.5, 200];

In[2]:= PointValuePlot[locs -> values, ColorFunction -> "Rainbow"]

Out[2]= [image]
```

Estimate variogram model assuming zero noise level:

```wl
In[3]:= var0 = EstimatedVariogramModel[locs -> values, SpatialNoiseLevel -> 0]

Out[3]=
VariogramModel[{"Exponential", {0.049725733511738104, 0.11774853582099182}}, 
 0.049725733511738104*(1 - E^(-8.492674605485186*#1)) & , Association["SpatialNoiseLevel" -> 0, 
  "BinnedVariogramList" -> WeightedData[Automatic, 
    {{{Rational[3, 10 ...     {31, 36, 56, 55, 78, 96, 96, 112, 179, 165, 180, 187, 183, 237, 244, 281, 269, 318, 295, 258, 
      304, 350, 356, 361, 270, 253, 255, 264, 235, 222, 134, 33}}], "SpatialTrendFunction" -> 1, 
  "WeightedSumOfResiduals" -> 263.63900843534014]]

In[4]:= var0["Visualization"]

Out[4]= [image]
```

Estimate variogram model assuming positive noise level:

```wl
In[5]:= var1 = EstimatedVariogramModel[locs -> values, SpatialNoiseLevel -> .01]

Out[5]=
VariogramModel[{"Exponential", {0.05055040997313598, 0.3000097133766387}}, 
 0.05055040997313598*(1 - E^(-3.3332254104205568*#1)) & , Association["SpatialNoiseLevel" -> 0.01, 
  "BinnedVariogramList" -> WeightedData[Automatic, 
    {{{Rational[3, 1 ...      {31, 36, 56, 55, 78, 96, 96, 112, 179, 165, 180, 187, 183, 237, 244, 281, 269, 318, 295, 258, 
      304, 350, 356, 361, 270, 253, 255, 264, 235, 222, 134, 33}}], "SpatialTrendFunction" -> 1, 
  "WeightedSumOfResiduals" -> 182.7713594021135]]

In[6]:= var1["Visualization"]

Out[6]= [image]
```

Compare model parameters:

```wl
In[7]:= {var0["Parameters"], var1["Parameters"]}

Out[7]= {{0.0497257, 0.117749}, {0.0505504, 0.30001}}
```

#### SpatialTrendFunction (2)

Specify trend function using ``SpatialTrendFunction`` :

```wl
In[1]:=
SeedRandom["trend"];
locs = RandomPoint[Disk[], 200];
values = Exp[-Total /@ locs] + RandomReal[1, 200];

In[2]:= PointValuePlot[locs -> values, ColorFunction -> "Rainbow"]

Out[2]= [image]
```

Estimate variogram model assuming constant trend:

```wl
In[3]:= var0 = EstimatedVariogramModel[locs -> values, SpatialTrendFunction -> 0]

Out[3]=
VariogramModel[{"Cubic", {0.23194771211416973, 0.9018076127903637}}, 
 0.23194771211416973*Piecewise[
    {{(1.229623644543247*#1^2)*(7 + (1.1088839635161323*#1)*(Rational[-35, 4] + 
          (1.229623644543247*#1^2)*(Rational[7, 2] - 0.9222177334 ... 5774}}, {48, 60, 80, 77, 81, 103, 127, 136, 153, 200, 157, 
      190, 214, 221, 261, 311, 268, 303, 338, 375, 385, 353, 359, 335, 303, 236, 212, 130, 111, 
      45}}], "SpatialTrendFunction" -> 0, "WeightedSumOfResiduals" -> 170.96051522379912]]

In[4]:= var0["Visualization"]

Out[4]= [image]
```

Estimate variogram model assuming linear trend:

```wl
In[5]:= var1 = EstimatedVariogramModel[locs -> values, SpatialTrendFunction -> 1]

Out[5]=
VariogramModel[{"Cubic", {0.05373343892170057, 0.9440463361714966}}, 
 0.05373343892170057*Piecewise[
    {{(1.1220530170172134*#1^2)*(7 + (1.0592700397052743*#1)*(Rational[-35, 4] + 
          (1.1220530170172134*#1^2)*(Rational[7, 2] - 0.84153976 ... 4422}}, {48, 60, 80, 77, 81, 103, 127, 136, 153, 200, 157, 
      190, 214, 221, 261, 311, 268, 303, 338, 375, 385, 353, 359, 335, 303, 236, 212, 130, 111, 
      45}}], "SpatialTrendFunction" -> 1, "WeightedSumOfResiduals" -> 178.49368213510908]]

In[6]:= var1["Visualization"]

Out[6]= [image]
```

Compare model parameters:

```wl
In[7]:= {var0["Parameters"], var1["Parameters"]}

Out[7]= {{0.231948, 0.901808}, {0.0537334, 0.944046}}
```

---

Look at data with a linear trend:

```wl
In[1]:=
BlockRandom[
SeedRandom["bvaiubvai"];
locs = RandomReal[1, {m = 10 ^ 3, 2}];
vals = 1 + locs . {2, 3} + RandomReal[.1, m];
]
```

Without detrending, the variogram is well fit by an unbounded model:

```wl
In[2]:= vf = EstimatedVariogramModel[locs -> vals, "Power", SpatialTrendFunction -> None]

Out[2]=
VariogramModel[{"Power", {0.6236217551329335, 1.6538753099723282}}, 
 Piecewise[{{2.1836079626097926*#1^1.6538753099723282, 1.6035361046486205*#1 > 0}}, 0] & , 
 Association["SpatialNoiseLevel" -> 0.0002882343639308267, 
  "BinnedVariogramList" ->  ...  
      {Rational[171, 400], 0.35821162146139274}, {Rational[173, 400], 0.3832103374160346}, 
      {Rational[7, 16], 0.5402335398867986}}, CompressedData["«351»"]}], "SpatialTrendFunction" -> None, "WeightedSumOfResiduals" -> 1741.7526062102797]]

In[3]:= vf["Visualization"]

Out[3]= [image]
```

Removing the large scale trend gives us a better idea of the micro scale variation:

```wl
In[4]:= vf2 = EstimatedVariogramModel[locs -> vals, "WhiteNoise", SpatialTrendFunction -> 1]

Out[4]=
VariogramModel[{"WhiteNoise", {0.000993065163775098}}, 
 Internal`OrderlessPiecewise[{{0.000993065163775098, #1 > 0}, {0, #1 <= 0}}] & , 
 Association["SpatialNoiseLevel" -> 0, "BinnedVariogramList" -> 
   WeightedData[Automatic, {{{Rational[1, 400 ...      {Rational[171, 400], 0.001154935428120516}, {Rational[173, 400], 0.001015515058810392}, 
      {Rational[7, 16], 0.0011766888951758897}}, CompressedData["«351»"]}], "SpatialTrendFunction" -> 1, "WeightedSumOfResiduals" -> 1791.1123982494232]]

In[5]:= vf2["Visualization"]

Out[5]= [image]
```

### Applications (2)

Estimate a variogram model for ``SpatialPointData`` :

```wl
In[1]:= data = ResourceData["Sample Data: Wheat Yield"]

Out[1]=
SpatialPointData[{{{2.51, 3.3}, {5.02, 3.3}, {7.53, 3.3}, {10.04, 3.3}, {12.55, 3.3}, {15.06, 3.3}, 
   {17.57, 3.3}, {20.08, 3.3}, {22.59, 3.3}, {25.1, 3.3}, {27.61, 3.3}, {30.12, 3.3}, {32.63, 3.3}, 
   {35.14, 3.3}, {37.65, 3.3}, {40.16, 3.3}, { ...        4.41, 3.54, 3.01, 2.85, 3.36, 3.85, 4.15, 3.93, 3.91, 4.33, 4.21, 4.19, 3.61, 4.22, 4.42, 
       5.09, 3.66, 4.22, 4.06, 3.97, 3.89, 4.46, 4.44, 4.52, 3.7, 4.28, 3.24, 3.29, 3.48, 3.49, 
       3.68, 3.36, 3.71, 3.54, 3.59, 3.76, 3.36}]}]]

In[2]:= PointValuePlot[data, ColorFunction -> "Rainbow"]

Out[2]= [image]
```

Compute the ``BinnedVariogramList`` to get an idea of which model family to choose:

```wl
In[3]:= bv = BinnedVariogramList[data]

Out[3]=
WeightedData[Automatic, {{{Rational[11, 4], 0.14724813117743404}, 
   {Rational[13, 4], 0.09314611768696335}, {Rational[17, 4], 0.16091408871133697}, 
   {Rational[19, 4], 0.20417116534189886}, {Rational[21, 4], 0.1712795422292423}, 
   {Rational[2 ... 78, 898, 570, 872, 764, 1802, 
   498, 161, 392, 2090, 1681, 1216, 497, 1366, 2314, 1848, 872, 1935, 944, 2605, 1717, 1606, 1706, 
   1272, 2255, 2015, 1764, 1268, 1088, 2214, 1416, 1386, 940, 800, 1066, 747, 622, 419, 282, 314, 
   183, 79, 36}}]

In[4]:= ListPlot[bv]

Out[4]= [image]
```

Fit a few asymptotic variogram models:

```wl
In[5]:= models = {"Exponential", "Gaussian", "Matern", "PoweredExponential"};

In[6]:= vars = Map[EstimatedVariogramModel[data, #]&, models]

Out[6]=
{VariogramModel[{"Exponential", {616503.7387938724, 1.1385084299054964*^8}}, 
 616503.7387938724*(1 - E^(-8.783422008416806*^-9*#1)) & , 
 Association["SpatialNoiseLevel" -> 0.13573994440200415, "BinnedVariogramList" -> 
   WeightedData[Automatic,  ... , 872, 1935, 944, 2605, 1717, 
      1606, 1706, 1272, 2255, 2015, 1764, 1268, 1088, 2214, 1416, 1386, 940, 800, 1066, 747, 622, 
      419, 282, 314, 183, 79, 36}}], "SpatialTrendFunction" -> 1, 
  "WeightedSumOfResiduals" -> 905.7957158082525]]}
```

Visualize the fit of the variogram models to the binned variogram of the data:

```wl
In[7]:= Grid[Partition[MapThread[#1["Visualization", PlotLabel -> #2]&, {vars, models}], 2]]

Out[7]=
|         |         |
| ------- | ------- |
| [image] | [image] |
| [image] | [image] |
```

Out of the four models, Matern fits best and could be used for spatial estimation:

```wl
In[8]:= sef = SpatialEstimate[data, VariogramFunction -> vars[[3]]]

Out[8]=
SpatialEstimatorFunction["Universal", 
 {56.58187906580848*Piecewise[
     {{1 - (0.008606682392062368*BesselK[0.4602685177822151, 0.0000599318336154964*#1])*
         #1^0.4602685177822151, 0.0000599318336154964*#1 > 0}}, 0] & , 
  Statistics`NFun ... added" -> False, "Variance" -> True, "Solver" -> Automatic, "Debug" -> True, Compile -> True, 
  "GeoQ" -> False, "FixedRank" -> False, "KernelType" -> "Variogram", 
  "SpatialVariogramModelName" -> "Matern", "Values" -> CompressedData["«1503»"]]]

In[9]:= sef["Visualization"]

Out[9]= [image]
```

---

Use fit residuals to choose the best variogram model:

```wl
In[1]:= data = ResourceData["Sample Data: Wheat Yield"];

In[2]:= PointValuePlot[data, ColorFunction -> "Rainbow"]

Out[2]= [image]
```

Fit a few variogram models:

```wl
In[3]:= models = {"Linear", "Cubic", "Matern", "Power"};

In[4]:= vars = Map[EstimatedVariogramModel[data, #, SpatialTrendFunction -> 2]&, models];
```

Compute the weighted sum of residuals from the fit:

```wl
In[5]:= residuals = Table[var["WeightedSumOfResiduals"], {var, vars}]

Out[5]= {898.101, 920.95, 896.387, 896.384}
```

Visualize the fit of variogram models to the binned variogram of the data:

```wl
In[6]:= Grid[Partition[MapThread[#1["Visualization", PlotRange -> {{0, 30}, All}, PlotLabel -> Column[{"Model: " <> #2, "Weighted Sum Of Residuals: " <> ToString@#3}]]&, {vars, models, residuals}], 2]]

Out[6]=
|         |         |
| ------- | ------- |
| [image] | [image] |
| [image] | [image] |
```

Choose the model with the smallest weighted sum of residuals and use it to compute spatial estimate:

```wl
In[7]:= best = First@Extract[models, Position[residuals, Min[residuals]]]

Out[7]= "Power"

In[8]:= sef = SpatialEstimate[data, VariogramFunction -> best]

Out[8]=
SpatialEstimatorFunction["Universal", 
 {Piecewise[{{0.007193384277628828*#1^0.9209704937152171, 0.004710145379161629*#1 > 0}}, 0] & , 
  Statistics`NFunction`NFunction[Association["#Arguments" -> 1, "Rank" -> 1, Dimensions -> {2}, 
     CompiledFu ... Padded" -> False, "Variance" -> True, "Solver" -> Automatic, "Debug" -> True, Compile -> True, 
  "GeoQ" -> False, "FixedRank" -> False, "KernelType" -> "Variogram", 
  "SpatialVariogramModelName" -> "Power", "Values" -> CompressedData["«1503»"]]]

In[9]:= sef["Visualization"]

Out[9]= [image]
```

### Possible Issues (1)

Some variogram models are badly suited for a given data:

```wl
In[1]:= data = ResourceData["Sample Data: US Ozone 2021"];

In[2]:= EstimatedVariogramModel[data -> "Ozone", "Matern"]
```

General::munfl: 9.04135\*10^-265 (-2.70637\*10^-69) is too small to represent as a normalized machine number; precision may be lost.

```wl
Out[2]=
VariogramModel[{"Matern", {165.75499239402643, 42557.57941815155, 53.55849827593026}}, 
 165.75499239402643*Piecewise[{{1., 0.000023497577016174996*#1 > 0}}, 0] & , 
 Association["SpatialNoiseLevel" -> 6.818810945232806, "BinnedVariogramList" -> 
  ... }, 
      {1670000, 136.8570707122552}, {1690000, 132.26972449779635}, {1710000, 152.75297536459678}, 
      {1730000, 114.09369413353278}}, CompressedData["«393»"]}], "SpatialTrendFunction" -> 1, 
  "WeightedSumOfResiduals" -> 5931.812535690248]]
```

Switch to a different model:

```wl
In[3]:= EstimatedVariogramModel[data -> "Ozone", "Gaussian"]

Out[3]=
VariogramModel[{"Gaussian", {165.189500498135, 617820.1417649456}}, 
 165.189500498135*(1 - E^(-2.6198466702391653*^-12*#1^2)) & , 
 Association["SpatialNoiseLevel" -> 6.818810945232806, "BinnedVariogramList" -> 
   WeightedData[Automatic, {{{70000 ... }, 
      {1670000, 136.8570707122552}, {1690000, 132.26972449779635}, {1710000, 152.75297536459678}, 
      {1730000, 114.09369413353278}}, CompressedData["«393»"]}], "SpatialTrendFunction" -> 1, 
  "WeightedSumOfResiduals" -> 5930.746353941331]]
```

## See Also

* [`VariogramModel`](https://reference.wolfram.com/language/ref/VariogramModel.en.md)
* [`SpatialEstimate`](https://reference.wolfram.com/language/ref/SpatialEstimate.en.md)
* [`VariogramFunction`](https://reference.wolfram.com/language/ref/VariogramFunction.en.md)
* [`BinnedVariogramList`](https://reference.wolfram.com/language/ref/BinnedVariogramList.en.md)
* [`SpatialEstimatorFunction`](https://reference.wolfram.com/language/ref/SpatialEstimatorFunction.en.md)

## Related Guides

* [Spatial Estimation](https://reference.wolfram.com/language/guide/SpatialEstimation.en.md)

## History

* [Introduced in 2021 (13.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn130.en.md)