Skip to content

pygeostats.validation

Model validation and diagnostic tools for PySpatialStats.

CrossValidationResult dataclass

CrossValidationResult(predictions: ndarray, residuals: ndarray, rmse: float, r2: float)

Container for cross-validation diagnostics.

block_cross_validation

block_cross_validation(coords: Coords, values: Values, build_variogram: VariogramBuilder, build_predictor: KrigingBuilder, grid_shape: Tuple[int, int] = (2, 2)) -> CrossValidationResult

Block cross-validation using a regular grid of spatial blocks.

default_kriging_builder

default_kriging_builder(kriging_class: type = OrdinaryKriging) -> KrigingBuilder

Return a builder that instantiates a kriging predictor.

default_variogram_builder

default_variogram_builder(model: str = 'exponential') -> VariogramBuilder

Return a builder that fits a :class:Variogram with the requested model.

leave_one_out_cross_validation

leave_one_out_cross_validation(coords: Coords, values: Values, build_variogram: VariogramBuilder, build_predictor: KrigingBuilder) -> CrossValidationResult

Leave-one-out cross-validation emulating geoR-style validation.

spatial_kfold_cross_validation

spatial_kfold_cross_validation(coords: Coords, values: Values, build_variogram: VariogramBuilder, build_predictor: KrigingBuilder, n_splits: int = 5, random_state: Optional[int] = None) -> CrossValidationResult

Cluster-aware spatial k-fold cross-validation.

compute_kriging_residuals

compute_kriging_residuals(predictor: OrdinaryKriging, coords: ndarray, values: ndarray) -> np.ndarray

Return residuals for fitted kriging model.

normality_test

normality_test(residuals: ndarray) -> Dict[str, float]

Run a Shapiro-Wilk normality test on residuals.

standardized_residuals

standardized_residuals(residuals: ndarray) -> np.ndarray

Scale residuals by their standard deviation.

variogram_cloud

variogram_cloud(coords: ndarray, values: ndarray) -> Dict[str, np.ndarray]

Return variogram cloud values for diagnostic plotting.

select_best_variogram_model

select_best_variogram_model(coords: ndarray, values: ndarray, candidate_models: Iterable[str] = ('exponential', 'spherical', 'gaussian'), criterion: str = 'aic') -> Tuple[str, Variogram, dict]

Fit candidate models and pick the best one.

Parameters:

Name Type Description Default
coords ndarray

Coordinate array of shape (n_samples, 2).

required
values ndarray

Sample values.

required
candidate_models Iterable[str]

Variogram model names to compare.

('exponential', 'spherical', 'gaussian')
criterion ('aic', 'bic', 'loo')

Selection criterion following geoR conventions.

'aic'