scipy 在pykrige中包括Matheron估计量

ipakzgxi  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(131)

你好我还有一个问题:我如何在程序中包含Matheron估计器并仍然使用Pykrige?
我的程序如下所示:

from pykrige.ok import OrdinaryKriging
from pykrige.kriging_tools import write_asc_grid
import pykrige.kriging_tools as kt

x = np.array([-100, 280, -290, 23, 101, 110])
y = np.array([54, 100, 590, 470, 200, 25])
z = np.array([29.3, 21.0, 19.2, 29.1, 21.9, 23.1])

Ok = OrdinaryKriging(
    x,
    y,
    z,
    variogram_model='exponential ',
    verbose= True,
    enable_plotting= True
)

gridx =np.arange(-300, 300, 10, dtype='float64')
gridy =np.arange(0,600, 10, dtype='float64')
zstar, ss = Ok.execute("grid", gridx, gridy)

cax = plt.imshow(zstar, extent=(-300, 300, 0, 600), origin='lower')
plt.scatter(x, y, c=z, marker=".")
cbar = plt.colorbar(cax)
plt.title('Test Interpolation')
plt.show()
3duebb1j

3duebb1j1#

在PyKrige中默认使用经验变差函数的Materon估计量(并且是唯一的选项)。
由于PyKrige和GSTools可以很好地配合使用,因此可以将GSTools用于变异函数分析部分,其中还可以选择"cressie"估计量(默认情况下也可以选择"matheron"):

from matplotlib import pyplot as plt
from pykrige.ok import OrdinaryKriging
import gstools as gs
import numpy as np

x = np.array([-100, 280, -290, 23, 101, 110])
y = np.array([54, 100, 590, 470, 200, 25])
z = np.array([29.3, 21.0, 19.2, 29.1, 21.9, 23.1])

model = gs.Exponential(dim=2)
bin_center, gamma = gs.vario_estimate(
    pos=[x, y],
    field=z,
    bin_edges=range(0, 900, 150),
    estimator="cressie",
)
model.fit_variogram(bin_center, gamma)
ax = model.plot(x_max=max(bin_center))
ax.scatter(bin_center, gamma)

Ok = OrdinaryKriging(
    x,
    y,
    z,
    variogram_model=model,
    verbose=True,
    enable_plotting=True
)

gridx =np.arange(-300, 300, 10, dtype='float64')
gridy =np.arange(0,600, 10, dtype='float64')
zstar, ss = Ok.execute("grid", gridx, gridy)

cax = plt.imshow(zstar, extent=(-300, 300, 0, 600), origin='lower')
plt.scatter(x, y, c=z, marker=".")
cbar = plt.colorbar(cax)
plt.title('Test Interpolation')
plt.show()

PyKrige中的估计有一些稍微不同的假设(如一组滞后数),但在GSTools中,您可以进行更精细的控制。
希望这对你有帮助。
干杯塞巴斯蒂安

相关问题