Thank you for the prompt response, Andrea. You pointed me in the right
direction. The crucial sentence in the Bivand et al. volume is "*The output
variable is called var1.pred, and the var1.var values are NA because
inverse distance does not provide prediction error variances.*"
I got confused by the fact that gstat tries to be consistent in its model
output across all interpolation methods. The var1.var column is a
placeholder to ensure the output object is standard for the whole package,
but it is empty because IDW is a non-statistical, exact interpolation
algorithm that doesn't account for prediction uncertainty.
Cheers,
        Jochen

Dr. Jochen Albrecht, GISP (he/him/his)

Department of Geography and Environmental Science
<http://www.geo.hunter.cuny.edu/>

Hunter College CUNY

695 Park Avenue

New York, NY 10065






On Fri, Nov 7, 2025 at 12:00 PM Andrea Gilardi - Unimib <
[email protected]> wrote:

> Hi Jochen!
>
> As far as I know, the idw estimator is just a weighted average of the
> observed quantities (log(zinc) in your example), where the weights are the
> square distances among the points. Such estimator does not provide an
> estimate of the prediction variance, therefore var1.var is always NA.
>
> See also [1, Chapter 8] for more details
>
> Hope that helps
>
> Andrea
> [1] Bivand, R. S., Pebesma, E. J., & Gomez-Rubio, V. (2013). *Applied
> spatial data analysis with R* (2nd ed.). Springer.
>
> On 11/7/2025 5:31 PM, Jochen Albrecht wrote:
>
> I am stumped by a failure of idw() to produce valid values for var1.var,
> the weighted squared distance. Here is my rather basic script:
>
> data(meuse)
> data(meuse.grid)
>
> # 1. Convert Sampled Points (meuse) to SpatialPointsDataFrame (sp
> format for gstat)
> meuse_sp <- meuse
> coordinates(meuse_sp) <- ~x+y
> proj4string(meuse_sp) <- CRS("+init=epsg:28992")
>
> # 2. Convert Prediction Grid (meuse.grid) to SpatialPixelsDataFrame
> #    (sp format for gstat and prediction)
> meuse_grid_sp <- meuse.grid
> coordinates(meuse_grid_sp) <- ~x+y
> gridded(meuse_grid_sp) <- TRUE # Define it as a regular grid
> proj4string(meuse_grid_sp) <- CRS("+init=epsg:28992")
>
> # We use the idw() function directly for IDW
> idw_zinc <- idw(log(zinc) ~ 1,           # Interpolate log(zinc) with
> a constant mean (~1)
>                 meuse_sp,                # Using the sampled data
>                 newdata = meuse_grid_sp, # Predicting onto the grid
>                 idp = 2.0)               # Inverse Distance Power = 2
>
> head(idw_zinc@data)  var1.pred var1.var
> 1  6.257014       NA
> 2  6.399096       NA
> 3  6.300862       NA
> 4  6.213336       NA
> 5  6.647233       NA
> 6  6.482221       NA
>
> What am I missing here? How can prediction values be produced but the error
> values not?
>
>
> Cheers,
>
>         Jochen
>
> Dr. Jochen Albrecht, GISP (he/him/his)
>
> Department of Geography and Environmental 
> Science<http://www.geo.hunter.cuny.edu/> <http://www.geo.hunter.cuny.edu/>
>
> Hunter College CUNY
>
> 695 Park Avenue
>
> New York, NY 10065
>
> Member, Board of Directors, GIS Certification 
> Institute<https://www.gisci.org/> <https://www.gisci.org/>
>
>       [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing 
> [email protected]https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
>

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to