AgentSkillsCN

scikit-gstat

采用类似scikit-learn的API进行地质统计分析。计算变异函数、克里金插值以及空间相关性分析。当Claude需要执行以下操作时使用:(1) 从空间数据中计算实验变异函数;(2) 拟合变异函数模型(球状、指数、高斯、马特恩);(3) 执行普通克里金或通用克里金插值;(4) 通过方向变异函数评估空间各向异性;(5) 对空间模型进行交叉验证;(6) 分析时空数据;(7) 将变异函数参数导出至其他地质统计软件。

SKILL.md
--- frontmatter
name: scikit-gstat
description: |
  Geostatistical analysis with scikit-learn style API. Compute variograms, kriging
  interpolation, and spatial correlation analysis. Use when Claude needs to: (1) Compute
  experimental variograms from spatial data, (2) Fit variogram models (spherical,
  exponential, gaussian, matern), (3) Perform Ordinary or Universal Kriging interpolation,
  (4) Assess spatial anisotropy with directional variograms, (5) Cross-validate spatial
  models, (6) Analyze spatio-temporal data, (7) Export variogram parameters for other
  geostatistical software.

SciKit-GStat - Geostatistics

Quick Reference

python
import skgstat as skg
import numpy as np

# Create variogram
V = skg.Variogram(coordinates=coords, values=values, n_lags=15)

# Fit model
V.model = 'spherical'
print(f"Range: {V.parameters[0]:.2f}, Sill: {V.parameters[1]:.2f}")

# Kriging interpolation
ok = skg.OrdinaryKriging(V)
predictions = ok.transform(grid_coords)

Key Classes

ClassPurpose
VariogramEmpirical and theoretical variograms
OrdinaryKrigingInterpolation with spatial correlation
DirectionalVariogramAnisotropic variograms
SpaceTimeVariogramSpatio-temporal analysis

Essential Operations

Create and Fit Variogram

python
import skgstat as skg

V = skg.Variogram(
    coordinates=coords,      # (n, 2) array of x, y
    values=values,           # (n,) array of measurements
    n_lags=15,
    maxlag='median'          # or specific distance
)

# Fit model: 'spherical', 'exponential', 'gaussian', 'matern', 'stable'
V.model = 'spherical'

# Get parameters
print(f"Range: {V.parameters[0]:.2f}")
print(f"Sill: {V.parameters[1]:.2f}")
print(f"Nugget: {V.parameters[2]:.2f}")
print(f"RMSE: {V.rmse:.4f}")

Ordinary Kriging

python
import skgstat as skg
import numpy as np

V = skg.Variogram(coords, values, model='spherical')
ok = skg.OrdinaryKriging(V)

# Create prediction grid
x = np.linspace(0, 100, 50)
y = np.linspace(0, 100, 50)
xx, yy = np.meshgrid(x, y)
grid_coords = np.column_stack([xx.ravel(), yy.ravel()])

# Predict
predictions = ok.transform(grid_coords)
Z = predictions.reshape(xx.shape)

# Get variance
ok.return_variance = True
predictions, variance = ok.transform(grid_coords)

Directional Variogram

python
import skgstat as skg

DV = skg.DirectionalVariogram(
    coordinates=coords,
    values=values,
    azimuth=45,          # Direction in degrees
    tolerance=22.5,      # Angular tolerance
    bandwidth='q33'      # Perpendicular bandwidth
)

# Check anisotropy
for az in [0, 45, 90, 135]:
    DV.azimuth = az
    print(f"Azimuth {az}: Range = {DV.parameters[0]:.2f}")

Cross-Validation

python
import skgstat as skg
from sklearn.model_selection import cross_val_score

V = skg.Variogram(coords, values, model='spherical')
ok = skg.OrdinaryKriging(V)

scores = cross_val_score(ok, coords, values, cv=5, scoring='neg_mean_squared_error')
print(f"CV RMSE: {np.sqrt(-scores.mean()):.4f}")

Robust Estimators

python
import skgstat as skg

# Use robust estimator for noisy data
V = skg.Variogram(
    coords, values,
    estimator='cressie'  # 'matheron', 'cressie', 'dowd', 'genton'
)

Quick Model Reference

ModelBehavior
sphericalMost common, linear near origin
exponentialNever reaches sill, gradual approach
gaussianParabolic near origin, smooth
maternFlexible smoothness control

Tips

  1. Maxlag should be ~50% of study area diagonal
  2. Use robust estimators (cressie, dowd) with noisy data
  3. Test multiple models and compare RMSE
  4. Check anisotropy with directional variograms before kriging

References

Scripts